7(net/luminis/quic/cid/ConnectionIdManager  java/lang/Object()V 0net/luminis/quic/server/ServerConnectionRegistry  org/mockito/Mockitomock%(Ljava/lang/Class;)Ljava/lang/Object;  ,net/luminis/quic/cid/ConnectionIdManagerTestconnectionRegistry2Lnet/luminis/quic/server/ServerConnectionRegistry;net/luminis/quic/send/Sender  senderLnet/luminis/quic/send/Sender;java/util/function/BiConsumer  !" closeCallbackLjava/util/function/BiConsumer;$net/luminis/quic/log/Logger & '([B[BIILnet/luminis/quic/server/ServerConnectionRegistry;Lnet/luminis/quic/send/Sender;Ljava/util/function/BiConsumer;Lnet/luminis/quic/log/Logger;)V ) *+connectionIdManager*Lnet/luminis/quic/cid/ConnectionIdManager; - ./registerPeerCidLimit(I)V 1 2handshakeFinished 4 56 atLeastOnce-()Lorg/mockito/verification/VerificationMode; 8 9:verifyQ(Ljava/lang/Object;Lorg/mockito/verification/VerificationMode;)Ljava/lang/Object;< =>matches()Lorg/mockito/ArgumentMatcher; @AB CDorg/mockito/ArgumentMatchersargThat1(Lorg/mockito/ArgumentMatcher;)Ljava/lang/Object;F net/luminis/quic/frame/QuicFrame @H IJany()Ljava/lang/Object;L net/luminis/quic/EncryptionLevelNjava/util/function/Consumer @P I R STsendd(Lnet/luminis/quic/frame/QuicFrame;Lnet/luminis/quic/EncryptionLevel;Ljava/util/function/Consumer;)V VWX YZorg/mockito/ArgumentCaptorforClass/(Ljava/lang/Class;)Lorg/mockito/ArgumentCaptor; \ ]^times.(I)Lorg/mockito/verification/VerificationMode; V` aJcapture Vc de getAllValues()Ljava/util/List; ghi jkjava/util/Listget(I)Ljava/lang/Object;m+net/luminis/quic/frame/NewConnectionIdFrame lo pq getSequenceNr()I stu vworg/assertj/core/api/Assertions assertThat/(I)Lorg/assertj/core/api/AbstractIntegerAssert; yz{ |w*org/assertj/core/api/AbstractIntegerAssert isEqualTo<<  egetActiveConnectionIds[B.net/luminis/quic/frame/RetireConnectionIdFrame  net/luminis/quic/Version getDefault()Lnet/luminis/quic/Version; (Lnet/luminis/quic/Version;I)V  process5(Lnet/luminis/quic/frame/RetireConnectionIdFrame;[B)V 9&(Ljava/lang/Object;)Ljava/lang/Object; deregisterConnectionId([B)V V JgetValue s v2([B)Lorg/assertj/core/api/AbstractByteArrayAssert;  |,org/assertj/core/api/AbstractByteArrayAssert9(Ljava/lang/Object;)Lorg/assertj/core/api/AbstractAssert; clearInvocations([Ljava/lang/Object;)V< 6neverjava/lang/Integer  anyString()Ljava/lang/String;  accept'(Ljava/lang/Object;Ljava/lang/Object;)V s vA(Ljava/lang/Integer;)Lorg/assertj/core/api/AbstractIntegerAssert; s v3(Ljava/util/List;)Lorg/assertj/core/api/ListAssert;  org/assertj/core/api/ListAsserthasSize0(I)Lorg/assertj/core/api/AbstractIterableAssert; l !(Lnet/luminis/quic/Version;II[B)V  0(Lnet/luminis/quic/frame/NewConnectionIdFrame;)V  egetActivePeerConnectionIds qanyInt valueOf(I)Ljava/lang/Integer;<  getCurrentPeerConnectionId()[B  isNotEqualTo  java/util/ArrayscopyOf([BI)[B  getInitialConnectionId  validateInitialPeerConnectionId([B)Z s v/(Z)Lorg/assertj/core/api/AbstractBooleanAssert;  *org/assertj/core/api/AbstractBooleanAssertisTrue.()Lorg/assertj/core/api/AbstractBooleanAssert; g stream()Ljava/util/stream/Stream; test ()Ljava/util/function/Predicate;  java/util/stream/Streamfilter9(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; apply()Ljava/util/function/Function;  map8(Ljava/util/function/Function;)Ljava/util/stream/Stream;     java/util/stream/CollectorstoList()Ljava/util/stream/Collector;  collect0(Ljava/util/stream/Collector;)Ljava/lang/Object;  containsB([Ljava/lang/Object;)Lorg/assertj/core/api/AbstractIterableAssert;  sendNewConnectionId*(I)Lnet/luminis/quic/cid/ConnectionIdInfo; l qgetRetirePriorTo M(Lnet/luminis/quic/cid/ConnectionIdManagerTest;)Ljava/util/function/Consumer; g !"forEach (Ljava/util/function/Consumer;)V<  < ' (registerRetrySourceConnectionId * +validateRetrySourceConnectionId - ./getAllPeerConnectionIds()Ljava/util/Map; 123 j java/util/Map5%net/luminis/quic/cid/ConnectionIdInfo 47 8getConnectionId : ;registerInitialPeerCid = >registerConnectionIdInUse o SignatureFLjava/util/function/BiConsumer;CodeLineNumberTableLocalVariableTablethis.Lnet/luminis/quic/cid/ConnectionIdManagerTest;initObjectUnderTestRuntimeVisibleAnnotations"Lorg/junit/jupiter/api/BeforeEach;1whenConnectionCreatedNewConnectionIdsShouldBeSentLorg/junit/jupiter/api/Test;3firstNewConnectionIdSentShouldHaveSequenceNumberOnecaptorLorg/mockito/ArgumentCaptor; firstFrame"Lnet/luminis/quic/frame/QuicFrame;LocalVariableTypeTable@Lorg/mockito/ArgumentCaptor;'initialCidsShouldMatchPeerLimitMinusOne5whenPeerLimitIsLargeinitialCidsShouldMatchServerLimit+retireConnectionIdShouldLeadToDeregistering originalCid Lorg/mockito/ArgumentCaptor<[B>;(retireConnectionIdShouldLeadToSendingNew-retiringConnectionIdAlreadyRetiredDoesNothing7retiringNonExistentSequenceNumberLeadsToConnectionClose1Lorg/mockito/ArgumentCaptor;GretiringConnectionIdUsedAsDestinationConnectionIdLeadsToConnectionClose)initiallyThereShouldBeExactlyOneActiveCid)initiallyAtLeastOneNewCidShouldBeAccepted@whenNumberOfActiveCidsExceedsLimitConnectionIdLimitErrorIsThrown5repeatingNewCidWithSequenceNumberShouldNotLeadToError7invalidRetirePriorToFieldShouldLeadToFrameEncodingErrorQnewConnectionIdFrameWithIncreasedRetirePriorToFieldLeadsToRetireConnectionIdFrameOnewConnectionIdFrameWithIncreasedRetirePriorToFieldLeadsToDecrementOfActiveCids-retiredCidShouldNotBeUsedAnymoreAsDestination originalDcid/newConnectionIdWithSequenceNumberZeroShouldFailnewDcidUwhenUsingZeroLengthConnectionIdNewConnectionIdFrameShouldLeadToProtocolViolationError"initialConnectionIdShouldNotChangeinitialConnectionId#testValidateInitialPeerConnectionIdpeerCidOwhenReorderedNewConnectionIdIsAlreadyRetiredRetireConnectionIdFrameShouldBeSent retiredSeqNrLjava/util/List;%Ljava/util/List;,whenSendingNewConnectionIdRetirePriorToIsSet;whenPreviouslyUnusedConnectionIdIsUsedNewConnectionIdIsSentmaxCidsI2whenMaxCidsIsReachedRegisterUnusedDoesNotLeadToNew#testValidateRetrySourceConnectionIdretryCidCwhenActiveConnectionIdLimitReachedReceivingRetireShouldNotLeadToNew?whenConnectionIdAlreadyRetiredReceivingRetireShouldNotLeadToNewtestRegisterInitialPeerCidlambda$whenPeerLimitIsLargeinitialCidsShouldMatchServerLimit$2frame0lambda$initialCidsShouldMatchPeerLimitMinusOne$1:lambda$whenConnectionCreatedNewConnectionIdsShouldBeSent$0 SourceFileConnectionIdManagerTest.javaBootstrapMethods  "java/lang/invoke/LambdaMetafactory metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;(Ljava/lang/Object;)Z  ||  |  |  |  |  |  (Ljava/lang/Object;)V    |  ~  {| InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup *+!"@A*B/*C-D EFGB N* * * *Y***# #%(C6 78$9M:D NEFHIJBq;*(,*(0*37;?EGKMOMQC?BE:FD ;EFHKLB[*(,*(0EUL*[7+_EGKMOMQ+bfEM,lnrxWCKNQR=SKTZUD [EFFMNKOPQ FMRHKSBr<*(,*(0*[7}?EGKMOMQCZ]`;aD <EFHKTBs=*(@,*(0*[7~?EGKMOMQCf il<mD =EFHKUB_*(fL*(,*(0*(YUM* ,_,+WC"rst w3z9{O|^}D _EFNV9&MNQ 9&MWHKXBY*(,*(0Y*S*(Y*?EGKMOMQC0XD YEFHKYBl*(,*(0*(YY*S*(Y*7EOEGKMOMQC"0CkD lEFHKZBR*(,*(0*(YUL*+_+ xWC"(AQDREF(*MNQ (*M[HK\Ba*(,*(0*(Y*(fUL*+_+ xWC17P`DaEF7*MNQ 7*M[HK]B>*(WC D EFHK^BX&*(lYö*(ɸWC%D &EFHK_B *Y***# #%(*(lYö*(lYö*(lYöUL*+_+ xWC")?UkqDEFq*MNQ q*M[HK`B~H*(lYö*(lYö*7̸ϸC,GD HEFHKaBF*(lYöUL*+_+xWC5EDFEF*MNQ *M[HKbBX*(lYö*(lYö*37?EGKMOMQC,WD XEFHKcBW*(lYö*(lYö*(ɸW*7̸ϸC,; V D WEFHKdB l*(L*(lYY4TYTYZTYUTö*(lYY[TY.TYTYDTö*(Ը+WC2\kDlEFdeHKfB[*(L++M,\3`T*(lY,öUN*-_- xWC"!+$1%J&Z'D*[EFSeLg1*MNQ 1*M[HKhB o*Y***# #%(*(lYöUL*+_+ xWC,).?1E2^3n4DoEFE*MNQ E*M[HKiBm-*(L*(Y*(+WC9<?,@D-EF%jHKkB OYTYTYTY TL*Y+***# #%(*(+WCEF?INJDOEF7lHKmB*(lYö*(lYöEUL*37+_EGKMOMQ+b gM,YSWC* OR,U2VYWgXqYvZ[\D EF2dMNnoQ2dMRnpHKqBT*(WEUL*37+_EGKMOMQ+lW+lrxWC` bc6dAeSfDTEFEMNQ EMRHKrBn<*(,*(WY*S*(W*(**37#?EGKMOMQC"kl mn!o0rBwmxDnEFlstHKuB *Y***# #%(<*(,*(0Y*S*(W*(*$*7%?EGKMOMQC& }(~+3:HWiDEF+jstHKvB Z*Y***# #%(YTYTYTY TL*(+&*(+)WC*BJYDZEFBwxB^*(W*(WY*S*(Y*7EOEGKMOMQC  5]D ^EFHKyBy*(W*(YY*S*(W*(Y*7EOEGKMOMQC ,;PxD yEFHKzB{*(,Ϲ046YTYTYTYTW*(YTYTYTYT9*(,Ϲ046YTYTYTYTWC0JzD {EFHK {|B/*lCD }P~BA *(+<C D EF  |B/*lCwD }PBA *(+<C stD EF  B5 *?ϰCYD  }P |B/*CXD }P |B/*CD }P |B/*lCD }P |B/*lClD P |B/*lC`D P |B/*lCED Pp