7  java/lang/Object()Vnet/luminis/quic/send/Sender  org/mockito/Mockitomock%(Ljava/lang/Class;)Ljava/lang/Object;  !net/luminis/quic/CryptoStreamTestsenderLnet/luminis/quic/send/Sender;net/luminis/quic/CryptoStreamnet/luminis/quic/VersionHolder   QUIC_VERSIONLnet/luminis/quic/Version;  (Lnet/luminis/quic/Version;)V !"# $% net/luminis/quic/EncryptionLevel Handshake"Lnet/luminis/quic/EncryptionLevel; '() *+net/luminis/quic/RoleClientLnet/luminis/quic/Role;-)net/luminis/tls/handshake/TlsClientEngine/-net/luminis/tls/handshake/ClientMessageSender1/net/luminis/tls/handshake/TlsStatusEventHandler ,3 4c(Lnet/luminis/tls/handshake/ClientMessageSender;Lnet/luminis/tls/handshake/TlsStatusEventHandler;)V6net/luminis/quic/log/Logger 8 9(Lnet/luminis/quic/VersionHolder;Lnet/luminis/quic/EncryptionLevel;Lnet/luminis/quic/crypto/ConnectionSecrets;Lnet/luminis/quic/Role;Lnet/luminis/tls/handshake/TlsEngine;Lnet/luminis/quic/log/Logger;Lnet/luminis/quic/send/Sender;)V ; <= cryptoStreamLnet/luminis/quic/CryptoStream;?*net/luminis/tls/handshake/TlsMessageParser A BC messageParser,Lnet/luminis/tls/handshake/TlsMessageParser; E FGgetClass()Ljava/lang/Class;ItlsMessageParser KLM NOjava/lang/ClassgetDeclaredField-(Ljava/lang/String;)Ljava/lang/reflect/Field; QRS TU!net/luminis/quic/test/FieldSettersetField@(Ljava/lang/Object;Ljava/lang/reflect/Field;Ljava/lang/Object;)VW XYapply()Ljava/util/function/Function; [ \]setParseFunction (Ljava/util/function/Function;)V_"net/luminis/quic/frame/CryptoFrameafirst crypto frame c deconvertToMsgBytes(ILjava/lang/String;)[B ^g h(Lnet/luminis/quic/Version;[B)V j kladd'(Lnet/luminis/quic/frame/CryptoFrame;)V n opgetTlsMessages()Ljava/util/List; rst uvorg/assertj/core/api/Assertions assertThat3(Ljava/util/List;)Lorg/assertj/core/api/ListAssert; xyz {|org/assertj/core/api/ListAssert isNotEmpty/()Lorg/assertj/core/api/AbstractIterableAssert;~net/luminis/tls/Message0net/luminis/quic/CryptoStreamTest$MockTlsMessage  (Ljava/lang/String;)V x containsB([Ljava/lang/Object;)Lorg/assertj/core/api/AbstractIterableAssert;  java/util/Listget(I)Ljava/lang/Object;  getType.()Lnet/luminis/tls/TlsConstants$HandshakeType; r uG(Ljava/lang/Comparable;)Lorg/assertj/core/api/AbstractComparableAssert;  *net/luminis/tls/TlsConstants$HandshakeTypecertificate_request,Lnet/luminis/tls/TlsConstants$HandshakeType;  -org/assertj/core/api/AbstractComparableAssert isEqualTo9(Ljava/lang/Object;)Lorg/assertj/core/api/AbstractAssert;*first frame second frame last crypto frame  d(Ljava/lang/String;)[B  java/util/ArrayscopyOf([BI)[B ^  (Lnet/luminis/quic/Version;J[B)V x isEmpty second frame  java/lang/StringgetBytes()[Blast crypto frameframe last crypto frameabcdefghijklmnopqrstuvwxyz cdefghijkefghimnklmnop  copyOfRange([BII)[B ijklmnopqrstuvwxyz 0123456789klmnopqrstuvwxyzabcde  java/lang/System arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)V12345 size()I r u/(I)Lorg/assertj/core/api/AbstractIntegerAssert;  *org/assertj/core/api/AbstractIntegerAssert  write([B)Vjava/util/function/Function  org/mockito/ArgumentCaptorforClass/(Ljava/lang/Class;)Lorg/mockito/ArgumentCaptor;  verify&(Ljava/lang/Object;)Ljava/lang/Object;    capture()Ljava/lang/Object;  anyInt  org/mockito/ArgumentMatchersanyjava/util/function/Consumer  send`(Ljava/util/function/Function;ILnet/luminis/quic/EncryptionLevel;Ljava/util/function/Consumer;)V   getValue  ! "#java/lang/IntegervalueOf(I)Ljava/lang/Integer; % X' net/luminis/quic/frame/QuicFrame r) u*7(Ljava/lang/Object;)Lorg/assertj/core/api/ObjectAssert; ,-. /0!org/assertj/core/api/ObjectAssert isInstanceOf8(Ljava/lang/Class;)Lorg/assertj/core/api/AbstractAssert; ^2 3 getStreamData r5 u62([B)Lorg/assertj/core/api/AbstractByteArrayAssert; 89: ;<,org/assertj/core/api/AbstractByteArrayAsserthasSize1(I)Lorg/assertj/core/api/AbstractByteArrayAssert; ^> ?@ getOffset()J rB uC,(J)Lorg/assertj/core/api/AbstractLongAssert; EFG C'org/assertj/core/api/AbstractLongAssertIjava/util/Random H HL M nextBytes OPQ RSjava/nio/ByteBufferallocate(I)Ljava/nio/ByteBuffer; U VWatMost.(I)Lorg/mockito/verification/VerificationMode; Y ZQ(Ljava/lang/Object;Lorg/mockito/verification/VerificationMode;)Ljava/lang/Object; \ ]p getAllValues _ `aclearInvocations([Ljava/lang/Object;)V c destream()Ljava/util/stream/Stream;g hiaccept4(Ljava/nio/ByteBuffer;)Ljava/util/function/Consumer; klm nojava/util/stream/StreamforEach (Ljava/util/function/Consumer;)V Oq rarray 8gv*net/luminis/tls/handshake/MessageProcessorx"net/luminis/tls/ProtectionKeysType >z {|parseAndProcessHandshakeMessage(Ljava/nio/ByteBuffer;Lnet/luminis/tls/handshake/MessageProcessor;Lnet/luminis/tls/ProtectionKeysType;)Lnet/luminis/tls/handshake/HandshakeMessage; ~ when:(Ljava/lang/Object;)Lorg/mockito/stubbing/OngoingStubbing;#net/luminis/quic/CryptoStreamTest$1  C(Lnet/luminis/quic/CryptoStreamTest;Ljava/util/function/Function;)V  $org/mockito/stubbing/OngoingStubbing thenAnswerE(Lorg/mockito/stubbing/Answer;)Lorg/mockito/stubbing/OngoingStubbing; O wrap([B)Ljava/nio/ByteBuffer; O SputInt O put O rewind()Ljava/nio/ByteBuffer; O (B)Ljava/nio/ByteBuffer; ^ getFrameLength  isLessThanOrEqualTo O mark O ()B O reset O getInt O     (ILjava/lang/String;)V  net/luminis/quic/Version getDefault()Lnet/luminis/quic/Version;CodeLineNumberTableLocalVariableTablethis#Lnet/luminis/quic/CryptoStreamTest;prepareObjectUnderTest Exceptionsjava/lang/ExceptionRuntimeVisibleAnnotations"Lorg/junit/jupiter/api/BeforeEach;parseSingleMessageInSingleFrameLorg/junit/jupiter/api/Test;0parserWaitsForAllFramesNeededToParseWholeMessagerawMessageBytes[B:parserWaitsForAllOutOfOrderFramesNeededToParseWholeMessage2handleRetransmittedFramesWithDifferentSegmentationhandleOverlappingFramesparseMultipleMessagesrawMessageBytes1rawMessageBytes2&parseMessageSplitAccrossMultipleFrames;>;TLjava/util/function/Function;8writingDataThatDoesNotFitInFrameLeadsToMultipleCallbacksframeGeneratorFunctionsLjava/util/List; dataReceivedLjava/nio/ByteBuffer;fLjava/util/List;>; StackMapTable,dataInMultipleWritesIsConcatenatedIntoStream parseFunctionMLjava/util/function/Function; SignatureP(Ljava/util/function/Function;)VcontentLjava/lang/String;typeIbytesbuffer5lambda$dataInMultipleWritesIsConcatenatedIntoStream$25(Ljava/nio/ByteBuffer;Ljava/util/function/Function;)VfAlambda$writingDataThatDoesNotFitInFrameLeadsToMultipleCallbacks$1lambda$prepareObjectUnderTest$00(Ljava/nio/ByteBuffer;)Lnet/luminis/tls/Message;length stringBytes SourceFileCryptoStreamTest.java NestMembersBootstrapMethods  "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;)V  ]   InnerClassesMockTlsMessagenet/luminis/tls/TlsConstants HandshakeType%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup <=BC/*0  x* *YY &,Y. .0 025 5*7:*> >@*:*:DHJ*@P*VZ: ;(<K=W>n@wI x[*:^Y* `bfi*:mqwx}YY`SW*:mWMO#P9Q=RZS [*L*:^Y +i*:mq*:^Yi*:mq*:^Yi*:mq}YYSW"WYZ,\E]R_k`a*L*:^Yi*:mq*:^Y +i*:mq*:^Yi*:mq}YYSW"eg h-jEkRmkno*L*:^Yi*:mq*:^Y +i*:mq*:^Y +i*:mq*:^Y¶i*:mq}YYSW* su v-xEyR|j}we *ĶL*:^Yȶi*:mq*:^Y̶i*:mq*:^Yζi*:mq*:^YҶi*:mq*:^Y +Էi*:mq*:^Yڶi*:mq}YYķSW: -FSly *ĶL*ܶM*:^Y,i*:^Yڶi*:^Yi*:mq*:^Y +Էi*:mq}YYķSW*:mq}YYܷSW* #<Ub{  vL*+ *+  *:^Y + Էi*:mW*:mq}YYSW*:^Y+  Էi*:mW*:mq}YYSW*:^Y+ Էi*:mW*:mq}YYSW*:^Y+Էi*:mW*:mq}YYSW*:mq}YYSWF";Om %9WuvqxL*:+M*,  !!,N-$&:(^+W^14x7W^=A DW*  =EVar4~pE>V-pE>WLHYJ+K*:+NMN*cTX-  !!-[:Y*S^b,fj,p4+sW: &U[isv4&b[- x&b[- OULHYJ+K*:+ȸԶ*:+Զ*:+Զ*:+\Զ*:+\ԶNMN*cTX-  !!-[:Y*S^b,tj,p4+sWJ 1BSdkq    4qb-kxqb-kOU\]~4*@OO,uwwy}Y*+W 3&44 4d;*+b)de5,`N-:,W,WWW-- ./0%1+2334555 +% ++$&M,,(^+W*,^1W* ++*& 8+$&M,(^+W,^W*,^1W+7 88( 3*W*<*W*~=N*-WYY-AB CDEF"G*3 )2     "@