7S  java/lang/Object()V   -net/luminis/quic/QuicClientConnectionImplTestdestinationConnectionId[B!net/luminis/quic/log/SysOutLogger   loggerLnet/luminis/quic/log/Logger;  )net/luminis/quic/QuicClientConnectionImpl newBuilder1()Lnet/luminis/quic/QuicClientConnection$Builder;  -net/luminis/quic/QuicClientConnection$BuilderconnectionIdLength2(I)Lnet/luminis/quic/QuicClientConnection$Builder;! java/net/URI#//localhost:443 % &(Ljava/lang/String;)V ( )*uri?(Ljava/net/URI;)Lnet/luminis/quic/QuicClientConnection$Builder; , -N(Lnet/luminis/quic/log/Logger;)Lnet/luminis/quic/QuicClientConnection$Builder; / 01build-()Lnet/luminis/quic/QuicClientConnectionImpl; 3 45 connection+Lnet/luminis/quic/QuicClientConnectionImpl;7 net/luminis/quic/send/SenderImpl 9:; <=org/mockito/Mockitomock%(Ljava/lang/Class;)Ljava/lang/Object; ? @Asender"Lnet/luminis/quic/send/SenderImpl;C!net/luminis/quic/test/FieldReader E FGgetClass()Ljava/lang/Class;IconnectionIdManager KLM NOjava/lang/ClassgetDeclaredField-(Ljava/lang/String;)Ljava/lang/reflect/Field; BQ R.(Ljava/lang/Object;Ljava/lang/reflect/Field;)V BT UVread()Ljava/lang/Object;@ YZ[ \]!net/luminis/quic/test/FieldSettersetField9(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V_ `acallh(Lnet/luminis/quic/QuicClientConnectionImplTest;)Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable; cde fgorg/assertj/core/api/AssertionsassertThatThrownByg(Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable;)Lorg/assertj/core/api/AbstractThrowableAssert;ijava/lang/NullPointerException klm no,org/assertj/core/api/AbstractThrowableAssert isInstanceOf8(Ljava/lang/Class;)Lorg/assertj/core/api/AbstractAssert;_r"java/lang/IllegalArgumentException t usimulateSuccessfulConnect w xy'setFixedOriginalDestinationConnectionId([B)V 9{ |}never-()Lorg/mockito/verification/VerificationMode; 9 verifyQ(Ljava/lang/Object;Lorg/mockito/verification/VerificationMode;)Ljava/lang/Object; 9 =any 6 ysetInitialToken 9442e0ac29f6d650adc5e4b4a3cd12cc  createRetryPacket;([BLjava/lang/String;)Lnet/luminis/quic/packet/RetryPacket;  processj(Lnet/luminis/quic/packet/RetryPacket;Ljava/time/Instant;)Lnet/luminis/quic/PacketProcessor$ProcessResult; 9 &(Ljava/lang/Object;)Ljava/lang/Object; matches()Lorg/mockito/ArgumentMatcher; 9 argThat1(Lorg/mockito/ArgumentMatcher;)Ljava/lang/Object;originalDestinationConnectionId Y \@(Ljava/lang/Object;Ljava/lang/reflect/Field;Ljava/lang/Object;)V  getDestinationConnectionId()[B 5e5f918434a24d4b601745b4f0db7908 9 clearInvocations([Ljava/lang/Object;)V 00f4bbc72790b7c7947f86ec9fb0a68d net/luminis/quic/frame/QuicFrame net/luminis/quic/EncryptionLeveljava/util/function/Consumer 6 sendd(Lnet/luminis/quic/frame/QuicFrame;Lnet/luminis/quic/EncryptionLevel;Ljava/util/function/Consumer;)V#net/luminis/quic/packet/RetryPacket  net/luminis/quic/Version getDefault()Lnet/luminis/quic/Version; %(Lnet/luminis/quic/Version;[B[B[B[B)VretryIntegrityTag  net/luminis/tls/util/ByteUtils hexToBytes(Ljava/lang/String;)[B 00112233445566778899aabbccddeeff  &simulateConnectionReceivingRetryPacket'()Lnet/luminis/quic/packet/RetryPacket; 9 spy$net/luminis/quic/TransportParameters   setPeerTransportParameters)(Lnet/luminis/quic/TransportParameters;)Vjava/lang/Long  org/mockito/ArgumentCaptorforClass/(Ljava/lang/Class;)Lorg/mockito/ArgumentCaptor; Vcapture  longValue()J 9 V-net/luminis/quic/QuicConnectionImpl$ErrorTypejava/lang/String  immediateCloseWithErrorg(Lnet/luminis/quic/EncryptionLevel;JLnet/luminis/quic/QuicConnectionImpl$ErrorType;Ljava/lang/String;)V VgetValue c  assertThat;(Ljava/lang/Long;)Lorg/assertj/core/api/AbstractLongAssert;  1net/luminis/quic/QuicConstants$TransportErrorCodeTRANSPORT_PARAMETER_ERROR3Lnet/luminis/quic/QuicConstants$TransportErrorCode;  valueS     'org/assertj/core/api/AbstractLongAssert isEqualTo,(J)Lorg/assertj/core/api/AbstractLongAssert;  getSourceConnectionId  ysetInitialSourceConnectionId   originalDestinationId  y"setOriginalDestinationConnectionId  ysetRetrySourceConnectionId 9  anyInt()I 9" #$ anyString()Ljava/lang/String; & '8(Lnet/luminis/quic/EncryptionLevel;JLjava/lang/String;)V 6* +,getCongestionController,()Lnet/luminis/quic/cc/CongestionController; 9. /0when:(Ljava/lang/Object;)Lorg/mockito/stubbing/OngoingStubbing;23net/luminis/quic/cc/FixedWindowCongestionController 14 5 (Lnet/luminis/quic/log/Logger;)V 789 :0$org/mockito/stubbing/OngoingStubbing thenReturn< tlsEngine>)net/luminis/tls/handshake/TlsClientEngine @ A(IIII)V C DE createStream (Z)Lnet/luminis/quic/QuicStream; GHI J net/luminis/quic/QuicStream getStreamId cL M/(I)Lorg/assertj/core/api/AbstractIntegerAssert; OPQ  M*org/assertj/core/api/AbstractIntegerAssert KS TG getSuperclassVflowControlIncrement X YZupdateConnectionFlowControl(I)V 9\ ]^times.(I)Lorg/mockito/verification/VerificationMode;?陙?Gzd `e9()Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable; g hi IETF_draft_29Lnet/luminis/quic/Version; k lmversionK(Lnet/luminis/quic/Version;)Lnet/luminis/quic/QuicClientConnection$Builder; co p7(Ljava/lang/Object;)Lorg/assertj/core/api/ObjectAssert; rst uv!org/assertj/core/api/ObjectAssert isNotNull'()Lorg/assertj/core/api/AbstractAssert;x&ff00000000040a0b0c0d040f0e0d0cff000018 z{| }~java/nio/ByteBufferwrap([B)Ljava/nio/ByteBuffer;   parsePacket;(Ljava/nio/ByteBuffer;)Lnet/luminis/quic/packet/QuicPacket;0net/luminis/quic/packet/VersionNegotiationPacket rl  getFlowController'()Lnet/luminis/quic/stream/FlowControl;'  #net/luminis/quic/stream/FlowControlincreaseFlowControlLimit!(Lnet/luminis/quic/QuicStream;J)J c  #(  setInitialMaxData(J)V  !setInitialMaxStreamDataBidiRemote)net/luminis/quic/packet/ShortHeaderPacket)net/luminis/quic/frame/MaxStreamDataFrame'  (IJ)V  A(Lnet/luminis/quic/Version;[BLnet/luminis/quic/frame/QuicFrame;)V  java/time/Instantnow()Ljava/time/Instant;   processFrames:(Lnet/luminis/quic/packet/QuicPacket;Ljava/time/Instant;)V#net/luminis/quic/frame/MaxDataFrame  connectionState  *net/luminis/quic/QuicConnectionImpl$Status Connected,Lnet/luminis/quic/QuicConnectionImpl$Status;+net/luminis/quic/frame/ConnectionCloseFrame  (Lnet/luminis/quic/Version;)V  close 6 G(Lnet/luminis/quic/frame/QuicFrame;Lnet/luminis/quic/EncryptionLevel;)V  Z1setTransportParametersWithActiveConnectionIdLimit  newConnectionIds(II)[[B  getSourceConnectionIds()Ljava/util/Map; c 1(Ljava/util/Map;)Lorg/assertj/core/api/MapAssert;  org/assertj/core/api/MapAsserthasSize+(I)Lorg/assertj/core/api/AbstractMapAssert;.net/luminis/quic/frame/RetireConnectionIdFrame  (Lnet/luminis/quic/Version;I)V  c 2([B)Lorg/assertj/core/api/AbstractByteArrayAssert;  ,org/assertj/core/api/AbstractByteArrayAssert isNotEqualTo9(Ljava/lang/Object;)Lorg/assertj/core/api/AbstractAssert;net/luminis/quic/frame/Padding  Z  p(Lnet/luminis/quic/packet/ShortHeaderPacket;Ljava/time/Instant;)Lnet/luminis/quic/PacketProcessor$ProcessResult;  java/lang/IntegervalueOf(I)Ljava/lang/Integer;    java/util/Mapget %net/luminis/quic/cid/ConnectionIdInfo   getConnectionIdStatus+()Lnet/luminis/quic/cid/ConnectionIdStatus; c G(Ljava/lang/Comparable;)Lorg/assertj/core/api/AbstractComparableAssert;  'net/luminis/quic/cid/ConnectionIdStatusUSED)Lnet/luminis/quic/cid/ConnectionIdStatus;   -org/assertj/core/api/AbstractComparableAssert  !ZsetActiveConnectionIdLimit#+net/luminis/quic/frame/NewConnectionIdFrame "% &!(Lnet/luminis/quic/Version;II[B)V ( )g(Lnet/luminis/quic/frame/NewConnectionIdFrame;Lnet/luminis/quic/packet/QuicPacket;Ljava/time/Instant;)V + ,-retireDestinationConnectionId(Ljava/lang/Integer;)V / 01accept(Ljava/lang/Object;)V 3 45equals(Ljava/lang/Object;)Z c7 8/(Z)Lorg/assertj/core/api/AbstractBooleanAssert; ; <=getServerSupportedVersions()Ljava/util/List; ?@A BCjava/util/Listof$(Ljava/lang/Object;)Ljava/util/List; E Fw(Lnet/luminis/quic/packet/VersionNegotiationPacket;Ljava/time/Instant;)Lnet/luminis/quic/PacketProcessor$ProcessResult;Hjava/lang/Throwable GJ KprintStackTrace MNO PV org/junit/jupiter/api/Assertionsfail S%net/luminis/quic/packet/InitialPacketU net/luminis/quic/frame/PingFrame T RX YE(Lnet/luminis/quic/Version;[B[B[BLnet/luminis/quic/frame/QuicFrame;)V [ \l(Lnet/luminis/quic/packet/InitialPacket;Ljava/time/Instant;)Lnet/luminis/quic/PacketProcessor$ProcessResult; __'net/luminis/quic/InvalidPacketException____ e fi IETF_draft_19 h ij Handshake"Lnet/luminis/quic/EncryptionLevel; lmn 4ojava/util/Arrays([B[B)Zq s tuconnect(ILjava/lang/String;)VCodeLineNumberTableLocalVariableTablethis/Lnet/luminis/quic/QuicClientConnectionImplTest; initLoggerRuntimeVisibleAnnotations!Lorg/junit/jupiter/api/BeforeAll;initConnectionUnderTestLjava/lang/Object; Exceptionsjava/lang/Exception"Lorg/junit/jupiter/api/BeforeEach;connectRequiresAlpnLorg/junit/jupiter/api/Test;connectRequiresNonEmptyAlpn.testRetryPacketInitiatesInitialPacketWithTokenoriginalConnectionId retryPacket%Lnet/luminis/quic/packet/RetryPacket;$testSecondRetryPacketShouldBeIgnoredsecondRetryPacketintegrityTagValueLjava/lang/String;sourceConnectionId retryTokenBtestRetryPacketWithIncorrectOriginalDestinationIdShouldBeDiscardedYtestAfterRetryPacketTransportParametersWithoutOriginalDestinationIdLeadsToConnectionError errorCaptorLorg/mockito/ArgumentCaptor;LocalVariableTypeTable.Lorg/mockito/ArgumentCaptor;_testAfterRetryPacketTransportParametersWithIncorrectOriginalDestinationIdLeadsToConnectionErrortransportParameters&Lnet/luminis/quic/TransportParameters;ItestAfterRetryPacketTransportParametersWithCorrectRetrySourceConnectionIdHtestWithNormalConnectionTransportParametersShouldNotContainRetrySourceIdoriginalSourceConnectionIdXtestOnNormalConnectionTransportParametersWithOriginalDestinationIdLeadsToConnectionErrorjava/lang/NoSuchFieldExceptiontestCreateStream parametersstreamLnet/luminis/quic/QuicStream; firstStreamIdIstreamIdLowBitsstream2testConnectionFlowControlJtestMinimumQuicVersionIs23testQuicVersion29IsSupported1parsingValidVersionNegotiationPacketShouldSucceedpacket$Lnet/luminis/quic/packet/QuicPacket;5receivingTransportParametersInitializesFlowController4receivingMaxStreamDataFrameIncreasesFlowControlLimit.receivingMaxDataFrameIncreasesFlowControlLimitGreceivingConnectionCloseWhileConnectedResultsInReplyWithConnectionCloseKreceivingConnectionCloseWhileConnectedResultsInReplyWithConnectionCloseOnce1closingConnectedConnectionTriggersConnectionClose7receivingRetireConnectionIdLeadsToNewSourceConnectionId retireFrame0Lnet/luminis/quic/frame/RetireConnectionIdFrame;CreceivingPacketWitYetUnusedConnectionIdLeadsToNewSourceConnectionIdnewUnusedConnectionIdbreceivingPacketWitYetUnusedConnectionIdDoesNotLeadToNewSourceConnectionIdWhenActiveCidLimitReachedparams[[BnextConnectionIdMreceivingPacketWitPrevouslyUsedConnectionIdDoesNotLeadToNewSourceConnectionIdfirstConnectionIdsourceConnectionIdsLjava/util/Map;KLjava/util/Map;4retireConnectionIdFrameShouldBeRetransmittedWhenLost frameCaptorcaptorlostPacketCallbackLjava/util/function/Consumer;secondFrameCaptorretransmitPacket"Lnet/luminis/quic/frame/QuicFrame;@Lorg/mockito/ArgumentCaptor;;Lorg/mockito/ArgumentCaptor;breceivingReorderedNewConnectionIdWithSequenceNumberThatIsAlreadyRetiredShouldImmediatelySendRetire;processingVersionNegotationWithClientVersionShouldBeIgnored exceptionLjava/lang/Throwable;vnWithClientVersion2Lnet/luminis/quic/packet/VersionNegotiationPacket; StackMapTable@versionNegotationAfterClientHasReceivedOthePacketShouldBeIgnoredvnparseEmptyPacket'parseLongHeaderPacketWithInvalidHeader1'parseLongHeaderPacketWithInvalidHeader2'parseShortHeaderPacketWithInvalidHeader%clientParsingZeroRttPacketShouldThrowconnectionIdLimit/lambda$clientParsingZeroRttPacketShouldThrow$171lambda$parseShortHeaderPacketWithInvalidHeader$161lambda$parseLongHeaderPacketWithInvalidHeader2$151lambda$parseLongHeaderPacketWithInvalidHeader1$14lambda$parseEmptyPacket$13llambda$receivingReorderedNewConnectionIdWithSequenceNumberThatIsAlreadyRetiredShouldImmediatelySendRetire$12%(Lnet/luminis/quic/frame/QuicFrame;)ZframeMlambda$receivingPacketWitYetUnusedConnectionIdLeadsToNewSourceConnectionId$11Alambda$receivingRetireConnectionIdLeadsToNewSourceConnectionId$10:lambda$closingConnectedConnectionTriggersConnectionClose$9Tlambda$receivingConnectionCloseWhileConnectedResultsInReplyWithConnectionCloseOnce$8Plambda$receivingConnectionCloseWhileConnectedResultsInReplyWithConnectionClose$7#lambda$testMinimumQuicVersionIs23$6alambda$testOnNormalConnectionTransportParametersWithOriginalDestinationIdLeadsToConnectionError$5%(Lnet/luminis/quic/EncryptionLevel;)Zlhlambda$testAfterRetryPacketTransportParametersWithIncorrectOriginalDestinationIdLeadsToConnectionError$4blambda$testAfterRetryPacketTransportParametersWithoutOriginalDestinationIdLeadsToConnectionError$37lambda$testRetryPacketInitiatesInitialPacketWithToken$2([B)Ztoken$lambda$connectRequiresNonEmptyAlpn$1lambda$connectRequiresAlpn$0 SourceFile!QuicClientConnectionImplTest.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;    5                " # % & ( ) + , . / 1 2 4 5 7 8  InnerClasses;%net/luminis/quic/QuicClientConnectionBuilder>5org/assertj/core/api/ThrowableAssert$ThrowingCallable@$org/assertj/core/api/ThrowableAssertThrowingCallableC.net/luminis/quic/PacketProcessor$ProcessResultE net/luminis/quic/PacketProcessor ProcessResultH#net/luminis/quic/QuicConnectionImpl ErrorTypeKnet/luminis/quic/QuicConstantsTransportErrorCodeStatusO%java/lang/invoke/MethodHandles$LookupQjava/lang/invoke/MethodHandlesLookup   45 @A<vJ**YTYTYTYTw 69x yz{v' Yw A C|}~vZ* Y"$'+.2*686>BY*2*2DHJPSL+W*>Xw"GHIJ(K4LOMYNxZyzO I|vB*^bhjWwR TUx yz|vB*pbqjWwY [\x yz|v{*sYTYTYTYTYTYTYTYTL*+v*>z~6*+M*2,W*>6w* `b3d8gPjXkbnqownzpx {yz3H X#|xyvx*BY*2*2DHJPSM,,DJ+wstu&t)wx *yz* Iv *sYTYTYTYTYTYTYTYTL*+v**2M*2,W6Y*>S**2N*2-W*>z~6w* {}38FP^lvx*yz3l FYl3|vgY TY TY TY TNYTYTYTYT:YTYTYT:Y-+:ĶJ,Ƹw1BTdxHgyzg gO 16 B% TvT*s*YTY TY TY T̶L*2+W*>z~6w!+SxTyz!3|vk*W**22*2Y׶ܸL*2+ܶ+ܸWw!'Ujxkyz'D 'D|v*L**22YM,+ ,*,Y TY TY TY T*2,ܸN*2-ܶ-ܸWw. #+FNTx*yz}TD TD|v[*L**22YM,+ ,*,+ *2,*2z~!%w& #+3;Zx [yzV@|vYTYTYTYTYTYTYTYTL*+v*s**22YM,*2,+*2,*2z~!%w* /48FNY^fx yz/W N8|v*s**22YL+Y TY TY TY T*2+ܸM*2(,ܶ,ܸWw& 5=Cqx yzmCD CD|vX*s*YTYTYTYTYTYTYTYT**v**2L*2+W+w6>LVxXyzL uvxB*2*2DWJ*>*>)-1Y36W*2;=8Xw1Ax ByzviY    ?L+*2+*2*2+*2BM,F>~6KNW*2B:FK`NWw.    &.7>CMWhx>iyzY72>+C&W|vj*2*2DWJ*>BY*2*2DRUJPSܶ@*2 W*>z~6*2W*>[~6*2_kW*>[~6*2akW*>[~6w. <E m"v#%&() *xyz<V|vAcbqjWw. 34x yz|vz4fj Y"$'+.nqWw"89 :;"<,8/=3>x 4yz|vY*2wƸyL+nWwBCDxyz |vOY#(?L+*2+*2*2+*2BM*2,WwHIJ%K-L6MNNx Oyz@6|v Y ?L+*2+*2++*2+*2BM*2,W*2Y*Y,F*2,Ww:R ST#U*V1W9YBZZ[b\n][_`x yz BY|v Y ?L+*2+*2++*2+*2BM*2,W*2Y*Y*2,Ww:d ef#g*h1i9kBlZmbnvoym|qrx yz BS|v|*2*2DWJ*>*2*2DRJ*2Y*Yɷ*>6w"wx1z9{D|PzS~{x |yz|v**2*2DWJ*>*2*2DRJ*2Y*Yɷ*2Y*Yɷ*2Y*Yɷ*>[~6wB19DPS[fru}x yz|vY*2*2DWJ*>*2*2DRJ*2*>6ұw18Xx Yyz|v~**2W*2ܸWYL*2Y*2+*2ܸW*>6w"*FU}x~yz*T|v**22L+*2W6Y*>S*2Y+YW*2  W*>[~6w"!/Nnxyz |v*2*2DWJ*>YL+*2+*2M,2N-*2W6Y*>S*2Y-YW*>z~6w. $,6:IWvx*yz6i:e |vv*2*2DWJ*>YL+*2+*2M*2N*2:2:*2W*2YYW6Y*>S*2Y,YW*>z~6w:%-5=HN^~x>yz5 =HN  =|v *2*2DRJ*2"YY TYTY TYT$'*2*LM*>[~6+,6Y*>S,N-+.:*>[~6:Y26Ww:FQW]     x>yzW]YH W]H|v *2*2DRJ*2"YYTYTYTYT$'6Y*>S*2"YYTYTYTYT$'*>69wBPxx yz|v68L+:->6W*2+DW M,ILW),Gw"  #)(,%-&1'5)x -6yz ,,G|v BYQL*2RYTYVWZW*2+DWMLW-9<Gw-.-195<3=4A6x =Byz:<G|vC*]b^jWw: <=x yz|vC*`b^jWwA CDx yz|vC*ab^jWwH JKx yz|vC*bb^jWwO QRx yz|vC*cb^jWwV XYx yz|Zv~,YM,*2,*2,*2,رw\]^_#`+ax ,yz,$v*2YTYTYTYTYTYTYTYTYTY TY TY TY TY TYTYTYTY TY TY TY TY TYTYTYTyWwWx yzGv>*2Y@TyWwPx yzGvJ *2YTYTYTYTyWwIx  yzGvB*2YTYTyWwBx yzGv9*2yWw;x yzG v:*Y2wx  v/*"wx  v/*"wx  v/*Ǭwx  v/*Ǭwx  v/*Ǭw~x  vP(dj Y"$'+.Ww/012'/G vB *gwx  j @ vB *gwx  j @ vB *gwx  j @ vU **YTYTYTkwox   @v8*2prwZx yzGv6 *2rwSx  yzG     !$'*-0369::< =?A BDF@GI@JL@GM@NPR