{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo {}", "source2": "zipinfo {}", "unified_diff": "@@ -1,36 +1,36 @@\n-Zip file size: 72798 bytes, number of entries: 34\n+Zip file size: 73742 bytes, number of entries: 34\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 META-INF/\n -rw----     2.0 fat    11543 bX stor 70-Jan-01 00:00 META-INF/DEPENDENCIES\n -rw----     2.0 fat    11358 bX stor 70-Jan-01 00:00 META-INF/LICENSE\n -rw----     2.0 fat       25 bX stor 70-Jan-01 00:00 META-INF/MANIFEST.MF\n -rw----     2.0 fat      171 bX stor 70-Jan-01 00:00 META-INF/NOTICE\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 META-INF/dubbo/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 META-INF/dubbo/internal/\n -rw----     2.0 fat       52 bX stor 70-Jan-01 00:00 META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol\n -rw----     2.0 fat       77 bX stor 70-Jan-01 00:00 META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor\n -rw----     2.0 fat       77 bX stor 70-Jan-01 00:00 META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 META-INF/maven/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/\n -rw----     2.0 fat        0 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.properties\n--rw----     2.0 fat     2755 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml\n+-rw----     2.0 fat     2681 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/dubbo/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/dubbo/rpc/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/\n--rw----     2.0 fat     2649 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java\n--rw----     2.0 fat      876 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java\n--rw----     2.0 fat     1950 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcConstants.java\n--rw----     2.0 fat     4069 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcInvoker.java\n--rw----     2.0 fat    10459 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java\n--rw----     2.0 fat     8464 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java\n--rw----     2.0 fat     2622 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/ReferenceCountManagedChannel.java\n+-rw----     2.0 fat     2722 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java\n+-rw----     2.0 fat      897 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java\n+-rw----     2.0 fat     1991 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcConstants.java\n+-rw----     2.0 fat     4187 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcInvoker.java\n+-rw----     2.0 fat    10684 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java\n+-rw----     2.0 fat     8699 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java\n+-rw----     2.0 fat     2707 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/ReferenceCountManagedChannel.java\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/\n--rw----     2.0 fat     1094 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/ClientInterceptor.java\n--rw----     2.0 fat     1458 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/GrpcConfigurator.java\n--rw----     2.0 fat     4384 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/RpcContextInterceptor.java\n--rw----     2.0 fat     1094 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerInterceptor.java\n--rw----     2.0 fat     1121 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerTransportFilter.java\n-34 files, 66298 bytes uncompressed, 66298 bytes compressed:  0.0%\n+-rw----     2.0 fat     1120 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/ClientInterceptor.java\n+-rw----     2.0 fat     1499 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/GrpcConfigurator.java\n+-rw----     2.0 fat     4484 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/RpcContextInterceptor.java\n+-rw----     2.0 fat     1120 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerInterceptor.java\n+-rw----     2.0 fat     1148 bX stor 70-Jan-01 00:00 org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerTransportFilter.java\n+34 files, 67242 bytes uncompressed, 67242 bytes compressed:  0.0%\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -368,1514 +368,1514 @@\n #\n 05FF7 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n 05FF9   Length              0005 (5)\n 05FFB   Flags               01 (1) 'Modification'\n 05FFC   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n 06000 PAYLOAD\n \n-06AC3 DATA DESCRIPTOR       08074B50 (134695760)\n-06AC7 CRC                   6EE94123 (1860780323)\n-06ACB Compressed Size       00000AC3 (2755)\n-06ACF Uncompressed Size     00000AC3 (2755)\n-\n-06AD3 LOCAL HEADER #16      04034B50 (67324752)\n-06AD7 Extract Zip Spec      14 (20) '2.0'\n-06AD8 Extract OS            00 (0) 'MS-DOS'\n-06AD9 General Purpose Flag  0000 (0)\n-06ADB Compression Method    0000 (0) 'Stored'\n-06ADD Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-06AE1 CRC                   00000000 (0)\n-06AE5 Compressed Size       00000000 (0)\n-06AE9 Uncompressed Size     00000000 (0)\n-06AED Filename Length       0004 (4)\n-06AEF Extra Length          0009 (9)\n-06AF1 Filename              'XXXX'\n-#\n-# WARNING: Offset 0x6AF1: Filename 'XXXX'\n-#          Zero length filename\n-#\n-06AF5 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-06AF7   Length              0005 (5)\n-06AF9   Flags               01 (1) 'Modification'\n-06AFA   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-06AFE LOCAL HEADER #17      04034B50 (67324752)\n-06B02 Extract Zip Spec      14 (20) '2.0'\n-06B03 Extract OS            00 (0) 'MS-DOS'\n-06B04 General Purpose Flag  0000 (0)\n-06B06 Compression Method    0000 (0) 'Stored'\n-06B08 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-06B0C CRC                   00000000 (0)\n-06B10 Compressed Size       00000000 (0)\n-06B14 Uncompressed Size     00000000 (0)\n-06B18 Filename Length       000B (11)\n-06B1A Extra Length          0009 (9)\n-06B1C Filename              'XXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x6B1C: Filename 'XXXXXXXXXXX'\n-#          Zero length filename\n-#\n-06B27 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-06B29   Length              0005 (5)\n-06B2B   Flags               01 (1) 'Modification'\n-06B2C   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-06B30 LOCAL HEADER #18      04034B50 (67324752)\n-06B34 Extract Zip Spec      14 (20) '2.0'\n-06B35 Extract OS            00 (0) 'MS-DOS'\n-06B36 General Purpose Flag  0000 (0)\n-06B38 Compression Method    0000 (0) 'Stored'\n-06B3A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-06B3E CRC                   00000000 (0)\n-06B42 Compressed Size       00000000 (0)\n-06B46 Uncompressed Size     00000000 (0)\n-06B4A Filename Length       0011 (17)\n-06B4C Extra Length          0009 (9)\n-06B4E Filename              'XXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x6B4E: Filename 'XXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-06B5F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-06B61   Length              0005 (5)\n-06B63   Flags               01 (1) 'Modification'\n-06B64   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-06B68 LOCAL HEADER #19      04034B50 (67324752)\n-06B6C Extract Zip Spec      14 (20) '2.0'\n-06B6D Extract OS            00 (0) 'MS-DOS'\n-06B6E General Purpose Flag  0000 (0)\n-06B70 Compression Method    0000 (0) 'Stored'\n-06B72 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-06B76 CRC                   00000000 (0)\n-06B7A Compressed Size       00000000 (0)\n-06B7E Uncompressed Size     00000000 (0)\n-06B82 Filename Length       0015 (21)\n-06B84 Extra Length          0009 (9)\n-06B86 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x6B86: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-06B9B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-06B9D   Length              0005 (5)\n-06B9F   Flags               01 (1) 'Modification'\n-06BA0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-06BA4 LOCAL HEADER #20      04034B50 (67324752)\n-06BA8 Extract Zip Spec      14 (20) '2.0'\n-06BA9 Extract OS            00 (0) 'MS-DOS'\n-06BAA General Purpose Flag  0000 (0)\n-06BAC Compression Method    0000 (0) 'Stored'\n-06BAE Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-06BB2 CRC                   00000000 (0)\n-06BB6 Compressed Size       00000000 (0)\n-06BBA Uncompressed Size     00000000 (0)\n-06BBE Filename Length       001E (30)\n-06BC0 Extra Length          0009 (9)\n-06BC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06A79 DATA DESCRIPTOR       08074B50 (134695760)\n+06A7D CRC                   C105B8EB (3238377707)\n+06A81 Compressed Size       00000A79 (2681)\n+06A85 Uncompressed Size     00000A79 (2681)\n+\n+06A89 LOCAL HEADER #16      04034B50 (67324752)\n+06A8D Extract Zip Spec      14 (20) '2.0'\n+06A8E Extract OS            00 (0) 'MS-DOS'\n+06A8F General Purpose Flag  0000 (0)\n+06A91 Compression Method    0000 (0) 'Stored'\n+06A93 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+06A97 CRC                   00000000 (0)\n+06A9B Compressed Size       00000000 (0)\n+06A9F Uncompressed Size     00000000 (0)\n+06AA3 Filename Length       0004 (4)\n+06AA5 Extra Length          0009 (9)\n+06AA7 Filename              'XXXX'\n+#\n+# WARNING: Offset 0x6AA7: Filename 'XXXX'\n+#          Zero length filename\n+#\n+06AAB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+06AAD   Length              0005 (5)\n+06AAF   Flags               01 (1) 'Modification'\n+06AB0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+06AB4 LOCAL HEADER #17      04034B50 (67324752)\n+06AB8 Extract Zip Spec      14 (20) '2.0'\n+06AB9 Extract OS            00 (0) 'MS-DOS'\n+06ABA General Purpose Flag  0000 (0)\n+06ABC Compression Method    0000 (0) 'Stored'\n+06ABE Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+06AC2 CRC                   00000000 (0)\n+06AC6 Compressed Size       00000000 (0)\n+06ACA Uncompressed Size     00000000 (0)\n+06ACE Filename Length       000B (11)\n+06AD0 Extra Length          0009 (9)\n+06AD2 Filename              'XXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x6AD2: Filename 'XXXXXXXXXXX'\n+#          Zero length filename\n+#\n+06ADD Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+06ADF   Length              0005 (5)\n+06AE1   Flags               01 (1) 'Modification'\n+06AE2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+06AE6 LOCAL HEADER #18      04034B50 (67324752)\n+06AEA Extract Zip Spec      14 (20) '2.0'\n+06AEB Extract OS            00 (0) 'MS-DOS'\n+06AEC General Purpose Flag  0000 (0)\n+06AEE Compression Method    0000 (0) 'Stored'\n+06AF0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+06AF4 CRC                   00000000 (0)\n+06AF8 Compressed Size       00000000 (0)\n+06AFC Uncompressed Size     00000000 (0)\n+06B00 Filename Length       0011 (17)\n+06B02 Extra Length          0009 (9)\n+06B04 Filename              'XXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x6B04: Filename 'XXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+06B15 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+06B17   Length              0005 (5)\n+06B19   Flags               01 (1) 'Modification'\n+06B1A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+06B1E LOCAL HEADER #19      04034B50 (67324752)\n+06B22 Extract Zip Spec      14 (20) '2.0'\n+06B23 Extract OS            00 (0) 'MS-DOS'\n+06B24 General Purpose Flag  0000 (0)\n+06B26 Compression Method    0000 (0) 'Stored'\n+06B28 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+06B2C CRC                   00000000 (0)\n+06B30 Compressed Size       00000000 (0)\n+06B34 Uncompressed Size     00000000 (0)\n+06B38 Filename Length       0015 (21)\n+06B3A Extra Length          0009 (9)\n+06B3C Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x6B3C: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+06B51 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+06B53   Length              0005 (5)\n+06B55   Flags               01 (1) 'Modification'\n+06B56   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+06B5A LOCAL HEADER #20      04034B50 (67324752)\n+06B5E Extract Zip Spec      14 (20) '2.0'\n+06B5F Extract OS            00 (0) 'MS-DOS'\n+06B60 General Purpose Flag  0000 (0)\n+06B62 Compression Method    0000 (0) 'Stored'\n+06B64 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+06B68 CRC                   00000000 (0)\n+06B6C Compressed Size       00000000 (0)\n+06B70 Uncompressed Size     00000000 (0)\n+06B74 Filename Length       001E (30)\n+06B76 Extra Length          0009 (9)\n+06B78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x6B78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+06B96 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+06B98   Length              0005 (5)\n+06B9A   Flags               01 (1) 'Modification'\n+06B9B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+06B9F LOCAL HEADER #21      04034B50 (67324752)\n+06BA3 Extract Zip Spec      14 (20) '2.0'\n+06BA4 Extract OS            00 (0) 'MS-DOS'\n+06BA5 General Purpose Flag  0000 (0)\n+06BA7 Compression Method    0000 (0) 'Stored'\n+06BA9 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+06BAD CRC                   00000000 (0)\n+06BB1 Compressed Size       00000000 (0)\n+06BB5 Uncompressed Size     00000000 (0)\n+06BB9 Filename Length       0023 (35)\n+06BBB Extra Length          0009 (9)\n+06BBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6BC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6BBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 06BE0 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n 06BE2   Length              0005 (5)\n 06BE4   Flags               01 (1) 'Modification'\n 06BE5   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n \n-06BE9 LOCAL HEADER #21      04034B50 (67324752)\n+06BE9 LOCAL HEADER #22      04034B50 (67324752)\n 06BED Extract Zip Spec      14 (20) '2.0'\n 06BEE Extract OS            00 (0) 'MS-DOS'\n-06BEF General Purpose Flag  0000 (0)\n+06BEF General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n 06BF1 Compression Method    0000 (0) 'Stored'\n 06BF3 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n 06BF7 CRC                   00000000 (0)\n 06BFB Compressed Size       00000000 (0)\n 06BFF Uncompressed Size     00000000 (0)\n-06C03 Filename Length       0023 (35)\n+06C03 Filename Length       003C (60)\n 06C05 Extra Length          0009 (9)\n-06C07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06C07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6C07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6C07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06C2A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-06C2C   Length              0005 (5)\n-06C2E   Flags               01 (1) 'Modification'\n-06C2F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-06C33 LOCAL HEADER #22      04034B50 (67324752)\n-06C37 Extract Zip Spec      14 (20) '2.0'\n-06C38 Extract OS            00 (0) 'MS-DOS'\n-06C39 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-06C3B Compression Method    0000 (0) 'Stored'\n-06C3D Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-06C41 CRC                   00000000 (0)\n-06C45 Compressed Size       00000000 (0)\n-06C49 Uncompressed Size     00000000 (0)\n-06C4D Filename Length       003C (60)\n-06C4F Extra Length          0009 (9)\n-06C51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x6C51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-06C8D Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-06C8F   Length              0005 (5)\n-06C91   Flags               01 (1) 'Modification'\n-06C92   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-06C96 PAYLOAD\n-\n-076EF DATA DESCRIPTOR       08074B50 (134695760)\n-076F3 CRC                   210B2AE8 (554380008)\n-076F7 Compressed Size       00000A59 (2649)\n-076FB Uncompressed Size     00000A59 (2649)\n-\n-076FF LOCAL HEADER #23      04034B50 (67324752)\n-07703 Extract Zip Spec      14 (20) '2.0'\n-07704 Extract OS            00 (0) 'MS-DOS'\n-07705 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-07707 Compression Method    0000 (0) 'Stored'\n-07709 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-0770D CRC                   00000000 (0)\n-07711 Compressed Size       00000000 (0)\n-07715 Uncompressed Size     00000000 (0)\n-07719 Filename Length       0032 (50)\n-0771B Extra Length          0009 (9)\n-0771D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x771D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-0774F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-07751   Length              0005 (5)\n-07753   Flags               01 (1) 'Modification'\n-07754   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-07758 PAYLOAD\n-\n-07AC4 DATA DESCRIPTOR       08074B50 (134695760)\n-07AC8 CRC                   C1CD2495 (3251446933)\n-07ACC Compressed Size       0000036C (876)\n-07AD0 Uncompressed Size     0000036C (876)\n-\n-07AD4 LOCAL HEADER #24      04034B50 (67324752)\n-07AD8 Extract Zip Spec      14 (20) '2.0'\n-07AD9 Extract OS            00 (0) 'MS-DOS'\n-07ADA General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-07ADC Compression Method    0000 (0) 'Stored'\n-07ADE Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-07AE2 CRC                   00000000 (0)\n-07AE6 Compressed Size       00000000 (0)\n-07AEA Uncompressed Size     00000000 (0)\n-07AEE Filename Length       0035 (53)\n-07AF0 Extra Length          0009 (9)\n-07AF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x7AF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-07B27 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-07B29   Length              0005 (5)\n-07B2B   Flags               01 (1) 'Modification'\n-07B2C   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-07B30 PAYLOAD\n-\n-082CE DATA DESCRIPTOR       08074B50 (134695760)\n-082D2 CRC                   C06931B4 (3228119476)\n-082D6 Compressed Size       0000079E (1950)\n-082DA Uncompressed Size     0000079E (1950)\n-\n-082DE LOCAL HEADER #25      04034B50 (67324752)\n-082E2 Extract Zip Spec      14 (20) '2.0'\n-082E3 Extract OS            00 (0) 'MS-DOS'\n-082E4 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-082E6 Compression Method    0000 (0) 'Stored'\n-082E8 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-082EC CRC                   00000000 (0)\n-082F0 Compressed Size       00000000 (0)\n-082F4 Uncompressed Size     00000000 (0)\n-082F8 Filename Length       0033 (51)\n-082FA Extra Length          0009 (9)\n-082FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x82FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-0832F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-08331   Length              0005 (5)\n-08333   Flags               01 (1) 'Modification'\n-08334   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-08338 PAYLOAD\n-\n-0931D DATA DESCRIPTOR       08074B50 (134695760)\n-09321 CRC                   89D2048F (2312242319)\n-09325 Compressed Size       00000FE5 (4069)\n-09329 Uncompressed Size     00000FE5 (4069)\n-\n-0932D LOCAL HEADER #26      04034B50 (67324752)\n-09331 Extract Zip Spec      14 (20) '2.0'\n-09332 Extract OS            00 (0) 'MS-DOS'\n-09333 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-09335 Compression Method    0000 (0) 'Stored'\n-09337 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-0933B CRC                   00000000 (0)\n-0933F Compressed Size       00000000 (0)\n-09343 Uncompressed Size     00000000 (0)\n-09347 Filename Length       0038 (56)\n-09349 Extra Length          0009 (9)\n-0934B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x934B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-09383 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-09385   Length              0005 (5)\n-09387   Flags               01 (1) 'Modification'\n-09388   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-0938C PAYLOAD\n-\n-0BC67 DATA DESCRIPTOR       08074B50 (134695760)\n-0BC6B CRC                   8EC3CE19 (2395196953)\n-0BC6F Compressed Size       000028DB (10459)\n-0BC73 Uncompressed Size     000028DB (10459)\n-\n-0BC77 LOCAL HEADER #27      04034B50 (67324752)\n-0BC7B Extract Zip Spec      14 (20) '2.0'\n-0BC7C Extract OS            00 (0) 'MS-DOS'\n-0BC7D General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-0BC7F Compression Method    0000 (0) 'Stored'\n-0BC81 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-0BC85 CRC                   00000000 (0)\n-0BC89 Compressed Size       00000000 (0)\n-0BC8D Uncompressed Size     00000000 (0)\n-0BC91 Filename Length       0034 (52)\n-0BC93 Extra Length          0009 (9)\n-0BC95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xBC95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-0BCC9 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-0BCCB   Length              0005 (5)\n-0BCCD   Flags               01 (1) 'Modification'\n-0BCCE   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-0BCD2 PAYLOAD\n-\n-0DDE2 DATA DESCRIPTOR       08074B50 (134695760)\n-0DDE6 CRC                   672528B3 (1730488499)\n-0DDEA Compressed Size       00002110 (8464)\n-0DDEE Uncompressed Size     00002110 (8464)\n-\n-0DDF2 LOCAL HEADER #28      04034B50 (67324752)\n-0DDF6 Extract Zip Spec      14 (20) '2.0'\n-0DDF7 Extract OS            00 (0) 'MS-DOS'\n-0DDF8 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-0DDFA Compression Method    0000 (0) 'Stored'\n-0DDFC Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-0DE00 CRC                   00000000 (0)\n-0DE04 Compressed Size       00000000 (0)\n-0DE08 Uncompressed Size     00000000 (0)\n-0DE0C Filename Length       0044 (68)\n-0DE0E Extra Length          0009 (9)\n-0DE10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xDE10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-0DE54 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-0DE56   Length              0005 (5)\n-0DE58   Flags               01 (1) 'Modification'\n-0DE59   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-0DE5D PAYLOAD\n-\n-0E89B DATA DESCRIPTOR       08074B50 (134695760)\n-0E89F CRC                   5C1106B9 (1544619705)\n-0E8A3 Compressed Size       00000A3E (2622)\n-0E8A7 Uncompressed Size     00000A3E (2622)\n-\n-0E8AB LOCAL HEADER #29      04034B50 (67324752)\n-0E8AF Extract Zip Spec      14 (20) '2.0'\n-0E8B0 Extract OS            00 (0) 'MS-DOS'\n-0E8B1 General Purpose Flag  0000 (0)\n-0E8B3 Compression Method    0000 (0) 'Stored'\n-0E8B5 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-0E8B9 CRC                   00000000 (0)\n-0E8BD Compressed Size       00000000 (0)\n-0E8C1 Uncompressed Size     00000000 (0)\n-0E8C5 Filename Length       0030 (48)\n-0E8C7 Extra Length          0009 (9)\n-0E8C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xE8C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-0E8F9 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-0E8FB   Length              0005 (5)\n-0E8FD   Flags               01 (1) 'Modification'\n-0E8FE   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-0E902 LOCAL HEADER #30      04034B50 (67324752)\n-0E906 Extract Zip Spec      14 (20) '2.0'\n-0E907 Extract OS            00 (0) 'MS-DOS'\n-0E908 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-0E90A Compression Method    0000 (0) 'Stored'\n-0E90C Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-0E910 CRC                   00000000 (0)\n-0E914 Compressed Size       00000000 (0)\n-0E918 Uncompressed Size     00000000 (0)\n-0E91C Filename Length       0046 (70)\n-0E91E Extra Length          0009 (9)\n-0E920 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xE920: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-0E966 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-0E968   Length              0005 (5)\n-0E96A   Flags               01 (1) 'Modification'\n-0E96B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-0E96F PAYLOAD\n-\n-0EDB5 DATA DESCRIPTOR       08074B50 (134695760)\n-0EDB9 CRC                   1C86279A (478554010)\n-0EDBD Compressed Size       00000446 (1094)\n-0EDC1 Uncompressed Size     00000446 (1094)\n-\n-0EDC5 LOCAL HEADER #31      04034B50 (67324752)\n-0EDC9 Extract Zip Spec      14 (20) '2.0'\n-0EDCA Extract OS            00 (0) 'MS-DOS'\n-0EDCB General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-0EDCD Compression Method    0000 (0) 'Stored'\n-0EDCF Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-0EDD3 CRC                   00000000 (0)\n-0EDD7 Compressed Size       00000000 (0)\n-0EDDB Uncompressed Size     00000000 (0)\n-0EDDF Filename Length       0045 (69)\n-0EDE1 Extra Length          0009 (9)\n-0EDE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xEDE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-0EE28 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-0EE2A   Length              0005 (5)\n-0EE2C   Flags               01 (1) 'Modification'\n-0EE2D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-0EE31 PAYLOAD\n-\n-0F3E3 DATA DESCRIPTOR       08074B50 (134695760)\n-0F3E7 CRC                   E37CC454 (3816604756)\n-0F3EB Compressed Size       000005B2 (1458)\n-0F3EF Uncompressed Size     000005B2 (1458)\n-\n-0F3F3 LOCAL HEADER #32      04034B50 (67324752)\n-0F3F7 Extract Zip Spec      14 (20) '2.0'\n-0F3F8 Extract OS            00 (0) 'MS-DOS'\n-0F3F9 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-0F3FB Compression Method    0000 (0) 'Stored'\n-0F3FD Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-0F401 CRC                   00000000 (0)\n-0F405 Compressed Size       00000000 (0)\n-0F409 Uncompressed Size     00000000 (0)\n-0F40D Filename Length       004A (74)\n-0F40F Extra Length          0009 (9)\n-0F411 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xF411: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-0F45B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-0F45D   Length              0005 (5)\n-0F45F   Flags               01 (1) 'Modification'\n-0F460   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-0F464 PAYLOAD\n-\n-10584 DATA DESCRIPTOR       08074B50 (134695760)\n-10588 CRC                   2C4E86BA (743343802)\n-1058C Compressed Size       00001120 (4384)\n-10590 Uncompressed Size     00001120 (4384)\n-\n-10594 LOCAL HEADER #33      04034B50 (67324752)\n-10598 Extract Zip Spec      14 (20) '2.0'\n-10599 Extract OS            00 (0) 'MS-DOS'\n-1059A General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-1059C Compression Method    0000 (0) 'Stored'\n-1059E Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-105A2 CRC                   00000000 (0)\n-105A6 Compressed Size       00000000 (0)\n-105AA Uncompressed Size     00000000 (0)\n-105AE Filename Length       0046 (70)\n-105B0 Extra Length          0009 (9)\n-105B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x105B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-105F8 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-105FA   Length              0005 (5)\n-105FC   Flags               01 (1) 'Modification'\n-105FD   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-10601 PAYLOAD\n-\n-10A47 DATA DESCRIPTOR       08074B50 (134695760)\n-10A4B CRC                   592F92C2 (1496289986)\n-10A4F Compressed Size       00000446 (1094)\n-10A53 Uncompressed Size     00000446 (1094)\n-\n-10A57 LOCAL HEADER #34      04034B50 (67324752)\n-10A5B Extract Zip Spec      14 (20) '2.0'\n-10A5C Extract OS            00 (0) 'MS-DOS'\n-10A5D General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-10A5F Compression Method    0000 (0) 'Stored'\n-10A61 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-10A65 CRC                   00000000 (0)\n-10A69 Compressed Size       00000000 (0)\n-10A6D Uncompressed Size     00000000 (0)\n-10A71 Filename Length       004A (74)\n-10A73 Extra Length          0009 (9)\n-10A75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x10A75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-10ABF Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-10AC1   Length              0005 (5)\n-10AC3   Flags               01 (1) 'Modification'\n-10AC4   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-10AC8 PAYLOAD\n-\n-10F29 DATA DESCRIPTOR       08074B50 (134695760)\n-10F2D CRC                   7BC2ED93 (2076372371)\n-10F31 Compressed Size       00000461 (1121)\n-10F35 Uncompressed Size     00000461 (1121)\n-\n-10F39 CENTRAL HEADER #1     02014B50 (33639248)\n-10F3D Created Zip Spec      14 (20) '2.0'\n-10F3E Created OS            00 (0) 'MS-DOS'\n-10F3F Extract Zip Spec      14 (20) '2.0'\n-10F40 Extract OS            00 (0) 'MS-DOS'\n-10F41 General Purpose Flag  0000 (0)\n-10F43 Compression Method    0000 (0) 'Stored'\n-10F45 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-10F49 CRC                   00000000 (0)\n-10F4D Compressed Size       00000000 (0)\n-10F51 Uncompressed Size     00000000 (0)\n-10F55 Filename Length       0009 (9)\n-10F57 Extra Length          0009 (9)\n-10F59 Comment Length        0000 (0)\n-10F5B Disk Start            0000 (0)\n-10F5D Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-10F5F Ext File Attributes   00000000 (0)\n-10F63 Local Header Offset   00000000 (0)\n-10F67 Filename              'XXXXXXXXX'\n-#\n-# WARNING: Offset 0x10F67: Filename 'XXXXXXXXX'\n-#          Zero length filename\n-#\n-10F70 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-10F72   Length              0005 (5)\n-10F74   Flags               01 (1) 'Modification'\n-10F75   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-10F79 CENTRAL HEADER #2     02014B50 (33639248)\n-10F7D Created Zip Spec      14 (20) '2.0'\n-10F7E Created OS            00 (0) 'MS-DOS'\n-10F7F Extract Zip Spec      14 (20) '2.0'\n-10F80 Extract OS            00 (0) 'MS-DOS'\n-10F81 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-10F83 Compression Method    0000 (0) 'Stored'\n-10F85 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-10F89 CRC                   964AE9D3 (2521491923)\n-10F8D Compressed Size       00002D17 (11543)\n-10F91 Uncompressed Size     00002D17 (11543)\n-10F95 Filename Length       0015 (21)\n-10F97 Extra Length          0009 (9)\n-10F99 Comment Length        0000 (0)\n-10F9B Disk Start            0000 (0)\n-10F9D Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-10F9F Ext File Attributes   00000000 (0)\n-10FA3 Local Header Offset   00000030 (48)\n-10FA7 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x10FA7: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-10FBC Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-10FBE   Length              0005 (5)\n-10FC0   Flags               01 (1) 'Modification'\n-10FC1   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-10FC5 CENTRAL HEADER #3     02014B50 (33639248)\n-10FC9 Created Zip Spec      14 (20) '2.0'\n-10FCA Created OS            00 (0) 'MS-DOS'\n-10FCB Extract Zip Spec      14 (20) '2.0'\n-10FCC Extract OS            00 (0) 'MS-DOS'\n-10FCD General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-10FCF Compression Method    0000 (0) 'Stored'\n-10FD1 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-10FD5 CRC                   86E2B4B4 (2263004340)\n-10FD9 Compressed Size       00002C5E (11358)\n-10FDD Uncompressed Size     00002C5E (11358)\n-10FE1 Filename Length       0010 (16)\n-10FE3 Extra Length          0009 (9)\n-10FE5 Comment Length        0000 (0)\n-10FE7 Disk Start            0000 (0)\n-10FE9 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-10FEB Ext File Attributes   00000000 (0)\n-10FEF Local Header Offset   00002D93 (11667)\n-10FF3 Filename              'XXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x10FF3: Filename 'XXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11003 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11005   Length              0005 (5)\n-11007   Flags               01 (1) 'Modification'\n-11008   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-1100C CENTRAL HEADER #4     02014B50 (33639248)\n-11010 Created Zip Spec      14 (20) '2.0'\n-11011 Created OS            00 (0) 'MS-DOS'\n-11012 Extract Zip Spec      14 (20) '2.0'\n-11013 Extract OS            00 (0) 'MS-DOS'\n-11014 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-11016 Compression Method    0000 (0) 'Stored'\n-11018 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-1101C CRC                   EE027FB2 (3993141170)\n-11020 Compressed Size       00000019 (25)\n-11024 Uncompressed Size     00000019 (25)\n-11028 Filename Length       0014 (20)\n-1102A Extra Length          0009 (9)\n-1102C Comment Length        0000 (0)\n-1102E Disk Start            0000 (0)\n-11030 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11032 Ext File Attributes   00000000 (0)\n-11036 Local Header Offset   00005A38 (23096)\n-1103A Filename              'XXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x1103A: Filename 'XXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-1104E Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11050   Length              0005 (5)\n-11052   Flags               01 (1) 'Modification'\n-11053   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11057 CENTRAL HEADER #5     02014B50 (33639248)\n-1105B Created Zip Spec      14 (20) '2.0'\n-1105C Created OS            00 (0) 'MS-DOS'\n-1105D Extract Zip Spec      14 (20) '2.0'\n-1105E Extract OS            00 (0) 'MS-DOS'\n-1105F General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-11061 Compression Method    0000 (0) 'Stored'\n-11063 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11067 CRC                   52A344C7 (1386431687)\n-1106B Compressed Size       000000AB (171)\n-1106F Uncompressed Size     000000AB (171)\n-11073 Filename Length       000F (15)\n-11075 Extra Length          0009 (9)\n-11077 Comment Length        0000 (0)\n-11079 Disk Start            0000 (0)\n-1107B Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-1107D Ext File Attributes   00000000 (0)\n-11081 Local Header Offset   00005A9C (23196)\n-11085 Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11085: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11094 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11096   Length              0005 (5)\n-11098   Flags               01 (1) 'Modification'\n-11099   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-1109D CENTRAL HEADER #6     02014B50 (33639248)\n-110A1 Created Zip Spec      14 (20) '2.0'\n-110A2 Created OS            00 (0) 'MS-DOS'\n-110A3 Extract Zip Spec      14 (20) '2.0'\n-110A4 Extract OS            00 (0) 'MS-DOS'\n-110A5 General Purpose Flag  0000 (0)\n-110A7 Compression Method    0000 (0) 'Stored'\n-110A9 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-110AD CRC                   00000000 (0)\n-110B1 Compressed Size       00000000 (0)\n-110B5 Uncompressed Size     00000000 (0)\n-110B9 Filename Length       000F (15)\n-110BB Extra Length          0009 (9)\n-110BD Comment Length        0000 (0)\n-110BF Disk Start            0000 (0)\n-110C1 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-110C3 Ext File Attributes   00000000 (0)\n-110C7 Local Header Offset   00005B8D (23437)\n-110CB Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x110CB: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-110DA Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-110DC   Length              0005 (5)\n-110DE   Flags               01 (1) 'Modification'\n-110DF   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-110E3 CENTRAL HEADER #7     02014B50 (33639248)\n-110E7 Created Zip Spec      14 (20) '2.0'\n-110E8 Created OS            00 (0) 'MS-DOS'\n-110E9 Extract Zip Spec      14 (20) '2.0'\n-110EA Extract OS            00 (0) 'MS-DOS'\n-110EB General Purpose Flag  0000 (0)\n-110ED Compression Method    0000 (0) 'Stored'\n-110EF Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-110F3 CRC                   00000000 (0)\n-110F7 Compressed Size       00000000 (0)\n-110FB Uncompressed Size     00000000 (0)\n-110FF Filename Length       0018 (24)\n-11101 Extra Length          0009 (9)\n-11103 Comment Length        0000 (0)\n-11105 Disk Start            0000 (0)\n-11107 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11109 Ext File Attributes   00000000 (0)\n-1110D Local Header Offset   00005BC3 (23491)\n-11111 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11111: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11129 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-1112B   Length              0005 (5)\n-1112D   Flags               01 (1) 'Modification'\n-1112E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11132 CENTRAL HEADER #8     02014B50 (33639248)\n-11136 Created Zip Spec      14 (20) '2.0'\n-11137 Created OS            00 (0) 'MS-DOS'\n-11138 Extract Zip Spec      14 (20) '2.0'\n-11139 Extract OS            00 (0) 'MS-DOS'\n-1113A General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-1113C Compression Method    0000 (0) 'Stored'\n-1113E Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11142 CRC                   5B557C1B (1532328987)\n-11146 Compressed Size       00000034 (52)\n-1114A Uncompressed Size     00000034 (52)\n-1114E Filename Length       0035 (53)\n-11150 Extra Length          0009 (9)\n-11152 Comment Length        0000 (0)\n-11154 Disk Start            0000 (0)\n-11156 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11158 Ext File Attributes   00000000 (0)\n-1115C Local Header Offset   00005C02 (23554)\n-11160 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11160: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11195 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11197   Length              0005 (5)\n-11199   Flags               01 (1) 'Modification'\n-1119A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-1119E CENTRAL HEADER #9     02014B50 (33639248)\n-111A2 Created Zip Spec      14 (20) '2.0'\n-111A3 Created OS            00 (0) 'MS-DOS'\n-111A4 Extract Zip Spec      14 (20) '2.0'\n-111A5 Extract OS            00 (0) 'MS-DOS'\n-111A6 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-111A8 Compression Method    0000 (0) 'Stored'\n-111AA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-111AE CRC                   6F1FEDD0 (1864363472)\n-111B2 Compressed Size       0000004D (77)\n-111B6 Uncompressed Size     0000004D (77)\n-111BA Filename Length       0059 (89)\n-111BC Extra Length          0009 (9)\n-111BE Comment Length        0000 (0)\n-111C0 Disk Start            0000 (0)\n-111C2 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-111C4 Ext File Attributes   00000000 (0)\n-111C8 Local Header Offset   00005CA2 (23714)\n-111CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x111CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11225 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11227   Length              0005 (5)\n-11229   Flags               01 (1) 'Modification'\n-1122A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-1122E CENTRAL HEADER #10    02014B50 (33639248)\n-11232 Created Zip Spec      14 (20) '2.0'\n-11233 Created OS            00 (0) 'MS-DOS'\n-11234 Extract Zip Spec      14 (20) '2.0'\n-11235 Extract OS            00 (0) 'MS-DOS'\n-11236 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-11238 Compression Method    0000 (0) 'Stored'\n-1123A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-1123E CRC                   6F1FEDD0 (1864363472)\n-11242 Compressed Size       0000004D (77)\n-11246 Uncompressed Size     0000004D (77)\n-1124A Filename Length       0059 (89)\n-1124C Extra Length          0009 (9)\n-1124E Comment Length        0000 (0)\n-11250 Disk Start            0000 (0)\n-11252 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11254 Ext File Attributes   00000000 (0)\n-11258 Local Header Offset   00005D7F (23935)\n-1125C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x1125C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-112B5 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-112B7   Length              0005 (5)\n-112B9   Flags               01 (1) 'Modification'\n-112BA   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-112BE CENTRAL HEADER #11    02014B50 (33639248)\n-112C2 Created Zip Spec      14 (20) '2.0'\n-112C3 Created OS            00 (0) 'MS-DOS'\n-112C4 Extract Zip Spec      14 (20) '2.0'\n-112C5 Extract OS            00 (0) 'MS-DOS'\n-112C6 General Purpose Flag  0000 (0)\n-112C8 Compression Method    0000 (0) 'Stored'\n-112CA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-112CE CRC                   00000000 (0)\n-112D2 Compressed Size       00000000 (0)\n-112D6 Uncompressed Size     00000000 (0)\n-112DA Filename Length       000F (15)\n-112DC Extra Length          0009 (9)\n-112DE Comment Length        0000 (0)\n-112E0 Disk Start            0000 (0)\n-112E2 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-112E4 Ext File Attributes   00000000 (0)\n-112E8 Local Header Offset   00005E5C (24156)\n-112EC Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x112EC: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-112FB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-112FD   Length              0005 (5)\n-112FF   Flags               01 (1) 'Modification'\n-11300   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11304 CENTRAL HEADER #12    02014B50 (33639248)\n-11308 Created Zip Spec      14 (20) '2.0'\n-11309 Created OS            00 (0) 'MS-DOS'\n-1130A Extract Zip Spec      14 (20) '2.0'\n-1130B Extract OS            00 (0) 'MS-DOS'\n-1130C General Purpose Flag  0000 (0)\n-1130E Compression Method    0000 (0) 'Stored'\n-11310 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11314 CRC                   00000000 (0)\n-11318 Compressed Size       00000000 (0)\n-1131C Uncompressed Size     00000000 (0)\n-11320 Filename Length       0020 (32)\n-11322 Extra Length          0009 (9)\n-11324 Comment Length        0000 (0)\n-11326 Disk Start            0000 (0)\n-11328 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-1132A Ext File Attributes   00000000 (0)\n-1132E Local Header Offset   00005E92 (24210)\n-11332 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11332: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11352 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11354   Length              0005 (5)\n-11356   Flags               01 (1) 'Modification'\n-11357   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-1135B CENTRAL HEADER #13    02014B50 (33639248)\n-1135F Created Zip Spec      14 (20) '2.0'\n-11360 Created OS            00 (0) 'MS-DOS'\n-11361 Extract Zip Spec      14 (20) '2.0'\n-11362 Extract OS            00 (0) 'MS-DOS'\n-11363 General Purpose Flag  0000 (0)\n-11365 Compression Method    0000 (0) 'Stored'\n-11367 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-1136B CRC                   00000000 (0)\n-1136F Compressed Size       00000000 (0)\n-11373 Uncompressed Size     00000000 (0)\n-11377 Filename Length       002F (47)\n-11379 Extra Length          0009 (9)\n-1137B Comment Length        0000 (0)\n-1137D Disk Start            0000 (0)\n-1137F Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11381 Ext File Attributes   00000000 (0)\n-11385 Local Header Offset   00005ED9 (24281)\n-11389 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11389: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-113B8 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-113BA   Length              0005 (5)\n-113BC   Flags               01 (1) 'Modification'\n-113BD   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-113C1 CENTRAL HEADER #14    02014B50 (33639248)\n-113C5 Created Zip Spec      14 (20) '2.0'\n-113C6 Created OS            00 (0) 'MS-DOS'\n-113C7 Extract Zip Spec      14 (20) '2.0'\n-113C8 Extract OS            00 (0) 'MS-DOS'\n-113C9 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-113CB Compression Method    0000 (0) 'Stored'\n-113CD Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-113D1 CRC                   00000000 (0)\n-113D5 Compressed Size       00000000 (0)\n-113D9 Uncompressed Size     00000000 (0)\n-113DD Filename Length       003D (61)\n-113DF Extra Length          0009 (9)\n-113E1 Comment Length        0000 (0)\n-113E3 Disk Start            0000 (0)\n-113E5 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-113E7 Ext File Attributes   00000000 (0)\n-113EB Local Header Offset   00005F2F (24367)\n-113EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x113EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-1142C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-1142E   Length              0005 (5)\n-11430   Flags               01 (1) 'Modification'\n-11431   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11435 CENTRAL HEADER #15    02014B50 (33639248)\n-11439 Created Zip Spec      14 (20) '2.0'\n-1143A Created OS            00 (0) 'MS-DOS'\n-1143B Extract Zip Spec      14 (20) '2.0'\n-1143C Extract OS            00 (0) 'MS-DOS'\n-1143D General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-1143F Compression Method    0000 (0) 'Stored'\n-11441 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11445 CRC                   6EE94123 (1860780323)\n-11449 Compressed Size       00000AC3 (2755)\n-1144D Uncompressed Size     00000AC3 (2755)\n-11451 Filename Length       0036 (54)\n-11453 Extra Length          0009 (9)\n-11455 Comment Length        0000 (0)\n-11457 Disk Start            0000 (0)\n-11459 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-1145B Ext File Attributes   00000000 (0)\n-1145F Local Header Offset   00005FA3 (24483)\n-11463 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11463: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11499 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-1149B   Length              0005 (5)\n-1149D   Flags               01 (1) 'Modification'\n-1149E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-114A2 CENTRAL HEADER #16    02014B50 (33639248)\n-114A6 Created Zip Spec      14 (20) '2.0'\n-114A7 Created OS            00 (0) 'MS-DOS'\n-114A8 Extract Zip Spec      14 (20) '2.0'\n-114A9 Extract OS            00 (0) 'MS-DOS'\n-114AA General Purpose Flag  0000 (0)\n-114AC Compression Method    0000 (0) 'Stored'\n-114AE Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-114B2 CRC                   00000000 (0)\n-114B6 Compressed Size       00000000 (0)\n-114BA Uncompressed Size     00000000 (0)\n-114BE Filename Length       0004 (4)\n-114C0 Extra Length          0009 (9)\n-114C2 Comment Length        0000 (0)\n-114C4 Disk Start            0000 (0)\n-114C6 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-114C8 Ext File Attributes   00000000 (0)\n-114CC Local Header Offset   00006AD3 (27347)\n-114D0 Filename              'XXXX'\n-#\n-# WARNING: Offset 0x114D0: Filename 'XXXX'\n-#          Zero length filename\n-#\n-114D4 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-114D6   Length              0005 (5)\n-114D8   Flags               01 (1) 'Modification'\n-114D9   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-114DD CENTRAL HEADER #17    02014B50 (33639248)\n-114E1 Created Zip Spec      14 (20) '2.0'\n-114E2 Created OS            00 (0) 'MS-DOS'\n-114E3 Extract Zip Spec      14 (20) '2.0'\n-114E4 Extract OS            00 (0) 'MS-DOS'\n-114E5 General Purpose Flag  0000 (0)\n-114E7 Compression Method    0000 (0) 'Stored'\n-114E9 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-114ED CRC                   00000000 (0)\n-114F1 Compressed Size       00000000 (0)\n-114F5 Uncompressed Size     00000000 (0)\n-114F9 Filename Length       000B (11)\n-114FB Extra Length          0009 (9)\n-114FD Comment Length        0000 (0)\n-114FF Disk Start            0000 (0)\n-11501 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11503 Ext File Attributes   00000000 (0)\n-11507 Local Header Offset   00006AFE (27390)\n-1150B Filename              'XXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x1150B: Filename 'XXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11516 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11518   Length              0005 (5)\n-1151A   Flags               01 (1) 'Modification'\n-1151B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-1151F CENTRAL HEADER #18    02014B50 (33639248)\n-11523 Created Zip Spec      14 (20) '2.0'\n-11524 Created OS            00 (0) 'MS-DOS'\n-11525 Extract Zip Spec      14 (20) '2.0'\n-11526 Extract OS            00 (0) 'MS-DOS'\n-11527 General Purpose Flag  0000 (0)\n-11529 Compression Method    0000 (0) 'Stored'\n-1152B Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-1152F CRC                   00000000 (0)\n-11533 Compressed Size       00000000 (0)\n-11537 Uncompressed Size     00000000 (0)\n-1153B Filename Length       0011 (17)\n-1153D Extra Length          0009 (9)\n-1153F Comment Length        0000 (0)\n-11541 Disk Start            0000 (0)\n-11543 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11545 Ext File Attributes   00000000 (0)\n-11549 Local Header Offset   00006B30 (27440)\n-1154D Filename              'XXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x1154D: Filename 'XXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-1155E Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11560   Length              0005 (5)\n-11562   Flags               01 (1) 'Modification'\n-11563   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11567 CENTRAL HEADER #19    02014B50 (33639248)\n-1156B Created Zip Spec      14 (20) '2.0'\n-1156C Created OS            00 (0) 'MS-DOS'\n-1156D Extract Zip Spec      14 (20) '2.0'\n-1156E Extract OS            00 (0) 'MS-DOS'\n-1156F General Purpose Flag  0000 (0)\n-11571 Compression Method    0000 (0) 'Stored'\n-11573 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11577 CRC                   00000000 (0)\n-1157B Compressed Size       00000000 (0)\n-1157F Uncompressed Size     00000000 (0)\n-11583 Filename Length       0015 (21)\n-11585 Extra Length          0009 (9)\n-11587 Comment Length        0000 (0)\n-11589 Disk Start            0000 (0)\n-1158B Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-1158D Ext File Attributes   00000000 (0)\n-11591 Local Header Offset   00006B68 (27496)\n-11595 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11595: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-115AA Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-115AC   Length              0005 (5)\n-115AE   Flags               01 (1) 'Modification'\n-115AF   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-115B3 CENTRAL HEADER #20    02014B50 (33639248)\n-115B7 Created Zip Spec      14 (20) '2.0'\n-115B8 Created OS            00 (0) 'MS-DOS'\n-115B9 Extract Zip Spec      14 (20) '2.0'\n-115BA Extract OS            00 (0) 'MS-DOS'\n-115BB General Purpose Flag  0000 (0)\n-115BD Compression Method    0000 (0) 'Stored'\n-115BF Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-115C3 CRC                   00000000 (0)\n-115C7 Compressed Size       00000000 (0)\n-115CB Uncompressed Size     00000000 (0)\n-115CF Filename Length       001E (30)\n-115D1 Extra Length          0009 (9)\n-115D3 Comment Length        0000 (0)\n-115D5 Disk Start            0000 (0)\n-115D7 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-115D9 Ext File Attributes   00000000 (0)\n-115DD Local Header Offset   00006BA4 (27556)\n-115E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x115E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-115FF Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11601   Length              0005 (5)\n-11603   Flags               01 (1) 'Modification'\n-11604   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11608 CENTRAL HEADER #21    02014B50 (33639248)\n-1160C Created Zip Spec      14 (20) '2.0'\n-1160D Created OS            00 (0) 'MS-DOS'\n-1160E Extract Zip Spec      14 (20) '2.0'\n-1160F Extract OS            00 (0) 'MS-DOS'\n-11610 General Purpose Flag  0000 (0)\n-11612 Compression Method    0000 (0) 'Stored'\n-11614 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11618 CRC                   00000000 (0)\n-1161C Compressed Size       00000000 (0)\n-11620 Uncompressed Size     00000000 (0)\n-11624 Filename Length       0023 (35)\n-11626 Extra Length          0009 (9)\n-11628 Comment Length        0000 (0)\n-1162A Disk Start            0000 (0)\n-1162C Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-1162E Ext File Attributes   00000000 (0)\n-11632 Local Header Offset   00006BE9 (27625)\n-11636 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11636: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11659 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-1165B   Length              0005 (5)\n-1165D   Flags               01 (1) 'Modification'\n-1165E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11662 CENTRAL HEADER #22    02014B50 (33639248)\n-11666 Created Zip Spec      14 (20) '2.0'\n-11667 Created OS            00 (0) 'MS-DOS'\n-11668 Extract Zip Spec      14 (20) '2.0'\n-11669 Extract OS            00 (0) 'MS-DOS'\n-1166A General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-1166C Compression Method    0000 (0) 'Stored'\n-1166E Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11672 CRC                   210B2AE8 (554380008)\n-11676 Compressed Size       00000A59 (2649)\n-1167A Uncompressed Size     00000A59 (2649)\n-1167E Filename Length       003C (60)\n-11680 Extra Length          0009 (9)\n-11682 Comment Length        0000 (0)\n-11684 Disk Start            0000 (0)\n-11686 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11688 Ext File Attributes   00000000 (0)\n-1168C Local Header Offset   00006C33 (27699)\n-11690 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11690: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-116CC Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-116CE   Length              0005 (5)\n-116D0   Flags               01 (1) 'Modification'\n-116D1   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-116D5 CENTRAL HEADER #23    02014B50 (33639248)\n-116D9 Created Zip Spec      14 (20) '2.0'\n-116DA Created OS            00 (0) 'MS-DOS'\n-116DB Extract Zip Spec      14 (20) '2.0'\n-116DC Extract OS            00 (0) 'MS-DOS'\n-116DD General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-116DF Compression Method    0000 (0) 'Stored'\n-116E1 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-116E5 CRC                   C1CD2495 (3251446933)\n-116E9 Compressed Size       0000036C (876)\n-116ED Uncompressed Size     0000036C (876)\n-116F1 Filename Length       0032 (50)\n-116F3 Extra Length          0009 (9)\n-116F5 Comment Length        0000 (0)\n-116F7 Disk Start            0000 (0)\n-116F9 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-116FB Ext File Attributes   00000000 (0)\n-116FF Local Header Offset   000076FF (30463)\n-11703 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11703: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11735 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11737   Length              0005 (5)\n-11739   Flags               01 (1) 'Modification'\n-1173A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-1173E CENTRAL HEADER #24    02014B50 (33639248)\n-11742 Created Zip Spec      14 (20) '2.0'\n-11743 Created OS            00 (0) 'MS-DOS'\n-11744 Extract Zip Spec      14 (20) '2.0'\n-11745 Extract OS            00 (0) 'MS-DOS'\n-11746 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-11748 Compression Method    0000 (0) 'Stored'\n-1174A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-1174E CRC                   C06931B4 (3228119476)\n-11752 Compressed Size       0000079E (1950)\n-11756 Uncompressed Size     0000079E (1950)\n-1175A Filename Length       0035 (53)\n-1175C Extra Length          0009 (9)\n-1175E Comment Length        0000 (0)\n-11760 Disk Start            0000 (0)\n-11762 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11764 Ext File Attributes   00000000 (0)\n-11768 Local Header Offset   00007AD4 (31444)\n-1176C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x1176C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-117A1 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-117A3   Length              0005 (5)\n-117A5   Flags               01 (1) 'Modification'\n-117A6   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-117AA CENTRAL HEADER #25    02014B50 (33639248)\n-117AE Created Zip Spec      14 (20) '2.0'\n-117AF Created OS            00 (0) 'MS-DOS'\n-117B0 Extract Zip Spec      14 (20) '2.0'\n-117B1 Extract OS            00 (0) 'MS-DOS'\n-117B2 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-117B4 Compression Method    0000 (0) 'Stored'\n-117B6 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-117BA CRC                   89D2048F (2312242319)\n-117BE Compressed Size       00000FE5 (4069)\n-117C2 Uncompressed Size     00000FE5 (4069)\n-117C6 Filename Length       0033 (51)\n-117C8 Extra Length          0009 (9)\n-117CA Comment Length        0000 (0)\n-117CC Disk Start            0000 (0)\n-117CE Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-117D0 Ext File Attributes   00000000 (0)\n-117D4 Local Header Offset   000082DE (33502)\n-117D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x117D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-1180B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-1180D   Length              0005 (5)\n-1180F   Flags               01 (1) 'Modification'\n-11810   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11814 CENTRAL HEADER #26    02014B50 (33639248)\n-11818 Created Zip Spec      14 (20) '2.0'\n-11819 Created OS            00 (0) 'MS-DOS'\n-1181A Extract Zip Spec      14 (20) '2.0'\n-1181B Extract OS            00 (0) 'MS-DOS'\n-1181C General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-1181E Compression Method    0000 (0) 'Stored'\n-11820 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11824 CRC                   8EC3CE19 (2395196953)\n-11828 Compressed Size       000028DB (10459)\n-1182C Uncompressed Size     000028DB (10459)\n-11830 Filename Length       0038 (56)\n-11832 Extra Length          0009 (9)\n-11834 Comment Length        0000 (0)\n-11836 Disk Start            0000 (0)\n-11838 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-1183A Ext File Attributes   00000000 (0)\n-1183E Local Header Offset   0000932D (37677)\n-11842 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11842: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-1187A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-1187C   Length              0005 (5)\n-1187E   Flags               01 (1) 'Modification'\n-1187F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11883 CENTRAL HEADER #27    02014B50 (33639248)\n-11887 Created Zip Spec      14 (20) '2.0'\n-11888 Created OS            00 (0) 'MS-DOS'\n-11889 Extract Zip Spec      14 (20) '2.0'\n-1188A Extract OS            00 (0) 'MS-DOS'\n-1188B General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-1188D Compression Method    0000 (0) 'Stored'\n-1188F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11893 CRC                   672528B3 (1730488499)\n-11897 Compressed Size       00002110 (8464)\n-1189B Uncompressed Size     00002110 (8464)\n-1189F Filename Length       0034 (52)\n-118A1 Extra Length          0009 (9)\n-118A3 Comment Length        0000 (0)\n-118A5 Disk Start            0000 (0)\n-118A7 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-118A9 Ext File Attributes   00000000 (0)\n-118AD Local Header Offset   0000BC77 (48247)\n-118B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x118B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-118E5 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-118E7   Length              0005 (5)\n-118E9   Flags               01 (1) 'Modification'\n-118EA   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-118EE CENTRAL HEADER #28    02014B50 (33639248)\n-118F2 Created Zip Spec      14 (20) '2.0'\n-118F3 Created OS            00 (0) 'MS-DOS'\n-118F4 Extract Zip Spec      14 (20) '2.0'\n-118F5 Extract OS            00 (0) 'MS-DOS'\n-118F6 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-118F8 Compression Method    0000 (0) 'Stored'\n-118FA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-118FE CRC                   5C1106B9 (1544619705)\n-11902 Compressed Size       00000A3E (2622)\n-11906 Uncompressed Size     00000A3E (2622)\n-1190A Filename Length       0044 (68)\n-1190C Extra Length          0009 (9)\n-1190E Comment Length        0000 (0)\n-11910 Disk Start            0000 (0)\n-11912 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11914 Ext File Attributes   00000000 (0)\n-11918 Local Header Offset   0000DDF2 (56818)\n-1191C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x1191C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11960 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11962   Length              0005 (5)\n-11964   Flags               01 (1) 'Modification'\n-11965   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11969 CENTRAL HEADER #29    02014B50 (33639248)\n-1196D Created Zip Spec      14 (20) '2.0'\n-1196E Created OS            00 (0) 'MS-DOS'\n-1196F Extract Zip Spec      14 (20) '2.0'\n-11970 Extract OS            00 (0) 'MS-DOS'\n-11971 General Purpose Flag  0000 (0)\n-11973 Compression Method    0000 (0) 'Stored'\n-11975 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11979 CRC                   00000000 (0)\n-1197D Compressed Size       00000000 (0)\n-11981 Uncompressed Size     00000000 (0)\n-11985 Filename Length       0030 (48)\n-11987 Extra Length          0009 (9)\n-11989 Comment Length        0000 (0)\n-1198B Disk Start            0000 (0)\n-1198D Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-1198F Ext File Attributes   00000000 (0)\n-11993 Local Header Offset   0000E8AB (59563)\n-11997 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11997: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-119C7 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-119C9   Length              0005 (5)\n-119CB   Flags               01 (1) 'Modification'\n-119CC   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-119D0 CENTRAL HEADER #30    02014B50 (33639248)\n-119D4 Created Zip Spec      14 (20) '2.0'\n-119D5 Created OS            00 (0) 'MS-DOS'\n-119D6 Extract Zip Spec      14 (20) '2.0'\n-119D7 Extract OS            00 (0) 'MS-DOS'\n-119D8 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-119DA Compression Method    0000 (0) 'Stored'\n-119DC Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-119E0 CRC                   1C86279A (478554010)\n-119E4 Compressed Size       00000446 (1094)\n-119E8 Uncompressed Size     00000446 (1094)\n-119EC Filename Length       0046 (70)\n-119EE Extra Length          0009 (9)\n-119F0 Comment Length        0000 (0)\n-119F2 Disk Start            0000 (0)\n-119F4 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-119F6 Ext File Attributes   00000000 (0)\n-119FA Local Header Offset   0000E902 (59650)\n-119FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x119FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11A44 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11A46   Length              0005 (5)\n-11A48   Flags               01 (1) 'Modification'\n-11A49   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11A4D CENTRAL HEADER #31    02014B50 (33639248)\n-11A51 Created Zip Spec      14 (20) '2.0'\n-11A52 Created OS            00 (0) 'MS-DOS'\n-11A53 Extract Zip Spec      14 (20) '2.0'\n-11A54 Extract OS            00 (0) 'MS-DOS'\n-11A55 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-11A57 Compression Method    0000 (0) 'Stored'\n-11A59 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11A5D CRC                   E37CC454 (3816604756)\n-11A61 Compressed Size       000005B2 (1458)\n-11A65 Uncompressed Size     000005B2 (1458)\n-11A69 Filename Length       0045 (69)\n-11A6B Extra Length          0009 (9)\n-11A6D Comment Length        0000 (0)\n-11A6F Disk Start            0000 (0)\n-11A71 Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11A73 Ext File Attributes   00000000 (0)\n-11A77 Local Header Offset   0000EDC5 (60869)\n-11A7B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11A7B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11AC0 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11AC2   Length              0005 (5)\n-11AC4   Flags               01 (1) 'Modification'\n-11AC5   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11AC9 CENTRAL HEADER #32    02014B50 (33639248)\n-11ACD Created Zip Spec      14 (20) '2.0'\n-11ACE Created OS            00 (0) 'MS-DOS'\n-11ACF Extract Zip Spec      14 (20) '2.0'\n-11AD0 Extract OS            00 (0) 'MS-DOS'\n-11AD1 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-11AD3 Compression Method    0000 (0) 'Stored'\n-11AD5 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11AD9 CRC                   2C4E86BA (743343802)\n-11ADD Compressed Size       00001120 (4384)\n-11AE1 Uncompressed Size     00001120 (4384)\n-11AE5 Filename Length       004A (74)\n-11AE7 Extra Length          0009 (9)\n-11AE9 Comment Length        0000 (0)\n-11AEB Disk Start            0000 (0)\n-11AED Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11AEF Ext File Attributes   00000000 (0)\n-11AF3 Local Header Offset   0000F3F3 (62451)\n-11AF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11AF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11B41 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11B43   Length              0005 (5)\n-11B45   Flags               01 (1) 'Modification'\n-11B46   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11B4A CENTRAL HEADER #33    02014B50 (33639248)\n-11B4E Created Zip Spec      14 (20) '2.0'\n-11B4F Created OS            00 (0) 'MS-DOS'\n-11B50 Extract Zip Spec      14 (20) '2.0'\n-11B51 Extract OS            00 (0) 'MS-DOS'\n-11B52 General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-11B54 Compression Method    0000 (0) 'Stored'\n-11B56 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11B5A CRC                   592F92C2 (1496289986)\n-11B5E Compressed Size       00000446 (1094)\n-11B62 Uncompressed Size     00000446 (1094)\n-11B66 Filename Length       0046 (70)\n-11B68 Extra Length          0009 (9)\n-11B6A Comment Length        0000 (0)\n-11B6C Disk Start            0000 (0)\n-11B6E Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11B70 Ext File Attributes   00000000 (0)\n-11B74 Local Header Offset   00010594 (66964)\n-11B78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11B78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11BBE Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11BC0   Length              0005 (5)\n-11BC2   Flags               01 (1) 'Modification'\n-11BC3   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11BC7 CENTRAL HEADER #34    02014B50 (33639248)\n-11BCB Created Zip Spec      14 (20) '2.0'\n-11BCC Created OS            00 (0) 'MS-DOS'\n-11BCD Extract Zip Spec      14 (20) '2.0'\n-11BCE Extract OS            00 (0) 'MS-DOS'\n-11BCF General Purpose Flag  0008 (8)\n-      [Bit  3]              1 'Streamed'\n-11BD1 Compression Method    0000 (0) 'Stored'\n-11BD3 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-11BD7 CRC                   7BC2ED93 (2076372371)\n-11BDB Compressed Size       00000461 (1121)\n-11BDF Uncompressed Size     00000461 (1121)\n-11BE3 Filename Length       004A (74)\n-11BE5 Extra Length          0009 (9)\n-11BE7 Comment Length        0000 (0)\n-11BE9 Disk Start            0000 (0)\n-11BEB Int File Attributes   0000 (0)\n-      [Bit 0]               0 'Binary Data'\n-11BED Ext File Attributes   00000000 (0)\n-11BF1 Local Header Offset   00010A57 (68183)\n-11BF5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x11BF5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-11C3F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-11C41   Length              0005 (5)\n-11C43   Flags               01 (1) 'Modification'\n-11C44   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-11C48 END CENTRAL HEADER    06054B50 (101010256)\n-11C4C Number of this disk   0000 (0)\n-11C4E Central Dir Disk no   0000 (0)\n-11C50 Entries in this disk  0022 (34)\n-11C52 Total Entries         0022 (34)\n-11C54 Size of Central Dir   00000D0F (3343)\n-11C58 Offset to Central Dir 00010F39 (69433)\n-11C5C Comment Length        0000 (0)\n+06C43 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+06C45   Length              0005 (5)\n+06C47   Flags               01 (1) 'Modification'\n+06C48   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+06C4C PAYLOAD\n+\n+076EE DATA DESCRIPTOR       08074B50 (134695760)\n+076F2 CRC                   01526E5B (22179419)\n+076F6 Compressed Size       00000AA2 (2722)\n+076FA Uncompressed Size     00000AA2 (2722)\n+\n+076FE LOCAL HEADER #23      04034B50 (67324752)\n+07702 Extract Zip Spec      14 (20) '2.0'\n+07703 Extract OS            00 (0) 'MS-DOS'\n+07704 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+07706 Compression Method    0000 (0) 'Stored'\n+07708 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+0770C CRC                   00000000 (0)\n+07710 Compressed Size       00000000 (0)\n+07714 Uncompressed Size     00000000 (0)\n+07718 Filename Length       0032 (50)\n+0771A Extra Length          0009 (9)\n+0771C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x771C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+0774E Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+07750   Length              0005 (5)\n+07752   Flags               01 (1) 'Modification'\n+07753   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+07757 PAYLOAD\n+\n+07AD8 DATA DESCRIPTOR       08074B50 (134695760)\n+07ADC CRC                   D457458D (3562489229)\n+07AE0 Compressed Size       00000381 (897)\n+07AE4 Uncompressed Size     00000381 (897)\n+\n+07AE8 LOCAL HEADER #24      04034B50 (67324752)\n+07AEC Extract Zip Spec      14 (20) '2.0'\n+07AED Extract OS            00 (0) 'MS-DOS'\n+07AEE General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+07AF0 Compression Method    0000 (0) 'Stored'\n+07AF2 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+07AF6 CRC                   00000000 (0)\n+07AFA Compressed Size       00000000 (0)\n+07AFE Uncompressed Size     00000000 (0)\n+07B02 Filename Length       0035 (53)\n+07B04 Extra Length          0009 (9)\n+07B06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x7B06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+07B3B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+07B3D   Length              0005 (5)\n+07B3F   Flags               01 (1) 'Modification'\n+07B40   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+07B44 PAYLOAD\n+\n+0830B DATA DESCRIPTOR       08074B50 (134695760)\n+0830F CRC                   73B49906 (1941215494)\n+08313 Compressed Size       000007C7 (1991)\n+08317 Uncompressed Size     000007C7 (1991)\n+\n+0831B LOCAL HEADER #25      04034B50 (67324752)\n+0831F Extract Zip Spec      14 (20) '2.0'\n+08320 Extract OS            00 (0) 'MS-DOS'\n+08321 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+08323 Compression Method    0000 (0) 'Stored'\n+08325 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+08329 CRC                   00000000 (0)\n+0832D Compressed Size       00000000 (0)\n+08331 Uncompressed Size     00000000 (0)\n+08335 Filename Length       0033 (51)\n+08337 Extra Length          0009 (9)\n+08339 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x8339: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+0836C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+0836E   Length              0005 (5)\n+08370   Flags               01 (1) 'Modification'\n+08371   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+08375 PAYLOAD\n+\n+093D0 DATA DESCRIPTOR       08074B50 (134695760)\n+093D4 CRC                   7E6F88F1 (2121238769)\n+093D8 Compressed Size       0000105B (4187)\n+093DC Uncompressed Size     0000105B (4187)\n+\n+093E0 LOCAL HEADER #26      04034B50 (67324752)\n+093E4 Extract Zip Spec      14 (20) '2.0'\n+093E5 Extract OS            00 (0) 'MS-DOS'\n+093E6 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+093E8 Compression Method    0000 (0) 'Stored'\n+093EA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+093EE CRC                   00000000 (0)\n+093F2 Compressed Size       00000000 (0)\n+093F6 Uncompressed Size     00000000 (0)\n+093FA Filename Length       0038 (56)\n+093FC Extra Length          0009 (9)\n+093FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x93FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+09436 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+09438   Length              0005 (5)\n+0943A   Flags               01 (1) 'Modification'\n+0943B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+0943F PAYLOAD\n+\n+0BDFB DATA DESCRIPTOR       08074B50 (134695760)\n+0BDFF CRC                   65B11F2E (1706106670)\n+0BE03 Compressed Size       000029BC (10684)\n+0BE07 Uncompressed Size     000029BC (10684)\n+\n+0BE0B LOCAL HEADER #27      04034B50 (67324752)\n+0BE0F Extract Zip Spec      14 (20) '2.0'\n+0BE10 Extract OS            00 (0) 'MS-DOS'\n+0BE11 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+0BE13 Compression Method    0000 (0) 'Stored'\n+0BE15 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+0BE19 CRC                   00000000 (0)\n+0BE1D Compressed Size       00000000 (0)\n+0BE21 Uncompressed Size     00000000 (0)\n+0BE25 Filename Length       0034 (52)\n+0BE27 Extra Length          0009 (9)\n+0BE29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xBE29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+0BE5D Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+0BE5F   Length              0005 (5)\n+0BE61   Flags               01 (1) 'Modification'\n+0BE62   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+0BE66 PAYLOAD\n+\n+0E061 DATA DESCRIPTOR       08074B50 (134695760)\n+0E065 CRC                   ECC477BE (3972298686)\n+0E069 Compressed Size       000021FB (8699)\n+0E06D Uncompressed Size     000021FB (8699)\n+\n+0E071 LOCAL HEADER #28      04034B50 (67324752)\n+0E075 Extract Zip Spec      14 (20) '2.0'\n+0E076 Extract OS            00 (0) 'MS-DOS'\n+0E077 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+0E079 Compression Method    0000 (0) 'Stored'\n+0E07B Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+0E07F CRC                   00000000 (0)\n+0E083 Compressed Size       00000000 (0)\n+0E087 Uncompressed Size     00000000 (0)\n+0E08B Filename Length       0044 (68)\n+0E08D Extra Length          0009 (9)\n+0E08F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xE08F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+0E0D3 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+0E0D5   Length              0005 (5)\n+0E0D7   Flags               01 (1) 'Modification'\n+0E0D8   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+0E0DC PAYLOAD\n+\n+0EB6F DATA DESCRIPTOR       08074B50 (134695760)\n+0EB73 CRC                   67A5A923 (1738909987)\n+0EB77 Compressed Size       00000A93 (2707)\n+0EB7B Uncompressed Size     00000A93 (2707)\n+\n+0EB7F LOCAL HEADER #29      04034B50 (67324752)\n+0EB83 Extract Zip Spec      14 (20) '2.0'\n+0EB84 Extract OS            00 (0) 'MS-DOS'\n+0EB85 General Purpose Flag  0000 (0)\n+0EB87 Compression Method    0000 (0) 'Stored'\n+0EB89 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+0EB8D CRC                   00000000 (0)\n+0EB91 Compressed Size       00000000 (0)\n+0EB95 Uncompressed Size     00000000 (0)\n+0EB99 Filename Length       0030 (48)\n+0EB9B Extra Length          0009 (9)\n+0EB9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xEB9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+0EBCD Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+0EBCF   Length              0005 (5)\n+0EBD1   Flags               01 (1) 'Modification'\n+0EBD2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+0EBD6 LOCAL HEADER #30      04034B50 (67324752)\n+0EBDA Extract Zip Spec      14 (20) '2.0'\n+0EBDB Extract OS            00 (0) 'MS-DOS'\n+0EBDC General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+0EBDE Compression Method    0000 (0) 'Stored'\n+0EBE0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+0EBE4 CRC                   00000000 (0)\n+0EBE8 Compressed Size       00000000 (0)\n+0EBEC Uncompressed Size     00000000 (0)\n+0EBF0 Filename Length       0046 (70)\n+0EBF2 Extra Length          0009 (9)\n+0EBF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xEBF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+0EC3A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+0EC3C   Length              0005 (5)\n+0EC3E   Flags               01 (1) 'Modification'\n+0EC3F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+0EC43 PAYLOAD\n+\n+0F0A3 DATA DESCRIPTOR       08074B50 (134695760)\n+0F0A7 CRC                   63B2617E (1672634750)\n+0F0AB Compressed Size       00000460 (1120)\n+0F0AF Uncompressed Size     00000460 (1120)\n+\n+0F0B3 LOCAL HEADER #31      04034B50 (67324752)\n+0F0B7 Extract Zip Spec      14 (20) '2.0'\n+0F0B8 Extract OS            00 (0) 'MS-DOS'\n+0F0B9 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+0F0BB Compression Method    0000 (0) 'Stored'\n+0F0BD Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+0F0C1 CRC                   00000000 (0)\n+0F0C5 Compressed Size       00000000 (0)\n+0F0C9 Uncompressed Size     00000000 (0)\n+0F0CD Filename Length       0045 (69)\n+0F0CF Extra Length          0009 (9)\n+0F0D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xF0D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+0F116 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+0F118   Length              0005 (5)\n+0F11A   Flags               01 (1) 'Modification'\n+0F11B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+0F11F PAYLOAD\n+\n+0F6FA DATA DESCRIPTOR       08074B50 (134695760)\n+0F6FE CRC                   1AFA4B4D (452610893)\n+0F702 Compressed Size       000005DB (1499)\n+0F706 Uncompressed Size     000005DB (1499)\n+\n+0F70A LOCAL HEADER #32      04034B50 (67324752)\n+0F70E Extract Zip Spec      14 (20) '2.0'\n+0F70F Extract OS            00 (0) 'MS-DOS'\n+0F710 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+0F712 Compression Method    0000 (0) 'Stored'\n+0F714 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+0F718 CRC                   00000000 (0)\n+0F71C Compressed Size       00000000 (0)\n+0F720 Uncompressed Size     00000000 (0)\n+0F724 Filename Length       004A (74)\n+0F726 Extra Length          0009 (9)\n+0F728 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xF728: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+0F772 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+0F774   Length              0005 (5)\n+0F776   Flags               01 (1) 'Modification'\n+0F777   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+0F77B PAYLOAD\n+\n+108FF DATA DESCRIPTOR       08074B50 (134695760)\n+10903 CRC                   25DC5E62 (635199074)\n+10907 Compressed Size       00001184 (4484)\n+1090B Uncompressed Size     00001184 (4484)\n+\n+1090F LOCAL HEADER #33      04034B50 (67324752)\n+10913 Extract Zip Spec      14 (20) '2.0'\n+10914 Extract OS            00 (0) 'MS-DOS'\n+10915 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+10917 Compression Method    0000 (0) 'Stored'\n+10919 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+1091D CRC                   00000000 (0)\n+10921 Compressed Size       00000000 (0)\n+10925 Uncompressed Size     00000000 (0)\n+10929 Filename Length       0046 (70)\n+1092B Extra Length          0009 (9)\n+1092D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x1092D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+10973 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+10975   Length              0005 (5)\n+10977   Flags               01 (1) 'Modification'\n+10978   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+1097C PAYLOAD\n+\n+10DDC DATA DESCRIPTOR       08074B50 (134695760)\n+10DE0 CRC                   AADBB488 (2866525320)\n+10DE4 Compressed Size       00000460 (1120)\n+10DE8 Uncompressed Size     00000460 (1120)\n+\n+10DEC LOCAL HEADER #34      04034B50 (67324752)\n+10DF0 Extract Zip Spec      14 (20) '2.0'\n+10DF1 Extract OS            00 (0) 'MS-DOS'\n+10DF2 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+10DF4 Compression Method    0000 (0) 'Stored'\n+10DF6 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+10DFA CRC                   00000000 (0)\n+10DFE Compressed Size       00000000 (0)\n+10E02 Uncompressed Size     00000000 (0)\n+10E06 Filename Length       004A (74)\n+10E08 Extra Length          0009 (9)\n+10E0A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x10E0A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+10E54 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+10E56   Length              0005 (5)\n+10E58   Flags               01 (1) 'Modification'\n+10E59   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+10E5D PAYLOAD\n+\n+112D9 DATA DESCRIPTOR       08074B50 (134695760)\n+112DD CRC                   BEF6AA62 (3203836514)\n+112E1 Compressed Size       0000047C (1148)\n+112E5 Uncompressed Size     0000047C (1148)\n+\n+112E9 CENTRAL HEADER #1     02014B50 (33639248)\n+112ED Created Zip Spec      14 (20) '2.0'\n+112EE Created OS            00 (0) 'MS-DOS'\n+112EF Extract Zip Spec      14 (20) '2.0'\n+112F0 Extract OS            00 (0) 'MS-DOS'\n+112F1 General Purpose Flag  0000 (0)\n+112F3 Compression Method    0000 (0) 'Stored'\n+112F5 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+112F9 CRC                   00000000 (0)\n+112FD Compressed Size       00000000 (0)\n+11301 Uncompressed Size     00000000 (0)\n+11305 Filename Length       0009 (9)\n+11307 Extra Length          0009 (9)\n+11309 Comment Length        0000 (0)\n+1130B Disk Start            0000 (0)\n+1130D Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+1130F Ext File Attributes   00000000 (0)\n+11313 Local Header Offset   00000000 (0)\n+11317 Filename              'XXXXXXXXX'\n+#\n+# WARNING: Offset 0x11317: Filename 'XXXXXXXXX'\n+#          Zero length filename\n+#\n+11320 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11322   Length              0005 (5)\n+11324   Flags               01 (1) 'Modification'\n+11325   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11329 CENTRAL HEADER #2     02014B50 (33639248)\n+1132D Created Zip Spec      14 (20) '2.0'\n+1132E Created OS            00 (0) 'MS-DOS'\n+1132F Extract Zip Spec      14 (20) '2.0'\n+11330 Extract OS            00 (0) 'MS-DOS'\n+11331 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11333 Compression Method    0000 (0) 'Stored'\n+11335 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11339 CRC                   964AE9D3 (2521491923)\n+1133D Compressed Size       00002D17 (11543)\n+11341 Uncompressed Size     00002D17 (11543)\n+11345 Filename Length       0015 (21)\n+11347 Extra Length          0009 (9)\n+11349 Comment Length        0000 (0)\n+1134B Disk Start            0000 (0)\n+1134D Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+1134F Ext File Attributes   00000000 (0)\n+11353 Local Header Offset   00000030 (48)\n+11357 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11357: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+1136C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+1136E   Length              0005 (5)\n+11370   Flags               01 (1) 'Modification'\n+11371   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11375 CENTRAL HEADER #3     02014B50 (33639248)\n+11379 Created Zip Spec      14 (20) '2.0'\n+1137A Created OS            00 (0) 'MS-DOS'\n+1137B Extract Zip Spec      14 (20) '2.0'\n+1137C Extract OS            00 (0) 'MS-DOS'\n+1137D General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+1137F Compression Method    0000 (0) 'Stored'\n+11381 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11385 CRC                   86E2B4B4 (2263004340)\n+11389 Compressed Size       00002C5E (11358)\n+1138D Uncompressed Size     00002C5E (11358)\n+11391 Filename Length       0010 (16)\n+11393 Extra Length          0009 (9)\n+11395 Comment Length        0000 (0)\n+11397 Disk Start            0000 (0)\n+11399 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+1139B Ext File Attributes   00000000 (0)\n+1139F Local Header Offset   00002D93 (11667)\n+113A3 Filename              'XXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x113A3: Filename 'XXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+113B3 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+113B5   Length              0005 (5)\n+113B7   Flags               01 (1) 'Modification'\n+113B8   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+113BC CENTRAL HEADER #4     02014B50 (33639248)\n+113C0 Created Zip Spec      14 (20) '2.0'\n+113C1 Created OS            00 (0) 'MS-DOS'\n+113C2 Extract Zip Spec      14 (20) '2.0'\n+113C3 Extract OS            00 (0) 'MS-DOS'\n+113C4 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+113C6 Compression Method    0000 (0) 'Stored'\n+113C8 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+113CC CRC                   EE027FB2 (3993141170)\n+113D0 Compressed Size       00000019 (25)\n+113D4 Uncompressed Size     00000019 (25)\n+113D8 Filename Length       0014 (20)\n+113DA Extra Length          0009 (9)\n+113DC Comment Length        0000 (0)\n+113DE Disk Start            0000 (0)\n+113E0 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+113E2 Ext File Attributes   00000000 (0)\n+113E6 Local Header Offset   00005A38 (23096)\n+113EA Filename              'XXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x113EA: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+113FE Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11400   Length              0005 (5)\n+11402   Flags               01 (1) 'Modification'\n+11403   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11407 CENTRAL HEADER #5     02014B50 (33639248)\n+1140B Created Zip Spec      14 (20) '2.0'\n+1140C Created OS            00 (0) 'MS-DOS'\n+1140D Extract Zip Spec      14 (20) '2.0'\n+1140E Extract OS            00 (0) 'MS-DOS'\n+1140F General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11411 Compression Method    0000 (0) 'Stored'\n+11413 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11417 CRC                   52A344C7 (1386431687)\n+1141B Compressed Size       000000AB (171)\n+1141F Uncompressed Size     000000AB (171)\n+11423 Filename Length       000F (15)\n+11425 Extra Length          0009 (9)\n+11427 Comment Length        0000 (0)\n+11429 Disk Start            0000 (0)\n+1142B Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+1142D Ext File Attributes   00000000 (0)\n+11431 Local Header Offset   00005A9C (23196)\n+11435 Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11435: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11444 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11446   Length              0005 (5)\n+11448   Flags               01 (1) 'Modification'\n+11449   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+1144D CENTRAL HEADER #6     02014B50 (33639248)\n+11451 Created Zip Spec      14 (20) '2.0'\n+11452 Created OS            00 (0) 'MS-DOS'\n+11453 Extract Zip Spec      14 (20) '2.0'\n+11454 Extract OS            00 (0) 'MS-DOS'\n+11455 General Purpose Flag  0000 (0)\n+11457 Compression Method    0000 (0) 'Stored'\n+11459 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+1145D CRC                   00000000 (0)\n+11461 Compressed Size       00000000 (0)\n+11465 Uncompressed Size     00000000 (0)\n+11469 Filename Length       000F (15)\n+1146B Extra Length          0009 (9)\n+1146D Comment Length        0000 (0)\n+1146F Disk Start            0000 (0)\n+11471 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11473 Ext File Attributes   00000000 (0)\n+11477 Local Header Offset   00005B8D (23437)\n+1147B Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x1147B: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+1148A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+1148C   Length              0005 (5)\n+1148E   Flags               01 (1) 'Modification'\n+1148F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11493 CENTRAL HEADER #7     02014B50 (33639248)\n+11497 Created Zip Spec      14 (20) '2.0'\n+11498 Created OS            00 (0) 'MS-DOS'\n+11499 Extract Zip Spec      14 (20) '2.0'\n+1149A Extract OS            00 (0) 'MS-DOS'\n+1149B General Purpose Flag  0000 (0)\n+1149D Compression Method    0000 (0) 'Stored'\n+1149F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+114A3 CRC                   00000000 (0)\n+114A7 Compressed Size       00000000 (0)\n+114AB Uncompressed Size     00000000 (0)\n+114AF Filename Length       0018 (24)\n+114B1 Extra Length          0009 (9)\n+114B3 Comment Length        0000 (0)\n+114B5 Disk Start            0000 (0)\n+114B7 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+114B9 Ext File Attributes   00000000 (0)\n+114BD Local Header Offset   00005BC3 (23491)\n+114C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x114C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+114D9 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+114DB   Length              0005 (5)\n+114DD   Flags               01 (1) 'Modification'\n+114DE   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+114E2 CENTRAL HEADER #8     02014B50 (33639248)\n+114E6 Created Zip Spec      14 (20) '2.0'\n+114E7 Created OS            00 (0) 'MS-DOS'\n+114E8 Extract Zip Spec      14 (20) '2.0'\n+114E9 Extract OS            00 (0) 'MS-DOS'\n+114EA General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+114EC Compression Method    0000 (0) 'Stored'\n+114EE Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+114F2 CRC                   5B557C1B (1532328987)\n+114F6 Compressed Size       00000034 (52)\n+114FA Uncompressed Size     00000034 (52)\n+114FE Filename Length       0035 (53)\n+11500 Extra Length          0009 (9)\n+11502 Comment Length        0000 (0)\n+11504 Disk Start            0000 (0)\n+11506 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11508 Ext File Attributes   00000000 (0)\n+1150C Local Header Offset   00005C02 (23554)\n+11510 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11510: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11545 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11547   Length              0005 (5)\n+11549   Flags               01 (1) 'Modification'\n+1154A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+1154E CENTRAL HEADER #9     02014B50 (33639248)\n+11552 Created Zip Spec      14 (20) '2.0'\n+11553 Created OS            00 (0) 'MS-DOS'\n+11554 Extract Zip Spec      14 (20) '2.0'\n+11555 Extract OS            00 (0) 'MS-DOS'\n+11556 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11558 Compression Method    0000 (0) 'Stored'\n+1155A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+1155E CRC                   6F1FEDD0 (1864363472)\n+11562 Compressed Size       0000004D (77)\n+11566 Uncompressed Size     0000004D (77)\n+1156A Filename Length       0059 (89)\n+1156C Extra Length          0009 (9)\n+1156E Comment Length        0000 (0)\n+11570 Disk Start            0000 (0)\n+11572 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11574 Ext File Attributes   00000000 (0)\n+11578 Local Header Offset   00005CA2 (23714)\n+1157C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x1157C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+115D5 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+115D7   Length              0005 (5)\n+115D9   Flags               01 (1) 'Modification'\n+115DA   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+115DE CENTRAL HEADER #10    02014B50 (33639248)\n+115E2 Created Zip Spec      14 (20) '2.0'\n+115E3 Created OS            00 (0) 'MS-DOS'\n+115E4 Extract Zip Spec      14 (20) '2.0'\n+115E5 Extract OS            00 (0) 'MS-DOS'\n+115E6 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+115E8 Compression Method    0000 (0) 'Stored'\n+115EA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+115EE CRC                   6F1FEDD0 (1864363472)\n+115F2 Compressed Size       0000004D (77)\n+115F6 Uncompressed Size     0000004D (77)\n+115FA Filename Length       0059 (89)\n+115FC Extra Length          0009 (9)\n+115FE Comment Length        0000 (0)\n+11600 Disk Start            0000 (0)\n+11602 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11604 Ext File Attributes   00000000 (0)\n+11608 Local Header Offset   00005D7F (23935)\n+1160C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x1160C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11665 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11667   Length              0005 (5)\n+11669   Flags               01 (1) 'Modification'\n+1166A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+1166E CENTRAL HEADER #11    02014B50 (33639248)\n+11672 Created Zip Spec      14 (20) '2.0'\n+11673 Created OS            00 (0) 'MS-DOS'\n+11674 Extract Zip Spec      14 (20) '2.0'\n+11675 Extract OS            00 (0) 'MS-DOS'\n+11676 General Purpose Flag  0000 (0)\n+11678 Compression Method    0000 (0) 'Stored'\n+1167A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+1167E CRC                   00000000 (0)\n+11682 Compressed Size       00000000 (0)\n+11686 Uncompressed Size     00000000 (0)\n+1168A Filename Length       000F (15)\n+1168C Extra Length          0009 (9)\n+1168E Comment Length        0000 (0)\n+11690 Disk Start            0000 (0)\n+11692 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11694 Ext File Attributes   00000000 (0)\n+11698 Local Header Offset   00005E5C (24156)\n+1169C Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x1169C: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+116AB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+116AD   Length              0005 (5)\n+116AF   Flags               01 (1) 'Modification'\n+116B0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+116B4 CENTRAL HEADER #12    02014B50 (33639248)\n+116B8 Created Zip Spec      14 (20) '2.0'\n+116B9 Created OS            00 (0) 'MS-DOS'\n+116BA Extract Zip Spec      14 (20) '2.0'\n+116BB Extract OS            00 (0) 'MS-DOS'\n+116BC General Purpose Flag  0000 (0)\n+116BE Compression Method    0000 (0) 'Stored'\n+116C0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+116C4 CRC                   00000000 (0)\n+116C8 Compressed Size       00000000 (0)\n+116CC Uncompressed Size     00000000 (0)\n+116D0 Filename Length       0020 (32)\n+116D2 Extra Length          0009 (9)\n+116D4 Comment Length        0000 (0)\n+116D6 Disk Start            0000 (0)\n+116D8 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+116DA Ext File Attributes   00000000 (0)\n+116DE Local Header Offset   00005E92 (24210)\n+116E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x116E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11702 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11704   Length              0005 (5)\n+11706   Flags               01 (1) 'Modification'\n+11707   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+1170B CENTRAL HEADER #13    02014B50 (33639248)\n+1170F Created Zip Spec      14 (20) '2.0'\n+11710 Created OS            00 (0) 'MS-DOS'\n+11711 Extract Zip Spec      14 (20) '2.0'\n+11712 Extract OS            00 (0) 'MS-DOS'\n+11713 General Purpose Flag  0000 (0)\n+11715 Compression Method    0000 (0) 'Stored'\n+11717 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+1171B CRC                   00000000 (0)\n+1171F Compressed Size       00000000 (0)\n+11723 Uncompressed Size     00000000 (0)\n+11727 Filename Length       002F (47)\n+11729 Extra Length          0009 (9)\n+1172B Comment Length        0000 (0)\n+1172D Disk Start            0000 (0)\n+1172F Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11731 Ext File Attributes   00000000 (0)\n+11735 Local Header Offset   00005ED9 (24281)\n+11739 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11739: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11768 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+1176A   Length              0005 (5)\n+1176C   Flags               01 (1) 'Modification'\n+1176D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11771 CENTRAL HEADER #14    02014B50 (33639248)\n+11775 Created Zip Spec      14 (20) '2.0'\n+11776 Created OS            00 (0) 'MS-DOS'\n+11777 Extract Zip Spec      14 (20) '2.0'\n+11778 Extract OS            00 (0) 'MS-DOS'\n+11779 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+1177B Compression Method    0000 (0) 'Stored'\n+1177D Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11781 CRC                   00000000 (0)\n+11785 Compressed Size       00000000 (0)\n+11789 Uncompressed Size     00000000 (0)\n+1178D Filename Length       003D (61)\n+1178F Extra Length          0009 (9)\n+11791 Comment Length        0000 (0)\n+11793 Disk Start            0000 (0)\n+11795 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11797 Ext File Attributes   00000000 (0)\n+1179B Local Header Offset   00005F2F (24367)\n+1179F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x1179F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+117DC Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+117DE   Length              0005 (5)\n+117E0   Flags               01 (1) 'Modification'\n+117E1   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+117E5 CENTRAL HEADER #15    02014B50 (33639248)\n+117E9 Created Zip Spec      14 (20) '2.0'\n+117EA Created OS            00 (0) 'MS-DOS'\n+117EB Extract Zip Spec      14 (20) '2.0'\n+117EC Extract OS            00 (0) 'MS-DOS'\n+117ED General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+117EF Compression Method    0000 (0) 'Stored'\n+117F1 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+117F5 CRC                   C105B8EB (3238377707)\n+117F9 Compressed Size       00000A79 (2681)\n+117FD Uncompressed Size     00000A79 (2681)\n+11801 Filename Length       0036 (54)\n+11803 Extra Length          0009 (9)\n+11805 Comment Length        0000 (0)\n+11807 Disk Start            0000 (0)\n+11809 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+1180B Ext File Attributes   00000000 (0)\n+1180F Local Header Offset   00005FA3 (24483)\n+11813 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11813: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11849 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+1184B   Length              0005 (5)\n+1184D   Flags               01 (1) 'Modification'\n+1184E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11852 CENTRAL HEADER #16    02014B50 (33639248)\n+11856 Created Zip Spec      14 (20) '2.0'\n+11857 Created OS            00 (0) 'MS-DOS'\n+11858 Extract Zip Spec      14 (20) '2.0'\n+11859 Extract OS            00 (0) 'MS-DOS'\n+1185A General Purpose Flag  0000 (0)\n+1185C Compression Method    0000 (0) 'Stored'\n+1185E Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11862 CRC                   00000000 (0)\n+11866 Compressed Size       00000000 (0)\n+1186A Uncompressed Size     00000000 (0)\n+1186E Filename Length       0004 (4)\n+11870 Extra Length          0009 (9)\n+11872 Comment Length        0000 (0)\n+11874 Disk Start            0000 (0)\n+11876 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11878 Ext File Attributes   00000000 (0)\n+1187C Local Header Offset   00006A89 (27273)\n+11880 Filename              'XXXX'\n+#\n+# WARNING: Offset 0x11880: Filename 'XXXX'\n+#          Zero length filename\n+#\n+11884 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11886   Length              0005 (5)\n+11888   Flags               01 (1) 'Modification'\n+11889   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+1188D CENTRAL HEADER #17    02014B50 (33639248)\n+11891 Created Zip Spec      14 (20) '2.0'\n+11892 Created OS            00 (0) 'MS-DOS'\n+11893 Extract Zip Spec      14 (20) '2.0'\n+11894 Extract OS            00 (0) 'MS-DOS'\n+11895 General Purpose Flag  0000 (0)\n+11897 Compression Method    0000 (0) 'Stored'\n+11899 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+1189D CRC                   00000000 (0)\n+118A1 Compressed Size       00000000 (0)\n+118A5 Uncompressed Size     00000000 (0)\n+118A9 Filename Length       000B (11)\n+118AB Extra Length          0009 (9)\n+118AD Comment Length        0000 (0)\n+118AF Disk Start            0000 (0)\n+118B1 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+118B3 Ext File Attributes   00000000 (0)\n+118B7 Local Header Offset   00006AB4 (27316)\n+118BB Filename              'XXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x118BB: Filename 'XXXXXXXXXXX'\n+#          Zero length filename\n+#\n+118C6 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+118C8   Length              0005 (5)\n+118CA   Flags               01 (1) 'Modification'\n+118CB   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+118CF CENTRAL HEADER #18    02014B50 (33639248)\n+118D3 Created Zip Spec      14 (20) '2.0'\n+118D4 Created OS            00 (0) 'MS-DOS'\n+118D5 Extract Zip Spec      14 (20) '2.0'\n+118D6 Extract OS            00 (0) 'MS-DOS'\n+118D7 General Purpose Flag  0000 (0)\n+118D9 Compression Method    0000 (0) 'Stored'\n+118DB Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+118DF CRC                   00000000 (0)\n+118E3 Compressed Size       00000000 (0)\n+118E7 Uncompressed Size     00000000 (0)\n+118EB Filename Length       0011 (17)\n+118ED Extra Length          0009 (9)\n+118EF Comment Length        0000 (0)\n+118F1 Disk Start            0000 (0)\n+118F3 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+118F5 Ext File Attributes   00000000 (0)\n+118F9 Local Header Offset   00006AE6 (27366)\n+118FD Filename              'XXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x118FD: Filename 'XXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+1190E Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11910   Length              0005 (5)\n+11912   Flags               01 (1) 'Modification'\n+11913   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11917 CENTRAL HEADER #19    02014B50 (33639248)\n+1191B Created Zip Spec      14 (20) '2.0'\n+1191C Created OS            00 (0) 'MS-DOS'\n+1191D Extract Zip Spec      14 (20) '2.0'\n+1191E Extract OS            00 (0) 'MS-DOS'\n+1191F General Purpose Flag  0000 (0)\n+11921 Compression Method    0000 (0) 'Stored'\n+11923 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11927 CRC                   00000000 (0)\n+1192B Compressed Size       00000000 (0)\n+1192F Uncompressed Size     00000000 (0)\n+11933 Filename Length       0015 (21)\n+11935 Extra Length          0009 (9)\n+11937 Comment Length        0000 (0)\n+11939 Disk Start            0000 (0)\n+1193B Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+1193D Ext File Attributes   00000000 (0)\n+11941 Local Header Offset   00006B1E (27422)\n+11945 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11945: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+1195A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+1195C   Length              0005 (5)\n+1195E   Flags               01 (1) 'Modification'\n+1195F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11963 CENTRAL HEADER #20    02014B50 (33639248)\n+11967 Created Zip Spec      14 (20) '2.0'\n+11968 Created OS            00 (0) 'MS-DOS'\n+11969 Extract Zip Spec      14 (20) '2.0'\n+1196A Extract OS            00 (0) 'MS-DOS'\n+1196B General Purpose Flag  0000 (0)\n+1196D Compression Method    0000 (0) 'Stored'\n+1196F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11973 CRC                   00000000 (0)\n+11977 Compressed Size       00000000 (0)\n+1197B Uncompressed Size     00000000 (0)\n+1197F Filename Length       001E (30)\n+11981 Extra Length          0009 (9)\n+11983 Comment Length        0000 (0)\n+11985 Disk Start            0000 (0)\n+11987 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11989 Ext File Attributes   00000000 (0)\n+1198D Local Header Offset   00006B5A (27482)\n+11991 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11991: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+119AF Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+119B1   Length              0005 (5)\n+119B3   Flags               01 (1) 'Modification'\n+119B4   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+119B8 CENTRAL HEADER #21    02014B50 (33639248)\n+119BC Created Zip Spec      14 (20) '2.0'\n+119BD Created OS            00 (0) 'MS-DOS'\n+119BE Extract Zip Spec      14 (20) '2.0'\n+119BF Extract OS            00 (0) 'MS-DOS'\n+119C0 General Purpose Flag  0000 (0)\n+119C2 Compression Method    0000 (0) 'Stored'\n+119C4 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+119C8 CRC                   00000000 (0)\n+119CC Compressed Size       00000000 (0)\n+119D0 Uncompressed Size     00000000 (0)\n+119D4 Filename Length       0023 (35)\n+119D6 Extra Length          0009 (9)\n+119D8 Comment Length        0000 (0)\n+119DA Disk Start            0000 (0)\n+119DC Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+119DE Ext File Attributes   00000000 (0)\n+119E2 Local Header Offset   00006B9F (27551)\n+119E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x119E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11A09 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11A0B   Length              0005 (5)\n+11A0D   Flags               01 (1) 'Modification'\n+11A0E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11A12 CENTRAL HEADER #22    02014B50 (33639248)\n+11A16 Created Zip Spec      14 (20) '2.0'\n+11A17 Created OS            00 (0) 'MS-DOS'\n+11A18 Extract Zip Spec      14 (20) '2.0'\n+11A19 Extract OS            00 (0) 'MS-DOS'\n+11A1A General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11A1C Compression Method    0000 (0) 'Stored'\n+11A1E Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11A22 CRC                   01526E5B (22179419)\n+11A26 Compressed Size       00000AA2 (2722)\n+11A2A Uncompressed Size     00000AA2 (2722)\n+11A2E Filename Length       003C (60)\n+11A30 Extra Length          0009 (9)\n+11A32 Comment Length        0000 (0)\n+11A34 Disk Start            0000 (0)\n+11A36 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11A38 Ext File Attributes   00000000 (0)\n+11A3C Local Header Offset   00006BE9 (27625)\n+11A40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11A40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11A7C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11A7E   Length              0005 (5)\n+11A80   Flags               01 (1) 'Modification'\n+11A81   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11A85 CENTRAL HEADER #23    02014B50 (33639248)\n+11A89 Created Zip Spec      14 (20) '2.0'\n+11A8A Created OS            00 (0) 'MS-DOS'\n+11A8B Extract Zip Spec      14 (20) '2.0'\n+11A8C Extract OS            00 (0) 'MS-DOS'\n+11A8D General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11A8F Compression Method    0000 (0) 'Stored'\n+11A91 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11A95 CRC                   D457458D (3562489229)\n+11A99 Compressed Size       00000381 (897)\n+11A9D Uncompressed Size     00000381 (897)\n+11AA1 Filename Length       0032 (50)\n+11AA3 Extra Length          0009 (9)\n+11AA5 Comment Length        0000 (0)\n+11AA7 Disk Start            0000 (0)\n+11AA9 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11AAB Ext File Attributes   00000000 (0)\n+11AAF Local Header Offset   000076FE (30462)\n+11AB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11AB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11AE5 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11AE7   Length              0005 (5)\n+11AE9   Flags               01 (1) 'Modification'\n+11AEA   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11AEE CENTRAL HEADER #24    02014B50 (33639248)\n+11AF2 Created Zip Spec      14 (20) '2.0'\n+11AF3 Created OS            00 (0) 'MS-DOS'\n+11AF4 Extract Zip Spec      14 (20) '2.0'\n+11AF5 Extract OS            00 (0) 'MS-DOS'\n+11AF6 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11AF8 Compression Method    0000 (0) 'Stored'\n+11AFA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11AFE CRC                   73B49906 (1941215494)\n+11B02 Compressed Size       000007C7 (1991)\n+11B06 Uncompressed Size     000007C7 (1991)\n+11B0A Filename Length       0035 (53)\n+11B0C Extra Length          0009 (9)\n+11B0E Comment Length        0000 (0)\n+11B10 Disk Start            0000 (0)\n+11B12 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11B14 Ext File Attributes   00000000 (0)\n+11B18 Local Header Offset   00007AE8 (31464)\n+11B1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11B1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11B51 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11B53   Length              0005 (5)\n+11B55   Flags               01 (1) 'Modification'\n+11B56   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11B5A CENTRAL HEADER #25    02014B50 (33639248)\n+11B5E Created Zip Spec      14 (20) '2.0'\n+11B5F Created OS            00 (0) 'MS-DOS'\n+11B60 Extract Zip Spec      14 (20) '2.0'\n+11B61 Extract OS            00 (0) 'MS-DOS'\n+11B62 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11B64 Compression Method    0000 (0) 'Stored'\n+11B66 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11B6A CRC                   7E6F88F1 (2121238769)\n+11B6E Compressed Size       0000105B (4187)\n+11B72 Uncompressed Size     0000105B (4187)\n+11B76 Filename Length       0033 (51)\n+11B78 Extra Length          0009 (9)\n+11B7A Comment Length        0000 (0)\n+11B7C Disk Start            0000 (0)\n+11B7E Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11B80 Ext File Attributes   00000000 (0)\n+11B84 Local Header Offset   0000831B (33563)\n+11B88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11B88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11BBB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11BBD   Length              0005 (5)\n+11BBF   Flags               01 (1) 'Modification'\n+11BC0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11BC4 CENTRAL HEADER #26    02014B50 (33639248)\n+11BC8 Created Zip Spec      14 (20) '2.0'\n+11BC9 Created OS            00 (0) 'MS-DOS'\n+11BCA Extract Zip Spec      14 (20) '2.0'\n+11BCB Extract OS            00 (0) 'MS-DOS'\n+11BCC General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11BCE Compression Method    0000 (0) 'Stored'\n+11BD0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11BD4 CRC                   65B11F2E (1706106670)\n+11BD8 Compressed Size       000029BC (10684)\n+11BDC Uncompressed Size     000029BC (10684)\n+11BE0 Filename Length       0038 (56)\n+11BE2 Extra Length          0009 (9)\n+11BE4 Comment Length        0000 (0)\n+11BE6 Disk Start            0000 (0)\n+11BE8 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11BEA Ext File Attributes   00000000 (0)\n+11BEE Local Header Offset   000093E0 (37856)\n+11BF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11BF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11C2A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11C2C   Length              0005 (5)\n+11C2E   Flags               01 (1) 'Modification'\n+11C2F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11C33 CENTRAL HEADER #27    02014B50 (33639248)\n+11C37 Created Zip Spec      14 (20) '2.0'\n+11C38 Created OS            00 (0) 'MS-DOS'\n+11C39 Extract Zip Spec      14 (20) '2.0'\n+11C3A Extract OS            00 (0) 'MS-DOS'\n+11C3B General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11C3D Compression Method    0000 (0) 'Stored'\n+11C3F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11C43 CRC                   ECC477BE (3972298686)\n+11C47 Compressed Size       000021FB (8699)\n+11C4B Uncompressed Size     000021FB (8699)\n+11C4F Filename Length       0034 (52)\n+11C51 Extra Length          0009 (9)\n+11C53 Comment Length        0000 (0)\n+11C55 Disk Start            0000 (0)\n+11C57 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11C59 Ext File Attributes   00000000 (0)\n+11C5D Local Header Offset   0000BE0B (48651)\n+11C61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11C61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11C95 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11C97   Length              0005 (5)\n+11C99   Flags               01 (1) 'Modification'\n+11C9A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11C9E CENTRAL HEADER #28    02014B50 (33639248)\n+11CA2 Created Zip Spec      14 (20) '2.0'\n+11CA3 Created OS            00 (0) 'MS-DOS'\n+11CA4 Extract Zip Spec      14 (20) '2.0'\n+11CA5 Extract OS            00 (0) 'MS-DOS'\n+11CA6 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11CA8 Compression Method    0000 (0) 'Stored'\n+11CAA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11CAE CRC                   67A5A923 (1738909987)\n+11CB2 Compressed Size       00000A93 (2707)\n+11CB6 Uncompressed Size     00000A93 (2707)\n+11CBA Filename Length       0044 (68)\n+11CBC Extra Length          0009 (9)\n+11CBE Comment Length        0000 (0)\n+11CC0 Disk Start            0000 (0)\n+11CC2 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11CC4 Ext File Attributes   00000000 (0)\n+11CC8 Local Header Offset   0000E071 (57457)\n+11CCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11CCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11D10 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11D12   Length              0005 (5)\n+11D14   Flags               01 (1) 'Modification'\n+11D15   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11D19 CENTRAL HEADER #29    02014B50 (33639248)\n+11D1D Created Zip Spec      14 (20) '2.0'\n+11D1E Created OS            00 (0) 'MS-DOS'\n+11D1F Extract Zip Spec      14 (20) '2.0'\n+11D20 Extract OS            00 (0) 'MS-DOS'\n+11D21 General Purpose Flag  0000 (0)\n+11D23 Compression Method    0000 (0) 'Stored'\n+11D25 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11D29 CRC                   00000000 (0)\n+11D2D Compressed Size       00000000 (0)\n+11D31 Uncompressed Size     00000000 (0)\n+11D35 Filename Length       0030 (48)\n+11D37 Extra Length          0009 (9)\n+11D39 Comment Length        0000 (0)\n+11D3B Disk Start            0000 (0)\n+11D3D Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11D3F Ext File Attributes   00000000 (0)\n+11D43 Local Header Offset   0000EB7F (60287)\n+11D47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11D47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11D77 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11D79   Length              0005 (5)\n+11D7B   Flags               01 (1) 'Modification'\n+11D7C   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11D80 CENTRAL HEADER #30    02014B50 (33639248)\n+11D84 Created Zip Spec      14 (20) '2.0'\n+11D85 Created OS            00 (0) 'MS-DOS'\n+11D86 Extract Zip Spec      14 (20) '2.0'\n+11D87 Extract OS            00 (0) 'MS-DOS'\n+11D88 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11D8A Compression Method    0000 (0) 'Stored'\n+11D8C Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11D90 CRC                   63B2617E (1672634750)\n+11D94 Compressed Size       00000460 (1120)\n+11D98 Uncompressed Size     00000460 (1120)\n+11D9C Filename Length       0046 (70)\n+11D9E Extra Length          0009 (9)\n+11DA0 Comment Length        0000 (0)\n+11DA2 Disk Start            0000 (0)\n+11DA4 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11DA6 Ext File Attributes   00000000 (0)\n+11DAA Local Header Offset   0000EBD6 (60374)\n+11DAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11DAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11DF4 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11DF6   Length              0005 (5)\n+11DF8   Flags               01 (1) 'Modification'\n+11DF9   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11DFD CENTRAL HEADER #31    02014B50 (33639248)\n+11E01 Created Zip Spec      14 (20) '2.0'\n+11E02 Created OS            00 (0) 'MS-DOS'\n+11E03 Extract Zip Spec      14 (20) '2.0'\n+11E04 Extract OS            00 (0) 'MS-DOS'\n+11E05 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11E07 Compression Method    0000 (0) 'Stored'\n+11E09 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11E0D CRC                   1AFA4B4D (452610893)\n+11E11 Compressed Size       000005DB (1499)\n+11E15 Uncompressed Size     000005DB (1499)\n+11E19 Filename Length       0045 (69)\n+11E1B Extra Length          0009 (9)\n+11E1D Comment Length        0000 (0)\n+11E1F Disk Start            0000 (0)\n+11E21 Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11E23 Ext File Attributes   00000000 (0)\n+11E27 Local Header Offset   0000F0B3 (61619)\n+11E2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11E2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11E70 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11E72   Length              0005 (5)\n+11E74   Flags               01 (1) 'Modification'\n+11E75   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11E79 CENTRAL HEADER #32    02014B50 (33639248)\n+11E7D Created Zip Spec      14 (20) '2.0'\n+11E7E Created OS            00 (0) 'MS-DOS'\n+11E7F Extract Zip Spec      14 (20) '2.0'\n+11E80 Extract OS            00 (0) 'MS-DOS'\n+11E81 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11E83 Compression Method    0000 (0) 'Stored'\n+11E85 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11E89 CRC                   25DC5E62 (635199074)\n+11E8D Compressed Size       00001184 (4484)\n+11E91 Uncompressed Size     00001184 (4484)\n+11E95 Filename Length       004A (74)\n+11E97 Extra Length          0009 (9)\n+11E99 Comment Length        0000 (0)\n+11E9B Disk Start            0000 (0)\n+11E9D Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11E9F Ext File Attributes   00000000 (0)\n+11EA3 Local Header Offset   0000F70A (63242)\n+11EA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11EA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11EF1 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11EF3   Length              0005 (5)\n+11EF5   Flags               01 (1) 'Modification'\n+11EF6   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11EFA CENTRAL HEADER #33    02014B50 (33639248)\n+11EFE Created Zip Spec      14 (20) '2.0'\n+11EFF Created OS            00 (0) 'MS-DOS'\n+11F00 Extract Zip Spec      14 (20) '2.0'\n+11F01 Extract OS            00 (0) 'MS-DOS'\n+11F02 General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11F04 Compression Method    0000 (0) 'Stored'\n+11F06 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11F0A CRC                   AADBB488 (2866525320)\n+11F0E Compressed Size       00000460 (1120)\n+11F12 Uncompressed Size     00000460 (1120)\n+11F16 Filename Length       0046 (70)\n+11F18 Extra Length          0009 (9)\n+11F1A Comment Length        0000 (0)\n+11F1C Disk Start            0000 (0)\n+11F1E Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11F20 Ext File Attributes   00000000 (0)\n+11F24 Local Header Offset   0001090F (67855)\n+11F28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11F28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11F6E Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11F70   Length              0005 (5)\n+11F72   Flags               01 (1) 'Modification'\n+11F73   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11F77 CENTRAL HEADER #34    02014B50 (33639248)\n+11F7B Created Zip Spec      14 (20) '2.0'\n+11F7C Created OS            00 (0) 'MS-DOS'\n+11F7D Extract Zip Spec      14 (20) '2.0'\n+11F7E Extract OS            00 (0) 'MS-DOS'\n+11F7F General Purpose Flag  0008 (8)\n+      [Bit  3]              1 'Streamed'\n+11F81 Compression Method    0000 (0) 'Stored'\n+11F83 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+11F87 CRC                   BEF6AA62 (3203836514)\n+11F8B Compressed Size       0000047C (1148)\n+11F8F Uncompressed Size     0000047C (1148)\n+11F93 Filename Length       004A (74)\n+11F95 Extra Length          0009 (9)\n+11F97 Comment Length        0000 (0)\n+11F99 Disk Start            0000 (0)\n+11F9B Int File Attributes   0000 (0)\n+      [Bit 0]               0 'Binary Data'\n+11F9D Ext File Attributes   00000000 (0)\n+11FA1 Local Header Offset   00010DEC (69100)\n+11FA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x11FA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+11FEF Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+11FF1   Length              0005 (5)\n+11FF3   Flags               01 (1) 'Modification'\n+11FF4   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+11FF8 END CENTRAL HEADER    06054B50 (101010256)\n+11FFC Number of this disk   0000 (0)\n+11FFE Central Dir Disk no   0000 (0)\n+12000 Entries in this disk  0022 (34)\n+12002 Total Entries         0022 (34)\n+12004 Size of Central Dir   00000D0F (3343)\n+12008 Offset to Central Dir 000112E9 (70377)\n+1200C Comment Length        0000 (0)\n #\n # Warning Count: 68\n #\n # Done\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,173 +1,168 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 6772 7063 3c2f 6172 7469 6661 6374 4964  grpc</artifactId\n-00000520: 3e0d 0a20 203c 7665 7273 696f 6e3e 322e  >..  <version>2.\n-00000530: 372e 3130 3c2f 7665 7273 696f 6e3e 0d0a  7.10</version>..\n-00000540: 2020 3c6e 616d 653e 247b 7072 6f6a 6563    <name>${projec\n-00000550: 742e 6172 7469 6661 6374 4964 7d3c 2f6e  t.artifactId}</n\n-00000560: 616d 653e 0d0a 2020 3c64 6573 6372 6970  ame>..  <descrip\n-00000570: 7469 6f6e 3e54 6865 2067 5250 4320 696e  tion>The gRPC in\n-00000580: 7465 6772 6174 696f 6e20 6d6f 6475 6c65  tegration module\n-00000590: 3c2f 6465 7363 7269 7074 696f 6e3e 0d0a  </description>..\n-000005a0: 2020 3c6c 6963 656e 7365 733e 0d0a 2020    <licenses>..  \n-000005b0: 2020 3c6c 6963 656e 7365 3e0d 0a20 2020    <license>..   \n-000005c0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n-000005d0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n-000005e0: 2032 2e30 3c2f 6e61 6d65 3e0d 0a20 2020   2.0</name>..   \n-000005f0: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n-00000600: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-00000610: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000620: 2e30 3c2f 7572 6c3e 0d0a 2020 2020 2020  .0</url>..      \n-00000630: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n-00000640: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n-00000650: 3e0d 0a20 2020 203c 2f6c 6963 656e 7365  >..    </license\n-00000660: 3e0d 0a20 203c 2f6c 6963 656e 7365 733e  >..  </licenses>\n-00000670: 0d0a 2020 3c70 726f 7065 7274 6965 733e  ..  <properties>\n-00000680: 0d0a 2020 2020 3c73 6b69 705f 6d61 7665  ..    <skip_mave\n-00000690: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n-000006a0: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n-000006b0: 793e 0d0a 2020 3c2f 7072 6f70 6572 7469  y>..  </properti\n-000006c0: 6573 3e0d 0a20 203c 6465 7065 6e64 656e  es>..  <dependen\n-000006d0: 6369 6573 3e0d 0a20 2020 203c 6465 7065  cies>..    <depe\n-000006e0: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-000006f0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000700: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000710: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000720: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000730: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n-00000740: 0d0a 2020 2020 2020 3c76 6572 7369 6f6e  ..      <version\n-00000750: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n-00000760: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n-00000770: 696f 6e3e 0d0a 2020 2020 3c2f 6465 7065  ion>..    </depe\n-00000780: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-00000790: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-000007a0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-000007b0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-000007c0: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-000007d0: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n-000007e0: 6d6f 7469 6e67 2d68 7474 703c 2f61 7274  moting-http</art\n-000007f0: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00000800: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-00000810: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-00000820: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-00000830: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000840: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000850: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000860: 643e 696f 2e67 7270 633c 2f67 726f 7570  d>io.grpc</group\n-00000870: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000880: 6661 6374 4964 3e67 7270 632d 6e65 7474  factId>grpc-nett\n-00000890: 793c 2f61 7274 6966 6163 7449 643e 0d0a  y</artifactId>..\n-000008a0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-000008b0: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-000008c0: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-000008d0: 7049 643e 696f 2e67 7270 633c 2f67 726f  pId>io.grpc</gro\n-000008e0: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-000008f0: 7469 6661 6374 4964 3e67 7270 632d 7072  tifactId>grpc-pr\n-00000900: 6f74 6f62 7566 3c2f 6172 7469 6661 6374  otobuf</artifact\n-00000910: 4964 3e0d 0a20 2020 203c 2f64 6570 656e  Id>..    </depen\n-00000920: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-00000930: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000940: 3c67 726f 7570 4964 3e69 6f2e 6772 7063  <groupId>io.grpc\n-00000950: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000960: 2020 3c61 7274 6966 6163 7449 643e 6772    <artifactId>gr\n-00000970: 7063 2d73 7475 623c 2f61 7274 6966 6163  pc-stub</artifac\n-00000980: 7449 643e 0d0a 2020 2020 3c2f 6465 7065  tId>..    </depe\n-00000990: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-000009a0: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-000009b0: 203c 6772 6f75 7049 643e 696f 2e67 7270   <groupId>io.grp\n-000009c0: 633c 2f67 726f 7570 4964 3e0d 0a20 2020  c</groupId>..   \n-000009d0: 2020 203c 6172 7469 6661 6374 4964 3e67     <artifactId>g\n-000009e0: 7270 632d 636f 7265 3c2f 6172 7469 6661  rpc-core</artifa\n-000009f0: 6374 4964 3e0d 0a20 2020 203c 2f64 6570  ctId>..    </dep\n-00000a00: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-00000a10: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000a20: 2020 3c67 726f 7570 4964 3e6f 7267 2e73    <groupId>org.s\n-00000a30: 7072 696e 6766 7261 6d65 776f 726b 3c2f  pringframework</\n-00000a40: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000a50: 3c61 7274 6966 6163 7449 643e 7370 7269  <artifactId>spri\n-00000a60: 6e67 2d74 6573 743c 2f61 7274 6966 6163  ng-test</artifac\n-00000a70: 7449 643e 0d0a 2020 2020 2020 3c73 636f  tId>..      <sco\n-00000a80: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-00000a90: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000aa0: 793e 0d0a 2020 3c2f 6465 7065 6e64 656e  y>..  </dependen\n-00000ab0: 6369 6573 3e0d 0a3c 2f70 726f 6a65 6374  cies>..</project\n-00000ac0: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 6772 7063 3c2f 6172 7469  o-rpc-grpc</arti\n+00000500: 6661 6374 4964 3e0a 2020 3c76 6572 7369  factId>.  <versi\n+00000510: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n+00000520: 6f6e 3e0a 2020 3c6e 616d 653e 247b 7072  on>.  <name>${pr\n+00000530: 6f6a 6563 742e 6172 7469 6661 6374 4964  oject.artifactId\n+00000540: 7d3c 2f6e 616d 653e 0a20 203c 6465 7363  }</name>.  <desc\n+00000550: 7269 7074 696f 6e3e 5468 6520 6752 5043  ription>The gRPC\n+00000560: 2069 6e74 6567 7261 7469 6f6e 206d 6f64   integration mod\n+00000570: 756c 653c 2f64 6573 6372 6970 7469 6f6e  ule</description\n+00000580: 3e0a 2020 3c6c 6963 656e 7365 733e 0a20  >.  <licenses>. \n+00000590: 2020 203c 6c69 6365 6e73 653e 0a20 2020     <license>.   \n+000005a0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n+000005b0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n+000005c0: 2032 2e30 3c2f 6e61 6d65 3e0a 2020 2020   2.0</name>.    \n+000005d0: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n+000005e0: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n+000005f0: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n+00000600: 303c 2f75 726c 3e0a 2020 2020 2020 3c64  0</url>.      <d\n+00000610: 6973 7472 6962 7574 696f 6e3e 7265 706f  istribution>repo\n+00000620: 3c2f 6469 7374 7269 6275 7469 6f6e 3e0a  </distribution>.\n+00000630: 2020 2020 3c2f 6c69 6365 6e73 653e 0a20      </license>. \n+00000640: 203c 2f6c 6963 656e 7365 733e 0a20 203c   </licenses>.  <\n+00000650: 7072 6f70 6572 7469 6573 3e0a 2020 2020  properties>.    \n+00000660: 3c73 6b69 705f 6d61 7665 6e5f 6465 706c  <skip_maven_depl\n+00000670: 6f79 3e66 616c 7365 3c2f 736b 6970 5f6d  oy>false</skip_m\n+00000680: 6176 656e 5f64 6570 6c6f 793e 0a20 203c  aven_deploy>.  <\n+00000690: 2f70 726f 7065 7274 6965 733e 0a20 203c  /properties>.  <\n+000006a0: 6465 7065 6e64 656e 6369 6573 3e0a 2020  dependencies>.  \n+000006b0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000006c0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000006d0: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n+000006e0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+000006f0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n+00000700: 2d72 7063 2d61 7069 3c2f 6172 7469 6661  -rpc-api</artifa\n+00000710: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+00000720: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000730: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000740: 7665 7273 696f 6e3e 0a20 2020 203c 2f64  version>.    </d\n+00000750: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000760: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000770: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000780: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000790: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+000007a0: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n+000007b0: 6d6f 7469 6e67 2d68 7474 703c 2f61 7274  moting-http</art\n+000007c0: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+000007d0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+000007e0: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+000007f0: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+00000800: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000810: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000820: 2020 2020 203c 6772 6f75 7049 643e 696f       <groupId>io\n+00000830: 2e67 7270 633c 2f67 726f 7570 4964 3e0a  .grpc</groupId>.\n+00000840: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000850: 643e 6772 7063 2d6e 6574 7479 3c2f 6172  d>grpc-netty</ar\n+00000860: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+00000870: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000880: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000890: 2020 203c 6772 6f75 7049 643e 696f 2e67     <groupId>io.g\n+000008a0: 7270 633c 2f67 726f 7570 4964 3e0a 2020  rpc</groupId>.  \n+000008b0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+000008c0: 6772 7063 2d70 726f 746f 6275 663c 2f61  grpc-protobuf</a\n+000008d0: 7274 6966 6163 7449 643e 0a20 2020 203c  rtifactId>.    <\n+000008e0: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+000008f0: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000900: 2020 2020 3c67 726f 7570 4964 3e69 6f2e      <groupId>io.\n+00000910: 6772 7063 3c2f 6772 6f75 7049 643e 0a20  grpc</groupId>. \n+00000920: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000930: 3e67 7270 632d 7374 7562 3c2f 6172 7469  >grpc-stub</arti\n+00000940: 6661 6374 4964 3e0a 2020 2020 3c2f 6465  factId>.    </de\n+00000950: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000960: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000970: 203c 6772 6f75 7049 643e 696f 2e67 7270   <groupId>io.grp\n+00000980: 633c 2f67 726f 7570 4964 3e0a 2020 2020  c</groupId>.    \n+00000990: 2020 3c61 7274 6966 6163 7449 643e 6772    <artifactId>gr\n+000009a0: 7063 2d63 6f72 653c 2f61 7274 6966 6163  pc-core</artifac\n+000009b0: 7449 643e 0a20 2020 203c 2f64 6570 656e  tId>.    </depen\n+000009c0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000009d0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000009e0: 726f 7570 4964 3e6f 7267 2e73 7072 696e  roupId>org.sprin\n+000009f0: 6766 7261 6d65 776f 726b 3c2f 6772 6f75  gframework</grou\n+00000a00: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000a10: 6661 6374 4964 3e73 7072 696e 672d 7465  factId>spring-te\n+00000a20: 7374 3c2f 6172 7469 6661 6374 4964 3e0a  st</artifactId>.\n+00000a30: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n+00000a40: 743c 2f73 636f 7065 3e0a 2020 2020 3c2f  t</scope>.    </\n+00000a50: 6465 7065 6e64 656e 6379 3e0a 2020 3c2f  dependency>.  </\n+00000a60: 6465 7065 6e64 656e 6369 6573 3e0a 3c2f  dependencies>.</\n+00000a70: 7072 6f6a 6563 743e 0a                   project>.\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,73 +1,73 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import io.grpc.BindableService;\n-import io.grpc.HandlerRegistry;\n-import io.grpc.ServerMethodDefinition;\n-import io.grpc.ServerServiceDefinition;\n-\n-import javax.annotation.Nullable;\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-/**\n- *\n- */\n-public class DubboHandlerRegistry extends HandlerRegistry {\n-\n-    private final Map<String, ServerServiceDefinition> services = new ConcurrentHashMap<>();\n-    private final Map<String, ServerMethodDefinition<?, ?>> methods = new ConcurrentHashMap<>();\n-\n-    public DubboHandlerRegistry() {\n-    }\n-\n-    /**\n-     * Returns the service definitions in this registry.\n-     */\n-    @Override\n-    public List<ServerServiceDefinition> getServices() {\n-        return Collections.unmodifiableList(new ArrayList<>(services.values()));\n-    }\n-\n-    @Nullable\n-    @Override\n-    public ServerMethodDefinition<?, ?> lookupMethod(String methodName, @Nullable String authority) {\n-        // TODO (carl-mastrangelo): honor authority header.\n-        return methods.get(methodName);\n-    }\n-\n-    void addService(BindableService bindableService, String key) {\n-        ServerServiceDefinition service = bindableService.bindService();\n-        services.put(key, service);\n-        for (ServerMethodDefinition<?, ?> method : service.getMethods()) {\n-            methods.put(method.getMethodDescriptor().getFullMethodName(), method);\n-        }\n-    }\n-\n-    void removeService(String serviceKey) {\n-        ServerServiceDefinition service = services.remove(serviceKey);\n-        if (null != service) {\n-            for (ServerMethodDefinition<?, ?> method : service.getMethods()) {\n-                methods.remove(method.getMethodDescriptor().getFullMethodName(), method);\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import io.grpc.BindableService;\r\n+import io.grpc.HandlerRegistry;\r\n+import io.grpc.ServerMethodDefinition;\r\n+import io.grpc.ServerServiceDefinition;\r\n+\r\n+import javax.annotation.Nullable;\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class DubboHandlerRegistry extends HandlerRegistry {\r\n+\r\n+    private final Map<String, ServerServiceDefinition> services = new ConcurrentHashMap<>();\r\n+    private final Map<String, ServerMethodDefinition<?, ?>> methods = new ConcurrentHashMap<>();\r\n+\r\n+    public DubboHandlerRegistry() {\r\n+    }\r\n+\r\n+    /**\r\n+     * Returns the service definitions in this registry.\r\n+     */\r\n+    @Override\r\n+    public List<ServerServiceDefinition> getServices() {\r\n+        return Collections.unmodifiableList(new ArrayList<>(services.values()));\r\n+    }\r\n+\r\n+    @Nullable\r\n+    @Override\r\n+    public ServerMethodDefinition<?, ?> lookupMethod(String methodName, @Nullable String authority) {\r\n+        // TODO (carl-mastrangelo): honor authority header.\r\n+        return methods.get(methodName);\r\n+    }\r\n+\r\n+    void addService(BindableService bindableService, String key) {\r\n+        ServerServiceDefinition service = bindableService.bindService();\r\n+        services.put(key, service);\r\n+        for (ServerMethodDefinition<?, ?> method : service.getMethods()) {\r\n+            methods.put(method.getMethodDescriptor().getFullMethodName(), method);\r\n+        }\r\n+    }\r\n+\r\n+    void removeService(String serviceKey) {\r\n+        ServerServiceDefinition service = services.remove(serviceKey);\r\n+        if (null != service) {\r\n+            for (ServerMethodDefinition<?, ?> method : service.getMethods()) {\r\n+                methods.remove(method.getMethodDescriptor().getFullMethodName(), method);\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,21 +1,21 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-public class GrpcConfig {\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+public class GrpcConfig {\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcConstants.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcConstants.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-\n-public class GrpcConstants {\n-\n-    public static final String DIERCTOR_KEY = \"grpc.director\";\n-    public static final String HANDSHAKE_TIMEOUT = \"grpc.handshakeTimeout\";\n-    public static final String MAX_INBOUND_MESSAGE_SIZE = \"grpc.maxInboundMessageSize\";\n-    public static final String MAX_INBOUND_METADATA_SIZE = \"grpc.maxOutboundMessageSize\";\n-    public static final String FLOWCONTROL_WINDOW = \"grpc.flowControlWindow\";\n-    public static final String MAX_CONCURRENT_CALLS_PER_CONNECTION = \"grpc.maxConcurrentCallsPerConnection\";\n-\n-    public static final String WORKER_THREAD_NUM = \"grpc.io.num\";\n-    public static final String BOSS_THREAD_NUM = \"grpc.boss.num\";\n-    public static final String CHANNEL_TYPE = \"grpc.channel.type\";\n-\n-    public static final String SERVER_INTERCEPTORS = \"grpc.serverInterceptors\";\n-    public static final String CLIENT_INTERCEPTORS = \"grpc.clientInterceptors\";\n-    public static final String TRANSPORT_FILTERS = \"grpc.transportFilters\";\n-\n-    public static final String EXECUTOR = \"grpc.executor\";\n-\n-    public static final String CONFIGURATOR = \"grpc.configurator\";\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+\r\n+public class GrpcConstants {\r\n+\r\n+    public static final String DIERCTOR_KEY = \"grpc.director\";\r\n+    public static final String HANDSHAKE_TIMEOUT = \"grpc.handshakeTimeout\";\r\n+    public static final String MAX_INBOUND_MESSAGE_SIZE = \"grpc.maxInboundMessageSize\";\r\n+    public static final String MAX_INBOUND_METADATA_SIZE = \"grpc.maxOutboundMessageSize\";\r\n+    public static final String FLOWCONTROL_WINDOW = \"grpc.flowControlWindow\";\r\n+    public static final String MAX_CONCURRENT_CALLS_PER_CONNECTION = \"grpc.maxConcurrentCallsPerConnection\";\r\n+\r\n+    public static final String WORKER_THREAD_NUM = \"grpc.io.num\";\r\n+    public static final String BOSS_THREAD_NUM = \"grpc.boss.num\";\r\n+    public static final String CHANNEL_TYPE = \"grpc.channel.type\";\r\n+\r\n+    public static final String SERVER_INTERCEPTORS = \"grpc.serverInterceptors\";\r\n+    public static final String CLIENT_INTERCEPTORS = \"grpc.clientInterceptors\";\r\n+    public static final String TRANSPORT_FILTERS = \"grpc.transportFilters\";\r\n+\r\n+    public static final String EXECUTOR = \"grpc.executor\";\r\n+\r\n+    public static final String CONFIGURATOR = \"grpc.configurator\";\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcInvoker.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcInvoker.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,118 +1,118 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.protocol.AbstractInvoker;\n-\n-import io.grpc.Status;\n-import io.grpc.StatusException;\n-\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-public class GrpcInvoker<T> extends AbstractInvoker<T> {\n-    private final ReentrantLock destroyLock = new ReentrantLock();\n-\n-    private final Invoker<T> target;\n-    private ReferenceCountManagedChannel channel;\n-\n-//    private static List<Exception> grpcExceptions = new ArrayList<>();\n-//    static {\n-//        grpcExceptions.add();\n-//    }\n-\n-    public GrpcInvoker(Class<T> type, URL url, Invoker<T> target, ReferenceCountManagedChannel channel) {\n-        super(type, url);\n-        this.target = target;\n-        this.channel = channel;\n-    }\n-\n-    @Override\n-    protected Result doInvoke(Invocation invocation) throws Throwable {\n-        try {\n-            Result result = target.invoke(invocation);\n-            // FIXME result is an AsyncRpcResult instance.\n-            Throwable e = result.getException();\n-            if (e != null) {\n-                throw getRpcException(getInterface(), getUrl(), invocation, e);\n-            }\n-            return result;\n-        } catch (RpcException e) {\n-            if (e.getCode() == RpcException.UNKNOWN_EXCEPTION) {\n-                e.setCode(getErrorCode(e.getCause()));\n-            }\n-            throw e;\n-        } catch (Throwable e) {\n-            throw getRpcException(getInterface(), getUrl(), invocation, e);\n-        }\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return super.isAvailable() && !channel.isShutdown() && !channel.isTerminated();\n-    }\n-\n-    @Override\n-    public boolean isDestroyed() {\n-        return super.isDestroyed() || channel.isShutdown() || channel.isTerminated();\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        if (!super.isDestroyed()) {\n-            // double check to avoid dup close\n-            destroyLock.lock();\n-            try {\n-                if (super.isDestroyed()) {\n-                    return;\n-                }\n-                super.destroy();\n-                channel.shutdown();\n-            } finally {\n-                destroyLock.unlock();\n-            }\n-        }\n-    }\n-\n-    private RpcException getRpcException(Class<?> type, URL url, Invocation invocation, Throwable e) {\n-        RpcException re = new RpcException(\"Failed to invoke remote service: \" + type + \", method: \"\n-                + invocation.getMethodName() + \", cause: \" + e.getMessage(), e);\n-        re.setCode(getErrorCode(e));\n-        return re;\n-    }\n-\n-    /**\n-     * FIXME, convert gRPC exceptions to equivalent Dubbo exceptions.\n-     *\n-     * @param e\n-     * @return\n-     */\n-    private int getErrorCode(Throwable e) {\n-        if (e instanceof StatusException) {\n-            StatusException statusException = (StatusException) e;\n-            Status status = statusException.getStatus();\n-            if (status.getCode() == Status.Code.DEADLINE_EXCEEDED) {\n-                return RpcException.TIMEOUT_EXCEPTION;\n-            }\n-        }\n-        return RpcException.UNKNOWN_EXCEPTION;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.protocol.AbstractInvoker;\r\n+\r\n+import io.grpc.Status;\r\n+import io.grpc.StatusException;\r\n+\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+public class GrpcInvoker<T> extends AbstractInvoker<T> {\r\n+    private final ReentrantLock destroyLock = new ReentrantLock();\r\n+\r\n+    private final Invoker<T> target;\r\n+    private ReferenceCountManagedChannel channel;\r\n+\r\n+//    private static List<Exception> grpcExceptions = new ArrayList<>();\r\n+//    static {\r\n+//        grpcExceptions.add();\r\n+//    }\r\n+\r\n+    public GrpcInvoker(Class<T> type, URL url, Invoker<T> target, ReferenceCountManagedChannel channel) {\r\n+        super(type, url);\r\n+        this.target = target;\r\n+        this.channel = channel;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Result doInvoke(Invocation invocation) throws Throwable {\r\n+        try {\r\n+            Result result = target.invoke(invocation);\r\n+            // FIXME result is an AsyncRpcResult instance.\r\n+            Throwable e = result.getException();\r\n+            if (e != null) {\r\n+                throw getRpcException(getInterface(), getUrl(), invocation, e);\r\n+            }\r\n+            return result;\r\n+        } catch (RpcException e) {\r\n+            if (e.getCode() == RpcException.UNKNOWN_EXCEPTION) {\r\n+                e.setCode(getErrorCode(e.getCause()));\r\n+            }\r\n+            throw e;\r\n+        } catch (Throwable e) {\r\n+            throw getRpcException(getInterface(), getUrl(), invocation, e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return super.isAvailable() && !channel.isShutdown() && !channel.isTerminated();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isDestroyed() {\r\n+        return super.isDestroyed() || channel.isShutdown() || channel.isTerminated();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        if (!super.isDestroyed()) {\r\n+            // double check to avoid dup close\r\n+            destroyLock.lock();\r\n+            try {\r\n+                if (super.isDestroyed()) {\r\n+                    return;\r\n+                }\r\n+                super.destroy();\r\n+                channel.shutdown();\r\n+            } finally {\r\n+                destroyLock.unlock();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private RpcException getRpcException(Class<?> type, URL url, Invocation invocation, Throwable e) {\r\n+        RpcException re = new RpcException(\"Failed to invoke remote service: \" + type + \", method: \"\r\n+                + invocation.getMethodName() + \", cause: \" + e.getMessage(), e);\r\n+        re.setCode(getErrorCode(e));\r\n+        return re;\r\n+    }\r\n+\r\n+    /**\r\n+     * FIXME, convert gRPC exceptions to equivalent Dubbo exceptions.\r\n+     *\r\n+     * @param e\r\n+     * @return\r\n+     */\r\n+    private int getErrorCode(Throwable e) {\r\n+        if (e instanceof StatusException) {\r\n+            StatusException statusException = (StatusException) e;\r\n+            Status status = statusException.getStatus();\r\n+            if (status.getCode() == Status.Code.DEADLINE_EXCEEDED) {\r\n+                return RpcException.TIMEOUT_EXCEPTION;\r\n+            }\r\n+        }\r\n+        return RpcException.UNKNOWN_EXCEPTION;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,225 +1,225 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.threadpool.ThreadPool;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.config.context.ConfigManager;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor;\n-import org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator;\n-import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor;\n-import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerTransportFilter;\n-\n-import io.grpc.CallOptions;\n-import io.grpc.ManagedChannel;\n-import io.grpc.ServerBuilder;\n-import io.grpc.netty.GrpcSslContexts;\n-import io.grpc.netty.NettyChannelBuilder;\n-import io.grpc.netty.NettyServerBuilder;\n-import io.netty.handler.ssl.ClientAuth;\n-import io.netty.handler.ssl.SslContext;\n-import io.netty.handler.ssl.SslContextBuilder;\n-\n-import javax.net.ssl.SSLException;\n-import java.io.InputStream;\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Optional;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\n-import static org.apache.dubbo.remoting.Constants.DISPATCHER_KEY;\n-import static org.apache.dubbo.rpc.Constants.EXECUTES_KEY;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.CLIENT_INTERCEPTORS;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.EXECUTOR;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_CONCURRENT_CALLS_PER_CONNECTION;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_INBOUND_MESSAGE_SIZE;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_INBOUND_METADATA_SIZE;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.SERVER_INTERCEPTORS;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.TRANSPORT_FILTERS;\n-\n-/**\n- * Support gRPC configs in a Dubbo specific way.\n- */\n-public class GrpcOptionsUtils {\n-\n-    static ServerBuilder buildServerBuilder(URL url, NettyServerBuilder builder) {\n-\n-        int maxInboundMessageSize = url.getParameter(MAX_INBOUND_MESSAGE_SIZE, 0);\n-        if (maxInboundMessageSize > 0) {\n-            builder.maxInboundMessageSize(maxInboundMessageSize);\n-        }\n-\n-        int maxInboundMetadataSize = url.getParameter(MAX_INBOUND_METADATA_SIZE, 0);\n-        if (maxInboundMetadataSize > 0) {\n-            builder.maxInboundMetadataSize(maxInboundMetadataSize);\n-        }\n-\n-        if (url.getParameter(SSL_ENABLED_KEY, false)) {\n-            builder.sslContext(buildServerSslContext(url));\n-        }\n-\n-        int flowControlWindow = url.getParameter(MAX_INBOUND_MESSAGE_SIZE, 0);\n-        if (flowControlWindow > 0) {\n-            builder.flowControlWindow(flowControlWindow);\n-        }\n-\n-        int maxCalls = url.getParameter(MAX_CONCURRENT_CALLS_PER_CONNECTION, url.getParameter(EXECUTES_KEY, 0));\n-        if (maxCalls > 0) {\n-            builder.maxConcurrentCallsPerConnection(maxCalls);\n-        }\n-\n-        // server interceptors\n-        List<ServerInterceptor> serverInterceptors = ExtensionLoader.getExtensionLoader(ServerInterceptor.class)\n-                .getActivateExtension(url, SERVER_INTERCEPTORS, PROVIDER_SIDE);\n-        for (ServerInterceptor serverInterceptor : serverInterceptors) {\n-            builder.intercept(serverInterceptor);\n-        }\n-\n-        // server filters\n-        List<ServerTransportFilter> transportFilters = ExtensionLoader.getExtensionLoader(ServerTransportFilter.class)\n-                .getActivateExtension(url, TRANSPORT_FILTERS, PROVIDER_SIDE);\n-        for (ServerTransportFilter transportFilter : transportFilters) {\n-            builder.addTransportFilter(transportFilter.grpcTransportFilter());\n-        }\n-\n-        String thread = url.getParameter(EXECUTOR, url.getParameter(DISPATCHER_KEY));\n-        if (\"direct\".equals(thread)) {\n-            builder.directExecutor();\n-        } else {\n-            builder.executor(ExtensionLoader.getExtensionLoader(ThreadPool.class).getAdaptiveExtension().getExecutor(url));\n-        }\n-\n-        // Give users the chance to customize ServerBuilder\n-        return getConfigurator()\n-                .map(configurator -> configurator.configureServerBuilder(builder, url))\n-                .orElse(builder);\n-    }\n-\n-    static ManagedChannel buildManagedChannel(URL url) {\n-\n-        NettyChannelBuilder builder = NettyChannelBuilder.forAddress(url.getHost(), url.getPort());\n-        if (url.getParameter(SSL_ENABLED_KEY, false)) {\n-            builder.sslContext(buildClientSslContext(url));\n-        } else {\n-            builder.usePlaintext();\n-        }\n-\n-        builder.disableRetry();\n-//        builder.directExecutor();\n-\n-        // client interceptors\n-        List<io.grpc.ClientInterceptor> interceptors = new ArrayList<>(\n-                ExtensionLoader.getExtensionLoader(ClientInterceptor.class)\n-                        .getActivateExtension(url, CLIENT_INTERCEPTORS, CONSUMER_SIDE)\n-        );\n-\n-        builder.intercept(interceptors);\n-\n-        return getConfigurator()\n-                .map(configurator -> configurator.configureChannelBuilder(builder, url))\n-                .orElse(builder)\n-                .build();\n-    }\n-\n-    static CallOptions buildCallOptions(URL url) {\n-        // gRPC Deadline starts counting when it's created, so we need to create and add a new Deadline for each RPC call.\n-//        CallOptions callOptions = CallOptions.DEFAULT\n-//                .withDeadline(Deadline.after(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS));\n-        CallOptions callOptions = CallOptions.DEFAULT;\n-        return getConfigurator()\n-                .map(configurator -> configurator.configureCallOptions(callOptions, url))\n-                .orElse(callOptions);\n-    }\n-\n-    private static SslContext buildServerSslContext(URL url) {\n-        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\n-        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\n-\n-        SslContextBuilder sslClientContextBuilder = null;\n-        try {\n-            String password = sslConfig.getServerKeyPassword();\n-            if (password != null) {\n-                sslClientContextBuilder = GrpcSslContexts.forServer(sslConfig.getServerKeyCertChainPathStream(),\n-                        sslConfig.getServerPrivateKeyPathStream(), password);\n-            } else {\n-                sslClientContextBuilder = GrpcSslContexts.forServer(sslConfig.getServerKeyCertChainPathStream(),\n-                        sslConfig.getServerPrivateKeyPathStream());\n-            }\n-\n-            InputStream trustCertCollectionFilePath = sslConfig.getServerTrustCertCollectionPathStream();\n-            if (trustCertCollectionFilePath != null) {\n-                sslClientContextBuilder.trustManager(trustCertCollectionFilePath);\n-                sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Could not find certificate file or the certificate is invalid.\", e);\n-        }\n-        try {\n-            return sslClientContextBuilder.build();\n-        } catch (SSLException e) {\n-            throw new IllegalStateException(\"Build SslSession failed.\", e);\n-        }\n-    }\n-\n-    private static SslContext buildClientSslContext(URL url) {\n-        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\n-        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\n-\n-\n-        SslContextBuilder builder = GrpcSslContexts.forClient();\n-        try {\n-            InputStream trustCertCollectionFilePath = sslConfig.getClientTrustCertCollectionPathStream();\n-            if (trustCertCollectionFilePath != null) {\n-                builder.trustManager(trustCertCollectionFilePath);\n-            }\n-            InputStream clientCertChainFilePath = sslConfig.getClientKeyCertChainPathStream();\n-            InputStream clientPrivateKeyFilePath = sslConfig.getClientPrivateKeyPathStream();\n-            if (clientCertChainFilePath != null && clientPrivateKeyFilePath != null) {\n-                String password = sslConfig.getClientKeyPassword();\n-                if (password != null) {\n-                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath, password);\n-                } else {\n-                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath);\n-                }\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Could not find certificate file or find invalid certificate.\", e);\n-        }\n-        try {\n-            return builder.build();\n-        } catch (SSLException e) {\n-            throw new IllegalStateException(\"Build SslSession failed.\", e);\n-        }\n-    }\n-\n-    private static Optional<GrpcConfigurator> getConfigurator() {\n-        // Give users the chance to customize ServerBuilder\n-        Set<GrpcConfigurator> configurators = ExtensionLoader.getExtensionLoader(GrpcConfigurator.class)\n-                .getSupportedExtensionInstances();\n-        if (CollectionUtils.isNotEmpty(configurators)) {\n-            return Optional.of(configurators.iterator().next());\n-        }\n-        return Optional.empty();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.threadpool.ThreadPool;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor;\r\n+import org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator;\r\n+import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor;\r\n+import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerTransportFilter;\r\n+\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.ServerBuilder;\r\n+import io.grpc.netty.GrpcSslContexts;\r\n+import io.grpc.netty.NettyChannelBuilder;\r\n+import io.grpc.netty.NettyServerBuilder;\r\n+import io.netty.handler.ssl.ClientAuth;\r\n+import io.netty.handler.ssl.SslContext;\r\n+import io.netty.handler.ssl.SslContextBuilder;\r\n+\r\n+import javax.net.ssl.SSLException;\r\n+import java.io.InputStream;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DISPATCHER_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.EXECUTES_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.CLIENT_INTERCEPTORS;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.EXECUTOR;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_CONCURRENT_CALLS_PER_CONNECTION;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_INBOUND_MESSAGE_SIZE;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_INBOUND_METADATA_SIZE;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.SERVER_INTERCEPTORS;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.TRANSPORT_FILTERS;\r\n+\r\n+/**\r\n+ * Support gRPC configs in a Dubbo specific way.\r\n+ */\r\n+public class GrpcOptionsUtils {\r\n+\r\n+    static ServerBuilder buildServerBuilder(URL url, NettyServerBuilder builder) {\r\n+\r\n+        int maxInboundMessageSize = url.getParameter(MAX_INBOUND_MESSAGE_SIZE, 0);\r\n+        if (maxInboundMessageSize > 0) {\r\n+            builder.maxInboundMessageSize(maxInboundMessageSize);\r\n+        }\r\n+\r\n+        int maxInboundMetadataSize = url.getParameter(MAX_INBOUND_METADATA_SIZE, 0);\r\n+        if (maxInboundMetadataSize > 0) {\r\n+            builder.maxInboundMetadataSize(maxInboundMetadataSize);\r\n+        }\r\n+\r\n+        if (url.getParameter(SSL_ENABLED_KEY, false)) {\r\n+            builder.sslContext(buildServerSslContext(url));\r\n+        }\r\n+\r\n+        int flowControlWindow = url.getParameter(MAX_INBOUND_MESSAGE_SIZE, 0);\r\n+        if (flowControlWindow > 0) {\r\n+            builder.flowControlWindow(flowControlWindow);\r\n+        }\r\n+\r\n+        int maxCalls = url.getParameter(MAX_CONCURRENT_CALLS_PER_CONNECTION, url.getParameter(EXECUTES_KEY, 0));\r\n+        if (maxCalls > 0) {\r\n+            builder.maxConcurrentCallsPerConnection(maxCalls);\r\n+        }\r\n+\r\n+        // server interceptors\r\n+        List<ServerInterceptor> serverInterceptors = ExtensionLoader.getExtensionLoader(ServerInterceptor.class)\r\n+                .getActivateExtension(url, SERVER_INTERCEPTORS, PROVIDER_SIDE);\r\n+        for (ServerInterceptor serverInterceptor : serverInterceptors) {\r\n+            builder.intercept(serverInterceptor);\r\n+        }\r\n+\r\n+        // server filters\r\n+        List<ServerTransportFilter> transportFilters = ExtensionLoader.getExtensionLoader(ServerTransportFilter.class)\r\n+                .getActivateExtension(url, TRANSPORT_FILTERS, PROVIDER_SIDE);\r\n+        for (ServerTransportFilter transportFilter : transportFilters) {\r\n+            builder.addTransportFilter(transportFilter.grpcTransportFilter());\r\n+        }\r\n+\r\n+        String thread = url.getParameter(EXECUTOR, url.getParameter(DISPATCHER_KEY));\r\n+        if (\"direct\".equals(thread)) {\r\n+            builder.directExecutor();\r\n+        } else {\r\n+            builder.executor(ExtensionLoader.getExtensionLoader(ThreadPool.class).getAdaptiveExtension().getExecutor(url));\r\n+        }\r\n+\r\n+        // Give users the chance to customize ServerBuilder\r\n+        return getConfigurator()\r\n+                .map(configurator -> configurator.configureServerBuilder(builder, url))\r\n+                .orElse(builder);\r\n+    }\r\n+\r\n+    static ManagedChannel buildManagedChannel(URL url) {\r\n+\r\n+        NettyChannelBuilder builder = NettyChannelBuilder.forAddress(url.getHost(), url.getPort());\r\n+        if (url.getParameter(SSL_ENABLED_KEY, false)) {\r\n+            builder.sslContext(buildClientSslContext(url));\r\n+        } else {\r\n+            builder.usePlaintext();\r\n+        }\r\n+\r\n+        builder.disableRetry();\r\n+//        builder.directExecutor();\r\n+\r\n+        // client interceptors\r\n+        List<io.grpc.ClientInterceptor> interceptors = new ArrayList<>(\r\n+                ExtensionLoader.getExtensionLoader(ClientInterceptor.class)\r\n+                        .getActivateExtension(url, CLIENT_INTERCEPTORS, CONSUMER_SIDE)\r\n+        );\r\n+\r\n+        builder.intercept(interceptors);\r\n+\r\n+        return getConfigurator()\r\n+                .map(configurator -> configurator.configureChannelBuilder(builder, url))\r\n+                .orElse(builder)\r\n+                .build();\r\n+    }\r\n+\r\n+    static CallOptions buildCallOptions(URL url) {\r\n+        // gRPC Deadline starts counting when it's created, so we need to create and add a new Deadline for each RPC call.\r\n+//        CallOptions callOptions = CallOptions.DEFAULT\r\n+//                .withDeadline(Deadline.after(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS));\r\n+        CallOptions callOptions = CallOptions.DEFAULT;\r\n+        return getConfigurator()\r\n+                .map(configurator -> configurator.configureCallOptions(callOptions, url))\r\n+                .orElse(callOptions);\r\n+    }\r\n+\r\n+    private static SslContext buildServerSslContext(URL url) {\r\n+        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\r\n+        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\r\n+\r\n+        SslContextBuilder sslClientContextBuilder = null;\r\n+        try {\r\n+            String password = sslConfig.getServerKeyPassword();\r\n+            if (password != null) {\r\n+                sslClientContextBuilder = GrpcSslContexts.forServer(sslConfig.getServerKeyCertChainPathStream(),\r\n+                        sslConfig.getServerPrivateKeyPathStream(), password);\r\n+            } else {\r\n+                sslClientContextBuilder = GrpcSslContexts.forServer(sslConfig.getServerKeyCertChainPathStream(),\r\n+                        sslConfig.getServerPrivateKeyPathStream());\r\n+            }\r\n+\r\n+            InputStream trustCertCollectionFilePath = sslConfig.getServerTrustCertCollectionPathStream();\r\n+            if (trustCertCollectionFilePath != null) {\r\n+                sslClientContextBuilder.trustManager(trustCertCollectionFilePath);\r\n+                sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(\"Could not find certificate file or the certificate is invalid.\", e);\r\n+        }\r\n+        try {\r\n+            return sslClientContextBuilder.build();\r\n+        } catch (SSLException e) {\r\n+            throw new IllegalStateException(\"Build SslSession failed.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    private static SslContext buildClientSslContext(URL url) {\r\n+        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\r\n+        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\r\n+\r\n+\r\n+        SslContextBuilder builder = GrpcSslContexts.forClient();\r\n+        try {\r\n+            InputStream trustCertCollectionFilePath = sslConfig.getClientTrustCertCollectionPathStream();\r\n+            if (trustCertCollectionFilePath != null) {\r\n+                builder.trustManager(trustCertCollectionFilePath);\r\n+            }\r\n+            InputStream clientCertChainFilePath = sslConfig.getClientKeyCertChainPathStream();\r\n+            InputStream clientPrivateKeyFilePath = sslConfig.getClientPrivateKeyPathStream();\r\n+            if (clientCertChainFilePath != null && clientPrivateKeyFilePath != null) {\r\n+                String password = sslConfig.getClientKeyPassword();\r\n+                if (password != null) {\r\n+                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath, password);\r\n+                } else {\r\n+                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath);\r\n+                }\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(\"Could not find certificate file or find invalid certificate.\", e);\r\n+        }\r\n+        try {\r\n+            return builder.build();\r\n+        } catch (SSLException e) {\r\n+            throw new IllegalStateException(\"Build SslSession failed.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    private static Optional<GrpcConfigurator> getConfigurator() {\r\n+        // Give users the chance to customize ServerBuilder\r\n+        Set<GrpcConfigurator> configurators = ExtensionLoader.getExtensionLoader(GrpcConfigurator.class)\r\n+                .getSupportedExtensionInstances();\r\n+        if (CollectionUtils.isNotEmpty(configurators)) {\r\n+            return Optional.of(configurators.iterator().next());\r\n+        }\r\n+        return Optional.empty();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,235 +1,235 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.config.ReferenceConfigBase;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\n-\n-import io.grpc.BindableService;\n-import io.grpc.CallOptions;\n-import io.grpc.Channel;\n-import io.grpc.ManagedChannel;\n-import io.grpc.Server;\n-import io.grpc.netty.NettyServerBuilder;\n-\n-import java.io.IOException;\n-import java.lang.reflect.InvocationTargetException;\n-import java.lang.reflect.Method;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-/**\n- *\n- */\n-public class GrpcProtocol extends AbstractProxyProtocol {\n-\n-    public final static int DEFAULT_PORT = 50051;\n-\n-    /* <address, gRPC channels> */\n-    private final ConcurrentMap<String, ReferenceCountManagedChannel> channelMap = new ConcurrentHashMap<>();\n-    private final Object lock = new Object();\n-\n-    @Override\n-    protected <T> Runnable doExport(T proxiedImpl, Class<T> type, URL url) throws RpcException {\n-        String key = url.getAddress();\n-        ProtocolServer protocolServer = serverMap.computeIfAbsent(key, k -> {\n-            DubboHandlerRegistry registry = new DubboHandlerRegistry();\n-\n-            NettyServerBuilder builder =\n-                    NettyServerBuilder\n-                    .forPort(url.getPort())\n-                            .fallbackHandlerRegistry(registry);\n-\n-            Server originalServer = GrpcOptionsUtils.buildServerBuilder(url, builder).build();\n-            GrpcRemotingServer remotingServer = new GrpcRemotingServer(originalServer, registry);\n-            return new ProxyProtocolServer(remotingServer);\n-        });\n-\n-        GrpcRemotingServer grpcServer = (GrpcRemotingServer) protocolServer.getRemotingServer();\n-\n-        ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\n-        ProviderModel providerModel = serviceRepository.lookupExportedService(url.getServiceKey());\n-        if (providerModel == null) {\n-            throw new IllegalStateException(\"Service \" + url.getServiceKey() + \"should have already been stored in service repository, \" +\n-                    \"but failed to find it.\");\n-        }\n-        Object originalImpl = providerModel.getServiceInstance();\n-\n-        Class<?> implClass = originalImpl.getClass();\n-        try {\n-            Method method = implClass.getMethod(\"setProxiedImpl\", type);\n-            method.invoke(originalImpl, proxiedImpl);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(\"Failed to set dubbo proxied service impl to stub, please make sure your stub \" +\n-                    \"was generated by the dubbo-protoc-compiler.\", e);\n-        }\n-        grpcServer.getRegistry().addService((BindableService) originalImpl, url.getServiceKey());\n-\n-        if (!grpcServer.isStarted()) {\n-            grpcServer.start();\n-        }\n-\n-        return () -> grpcServer.getRegistry().removeService(url.getServiceKey());\n-    }\n-\n-    @Override\n-    protected <T> Invoker<T> protocolBindingRefer(final Class<T> type, final URL url) throws RpcException {\n-        Class<?> enclosingClass = type.getEnclosingClass();\n-\n-        if (enclosingClass == null) {\n-            throw new IllegalArgumentException(type.getName() + \" must be declared inside protobuf generated classes, \" +\n-                    \"should be something like ServiceNameGrpc.IServiceName.\");\n-        }\n-\n-        final Method dubboStubMethod;\n-        try {\n-            dubboStubMethod = enclosingClass.getDeclaredMethod(\"getDubboStub\", Channel.class, CallOptions.class,\n-                    URL.class, ReferenceConfigBase.class);\n-        } catch (NoSuchMethodException e) {\n-            throw new IllegalArgumentException(\"Does not find getDubboStub in \" + enclosingClass.getName() + \", please use the customized protoc-gen-dubbo-java to update the generated classes.\");\n-        }\n-\n-        // Channel\n-        ReferenceCountManagedChannel channel = getSharedChannel(url);\n-\n-        // CallOptions\n-        try {\n-            @SuppressWarnings(\"unchecked\") final T stub = (T) dubboStubMethod.invoke(null,\n-                    channel,\n-                    GrpcOptionsUtils.buildCallOptions(url),\n-                    url,\n-                    ApplicationModel.getConsumerModel(url.getServiceKey()).getReferenceConfig()\n-            );\n-            final Invoker<T> target = proxyFactory.getInvoker(stub, type, url);\n-            GrpcInvoker<T> grpcInvoker = new GrpcInvoker<>(type, url, target, channel);\n-            invokers.add(grpcInvoker);\n-            return grpcInvoker;\n-        } catch (IllegalAccessException | InvocationTargetException e) {\n-            throw new IllegalStateException(\"Could not create stub through reflection.\", e);\n-        }\n-    }\n-\n-    /**\n-     * not used\n-     *\n-     * @param type\n-     * @param url\n-     * @param <T>\n-     * @return\n-     * @throws RpcException\n-     */\n-    @Override\n-    protected <T> T doRefer(Class<T> type, URL url) throws RpcException {\n-        throw new UnsupportedOperationException(\"not used\");\n-    }\n-\n-    /**\n-     * Get shared channel connection\n-     */\n-    private ReferenceCountManagedChannel getSharedChannel(URL url) {\n-        String key = url.getAddress();\n-        ReferenceCountManagedChannel channel = channelMap.get(key);\n-\n-        if (channel != null && !channel.isTerminated()) {\n-            channel.incrementAndGetCount();\n-            return channel;\n-        }\n-\n-        synchronized (lock) {\n-            channel = channelMap.get(key);\n-            // dubbo check\n-            if (channel != null && !channel.isTerminated()) {\n-                channel.incrementAndGetCount();\n-            } else {\n-                channel = new ReferenceCountManagedChannel(initChannel(url));\n-                channelMap.put(key, channel);\n-            }\n-        }\n-\n-        return channel;\n-    }\n-\n-    /**\n-     * Create new connection\n-     *\n-     * @param url\n-     */\n-    private ManagedChannel initChannel(URL url) {\n-        return GrpcOptionsUtils.buildManagedChannel(url);\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return DEFAULT_PORT;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        serverMap.values().forEach(ProtocolServer::close);\n-        channelMap.values().forEach(ReferenceCountManagedChannel::shutdown);\n-        serverMap.clear();\n-        channelMap.clear();\n-        super.destroy();\n-    }\n-\n-    public class GrpcRemotingServer extends RemotingServerAdapter {\n-\n-        private Server originalServer;\n-        private DubboHandlerRegistry handlerRegistry;\n-        private volatile boolean started;\n-\n-        public GrpcRemotingServer(Server server, DubboHandlerRegistry handlerRegistry) {\n-            this.originalServer = server;\n-            this.handlerRegistry = handlerRegistry;\n-        }\n-\n-        public void start() throws RpcException {\n-            try {\n-                originalServer.start();\n-                started = true;\n-            } catch (IOException e) {\n-                throw new RpcException(\"Starting gRPC server failed. \", e);\n-            }\n-        }\n-\n-        public DubboHandlerRegistry getRegistry() {\n-            return handlerRegistry;\n-        }\n-\n-        @Override\n-        public Object getDelegateServer() {\n-            return originalServer;\n-        }\n-\n-        public boolean isStarted() {\n-            return started;\n-        }\n-\n-        @Override\n-        public void close() {\n-            originalServer.shutdown();\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.config.ReferenceConfigBase;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\r\n+\r\n+import io.grpc.BindableService;\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.Channel;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.Server;\r\n+import io.grpc.netty.NettyServerBuilder;\r\n+\r\n+import java.io.IOException;\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.lang.reflect.Method;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class GrpcProtocol extends AbstractProxyProtocol {\r\n+\r\n+    public final static int DEFAULT_PORT = 50051;\r\n+\r\n+    /* <address, gRPC channels> */\r\n+    private final ConcurrentMap<String, ReferenceCountManagedChannel> channelMap = new ConcurrentHashMap<>();\r\n+    private final Object lock = new Object();\r\n+\r\n+    @Override\r\n+    protected <T> Runnable doExport(T proxiedImpl, Class<T> type, URL url) throws RpcException {\r\n+        String key = url.getAddress();\r\n+        ProtocolServer protocolServer = serverMap.computeIfAbsent(key, k -> {\r\n+            DubboHandlerRegistry registry = new DubboHandlerRegistry();\r\n+\r\n+            NettyServerBuilder builder =\r\n+                    NettyServerBuilder\r\n+                    .forPort(url.getPort())\r\n+                            .fallbackHandlerRegistry(registry);\r\n+\r\n+            Server originalServer = GrpcOptionsUtils.buildServerBuilder(url, builder).build();\r\n+            GrpcRemotingServer remotingServer = new GrpcRemotingServer(originalServer, registry);\r\n+            return new ProxyProtocolServer(remotingServer);\r\n+        });\r\n+\r\n+        GrpcRemotingServer grpcServer = (GrpcRemotingServer) protocolServer.getRemotingServer();\r\n+\r\n+        ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\r\n+        ProviderModel providerModel = serviceRepository.lookupExportedService(url.getServiceKey());\r\n+        if (providerModel == null) {\r\n+            throw new IllegalStateException(\"Service \" + url.getServiceKey() + \"should have already been stored in service repository, \" +\r\n+                    \"but failed to find it.\");\r\n+        }\r\n+        Object originalImpl = providerModel.getServiceInstance();\r\n+\r\n+        Class<?> implClass = originalImpl.getClass();\r\n+        try {\r\n+            Method method = implClass.getMethod(\"setProxiedImpl\", type);\r\n+            method.invoke(originalImpl, proxiedImpl);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(\"Failed to set dubbo proxied service impl to stub, please make sure your stub \" +\r\n+                    \"was generated by the dubbo-protoc-compiler.\", e);\r\n+        }\r\n+        grpcServer.getRegistry().addService((BindableService) originalImpl, url.getServiceKey());\r\n+\r\n+        if (!grpcServer.isStarted()) {\r\n+            grpcServer.start();\r\n+        }\r\n+\r\n+        return () -> grpcServer.getRegistry().removeService(url.getServiceKey());\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> Invoker<T> protocolBindingRefer(final Class<T> type, final URL url) throws RpcException {\r\n+        Class<?> enclosingClass = type.getEnclosingClass();\r\n+\r\n+        if (enclosingClass == null) {\r\n+            throw new IllegalArgumentException(type.getName() + \" must be declared inside protobuf generated classes, \" +\r\n+                    \"should be something like ServiceNameGrpc.IServiceName.\");\r\n+        }\r\n+\r\n+        final Method dubboStubMethod;\r\n+        try {\r\n+            dubboStubMethod = enclosingClass.getDeclaredMethod(\"getDubboStub\", Channel.class, CallOptions.class,\r\n+                    URL.class, ReferenceConfigBase.class);\r\n+        } catch (NoSuchMethodException e) {\r\n+            throw new IllegalArgumentException(\"Does not find getDubboStub in \" + enclosingClass.getName() + \", please use the customized protoc-gen-dubbo-java to update the generated classes.\");\r\n+        }\r\n+\r\n+        // Channel\r\n+        ReferenceCountManagedChannel channel = getSharedChannel(url);\r\n+\r\n+        // CallOptions\r\n+        try {\r\n+            @SuppressWarnings(\"unchecked\") final T stub = (T) dubboStubMethod.invoke(null,\r\n+                    channel,\r\n+                    GrpcOptionsUtils.buildCallOptions(url),\r\n+                    url,\r\n+                    ApplicationModel.getConsumerModel(url.getServiceKey()).getReferenceConfig()\r\n+            );\r\n+            final Invoker<T> target = proxyFactory.getInvoker(stub, type, url);\r\n+            GrpcInvoker<T> grpcInvoker = new GrpcInvoker<>(type, url, target, channel);\r\n+            invokers.add(grpcInvoker);\r\n+            return grpcInvoker;\r\n+        } catch (IllegalAccessException | InvocationTargetException e) {\r\n+            throw new IllegalStateException(\"Could not create stub through reflection.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * not used\r\n+     *\r\n+     * @param type\r\n+     * @param url\r\n+     * @param <T>\r\n+     * @return\r\n+     * @throws RpcException\r\n+     */\r\n+    @Override\r\n+    protected <T> T doRefer(Class<T> type, URL url) throws RpcException {\r\n+        throw new UnsupportedOperationException(\"not used\");\r\n+    }\r\n+\r\n+    /**\r\n+     * Get shared channel connection\r\n+     */\r\n+    private ReferenceCountManagedChannel getSharedChannel(URL url) {\r\n+        String key = url.getAddress();\r\n+        ReferenceCountManagedChannel channel = channelMap.get(key);\r\n+\r\n+        if (channel != null && !channel.isTerminated()) {\r\n+            channel.incrementAndGetCount();\r\n+            return channel;\r\n+        }\r\n+\r\n+        synchronized (lock) {\r\n+            channel = channelMap.get(key);\r\n+            // dubbo check\r\n+            if (channel != null && !channel.isTerminated()) {\r\n+                channel.incrementAndGetCount();\r\n+            } else {\r\n+                channel = new ReferenceCountManagedChannel(initChannel(url));\r\n+                channelMap.put(key, channel);\r\n+            }\r\n+        }\r\n+\r\n+        return channel;\r\n+    }\r\n+\r\n+    /**\r\n+     * Create new connection\r\n+     *\r\n+     * @param url\r\n+     */\r\n+    private ManagedChannel initChannel(URL url) {\r\n+        return GrpcOptionsUtils.buildManagedChannel(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return DEFAULT_PORT;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        serverMap.values().forEach(ProtocolServer::close);\r\n+        channelMap.values().forEach(ReferenceCountManagedChannel::shutdown);\r\n+        serverMap.clear();\r\n+        channelMap.clear();\r\n+        super.destroy();\r\n+    }\r\n+\r\n+    public class GrpcRemotingServer extends RemotingServerAdapter {\r\n+\r\n+        private Server originalServer;\r\n+        private DubboHandlerRegistry handlerRegistry;\r\n+        private volatile boolean started;\r\n+\r\n+        public GrpcRemotingServer(Server server, DubboHandlerRegistry handlerRegistry) {\r\n+            this.originalServer = server;\r\n+            this.handlerRegistry = handlerRegistry;\r\n+        }\r\n+\r\n+        public void start() throws RpcException {\r\n+            try {\r\n+                originalServer.start();\r\n+                started = true;\r\n+            } catch (IOException e) {\r\n+                throw new RpcException(\"Starting gRPC server failed. \", e);\r\n+            }\r\n+        }\r\n+\r\n+        public DubboHandlerRegistry getRegistry() {\r\n+            return handlerRegistry;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Object getDelegateServer() {\r\n+            return originalServer;\r\n+        }\r\n+\r\n+        public boolean isStarted() {\r\n+            return started;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void close() {\r\n+            originalServer.shutdown();\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/ReferenceCountManagedChannel.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/ReferenceCountManagedChannel.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,85 +1,85 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import io.grpc.CallOptions;\n-import io.grpc.ClientCall;\n-import io.grpc.ManagedChannel;\n-import io.grpc.MethodDescriptor;\n-\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.atomic.AtomicInteger;\n-\n-/**\n- * Also see ReferenceCountExchangeClient\n- */\n-public class ReferenceCountManagedChannel extends ManagedChannel {\n-\n-    private final AtomicInteger referenceCount = new AtomicInteger(0);\n-\n-    private ManagedChannel grpcChannel;\n-\n-    public ReferenceCountManagedChannel(ManagedChannel delegated) {\n-        this.grpcChannel = delegated;\n-    }\n-\n-    /**\n-     * The reference count of current ExchangeClient, connection will be closed if all invokers destroyed.\n-     */\n-    public void incrementAndGetCount() {\n-        referenceCount.incrementAndGet();\n-    }\n-\n-    @Override\n-    public ManagedChannel shutdown() {\n-        if (referenceCount.decrementAndGet() <= 0) {\n-            return grpcChannel.shutdown();\n-        }\n-        return grpcChannel;\n-    }\n-\n-    @Override\n-    public boolean isShutdown() {\n-        return grpcChannel.isShutdown();\n-    }\n-\n-    @Override\n-    public boolean isTerminated() {\n-        return grpcChannel.isTerminated();\n-    }\n-\n-    @Override\n-    public ManagedChannel shutdownNow() {\n-        // TODO\n-        return shutdown();\n-    }\n-\n-    @Override\n-    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n-        return grpcChannel.awaitTermination(timeout, unit);\n-    }\n-\n-    @Override\n-    public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(MethodDescriptor<RequestT, ResponseT> methodDescriptor, CallOptions callOptions) {\n-        return grpcChannel.newCall(methodDescriptor, callOptions);\n-    }\n-\n-    @Override\n-    public String authority() {\n-        return grpcChannel.authority();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.ClientCall;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.MethodDescriptor;\r\n+\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+\r\n+/**\r\n+ * Also see ReferenceCountExchangeClient\r\n+ */\r\n+public class ReferenceCountManagedChannel extends ManagedChannel {\r\n+\r\n+    private final AtomicInteger referenceCount = new AtomicInteger(0);\r\n+\r\n+    private ManagedChannel grpcChannel;\r\n+\r\n+    public ReferenceCountManagedChannel(ManagedChannel delegated) {\r\n+        this.grpcChannel = delegated;\r\n+    }\r\n+\r\n+    /**\r\n+     * The reference count of current ExchangeClient, connection will be closed if all invokers destroyed.\r\n+     */\r\n+    public void incrementAndGetCount() {\r\n+        referenceCount.incrementAndGet();\r\n+    }\r\n+\r\n+    @Override\r\n+    public ManagedChannel shutdown() {\r\n+        if (referenceCount.decrementAndGet() <= 0) {\r\n+            return grpcChannel.shutdown();\r\n+        }\r\n+        return grpcChannel;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isShutdown() {\r\n+        return grpcChannel.isShutdown();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isTerminated() {\r\n+        return grpcChannel.isTerminated();\r\n+    }\r\n+\r\n+    @Override\r\n+    public ManagedChannel shutdownNow() {\r\n+        // TODO\r\n+        return shutdown();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\r\n+        return grpcChannel.awaitTermination(timeout, unit);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(MethodDescriptor<RequestT, ResponseT> methodDescriptor, CallOptions callOptions) {\r\n+        return grpcChannel.newCall(methodDescriptor, callOptions);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String authority() {\r\n+        return grpcChannel.authority();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ClientInterceptor.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ClientInterceptor.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,26 +1,26 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\n- */\n-@SPI\n-public interface ClientInterceptor extends io.grpc.ClientInterceptor {\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\r\n+ */\r\n+@SPI\r\n+public interface ClientInterceptor extends io.grpc.ClientInterceptor {\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/GrpcConfigurator.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/GrpcConfigurator.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import io.grpc.CallOptions;\n-import io.grpc.netty.NettyChannelBuilder;\n-import io.grpc.netty.NettyServerBuilder;\n-\n-@SPI\n-public interface GrpcConfigurator {\n-\n-    default NettyServerBuilder configureServerBuilder(NettyServerBuilder builder, URL url) {\n-        return builder;\n-    }\n-\n-    default NettyChannelBuilder configureChannelBuilder(NettyChannelBuilder builder, URL url) {\n-        return builder;\n-    }\n-\n-    default CallOptions configureCallOptions(CallOptions options, URL url) {\n-        return options;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.netty.NettyChannelBuilder;\r\n+import io.grpc.netty.NettyServerBuilder;\r\n+\r\n+@SPI\r\n+public interface GrpcConfigurator {\r\n+\r\n+    default NettyServerBuilder configureServerBuilder(NettyServerBuilder builder, URL url) {\r\n+        return builder;\r\n+    }\r\n+\r\n+    default NettyChannelBuilder configureChannelBuilder(NettyChannelBuilder builder, URL url) {\r\n+        return builder;\r\n+    }\r\n+\r\n+    default CallOptions configureCallOptions(CallOptions options, URL url) {\r\n+        return options;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/RpcContextInterceptor.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/RpcContextInterceptor.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,100 +1,100 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import io.grpc.CallOptions;\n-import io.grpc.Channel;\n-import io.grpc.ClientCall;\n-import io.grpc.ForwardingClientCall;\n-import io.grpc.ForwardingServerCallListener;\n-import io.grpc.Metadata;\n-import io.grpc.MethodDescriptor;\n-import io.grpc.ServerCall;\n-import io.grpc.ServerCallHandler;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static io.grpc.Metadata.ASCII_STRING_MARSHALLER;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\n-\n-/**\n- * Hand over context information from Dubbo to gRPC.\n- */\n-@Activate(group = {PROVIDER, CONSUMER})\n-public class RpcContextInterceptor implements ClientInterceptor, ServerInterceptor {\n-\n-    private static final String DUBBO = \"D-\";\n-\n-    @Override\n-    public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {\n-        RpcContext rpcContext = RpcContext.getContext();\n-        Map<String, Object> attachments = new HashMap<>(rpcContext.getObjectAttachments());\n-\n-        return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {\n-            @Override\n-            public void start(Listener<RespT> responseListener, Metadata headers) {\n-                if (!attachments.isEmpty()) {\n-                    for (Map.Entry<String, Object> entry : attachments.entrySet()) {\n-                        // only used for string\n-                        if (entry.getValue() instanceof String) {\n-                            headers.put(Metadata.Key.of(DUBBO + entry.getKey(), ASCII_STRING_MARSHALLER), ((String) entry.getValue()));\n-                        }\n-                    }\n-                }\n-                super.start(responseListener, headers);\n-            }\n-        };\n-    }\n-\n-    @Override\n-    public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) {\n-        Set<String> keys = headers.keys();\n-        Map<String, Object> attachments = new HashMap<>();\n-        // filter out all dubbo attachments and save in map\n-        if (keys != null) {\n-            keys.stream().filter(k -> k.toUpperCase().startsWith(DUBBO)).forEach(k ->\n-                    attachments.put(k.substring(DUBBO.length()), headers.get(Metadata.Key.of(k, Metadata.ASCII_STRING_MARSHALLER)))\n-            );\n-        }\n-\n-        return new ForwardingServerCallListener.SimpleForwardingServerCallListener<ReqT>(next.startCall(call, headers)) {\n-            @Override\n-            public void onHalfClose() {\n-                // the client completed all message sending and server will call the biz method if client is not the streaming\n-                if (call.getMethodDescriptor().getType().clientSendsOneMessage()) {\n-                    RpcContext.getContext().setObjectAttachments(attachments);\n-                }\n-                super.onHalfClose();\n-            }\n-\n-            @Override\n-            public void onMessage(ReqT message) {\n-                //server receive the request from client and call the biz method if client is streaming\n-                if (!call.getMethodDescriptor().getType().clientSendsOneMessage()) {\n-                    RpcContext.getContext().setObjectAttachments(attachments);\n-                }\n-                super.onMessage(message);\n-            }\n-        };\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.Channel;\r\n+import io.grpc.ClientCall;\r\n+import io.grpc.ForwardingClientCall;\r\n+import io.grpc.ForwardingServerCallListener;\r\n+import io.grpc.Metadata;\r\n+import io.grpc.MethodDescriptor;\r\n+import io.grpc.ServerCall;\r\n+import io.grpc.ServerCallHandler;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static io.grpc.Metadata.ASCII_STRING_MARSHALLER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\r\n+\r\n+/**\r\n+ * Hand over context information from Dubbo to gRPC.\r\n+ */\r\n+@Activate(group = {PROVIDER, CONSUMER})\r\n+public class RpcContextInterceptor implements ClientInterceptor, ServerInterceptor {\r\n+\r\n+    private static final String DUBBO = \"D-\";\r\n+\r\n+    @Override\r\n+    public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {\r\n+        RpcContext rpcContext = RpcContext.getContext();\r\n+        Map<String, Object> attachments = new HashMap<>(rpcContext.getObjectAttachments());\r\n+\r\n+        return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {\r\n+            @Override\r\n+            public void start(Listener<RespT> responseListener, Metadata headers) {\r\n+                if (!attachments.isEmpty()) {\r\n+                    for (Map.Entry<String, Object> entry : attachments.entrySet()) {\r\n+                        // only used for string\r\n+                        if (entry.getValue() instanceof String) {\r\n+                            headers.put(Metadata.Key.of(DUBBO + entry.getKey(), ASCII_STRING_MARSHALLER), ((String) entry.getValue()));\r\n+                        }\r\n+                    }\r\n+                }\r\n+                super.start(responseListener, headers);\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+    @Override\r\n+    public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) {\r\n+        Set<String> keys = headers.keys();\r\n+        Map<String, Object> attachments = new HashMap<>();\r\n+        // filter out all dubbo attachments and save in map\r\n+        if (keys != null) {\r\n+            keys.stream().filter(k -> k.toUpperCase().startsWith(DUBBO)).forEach(k ->\r\n+                    attachments.put(k.substring(DUBBO.length()), headers.get(Metadata.Key.of(k, Metadata.ASCII_STRING_MARSHALLER)))\r\n+            );\r\n+        }\r\n+\r\n+        return new ForwardingServerCallListener.SimpleForwardingServerCallListener<ReqT>(next.startCall(call, headers)) {\r\n+            @Override\r\n+            public void onHalfClose() {\r\n+                // the client completed all message sending and server will call the biz method if client is not the streaming\r\n+                if (call.getMethodDescriptor().getType().clientSendsOneMessage()) {\r\n+                    RpcContext.getContext().setObjectAttachments(attachments);\r\n+                }\r\n+                super.onHalfClose();\r\n+            }\r\n+\r\n+            @Override\r\n+            public void onMessage(ReqT message) {\r\n+                //server receive the request from client and call the biz method if client is streaming\r\n+                if (!call.getMethodDescriptor().getType().clientSendsOneMessage()) {\r\n+                    RpcContext.getContext().setObjectAttachments(attachments);\r\n+                }\r\n+                super.onMessage(message);\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerInterceptor.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerInterceptor.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,26 +1,26 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\n- */\n-@SPI\n-public interface ServerInterceptor extends io.grpc.ServerInterceptor {\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\r\n+ */\r\n+@SPI\r\n+public interface ServerInterceptor extends io.grpc.ServerInterceptor {\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerTransportFilter.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerTransportFilter.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,27 +1,27 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\n- */\n-@SPI\n-public interface ServerTransportFilter {\n-    io.grpc.ServerTransportFilter grpcTransportFilter();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\r\n+ */\r\n+@SPI\r\n+public interface ServerTransportFilter {\r\n+    io.grpc.ServerTransportFilter grpcTransportFilter();\r\n+}\r\n"}]}
