{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo {}", "source2": "zipinfo {}", "unified_diff": "@@ -1,28 +1,28 @@\n-Zip file size: 53646 bytes, number of entries: 26\n+Zip file size: 54265 bytes, number of entries: 26\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 META-INF/\n -rw----     2.0 fat     5549 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      176 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       55 bX stor 70-Jan-01 00:00 META-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory\n -rw----     2.0 fat       64 bX stor 70-Jan-01 00:00 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery\n -rw----     2.0 fat       71 bX stor 70-Jan-01 00:00 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory\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-registry-sofa/\n -rw----     2.0 fat        0 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.properties\n--rw----     2.0 fat     4787 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml\n+-rw----     2.0 fat     4654 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/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/registry/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/\n--rw----     2.0 fat    10603 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistry.java\n--rw----     2.0 fat     1379 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryConstants.java\n--rw----     2.0 fat     1383 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryFactory.java\n--rw----     2.0 fat     2340 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryInstance.java\n--rw----     2.0 fat     9905 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java\n--rw----     2.0 fat     1241 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java\n-26 files, 48936 bytes uncompressed, 48936 bytes compressed:  0.0%\n+-rw----     2.0 fat    10899 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistry.java\n+-rw----     2.0 fat     1422 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryConstants.java\n+-rw----     2.0 fat     1424 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryFactory.java\n+-rw----     2.0 fat     2430 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryInstance.java\n+-rw----     2.0 fat    10159 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java\n+-rw----     2.0 fat     1269 bX stor 70-Jan-01 00:00 org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java\n+26 files, 49555 bytes uncompressed, 49555 bytes compressed:  0.0%\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -368,1066 +368,1066 @@\n #\n 4884 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n 4886   Length              0005 (5)\n 4888   Flags               01 (1) 'Modification'\n 4889   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n 488D PAYLOAD\n \n-5B40 DATA DESCRIPTOR       08074B50 (134695760)\n-5B44 CRC                   6F2313AC (1864569772)\n-5B48 Compressed Size       000012B3 (4787)\n-5B4C Uncompressed Size     000012B3 (4787)\n-\n-5B50 LOCAL HEADER #16      04034B50 (67324752)\n-5B54 Extract Zip Spec      14 (20) '2.0'\n-5B55 Extract OS            00 (0) 'MS-DOS'\n-5B56 General Purpose Flag  0000 (0)\n-5B58 Compression Method    0000 (0) 'Stored'\n-5B5A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-5B5E CRC                   00000000 (0)\n-5B62 Compressed Size       00000000 (0)\n-5B66 Uncompressed Size     00000000 (0)\n-5B6A Filename Length       0004 (4)\n-5B6C Extra Length          0009 (9)\n-5B6E Filename              'XXXX'\n-#\n-# WARNING: Offset 0x5B6E: Filename 'XXXX'\n-#          Zero length filename\n-#\n-5B72 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-5B74   Length              0005 (5)\n-5B76   Flags               01 (1) 'Modification'\n-5B77   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-5B7B LOCAL HEADER #17      04034B50 (67324752)\n-5B7F Extract Zip Spec      14 (20) '2.0'\n-5B80 Extract OS            00 (0) 'MS-DOS'\n-5B81 General Purpose Flag  0000 (0)\n-5B83 Compression Method    0000 (0) 'Stored'\n-5B85 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-5B89 CRC                   00000000 (0)\n-5B8D Compressed Size       00000000 (0)\n-5B91 Uncompressed Size     00000000 (0)\n-5B95 Filename Length       000B (11)\n-5B97 Extra Length          0009 (9)\n-5B99 Filename              'XXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x5B99: Filename 'XXXXXXXXXXX'\n-#          Zero length filename\n-#\n-5BA4 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-5BA6   Length              0005 (5)\n-5BA8   Flags               01 (1) 'Modification'\n-5BA9   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-5BAD LOCAL HEADER #18      04034B50 (67324752)\n-5BB1 Extract Zip Spec      14 (20) '2.0'\n-5BB2 Extract OS            00 (0) 'MS-DOS'\n-5BB3 General Purpose Flag  0000 (0)\n-5BB5 Compression Method    0000 (0) 'Stored'\n-5BB7 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-5BBB CRC                   00000000 (0)\n-5BBF Compressed Size       00000000 (0)\n-5BC3 Uncompressed Size     00000000 (0)\n-5BC7 Filename Length       0011 (17)\n-5BC9 Extra Length          0009 (9)\n-5BCB Filename              'XXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x5BCB: Filename 'XXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-5BDC Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-5BDE   Length              0005 (5)\n-5BE0   Flags               01 (1) 'Modification'\n-5BE1   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-5BE5 LOCAL HEADER #19      04034B50 (67324752)\n-5BE9 Extract Zip Spec      14 (20) '2.0'\n-5BEA Extract OS            00 (0) 'MS-DOS'\n-5BEB General Purpose Flag  0000 (0)\n-5BED Compression Method    0000 (0) 'Stored'\n-5BEF Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-5BF3 CRC                   00000000 (0)\n-5BF7 Compressed Size       00000000 (0)\n-5BFB Uncompressed Size     00000000 (0)\n-5BFF Filename Length       001A (26)\n-5C01 Extra Length          0009 (9)\n-5C03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x5C03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-5C1D Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-5C1F   Length              0005 (5)\n-5C21   Flags               01 (1) 'Modification'\n-5C22   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-5C26 LOCAL HEADER #20      04034B50 (67324752)\n-5C2A Extract Zip Spec      14 (20) '2.0'\n-5C2B Extract OS            00 (0) 'MS-DOS'\n-5C2C General Purpose Flag  0000 (0)\n-5C2E Compression Method    0000 (0) 'Stored'\n-5C30 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-5C34 CRC                   00000000 (0)\n-5C38 Compressed Size       00000000 (0)\n-5C3C Uncompressed Size     00000000 (0)\n-5C40 Filename Length       001F (31)\n-5C42 Extra Length          0009 (9)\n-5C44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x5C44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-5C63 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-5C65   Length              0005 (5)\n-5C67   Flags               01 (1) 'Modification'\n-5C68   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-5C6C LOCAL HEADER #21      04034B50 (67324752)\n-5C70 Extract Zip Spec      14 (20) '2.0'\n-5C71 Extract OS            00 (0) 'MS-DOS'\n-5C72 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-5C74 Compression Method    0000 (0) 'Stored'\n-5C76 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-5C7A CRC                   00000000 (0)\n-5C7E Compressed Size       00000000 (0)\n-5C82 Uncompressed Size     00000000 (0)\n-5C86 Filename Length       0030 (48)\n-5C88 Extra Length          0009 (9)\n-5C8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x5C8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-5CBA Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-5CBC   Length              0005 (5)\n-5CBE   Flags               01 (1) 'Modification'\n-5CBF   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-5CC3 PAYLOAD\n-\n-862E DATA DESCRIPTOR       08074B50 (134695760)\n-8632 CRC                   67F68BAB (1744210859)\n-8636 Compressed Size       0000296B (10603)\n-863A Uncompressed Size     0000296B (10603)\n-\n-863E LOCAL HEADER #22      04034B50 (67324752)\n-8642 Extract Zip Spec      14 (20) '2.0'\n-8643 Extract OS            00 (0) 'MS-DOS'\n-8644 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-8646 Compression Method    0000 (0) 'Stored'\n-8648 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-864C CRC                   00000000 (0)\n-8650 Compressed Size       00000000 (0)\n-8654 Uncompressed Size     00000000 (0)\n-8658 Filename Length       0039 (57)\n-865A Extra Length          0009 (9)\n-865C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x865C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-8695 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-8697   Length              0005 (5)\n-8699   Flags               01 (1) 'Modification'\n-869A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-869E PAYLOAD\n-\n-8C01 DATA DESCRIPTOR       08074B50 (134695760)\n-8C05 CRC                   5E420043 (1581383747)\n-8C09 Compressed Size       00000563 (1379)\n-8C0D Uncompressed Size     00000563 (1379)\n-\n-8C11 LOCAL HEADER #23      04034B50 (67324752)\n-8C15 Extract Zip Spec      14 (20) '2.0'\n-8C16 Extract OS            00 (0) 'MS-DOS'\n-8C17 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-8C19 Compression Method    0000 (0) 'Stored'\n-8C1B Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-8C1F CRC                   00000000 (0)\n-8C23 Compressed Size       00000000 (0)\n-8C27 Uncompressed Size     00000000 (0)\n-8C2B Filename Length       0037 (55)\n-8C2D Extra Length          0009 (9)\n-8C2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x8C2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-8C66 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-8C68   Length              0005 (5)\n-8C6A   Flags               01 (1) 'Modification'\n-8C6B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-8C6F PAYLOAD\n-\n-91D6 DATA DESCRIPTOR       08074B50 (134695760)\n-91DA CRC                   F10F61B1 (4044317105)\n-91DE Compressed Size       00000567 (1383)\n-91E2 Uncompressed Size     00000567 (1383)\n-\n-91E6 LOCAL HEADER #24      04034B50 (67324752)\n-91EA Extract Zip Spec      14 (20) '2.0'\n-91EB Extract OS            00 (0) 'MS-DOS'\n-91EC General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-91EE Compression Method    0000 (0) 'Stored'\n-91F0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-91F4 CRC                   00000000 (0)\n-91F8 Compressed Size       00000000 (0)\n-91FC Uncompressed Size     00000000 (0)\n-9200 Filename Length       0038 (56)\n-9202 Extra Length          0009 (9)\n-9204 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x9204: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-923C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-923E   Length              0005 (5)\n-9240   Flags               01 (1) 'Modification'\n-9241   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-9245 PAYLOAD\n-\n-9B69 DATA DESCRIPTOR       08074B50 (134695760)\n-9B6D CRC                   F71501FC (4145349116)\n-9B71 Compressed Size       00000924 (2340)\n-9B75 Uncompressed Size     00000924 (2340)\n-\n-9B79 LOCAL HEADER #25      04034B50 (67324752)\n-9B7D Extract Zip Spec      14 (20) '2.0'\n-9B7E Extract OS            00 (0) 'MS-DOS'\n-9B7F General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-9B81 Compression Method    0000 (0) 'Stored'\n-9B83 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-9B87 CRC                   00000000 (0)\n-9B8B Compressed Size       00000000 (0)\n-9B8F Uncompressed Size     00000000 (0)\n-9B93 Filename Length       0040 (64)\n-9B95 Extra Length          0009 (9)\n-9B97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x9B97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-9BD7 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-9BD9   Length              0005 (5)\n-9BDB   Flags               01 (1) 'Modification'\n-9BDC   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-9BE0 PAYLOAD\n-\n-C291 DATA DESCRIPTOR       08074B50 (134695760)\n-C295 CRC                   B6DFDCE2 (3068124386)\n-C299 Compressed Size       000026B1 (9905)\n-C29D Uncompressed Size     000026B1 (9905)\n-\n-C2A1 LOCAL HEADER #26      04034B50 (67324752)\n-C2A5 Extract Zip Spec      14 (20) '2.0'\n-C2A6 Extract OS            00 (0) 'MS-DOS'\n-C2A7 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-C2A9 Compression Method    0000 (0) 'Stored'\n-C2AB Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C2AF CRC                   00000000 (0)\n-C2B3 Compressed Size       00000000 (0)\n-C2B7 Uncompressed Size     00000000 (0)\n-C2BB Filename Length       0047 (71)\n-C2BD Extra Length          0009 (9)\n-C2BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC2BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C306 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C308   Length              0005 (5)\n-C30A   Flags               01 (1) 'Modification'\n-C30B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-C30F PAYLOAD\n-\n-C7E8 DATA DESCRIPTOR       08074B50 (134695760)\n-C7EC CRC                   3C911134 (1016140084)\n-C7F0 Compressed Size       000004D9 (1241)\n-C7F4 Uncompressed Size     000004D9 (1241)\n-\n-C7F8 CENTRAL HEADER #1     02014B50 (33639248)\n-C7FC Created Zip Spec      14 (20) '2.0'\n-C7FD Created OS            00 (0) 'MS-DOS'\n-C7FE Extract Zip Spec      14 (20) '2.0'\n-C7FF Extract OS            00 (0) 'MS-DOS'\n-C800 General Purpose Flag  0000 (0)\n-C802 Compression Method    0000 (0) 'Stored'\n-C804 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C808 CRC                   00000000 (0)\n-C80C Compressed Size       00000000 (0)\n-C810 Uncompressed Size     00000000 (0)\n-C814 Filename Length       0009 (9)\n-C816 Extra Length          0009 (9)\n-C818 Comment Length        0000 (0)\n-C81A Disk Start            0000 (0)\n-C81C Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C81E Ext File Attributes   00000000 (0)\n-C822 Local Header Offset   00000000 (0)\n-C826 Filename              'XXXXXXXXX'\n-#\n-# WARNING: Offset 0xC826: Filename 'XXXXXXXXX'\n-#          Zero length filename\n-#\n-C82F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C831   Length              0005 (5)\n-C833   Flags               01 (1) 'Modification'\n-C834   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C838 CENTRAL HEADER #2     02014B50 (33639248)\n-C83C Created Zip Spec      14 (20) '2.0'\n-C83D Created OS            00 (0) 'MS-DOS'\n-C83E Extract Zip Spec      14 (20) '2.0'\n-C83F Extract OS            00 (0) 'MS-DOS'\n-C840 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-C842 Compression Method    0000 (0) 'Stored'\n-C844 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C848 CRC                   C2CE7E1E (3268312606)\n-C84C Compressed Size       000015AD (5549)\n-C850 Uncompressed Size     000015AD (5549)\n-C854 Filename Length       0015 (21)\n-C856 Extra Length          0009 (9)\n-C858 Comment Length        0000 (0)\n-C85A Disk Start            0000 (0)\n-C85C Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C85E Ext File Attributes   00000000 (0)\n-C862 Local Header Offset   00000030 (48)\n-C866 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC866: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C87B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C87D   Length              0005 (5)\n-C87F   Flags               01 (1) 'Modification'\n-C880   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C884 CENTRAL HEADER #3     02014B50 (33639248)\n-C888 Created Zip Spec      14 (20) '2.0'\n-C889 Created OS            00 (0) 'MS-DOS'\n-C88A Extract Zip Spec      14 (20) '2.0'\n-C88B Extract OS            00 (0) 'MS-DOS'\n-C88C General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-C88E Compression Method    0000 (0) 'Stored'\n-C890 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C894 CRC                   86E2B4B4 (2263004340)\n-C898 Compressed Size       00002C5E (11358)\n-C89C Uncompressed Size     00002C5E (11358)\n-C8A0 Filename Length       0010 (16)\n-C8A2 Extra Length          0009 (9)\n-C8A4 Comment Length        0000 (0)\n-C8A6 Disk Start            0000 (0)\n-C8A8 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C8AA Ext File Attributes   00000000 (0)\n-C8AE Local Header Offset   00001629 (5673)\n-C8B2 Filename              'XXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC8B2: Filename 'XXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C8C2 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C8C4   Length              0005 (5)\n-C8C6   Flags               01 (1) 'Modification'\n-C8C7   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C8CB CENTRAL HEADER #4     02014B50 (33639248)\n-C8CF Created Zip Spec      14 (20) '2.0'\n-C8D0 Created OS            00 (0) 'MS-DOS'\n-C8D1 Extract Zip Spec      14 (20) '2.0'\n-C8D2 Extract OS            00 (0) 'MS-DOS'\n-C8D3 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-C8D5 Compression Method    0000 (0) 'Stored'\n-C8D7 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C8DB CRC                   EE027FB2 (3993141170)\n-C8DF Compressed Size       00000019 (25)\n-C8E3 Uncompressed Size     00000019 (25)\n-C8E7 Filename Length       0014 (20)\n-C8E9 Extra Length          0009 (9)\n-C8EB Comment Length        0000 (0)\n-C8ED Disk Start            0000 (0)\n-C8EF Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C8F1 Ext File Attributes   00000000 (0)\n-C8F5 Local Header Offset   000042CE (17102)\n-C8F9 Filename              'XXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC8F9: Filename 'XXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C90D Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C90F   Length              0005 (5)\n-C911   Flags               01 (1) 'Modification'\n-C912   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C916 CENTRAL HEADER #5     02014B50 (33639248)\n-C91A Created Zip Spec      14 (20) '2.0'\n-C91B Created OS            00 (0) 'MS-DOS'\n-C91C Extract Zip Spec      14 (20) '2.0'\n-C91D Extract OS            00 (0) 'MS-DOS'\n-C91E General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-C920 Compression Method    0000 (0) 'Stored'\n-C922 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C926 CRC                   C293BB87 (3264461703)\n-C92A Compressed Size       000000B0 (176)\n-C92E Uncompressed Size     000000B0 (176)\n-C932 Filename Length       000F (15)\n-C934 Extra Length          0009 (9)\n-C936 Comment Length        0000 (0)\n-C938 Disk Start            0000 (0)\n-C93A Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C93C Ext File Attributes   00000000 (0)\n-C940 Local Header Offset   00004332 (17202)\n-C944 Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC944: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C953 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C955   Length              0005 (5)\n-C957   Flags               01 (1) 'Modification'\n-C958   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C95C CENTRAL HEADER #6     02014B50 (33639248)\n-C960 Created Zip Spec      14 (20) '2.0'\n-C961 Created OS            00 (0) 'MS-DOS'\n-C962 Extract Zip Spec      14 (20) '2.0'\n-C963 Extract OS            00 (0) 'MS-DOS'\n-C964 General Purpose Flag  0000 (0)\n-C966 Compression Method    0000 (0) 'Stored'\n-C968 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C96C CRC                   00000000 (0)\n-C970 Compressed Size       00000000 (0)\n-C974 Uncompressed Size     00000000 (0)\n-C978 Filename Length       000F (15)\n-C97A Extra Length          0009 (9)\n-C97C Comment Length        0000 (0)\n-C97E Disk Start            0000 (0)\n-C980 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C982 Ext File Attributes   00000000 (0)\n-C986 Local Header Offset   00004428 (17448)\n-C98A Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC98A: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C999 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C99B   Length              0005 (5)\n-C99D   Flags               01 (1) 'Modification'\n-C99E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C9A2 CENTRAL HEADER #7     02014B50 (33639248)\n-C9A6 Created Zip Spec      14 (20) '2.0'\n-C9A7 Created OS            00 (0) 'MS-DOS'\n-C9A8 Extract Zip Spec      14 (20) '2.0'\n-C9A9 Extract OS            00 (0) 'MS-DOS'\n-C9AA General Purpose Flag  0000 (0)\n-C9AC Compression Method    0000 (0) 'Stored'\n-C9AE Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C9B2 CRC                   00000000 (0)\n-C9B6 Compressed Size       00000000 (0)\n-C9BA Uncompressed Size     00000000 (0)\n-C9BE Filename Length       0018 (24)\n-C9C0 Extra Length          0009 (9)\n-C9C2 Comment Length        0000 (0)\n-C9C4 Disk Start            0000 (0)\n-C9C6 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C9C8 Ext File Attributes   00000000 (0)\n-C9CC Local Header Offset   0000445E (17502)\n-C9D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC9D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C9E8 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C9EA   Length              0005 (5)\n-C9EC   Flags               01 (1) 'Modification'\n-C9ED   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C9F1 CENTRAL HEADER #8     02014B50 (33639248)\n-C9F5 Created Zip Spec      14 (20) '2.0'\n-C9F6 Created OS            00 (0) 'MS-DOS'\n-C9F7 Extract Zip Spec      14 (20) '2.0'\n-C9F8 Extract OS            00 (0) 'MS-DOS'\n-C9F9 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-C9FB Compression Method    0000 (0) 'Stored'\n-C9FD Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CA01 CRC                   C14332D3 (3242406611)\n-CA05 Compressed Size       00000037 (55)\n-CA09 Uncompressed Size     00000037 (55)\n-CA0D Filename Length       0041 (65)\n-CA0F Extra Length          0009 (9)\n-CA11 Comment Length        0000 (0)\n-CA13 Disk Start            0000 (0)\n-CA15 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CA17 Ext File Attributes   00000000 (0)\n-CA1B Local Header Offset   0000449D (17565)\n-CA1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCA1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CA60 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CA62   Length              0005 (5)\n-CA64   Flags               01 (1) 'Modification'\n-CA65   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CA69 CENTRAL HEADER #9     02014B50 (33639248)\n-CA6D Created Zip Spec      14 (20) '2.0'\n-CA6E Created OS            00 (0) 'MS-DOS'\n-CA6F Extract Zip Spec      14 (20) '2.0'\n-CA70 Extract OS            00 (0) 'MS-DOS'\n-CA71 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-CA73 Compression Method    0000 (0) 'Stored'\n-CA75 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CA79 CRC                   A3C834B2 (2747806898)\n-CA7D Compressed Size       00000040 (64)\n-CA81 Uncompressed Size     00000040 (64)\n-CA85 Filename Length       0049 (73)\n-CA87 Extra Length          0009 (9)\n-CA89 Comment Length        0000 (0)\n-CA8B Disk Start            0000 (0)\n-CA8D Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CA8F Ext File Attributes   00000000 (0)\n-CA93 Local Header Offset   0000454C (17740)\n-CA97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCA97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CAE0 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CAE2   Length              0005 (5)\n-CAE4   Flags               01 (1) 'Modification'\n-CAE5   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CAE9 CENTRAL HEADER #10    02014B50 (33639248)\n-CAED Created Zip Spec      14 (20) '2.0'\n-CAEE Created OS            00 (0) 'MS-DOS'\n-CAEF Extract Zip Spec      14 (20) '2.0'\n-CAF0 Extract OS            00 (0) 'MS-DOS'\n-CAF1 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-CAF3 Compression Method    0000 (0) 'Stored'\n-CAF5 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CAF9 CRC                   9A3129A6 (2586913190)\n-CAFD Compressed Size       00000047 (71)\n-CB01 Uncompressed Size     00000047 (71)\n-CB05 Filename Length       0050 (80)\n-CB07 Extra Length          0009 (9)\n-CB09 Comment Length        0000 (0)\n-CB0B Disk Start            0000 (0)\n-CB0D Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CB0F Ext File Attributes   00000000 (0)\n-CB13 Local Header Offset   0000460C (17932)\n-CB17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCB17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CB67 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CB69   Length              0005 (5)\n-CB6B   Flags               01 (1) 'Modification'\n-CB6C   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CB70 CENTRAL HEADER #11    02014B50 (33639248)\n-CB74 Created Zip Spec      14 (20) '2.0'\n-CB75 Created OS            00 (0) 'MS-DOS'\n-CB76 Extract Zip Spec      14 (20) '2.0'\n-CB77 Extract OS            00 (0) 'MS-DOS'\n-CB78 General Purpose Flag  0000 (0)\n-CB7A Compression Method    0000 (0) 'Stored'\n-CB7C Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CB80 CRC                   00000000 (0)\n-CB84 Compressed Size       00000000 (0)\n-CB88 Uncompressed Size     00000000 (0)\n-CB8C Filename Length       000F (15)\n-CB8E Extra Length          0009 (9)\n-CB90 Comment Length        0000 (0)\n-CB92 Disk Start            0000 (0)\n-CB94 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CB96 Ext File Attributes   00000000 (0)\n-CB9A Local Header Offset   000046DA (18138)\n-CB9E Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCB9E: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CBAD Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CBAF   Length              0005 (5)\n-CBB1   Flags               01 (1) 'Modification'\n-CBB2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CBB6 CENTRAL HEADER #12    02014B50 (33639248)\n-CBBA Created Zip Spec      14 (20) '2.0'\n-CBBB Created OS            00 (0) 'MS-DOS'\n-CBBC Extract Zip Spec      14 (20) '2.0'\n-CBBD Extract OS            00 (0) 'MS-DOS'\n-CBBE General Purpose Flag  0000 (0)\n-CBC0 Compression Method    0000 (0) 'Stored'\n-CBC2 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CBC6 CRC                   00000000 (0)\n-CBCA Compressed Size       00000000 (0)\n-CBCE Uncompressed Size     00000000 (0)\n-CBD2 Filename Length       0020 (32)\n-CBD4 Extra Length          0009 (9)\n-CBD6 Comment Length        0000 (0)\n-CBD8 Disk Start            0000 (0)\n-CBDA Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CBDC Ext File Attributes   00000000 (0)\n-CBE0 Local Header Offset   00004710 (18192)\n-CBE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5ABB DATA DESCRIPTOR       08074B50 (134695760)\n+5ABF CRC                   72A63AD4 (1923496660)\n+5AC3 Compressed Size       0000122E (4654)\n+5AC7 Uncompressed Size     0000122E (4654)\n+\n+5ACB LOCAL HEADER #16      04034B50 (67324752)\n+5ACF Extract Zip Spec      14 (20) '2.0'\n+5AD0 Extract OS            00 (0) 'MS-DOS'\n+5AD1 General Purpose Flag  0000 (0)\n+5AD3 Compression Method    0000 (0) 'Stored'\n+5AD5 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+5AD9 CRC                   00000000 (0)\n+5ADD Compressed Size       00000000 (0)\n+5AE1 Uncompressed Size     00000000 (0)\n+5AE5 Filename Length       0004 (4)\n+5AE7 Extra Length          0009 (9)\n+5AE9 Filename              'XXXX'\n+#\n+# WARNING: Offset 0x5AE9: Filename 'XXXX'\n+#          Zero length filename\n+#\n+5AED Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+5AEF   Length              0005 (5)\n+5AF1   Flags               01 (1) 'Modification'\n+5AF2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+5AF6 LOCAL HEADER #17      04034B50 (67324752)\n+5AFA Extract Zip Spec      14 (20) '2.0'\n+5AFB Extract OS            00 (0) 'MS-DOS'\n+5AFC General Purpose Flag  0000 (0)\n+5AFE Compression Method    0000 (0) 'Stored'\n+5B00 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+5B04 CRC                   00000000 (0)\n+5B08 Compressed Size       00000000 (0)\n+5B0C Uncompressed Size     00000000 (0)\n+5B10 Filename Length       000B (11)\n+5B12 Extra Length          0009 (9)\n+5B14 Filename              'XXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x5B14: Filename 'XXXXXXXXXXX'\n+#          Zero length filename\n+#\n+5B1F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+5B21   Length              0005 (5)\n+5B23   Flags               01 (1) 'Modification'\n+5B24   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+5B28 LOCAL HEADER #18      04034B50 (67324752)\n+5B2C Extract Zip Spec      14 (20) '2.0'\n+5B2D Extract OS            00 (0) 'MS-DOS'\n+5B2E General Purpose Flag  0000 (0)\n+5B30 Compression Method    0000 (0) 'Stored'\n+5B32 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+5B36 CRC                   00000000 (0)\n+5B3A Compressed Size       00000000 (0)\n+5B3E Uncompressed Size     00000000 (0)\n+5B42 Filename Length       0011 (17)\n+5B44 Extra Length          0009 (9)\n+5B46 Filename              'XXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x5B46: Filename 'XXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+5B57 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+5B59   Length              0005 (5)\n+5B5B   Flags               01 (1) 'Modification'\n+5B5C   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+5B60 LOCAL HEADER #19      04034B50 (67324752)\n+5B64 Extract Zip Spec      14 (20) '2.0'\n+5B65 Extract OS            00 (0) 'MS-DOS'\n+5B66 General Purpose Flag  0000 (0)\n+5B68 Compression Method    0000 (0) 'Stored'\n+5B6A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+5B6E CRC                   00000000 (0)\n+5B72 Compressed Size       00000000 (0)\n+5B76 Uncompressed Size     00000000 (0)\n+5B7A Filename Length       001A (26)\n+5B7C Extra Length          0009 (9)\n+5B7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x5B7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+5B98 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+5B9A   Length              0005 (5)\n+5B9C   Flags               01 (1) 'Modification'\n+5B9D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+5BA1 LOCAL HEADER #20      04034B50 (67324752)\n+5BA5 Extract Zip Spec      14 (20) '2.0'\n+5BA6 Extract OS            00 (0) 'MS-DOS'\n+5BA7 General Purpose Flag  0000 (0)\n+5BA9 Compression Method    0000 (0) 'Stored'\n+5BAB Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+5BAF CRC                   00000000 (0)\n+5BB3 Compressed Size       00000000 (0)\n+5BB7 Uncompressed Size     00000000 (0)\n+5BBB Filename Length       001F (31)\n+5BBD Extra Length          0009 (9)\n+5BBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x5BBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+5BDE Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+5BE0   Length              0005 (5)\n+5BE2   Flags               01 (1) 'Modification'\n+5BE3   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+5BE7 LOCAL HEADER #21      04034B50 (67324752)\n+5BEB Extract Zip Spec      14 (20) '2.0'\n+5BEC Extract OS            00 (0) 'MS-DOS'\n+5BED General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+5BEF Compression Method    0000 (0) 'Stored'\n+5BF1 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+5BF5 CRC                   00000000 (0)\n+5BF9 Compressed Size       00000000 (0)\n+5BFD Uncompressed Size     00000000 (0)\n+5C01 Filename Length       0030 (48)\n+5C03 Extra Length          0009 (9)\n+5C05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x5C05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+5C35 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+5C37   Length              0005 (5)\n+5C39   Flags               01 (1) 'Modification'\n+5C3A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+5C3E PAYLOAD\n+\n+86D1 DATA DESCRIPTOR       08074B50 (134695760)\n+86D5 CRC                   5CAA5BA4 (1554668452)\n+86D9 Compressed Size       00002A93 (10899)\n+86DD Uncompressed Size     00002A93 (10899)\n+\n+86E1 LOCAL HEADER #22      04034B50 (67324752)\n+86E5 Extract Zip Spec      14 (20) '2.0'\n+86E6 Extract OS            00 (0) 'MS-DOS'\n+86E7 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+86E9 Compression Method    0000 (0) 'Stored'\n+86EB Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+86EF CRC                   00000000 (0)\n+86F3 Compressed Size       00000000 (0)\n+86F7 Uncompressed Size     00000000 (0)\n+86FB Filename Length       0039 (57)\n+86FD Extra Length          0009 (9)\n+86FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x86FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+8738 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+873A   Length              0005 (5)\n+873C   Flags               01 (1) 'Modification'\n+873D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+8741 PAYLOAD\n+\n+8CCF DATA DESCRIPTOR       08074B50 (134695760)\n+8CD3 CRC                   55DBCEB5 (1440468661)\n+8CD7 Compressed Size       0000058E (1422)\n+8CDB Uncompressed Size     0000058E (1422)\n+\n+8CDF LOCAL HEADER #23      04034B50 (67324752)\n+8CE3 Extract Zip Spec      14 (20) '2.0'\n+8CE4 Extract OS            00 (0) 'MS-DOS'\n+8CE5 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+8CE7 Compression Method    0000 (0) 'Stored'\n+8CE9 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+8CED CRC                   00000000 (0)\n+8CF1 Compressed Size       00000000 (0)\n+8CF5 Uncompressed Size     00000000 (0)\n+8CF9 Filename Length       0037 (55)\n+8CFB Extra Length          0009 (9)\n+8CFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x8CFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+8D34 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+8D36   Length              0005 (5)\n+8D38   Flags               01 (1) 'Modification'\n+8D39   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+8D3D PAYLOAD\n+\n+92CD DATA DESCRIPTOR       08074B50 (134695760)\n+92D1 CRC                   74ECF448 (1961686088)\n+92D5 Compressed Size       00000590 (1424)\n+92D9 Uncompressed Size     00000590 (1424)\n+\n+92DD LOCAL HEADER #24      04034B50 (67324752)\n+92E1 Extract Zip Spec      14 (20) '2.0'\n+92E2 Extract OS            00 (0) 'MS-DOS'\n+92E3 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+92E5 Compression Method    0000 (0) 'Stored'\n+92E7 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+92EB CRC                   00000000 (0)\n+92EF Compressed Size       00000000 (0)\n+92F3 Uncompressed Size     00000000 (0)\n+92F7 Filename Length       0038 (56)\n+92F9 Extra Length          0009 (9)\n+92FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x92FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+9333 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+9335   Length              0005 (5)\n+9337   Flags               01 (1) 'Modification'\n+9338   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+933C PAYLOAD\n+\n+9CBA DATA DESCRIPTOR       08074B50 (134695760)\n+9CBE CRC                   5119DCCD (1360649421)\n+9CC2 Compressed Size       0000097E (2430)\n+9CC6 Uncompressed Size     0000097E (2430)\n+\n+9CCA LOCAL HEADER #25      04034B50 (67324752)\n+9CCE Extract Zip Spec      14 (20) '2.0'\n+9CCF Extract OS            00 (0) 'MS-DOS'\n+9CD0 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+9CD2 Compression Method    0000 (0) 'Stored'\n+9CD4 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+9CD8 CRC                   00000000 (0)\n+9CDC Compressed Size       00000000 (0)\n+9CE0 Uncompressed Size     00000000 (0)\n+9CE4 Filename Length       0040 (64)\n+9CE6 Extra Length          0009 (9)\n+9CE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x9CE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+9D28 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+9D2A   Length              0005 (5)\n+9D2C   Flags               01 (1) 'Modification'\n+9D2D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+9D31 PAYLOAD\n+\n+C4E0 DATA DESCRIPTOR       08074B50 (134695760)\n+C4E4 CRC                   A9FB32A5 (2851812005)\n+C4E8 Compressed Size       000027AF (10159)\n+C4EC Uncompressed Size     000027AF (10159)\n+\n+C4F0 LOCAL HEADER #26      04034B50 (67324752)\n+C4F4 Extract Zip Spec      14 (20) '2.0'\n+C4F5 Extract OS            00 (0) 'MS-DOS'\n+C4F6 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+C4F8 Compression Method    0000 (0) 'Stored'\n+C4FA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C4FE CRC                   00000000 (0)\n+C502 Compressed Size       00000000 (0)\n+C506 Uncompressed Size     00000000 (0)\n+C50A Filename Length       0047 (71)\n+C50C Extra Length          0009 (9)\n+C50E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC50E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C555 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C557   Length              0005 (5)\n+C559   Flags               01 (1) 'Modification'\n+C55A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+C55E PAYLOAD\n+\n+CA53 DATA DESCRIPTOR       08074B50 (134695760)\n+CA57 CRC                   1848A62B (407414315)\n+CA5B Compressed Size       000004F5 (1269)\n+CA5F Uncompressed Size     000004F5 (1269)\n+\n+CA63 CENTRAL HEADER #1     02014B50 (33639248)\n+CA67 Created Zip Spec      14 (20) '2.0'\n+CA68 Created OS            00 (0) 'MS-DOS'\n+CA69 Extract Zip Spec      14 (20) '2.0'\n+CA6A Extract OS            00 (0) 'MS-DOS'\n+CA6B General Purpose Flag  0000 (0)\n+CA6D Compression Method    0000 (0) 'Stored'\n+CA6F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CA73 CRC                   00000000 (0)\n+CA77 Compressed Size       00000000 (0)\n+CA7B Uncompressed Size     00000000 (0)\n+CA7F Filename Length       0009 (9)\n+CA81 Extra Length          0009 (9)\n+CA83 Comment Length        0000 (0)\n+CA85 Disk Start            0000 (0)\n+CA87 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CA89 Ext File Attributes   00000000 (0)\n+CA8D Local Header Offset   00000000 (0)\n+CA91 Filename              'XXXXXXXXX'\n+#\n+# WARNING: Offset 0xCA91: Filename 'XXXXXXXXX'\n+#          Zero length filename\n+#\n+CA9A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CA9C   Length              0005 (5)\n+CA9E   Flags               01 (1) 'Modification'\n+CA9F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CAA3 CENTRAL HEADER #2     02014B50 (33639248)\n+CAA7 Created Zip Spec      14 (20) '2.0'\n+CAA8 Created OS            00 (0) 'MS-DOS'\n+CAA9 Extract Zip Spec      14 (20) '2.0'\n+CAAA Extract OS            00 (0) 'MS-DOS'\n+CAAB General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CAAD Compression Method    0000 (0) 'Stored'\n+CAAF Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CAB3 CRC                   C2CE7E1E (3268312606)\n+CAB7 Compressed Size       000015AD (5549)\n+CABB Uncompressed Size     000015AD (5549)\n+CABF Filename Length       0015 (21)\n+CAC1 Extra Length          0009 (9)\n+CAC3 Comment Length        0000 (0)\n+CAC5 Disk Start            0000 (0)\n+CAC7 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CAC9 Ext File Attributes   00000000 (0)\n+CACD Local Header Offset   00000030 (48)\n+CAD1 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCAD1: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CAE6 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CAE8   Length              0005 (5)\n+CAEA   Flags               01 (1) 'Modification'\n+CAEB   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CAEF CENTRAL HEADER #3     02014B50 (33639248)\n+CAF3 Created Zip Spec      14 (20) '2.0'\n+CAF4 Created OS            00 (0) 'MS-DOS'\n+CAF5 Extract Zip Spec      14 (20) '2.0'\n+CAF6 Extract OS            00 (0) 'MS-DOS'\n+CAF7 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CAF9 Compression Method    0000 (0) 'Stored'\n+CAFB Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CAFF CRC                   86E2B4B4 (2263004340)\n+CB03 Compressed Size       00002C5E (11358)\n+CB07 Uncompressed Size     00002C5E (11358)\n+CB0B Filename Length       0010 (16)\n+CB0D Extra Length          0009 (9)\n+CB0F Comment Length        0000 (0)\n+CB11 Disk Start            0000 (0)\n+CB13 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CB15 Ext File Attributes   00000000 (0)\n+CB19 Local Header Offset   00001629 (5673)\n+CB1D Filename              'XXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCB1D: Filename 'XXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CB2D Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CB2F   Length              0005 (5)\n+CB31   Flags               01 (1) 'Modification'\n+CB32   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CB36 CENTRAL HEADER #4     02014B50 (33639248)\n+CB3A Created Zip Spec      14 (20) '2.0'\n+CB3B Created OS            00 (0) 'MS-DOS'\n+CB3C Extract Zip Spec      14 (20) '2.0'\n+CB3D Extract OS            00 (0) 'MS-DOS'\n+CB3E General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CB40 Compression Method    0000 (0) 'Stored'\n+CB42 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CB46 CRC                   EE027FB2 (3993141170)\n+CB4A Compressed Size       00000019 (25)\n+CB4E Uncompressed Size     00000019 (25)\n+CB52 Filename Length       0014 (20)\n+CB54 Extra Length          0009 (9)\n+CB56 Comment Length        0000 (0)\n+CB58 Disk Start            0000 (0)\n+CB5A Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CB5C Ext File Attributes   00000000 (0)\n+CB60 Local Header Offset   000042CE (17102)\n+CB64 Filename              'XXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCB64: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CB78 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CB7A   Length              0005 (5)\n+CB7C   Flags               01 (1) 'Modification'\n+CB7D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CB81 CENTRAL HEADER #5     02014B50 (33639248)\n+CB85 Created Zip Spec      14 (20) '2.0'\n+CB86 Created OS            00 (0) 'MS-DOS'\n+CB87 Extract Zip Spec      14 (20) '2.0'\n+CB88 Extract OS            00 (0) 'MS-DOS'\n+CB89 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CB8B Compression Method    0000 (0) 'Stored'\n+CB8D Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CB91 CRC                   C293BB87 (3264461703)\n+CB95 Compressed Size       000000B0 (176)\n+CB99 Uncompressed Size     000000B0 (176)\n+CB9D Filename Length       000F (15)\n+CB9F Extra Length          0009 (9)\n+CBA1 Comment Length        0000 (0)\n+CBA3 Disk Start            0000 (0)\n+CBA5 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CBA7 Ext File Attributes   00000000 (0)\n+CBAB Local Header Offset   00004332 (17202)\n+CBAF Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCBAF: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CBBE Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CBC0   Length              0005 (5)\n+CBC2   Flags               01 (1) 'Modification'\n+CBC3   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CBC7 CENTRAL HEADER #6     02014B50 (33639248)\n+CBCB Created Zip Spec      14 (20) '2.0'\n+CBCC Created OS            00 (0) 'MS-DOS'\n+CBCD Extract Zip Spec      14 (20) '2.0'\n+CBCE Extract OS            00 (0) 'MS-DOS'\n+CBCF General Purpose Flag  0000 (0)\n+CBD1 Compression Method    0000 (0) 'Stored'\n+CBD3 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CBD7 CRC                   00000000 (0)\n+CBDB Compressed Size       00000000 (0)\n+CBDF Uncompressed Size     00000000 (0)\n+CBE3 Filename Length       000F (15)\n+CBE5 Extra Length          0009 (9)\n+CBE7 Comment Length        0000 (0)\n+CBE9 Disk Start            0000 (0)\n+CBEB Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CBED Ext File Attributes   00000000 (0)\n+CBF1 Local Header Offset   00004428 (17448)\n+CBF5 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCBE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCBF5: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n CC04 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n CC06   Length              0005 (5)\n CC08   Flags               01 (1) 'Modification'\n CC09   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n \n-CC0D CENTRAL HEADER #13    02014B50 (33639248)\n+CC0D CENTRAL HEADER #7     02014B50 (33639248)\n CC11 Created Zip Spec      14 (20) '2.0'\n CC12 Created OS            00 (0) 'MS-DOS'\n CC13 Extract Zip Spec      14 (20) '2.0'\n CC14 Extract OS            00 (0) 'MS-DOS'\n CC15 General Purpose Flag  0000 (0)\n CC17 Compression Method    0000 (0) 'Stored'\n CC19 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n CC1D CRC                   00000000 (0)\n CC21 Compressed Size       00000000 (0)\n CC25 Uncompressed Size     00000000 (0)\n-CC29 Filename Length       0034 (52)\n+CC29 Filename Length       0018 (24)\n CC2B Extra Length          0009 (9)\n CC2D Comment Length        0000 (0)\n CC2F Disk Start            0000 (0)\n CC31 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n CC33 Ext File Attributes   00000000 (0)\n-CC37 Local Header Offset   00004757 (18263)\n-CC3B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+CC37 Local Header Offset   0000445E (17502)\n+CC3B Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCC3B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCC3B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-CC6F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CC71   Length              0005 (5)\n-CC73   Flags               01 (1) 'Modification'\n-CC74   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CC78 CENTRAL HEADER #14    02014B50 (33639248)\n-CC7C Created Zip Spec      14 (20) '2.0'\n-CC7D Created OS            00 (0) 'MS-DOS'\n-CC7E Extract Zip Spec      14 (20) '2.0'\n-CC7F Extract OS            00 (0) 'MS-DOS'\n-CC80 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-CC82 Compression Method    0000 (0) 'Stored'\n-CC84 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CC88 CRC                   00000000 (0)\n-CC8C Compressed Size       00000000 (0)\n-CC90 Uncompressed Size     00000000 (0)\n-CC94 Filename Length       0042 (66)\n-CC96 Extra Length          0009 (9)\n-CC98 Comment Length        0000 (0)\n-CC9A Disk Start            0000 (0)\n-CC9C Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CC9E Ext File Attributes   00000000 (0)\n-CCA2 Local Header Offset   000047B2 (18354)\n-CCA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCCA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CCE8 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CCEA   Length              0005 (5)\n-CCEC   Flags               01 (1) 'Modification'\n-CCED   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CCF1 CENTRAL HEADER #15    02014B50 (33639248)\n-CCF5 Created Zip Spec      14 (20) '2.0'\n-CCF6 Created OS            00 (0) 'MS-DOS'\n-CCF7 Extract Zip Spec      14 (20) '2.0'\n-CCF8 Extract OS            00 (0) 'MS-DOS'\n-CCF9 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-CCFB Compression Method    0000 (0) 'Stored'\n-CCFD Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CD01 CRC                   6F2313AC (1864569772)\n-CD05 Compressed Size       000012B3 (4787)\n-CD09 Uncompressed Size     000012B3 (4787)\n-CD0D Filename Length       003B (59)\n-CD0F Extra Length          0009 (9)\n-CD11 Comment Length        0000 (0)\n-CD13 Disk Start            0000 (0)\n-CD15 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CD17 Ext File Attributes   00000000 (0)\n-CD1B Local Header Offset   0000482B (18475)\n-CD1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCD1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CD5A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CD5C   Length              0005 (5)\n-CD5E   Flags               01 (1) 'Modification'\n-CD5F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CD63 CENTRAL HEADER #16    02014B50 (33639248)\n-CD67 Created Zip Spec      14 (20) '2.0'\n-CD68 Created OS            00 (0) 'MS-DOS'\n-CD69 Extract Zip Spec      14 (20) '2.0'\n-CD6A Extract OS            00 (0) 'MS-DOS'\n-CD6B General Purpose Flag  0000 (0)\n-CD6D Compression Method    0000 (0) 'Stored'\n-CD6F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CD73 CRC                   00000000 (0)\n-CD77 Compressed Size       00000000 (0)\n-CD7B Uncompressed Size     00000000 (0)\n-CD7F Filename Length       0004 (4)\n-CD81 Extra Length          0009 (9)\n-CD83 Comment Length        0000 (0)\n-CD85 Disk Start            0000 (0)\n-CD87 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CD89 Ext File Attributes   00000000 (0)\n-CD8D Local Header Offset   00005B50 (23376)\n-CD91 Filename              'XXXX'\n-#\n-# WARNING: Offset 0xCD91: Filename 'XXXX'\n-#          Zero length filename\n-#\n-CD95 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CD97   Length              0005 (5)\n-CD99   Flags               01 (1) 'Modification'\n-CD9A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CD9E CENTRAL HEADER #17    02014B50 (33639248)\n-CDA2 Created Zip Spec      14 (20) '2.0'\n-CDA3 Created OS            00 (0) 'MS-DOS'\n-CDA4 Extract Zip Spec      14 (20) '2.0'\n-CDA5 Extract OS            00 (0) 'MS-DOS'\n-CDA6 General Purpose Flag  0000 (0)\n-CDA8 Compression Method    0000 (0) 'Stored'\n-CDAA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CDAE CRC                   00000000 (0)\n-CDB2 Compressed Size       00000000 (0)\n-CDB6 Uncompressed Size     00000000 (0)\n-CDBA Filename Length       000B (11)\n-CDBC Extra Length          0009 (9)\n-CDBE Comment Length        0000 (0)\n-CDC0 Disk Start            0000 (0)\n-CDC2 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CDC4 Ext File Attributes   00000000 (0)\n-CDC8 Local Header Offset   00005B7B (23419)\n-CDCC Filename              'XXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCDCC: Filename 'XXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CDD7 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CDD9   Length              0005 (5)\n-CDDB   Flags               01 (1) 'Modification'\n-CDDC   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CDE0 CENTRAL HEADER #18    02014B50 (33639248)\n-CDE4 Created Zip Spec      14 (20) '2.0'\n-CDE5 Created OS            00 (0) 'MS-DOS'\n-CDE6 Extract Zip Spec      14 (20) '2.0'\n-CDE7 Extract OS            00 (0) 'MS-DOS'\n-CDE8 General Purpose Flag  0000 (0)\n-CDEA Compression Method    0000 (0) 'Stored'\n-CDEC Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CDF0 CRC                   00000000 (0)\n-CDF4 Compressed Size       00000000 (0)\n-CDF8 Uncompressed Size     00000000 (0)\n-CDFC Filename Length       0011 (17)\n-CDFE Extra Length          0009 (9)\n-CE00 Comment Length        0000 (0)\n-CE02 Disk Start            0000 (0)\n-CE04 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CE06 Ext File Attributes   00000000 (0)\n-CE0A Local Header Offset   00005BAD (23469)\n-CE0E Filename              'XXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCE0E: Filename 'XXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CE1F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CE21   Length              0005 (5)\n-CE23   Flags               01 (1) 'Modification'\n-CE24   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CE28 CENTRAL HEADER #19    02014B50 (33639248)\n-CE2C Created Zip Spec      14 (20) '2.0'\n-CE2D Created OS            00 (0) 'MS-DOS'\n-CE2E Extract Zip Spec      14 (20) '2.0'\n-CE2F Extract OS            00 (0) 'MS-DOS'\n-CE30 General Purpose Flag  0000 (0)\n-CE32 Compression Method    0000 (0) 'Stored'\n-CE34 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CE38 CRC                   00000000 (0)\n-CE3C Compressed Size       00000000 (0)\n-CE40 Uncompressed Size     00000000 (0)\n-CE44 Filename Length       001A (26)\n-CE46 Extra Length          0009 (9)\n-CE48 Comment Length        0000 (0)\n-CE4A Disk Start            0000 (0)\n-CE4C Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CE4E Ext File Attributes   00000000 (0)\n-CE52 Local Header Offset   00005BE5 (23525)\n-CE56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCE56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CE70 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CE72   Length              0005 (5)\n-CE74   Flags               01 (1) 'Modification'\n-CE75   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CE79 CENTRAL HEADER #20    02014B50 (33639248)\n-CE7D Created Zip Spec      14 (20) '2.0'\n-CE7E Created OS            00 (0) 'MS-DOS'\n-CE7F Extract Zip Spec      14 (20) '2.0'\n-CE80 Extract OS            00 (0) 'MS-DOS'\n-CE81 General Purpose Flag  0000 (0)\n-CE83 Compression Method    0000 (0) 'Stored'\n-CE85 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CE89 CRC                   00000000 (0)\n-CE8D Compressed Size       00000000 (0)\n-CE91 Uncompressed Size     00000000 (0)\n-CE95 Filename Length       001F (31)\n-CE97 Extra Length          0009 (9)\n-CE99 Comment Length        0000 (0)\n-CE9B Disk Start            0000 (0)\n-CE9D Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CE9F Ext File Attributes   00000000 (0)\n-CEA3 Local Header Offset   00005C26 (23590)\n-CEA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCEA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CEC6 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CEC8   Length              0005 (5)\n-CECA   Flags               01 (1) 'Modification'\n-CECB   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CECF CENTRAL HEADER #21    02014B50 (33639248)\n-CED3 Created Zip Spec      14 (20) '2.0'\n-CED4 Created OS            00 (0) 'MS-DOS'\n-CED5 Extract Zip Spec      14 (20) '2.0'\n-CED6 Extract OS            00 (0) 'MS-DOS'\n-CED7 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-CED9 Compression Method    0000 (0) 'Stored'\n-CEDB Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CEDF CRC                   67F68BAB (1744210859)\n-CEE3 Compressed Size       0000296B (10603)\n-CEE7 Uncompressed Size     0000296B (10603)\n-CEEB Filename Length       0030 (48)\n-CEED Extra Length          0009 (9)\n-CEEF Comment Length        0000 (0)\n-CEF1 Disk Start            0000 (0)\n-CEF3 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CEF5 Ext File Attributes   00000000 (0)\n-CEF9 Local Header Offset   00005C6C (23660)\n-CEFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCEFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CF2D Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CF2F   Length              0005 (5)\n-CF31   Flags               01 (1) 'Modification'\n-CF32   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CF36 CENTRAL HEADER #22    02014B50 (33639248)\n-CF3A Created Zip Spec      14 (20) '2.0'\n-CF3B Created OS            00 (0) 'MS-DOS'\n-CF3C Extract Zip Spec      14 (20) '2.0'\n-CF3D Extract OS            00 (0) 'MS-DOS'\n-CF3E General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-CF40 Compression Method    0000 (0) 'Stored'\n-CF42 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CF46 CRC                   5E420043 (1581383747)\n-CF4A Compressed Size       00000563 (1379)\n-CF4E Uncompressed Size     00000563 (1379)\n-CF52 Filename Length       0039 (57)\n-CF54 Extra Length          0009 (9)\n-CF56 Comment Length        0000 (0)\n-CF58 Disk Start            0000 (0)\n-CF5A Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CF5C Ext File Attributes   00000000 (0)\n-CF60 Local Header Offset   0000863E (34366)\n-CF64 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCF64: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-CF9D Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-CF9F   Length              0005 (5)\n-CFA1   Flags               01 (1) 'Modification'\n-CFA2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-CFA6 CENTRAL HEADER #23    02014B50 (33639248)\n-CFAA Created Zip Spec      14 (20) '2.0'\n-CFAB Created OS            00 (0) 'MS-DOS'\n-CFAC Extract Zip Spec      14 (20) '2.0'\n-CFAD Extract OS            00 (0) 'MS-DOS'\n-CFAE General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-CFB0 Compression Method    0000 (0) 'Stored'\n-CFB2 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-CFB6 CRC                   F10F61B1 (4044317105)\n-CFBA Compressed Size       00000567 (1383)\n-CFBE Uncompressed Size     00000567 (1383)\n-CFC2 Filename Length       0037 (55)\n-CFC4 Extra Length          0009 (9)\n-CFC6 Comment Length        0000 (0)\n-CFC8 Disk Start            0000 (0)\n-CFCA Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-CFCC Ext File Attributes   00000000 (0)\n-CFD0 Local Header Offset   00008C11 (35857)\n-CFD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xCFD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-D00B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-D00D   Length              0005 (5)\n-D00F   Flags               01 (1) 'Modification'\n-D010   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-D014 CENTRAL HEADER #24    02014B50 (33639248)\n-D018 Created Zip Spec      14 (20) '2.0'\n-D019 Created OS            00 (0) 'MS-DOS'\n-D01A Extract Zip Spec      14 (20) '2.0'\n-D01B Extract OS            00 (0) 'MS-DOS'\n-D01C General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-D01E Compression Method    0000 (0) 'Stored'\n-D020 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-D024 CRC                   F71501FC (4145349116)\n-D028 Compressed Size       00000924 (2340)\n-D02C Uncompressed Size     00000924 (2340)\n-D030 Filename Length       0038 (56)\n-D032 Extra Length          0009 (9)\n-D034 Comment Length        0000 (0)\n-D036 Disk Start            0000 (0)\n-D038 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-D03A Ext File Attributes   00000000 (0)\n-D03E Local Header Offset   000091E6 (37350)\n-D042 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xD042: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-D07A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-D07C   Length              0005 (5)\n-D07E   Flags               01 (1) 'Modification'\n-D07F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-D083 CENTRAL HEADER #25    02014B50 (33639248)\n-D087 Created Zip Spec      14 (20) '2.0'\n-D088 Created OS            00 (0) 'MS-DOS'\n-D089 Extract Zip Spec      14 (20) '2.0'\n-D08A Extract OS            00 (0) 'MS-DOS'\n-D08B General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-D08D Compression Method    0000 (0) 'Stored'\n-D08F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-D093 CRC                   B6DFDCE2 (3068124386)\n-D097 Compressed Size       000026B1 (9905)\n-D09B Uncompressed Size     000026B1 (9905)\n-D09F Filename Length       0040 (64)\n-D0A1 Extra Length          0009 (9)\n-D0A3 Comment Length        0000 (0)\n-D0A5 Disk Start            0000 (0)\n-D0A7 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-D0A9 Ext File Attributes   00000000 (0)\n-D0AD Local Header Offset   00009B79 (39801)\n-D0B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xD0B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-D0F1 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-D0F3   Length              0005 (5)\n-D0F5   Flags               01 (1) 'Modification'\n-D0F6   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-D0FA CENTRAL HEADER #26    02014B50 (33639248)\n-D0FE Created Zip Spec      14 (20) '2.0'\n-D0FF Created OS            00 (0) 'MS-DOS'\n-D100 Extract Zip Spec      14 (20) '2.0'\n-D101 Extract OS            00 (0) 'MS-DOS'\n-D102 General Purpose Flag  0008 (8)\n-     [Bit  3]              1 'Streamed'\n-D104 Compression Method    0000 (0) 'Stored'\n-D106 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-D10A CRC                   3C911134 (1016140084)\n-D10E Compressed Size       000004D9 (1241)\n-D112 Uncompressed Size     000004D9 (1241)\n-D116 Filename Length       0047 (71)\n-D118 Extra Length          0009 (9)\n-D11A Comment Length        0000 (0)\n-D11C Disk Start            0000 (0)\n-D11E Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-D120 Ext File Attributes   00000000 (0)\n-D124 Local Header Offset   0000C2A1 (49825)\n-D128 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xD128: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-D16F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-D171   Length              0005 (5)\n-D173   Flags               01 (1) 'Modification'\n-D174   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-D178 END CENTRAL HEADER    06054B50 (101010256)\n-D17C Number of this disk   0000 (0)\n-D17E Central Dir Disk no   0000 (0)\n-D180 Entries in this disk  001A (26)\n-D182 Total Entries         001A (26)\n-D184 Size of Central Dir   00000980 (2432)\n-D188 Offset to Central Dir 0000C7F8 (51192)\n-D18C Comment Length        0000 (0)\n+CC53 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CC55   Length              0005 (5)\n+CC57   Flags               01 (1) 'Modification'\n+CC58   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CC5C CENTRAL HEADER #8     02014B50 (33639248)\n+CC60 Created Zip Spec      14 (20) '2.0'\n+CC61 Created OS            00 (0) 'MS-DOS'\n+CC62 Extract Zip Spec      14 (20) '2.0'\n+CC63 Extract OS            00 (0) 'MS-DOS'\n+CC64 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CC66 Compression Method    0000 (0) 'Stored'\n+CC68 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CC6C CRC                   C14332D3 (3242406611)\n+CC70 Compressed Size       00000037 (55)\n+CC74 Uncompressed Size     00000037 (55)\n+CC78 Filename Length       0041 (65)\n+CC7A Extra Length          0009 (9)\n+CC7C Comment Length        0000 (0)\n+CC7E Disk Start            0000 (0)\n+CC80 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CC82 Ext File Attributes   00000000 (0)\n+CC86 Local Header Offset   0000449D (17565)\n+CC8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCC8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CCCB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CCCD   Length              0005 (5)\n+CCCF   Flags               01 (1) 'Modification'\n+CCD0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CCD4 CENTRAL HEADER #9     02014B50 (33639248)\n+CCD8 Created Zip Spec      14 (20) '2.0'\n+CCD9 Created OS            00 (0) 'MS-DOS'\n+CCDA Extract Zip Spec      14 (20) '2.0'\n+CCDB Extract OS            00 (0) 'MS-DOS'\n+CCDC General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CCDE Compression Method    0000 (0) 'Stored'\n+CCE0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CCE4 CRC                   A3C834B2 (2747806898)\n+CCE8 Compressed Size       00000040 (64)\n+CCEC Uncompressed Size     00000040 (64)\n+CCF0 Filename Length       0049 (73)\n+CCF2 Extra Length          0009 (9)\n+CCF4 Comment Length        0000 (0)\n+CCF6 Disk Start            0000 (0)\n+CCF8 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CCFA Ext File Attributes   00000000 (0)\n+CCFE Local Header Offset   0000454C (17740)\n+CD02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCD02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CD4B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CD4D   Length              0005 (5)\n+CD4F   Flags               01 (1) 'Modification'\n+CD50   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CD54 CENTRAL HEADER #10    02014B50 (33639248)\n+CD58 Created Zip Spec      14 (20) '2.0'\n+CD59 Created OS            00 (0) 'MS-DOS'\n+CD5A Extract Zip Spec      14 (20) '2.0'\n+CD5B Extract OS            00 (0) 'MS-DOS'\n+CD5C General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CD5E Compression Method    0000 (0) 'Stored'\n+CD60 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CD64 CRC                   9A3129A6 (2586913190)\n+CD68 Compressed Size       00000047 (71)\n+CD6C Uncompressed Size     00000047 (71)\n+CD70 Filename Length       0050 (80)\n+CD72 Extra Length          0009 (9)\n+CD74 Comment Length        0000 (0)\n+CD76 Disk Start            0000 (0)\n+CD78 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CD7A Ext File Attributes   00000000 (0)\n+CD7E Local Header Offset   0000460C (17932)\n+CD82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCD82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CDD2 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CDD4   Length              0005 (5)\n+CDD6   Flags               01 (1) 'Modification'\n+CDD7   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CDDB CENTRAL HEADER #11    02014B50 (33639248)\n+CDDF Created Zip Spec      14 (20) '2.0'\n+CDE0 Created OS            00 (0) 'MS-DOS'\n+CDE1 Extract Zip Spec      14 (20) '2.0'\n+CDE2 Extract OS            00 (0) 'MS-DOS'\n+CDE3 General Purpose Flag  0000 (0)\n+CDE5 Compression Method    0000 (0) 'Stored'\n+CDE7 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CDEB CRC                   00000000 (0)\n+CDEF Compressed Size       00000000 (0)\n+CDF3 Uncompressed Size     00000000 (0)\n+CDF7 Filename Length       000F (15)\n+CDF9 Extra Length          0009 (9)\n+CDFB Comment Length        0000 (0)\n+CDFD Disk Start            0000 (0)\n+CDFF Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CE01 Ext File Attributes   00000000 (0)\n+CE05 Local Header Offset   000046DA (18138)\n+CE09 Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCE09: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CE18 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CE1A   Length              0005 (5)\n+CE1C   Flags               01 (1) 'Modification'\n+CE1D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CE21 CENTRAL HEADER #12    02014B50 (33639248)\n+CE25 Created Zip Spec      14 (20) '2.0'\n+CE26 Created OS            00 (0) 'MS-DOS'\n+CE27 Extract Zip Spec      14 (20) '2.0'\n+CE28 Extract OS            00 (0) 'MS-DOS'\n+CE29 General Purpose Flag  0000 (0)\n+CE2B Compression Method    0000 (0) 'Stored'\n+CE2D Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CE31 CRC                   00000000 (0)\n+CE35 Compressed Size       00000000 (0)\n+CE39 Uncompressed Size     00000000 (0)\n+CE3D Filename Length       0020 (32)\n+CE3F Extra Length          0009 (9)\n+CE41 Comment Length        0000 (0)\n+CE43 Disk Start            0000 (0)\n+CE45 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CE47 Ext File Attributes   00000000 (0)\n+CE4B Local Header Offset   00004710 (18192)\n+CE4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCE4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CE6F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CE71   Length              0005 (5)\n+CE73   Flags               01 (1) 'Modification'\n+CE74   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CE78 CENTRAL HEADER #13    02014B50 (33639248)\n+CE7C Created Zip Spec      14 (20) '2.0'\n+CE7D Created OS            00 (0) 'MS-DOS'\n+CE7E Extract Zip Spec      14 (20) '2.0'\n+CE7F Extract OS            00 (0) 'MS-DOS'\n+CE80 General Purpose Flag  0000 (0)\n+CE82 Compression Method    0000 (0) 'Stored'\n+CE84 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CE88 CRC                   00000000 (0)\n+CE8C Compressed Size       00000000 (0)\n+CE90 Uncompressed Size     00000000 (0)\n+CE94 Filename Length       0034 (52)\n+CE96 Extra Length          0009 (9)\n+CE98 Comment Length        0000 (0)\n+CE9A Disk Start            0000 (0)\n+CE9C Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CE9E Ext File Attributes   00000000 (0)\n+CEA2 Local Header Offset   00004757 (18263)\n+CEA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCEA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CEDA Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CEDC   Length              0005 (5)\n+CEDE   Flags               01 (1) 'Modification'\n+CEDF   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CEE3 CENTRAL HEADER #14    02014B50 (33639248)\n+CEE7 Created Zip Spec      14 (20) '2.0'\n+CEE8 Created OS            00 (0) 'MS-DOS'\n+CEE9 Extract Zip Spec      14 (20) '2.0'\n+CEEA Extract OS            00 (0) 'MS-DOS'\n+CEEB General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CEED Compression Method    0000 (0) 'Stored'\n+CEEF Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CEF3 CRC                   00000000 (0)\n+CEF7 Compressed Size       00000000 (0)\n+CEFB Uncompressed Size     00000000 (0)\n+CEFF Filename Length       0042 (66)\n+CF01 Extra Length          0009 (9)\n+CF03 Comment Length        0000 (0)\n+CF05 Disk Start            0000 (0)\n+CF07 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CF09 Ext File Attributes   00000000 (0)\n+CF0D Local Header Offset   000047B2 (18354)\n+CF11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCF11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CF53 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CF55   Length              0005 (5)\n+CF57   Flags               01 (1) 'Modification'\n+CF58   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CF5C CENTRAL HEADER #15    02014B50 (33639248)\n+CF60 Created Zip Spec      14 (20) '2.0'\n+CF61 Created OS            00 (0) 'MS-DOS'\n+CF62 Extract Zip Spec      14 (20) '2.0'\n+CF63 Extract OS            00 (0) 'MS-DOS'\n+CF64 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+CF66 Compression Method    0000 (0) 'Stored'\n+CF68 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CF6C CRC                   72A63AD4 (1923496660)\n+CF70 Compressed Size       0000122E (4654)\n+CF74 Uncompressed Size     0000122E (4654)\n+CF78 Filename Length       003B (59)\n+CF7A Extra Length          0009 (9)\n+CF7C Comment Length        0000 (0)\n+CF7E Disk Start            0000 (0)\n+CF80 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CF82 Ext File Attributes   00000000 (0)\n+CF86 Local Header Offset   0000482B (18475)\n+CF8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xCF8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+CFC5 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+CFC7   Length              0005 (5)\n+CFC9   Flags               01 (1) 'Modification'\n+CFCA   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+CFCE CENTRAL HEADER #16    02014B50 (33639248)\n+CFD2 Created Zip Spec      14 (20) '2.0'\n+CFD3 Created OS            00 (0) 'MS-DOS'\n+CFD4 Extract Zip Spec      14 (20) '2.0'\n+CFD5 Extract OS            00 (0) 'MS-DOS'\n+CFD6 General Purpose Flag  0000 (0)\n+CFD8 Compression Method    0000 (0) 'Stored'\n+CFDA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+CFDE CRC                   00000000 (0)\n+CFE2 Compressed Size       00000000 (0)\n+CFE6 Uncompressed Size     00000000 (0)\n+CFEA Filename Length       0004 (4)\n+CFEC Extra Length          0009 (9)\n+CFEE Comment Length        0000 (0)\n+CFF0 Disk Start            0000 (0)\n+CFF2 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+CFF4 Ext File Attributes   00000000 (0)\n+CFF8 Local Header Offset   00005ACB (23243)\n+CFFC Filename              'XXXX'\n+#\n+# WARNING: Offset 0xCFFC: Filename 'XXXX'\n+#          Zero length filename\n+#\n+D000 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D002   Length              0005 (5)\n+D004   Flags               01 (1) 'Modification'\n+D005   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D009 CENTRAL HEADER #17    02014B50 (33639248)\n+D00D Created Zip Spec      14 (20) '2.0'\n+D00E Created OS            00 (0) 'MS-DOS'\n+D00F Extract Zip Spec      14 (20) '2.0'\n+D010 Extract OS            00 (0) 'MS-DOS'\n+D011 General Purpose Flag  0000 (0)\n+D013 Compression Method    0000 (0) 'Stored'\n+D015 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D019 CRC                   00000000 (0)\n+D01D Compressed Size       00000000 (0)\n+D021 Uncompressed Size     00000000 (0)\n+D025 Filename Length       000B (11)\n+D027 Extra Length          0009 (9)\n+D029 Comment Length        0000 (0)\n+D02B Disk Start            0000 (0)\n+D02D Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D02F Ext File Attributes   00000000 (0)\n+D033 Local Header Offset   00005AF6 (23286)\n+D037 Filename              'XXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD037: Filename 'XXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D042 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D044   Length              0005 (5)\n+D046   Flags               01 (1) 'Modification'\n+D047   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D04B CENTRAL HEADER #18    02014B50 (33639248)\n+D04F Created Zip Spec      14 (20) '2.0'\n+D050 Created OS            00 (0) 'MS-DOS'\n+D051 Extract Zip Spec      14 (20) '2.0'\n+D052 Extract OS            00 (0) 'MS-DOS'\n+D053 General Purpose Flag  0000 (0)\n+D055 Compression Method    0000 (0) 'Stored'\n+D057 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D05B CRC                   00000000 (0)\n+D05F Compressed Size       00000000 (0)\n+D063 Uncompressed Size     00000000 (0)\n+D067 Filename Length       0011 (17)\n+D069 Extra Length          0009 (9)\n+D06B Comment Length        0000 (0)\n+D06D Disk Start            0000 (0)\n+D06F Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D071 Ext File Attributes   00000000 (0)\n+D075 Local Header Offset   00005B28 (23336)\n+D079 Filename              'XXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD079: Filename 'XXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D08A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D08C   Length              0005 (5)\n+D08E   Flags               01 (1) 'Modification'\n+D08F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D093 CENTRAL HEADER #19    02014B50 (33639248)\n+D097 Created Zip Spec      14 (20) '2.0'\n+D098 Created OS            00 (0) 'MS-DOS'\n+D099 Extract Zip Spec      14 (20) '2.0'\n+D09A Extract OS            00 (0) 'MS-DOS'\n+D09B General Purpose Flag  0000 (0)\n+D09D Compression Method    0000 (0) 'Stored'\n+D09F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D0A3 CRC                   00000000 (0)\n+D0A7 Compressed Size       00000000 (0)\n+D0AB Uncompressed Size     00000000 (0)\n+D0AF Filename Length       001A (26)\n+D0B1 Extra Length          0009 (9)\n+D0B3 Comment Length        0000 (0)\n+D0B5 Disk Start            0000 (0)\n+D0B7 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D0B9 Ext File Attributes   00000000 (0)\n+D0BD Local Header Offset   00005B60 (23392)\n+D0C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD0C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D0DB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D0DD   Length              0005 (5)\n+D0DF   Flags               01 (1) 'Modification'\n+D0E0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D0E4 CENTRAL HEADER #20    02014B50 (33639248)\n+D0E8 Created Zip Spec      14 (20) '2.0'\n+D0E9 Created OS            00 (0) 'MS-DOS'\n+D0EA Extract Zip Spec      14 (20) '2.0'\n+D0EB Extract OS            00 (0) 'MS-DOS'\n+D0EC General Purpose Flag  0000 (0)\n+D0EE Compression Method    0000 (0) 'Stored'\n+D0F0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D0F4 CRC                   00000000 (0)\n+D0F8 Compressed Size       00000000 (0)\n+D0FC Uncompressed Size     00000000 (0)\n+D100 Filename Length       001F (31)\n+D102 Extra Length          0009 (9)\n+D104 Comment Length        0000 (0)\n+D106 Disk Start            0000 (0)\n+D108 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D10A Ext File Attributes   00000000 (0)\n+D10E Local Header Offset   00005BA1 (23457)\n+D112 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD112: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D131 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D133   Length              0005 (5)\n+D135   Flags               01 (1) 'Modification'\n+D136   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D13A CENTRAL HEADER #21    02014B50 (33639248)\n+D13E Created Zip Spec      14 (20) '2.0'\n+D13F Created OS            00 (0) 'MS-DOS'\n+D140 Extract Zip Spec      14 (20) '2.0'\n+D141 Extract OS            00 (0) 'MS-DOS'\n+D142 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+D144 Compression Method    0000 (0) 'Stored'\n+D146 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D14A CRC                   5CAA5BA4 (1554668452)\n+D14E Compressed Size       00002A93 (10899)\n+D152 Uncompressed Size     00002A93 (10899)\n+D156 Filename Length       0030 (48)\n+D158 Extra Length          0009 (9)\n+D15A Comment Length        0000 (0)\n+D15C Disk Start            0000 (0)\n+D15E Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D160 Ext File Attributes   00000000 (0)\n+D164 Local Header Offset   00005BE7 (23527)\n+D168 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD168: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D198 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D19A   Length              0005 (5)\n+D19C   Flags               01 (1) 'Modification'\n+D19D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D1A1 CENTRAL HEADER #22    02014B50 (33639248)\n+D1A5 Created Zip Spec      14 (20) '2.0'\n+D1A6 Created OS            00 (0) 'MS-DOS'\n+D1A7 Extract Zip Spec      14 (20) '2.0'\n+D1A8 Extract OS            00 (0) 'MS-DOS'\n+D1A9 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+D1AB Compression Method    0000 (0) 'Stored'\n+D1AD Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D1B1 CRC                   55DBCEB5 (1440468661)\n+D1B5 Compressed Size       0000058E (1422)\n+D1B9 Uncompressed Size     0000058E (1422)\n+D1BD Filename Length       0039 (57)\n+D1BF Extra Length          0009 (9)\n+D1C1 Comment Length        0000 (0)\n+D1C3 Disk Start            0000 (0)\n+D1C5 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D1C7 Ext File Attributes   00000000 (0)\n+D1CB Local Header Offset   000086E1 (34529)\n+D1CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD1CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D208 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D20A   Length              0005 (5)\n+D20C   Flags               01 (1) 'Modification'\n+D20D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D211 CENTRAL HEADER #23    02014B50 (33639248)\n+D215 Created Zip Spec      14 (20) '2.0'\n+D216 Created OS            00 (0) 'MS-DOS'\n+D217 Extract Zip Spec      14 (20) '2.0'\n+D218 Extract OS            00 (0) 'MS-DOS'\n+D219 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+D21B Compression Method    0000 (0) 'Stored'\n+D21D Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D221 CRC                   74ECF448 (1961686088)\n+D225 Compressed Size       00000590 (1424)\n+D229 Uncompressed Size     00000590 (1424)\n+D22D Filename Length       0037 (55)\n+D22F Extra Length          0009 (9)\n+D231 Comment Length        0000 (0)\n+D233 Disk Start            0000 (0)\n+D235 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D237 Ext File Attributes   00000000 (0)\n+D23B Local Header Offset   00008CDF (36063)\n+D23F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD23F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D276 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D278   Length              0005 (5)\n+D27A   Flags               01 (1) 'Modification'\n+D27B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D27F CENTRAL HEADER #24    02014B50 (33639248)\n+D283 Created Zip Spec      14 (20) '2.0'\n+D284 Created OS            00 (0) 'MS-DOS'\n+D285 Extract Zip Spec      14 (20) '2.0'\n+D286 Extract OS            00 (0) 'MS-DOS'\n+D287 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+D289 Compression Method    0000 (0) 'Stored'\n+D28B Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D28F CRC                   5119DCCD (1360649421)\n+D293 Compressed Size       0000097E (2430)\n+D297 Uncompressed Size     0000097E (2430)\n+D29B Filename Length       0038 (56)\n+D29D Extra Length          0009 (9)\n+D29F Comment Length        0000 (0)\n+D2A1 Disk Start            0000 (0)\n+D2A3 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D2A5 Ext File Attributes   00000000 (0)\n+D2A9 Local Header Offset   000092DD (37597)\n+D2AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD2AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D2E5 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D2E7   Length              0005 (5)\n+D2E9   Flags               01 (1) 'Modification'\n+D2EA   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D2EE CENTRAL HEADER #25    02014B50 (33639248)\n+D2F2 Created Zip Spec      14 (20) '2.0'\n+D2F3 Created OS            00 (0) 'MS-DOS'\n+D2F4 Extract Zip Spec      14 (20) '2.0'\n+D2F5 Extract OS            00 (0) 'MS-DOS'\n+D2F6 General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+D2F8 Compression Method    0000 (0) 'Stored'\n+D2FA Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D2FE CRC                   A9FB32A5 (2851812005)\n+D302 Compressed Size       000027AF (10159)\n+D306 Uncompressed Size     000027AF (10159)\n+D30A Filename Length       0040 (64)\n+D30C Extra Length          0009 (9)\n+D30E Comment Length        0000 (0)\n+D310 Disk Start            0000 (0)\n+D312 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D314 Ext File Attributes   00000000 (0)\n+D318 Local Header Offset   00009CCA (40138)\n+D31C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD31C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D35C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D35E   Length              0005 (5)\n+D360   Flags               01 (1) 'Modification'\n+D361   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D365 CENTRAL HEADER #26    02014B50 (33639248)\n+D369 Created Zip Spec      14 (20) '2.0'\n+D36A Created OS            00 (0) 'MS-DOS'\n+D36B Extract Zip Spec      14 (20) '2.0'\n+D36C Extract OS            00 (0) 'MS-DOS'\n+D36D General Purpose Flag  0008 (8)\n+     [Bit  3]              1 'Streamed'\n+D36F Compression Method    0000 (0) 'Stored'\n+D371 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+D375 CRC                   1848A62B (407414315)\n+D379 Compressed Size       000004F5 (1269)\n+D37D Uncompressed Size     000004F5 (1269)\n+D381 Filename Length       0047 (71)\n+D383 Extra Length          0009 (9)\n+D385 Comment Length        0000 (0)\n+D387 Disk Start            0000 (0)\n+D389 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+D38B Ext File Attributes   00000000 (0)\n+D38F Local Header Offset   0000C4F0 (50416)\n+D393 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xD393: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+D3DA Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+D3DC   Length              0005 (5)\n+D3DE   Flags               01 (1) 'Modification'\n+D3DF   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+D3E3 END CENTRAL HEADER    06054B50 (101010256)\n+D3E7 Number of this disk   0000 (0)\n+D3E9 Central Dir Disk no   0000 (0)\n+D3EB Entries in this disk  001A (26)\n+D3ED Total Entries         001A (26)\n+D3EF Size of Central Dir   00000980 (2432)\n+D3F3 Offset to Central Dir 0000CA63 (51811)\n+D3F7 Comment Length        0000 (0)\n #\n # Warning Count: 52\n #\n # Done\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml", "unified_diff": null, "details": [{"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml", "comments": ["Ordering differences only"], "unified_diff": "@@ -52,16 +52,16 @@\n       <optional>true</optional>\n     </dependency>\n     <dependency>\n       <groupId>com.alipay.sofa</groupId>\n       <artifactId>registry-client-all</artifactId>\n       <exclusions>\n         <exclusion>\n-          <artifactId>sofa-common-tools</artifactId>\n           <groupId>com.alipay.sofa</groupId>\n+          <artifactId>sofa-common-tools</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-rpc-dubbo</artifactId>\n       <version>${project.version}</version>\n@@ -86,28 +86,28 @@\n     </dependency>\n     <dependency>\n       <groupId>com.alipay.sofa</groupId>\n       <artifactId>registry-test</artifactId>\n       <scope>test</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>log4j-over-slf4j</artifactId>\n           <groupId>org.slf4j</groupId>\n+          <artifactId>log4j-over-slf4j</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>log4j-jcl</artifactId>\n           <groupId>org.apache.logging.log4j</groupId>\n+          <artifactId>log4j-jcl</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>log4j-core</artifactId>\n           <groupId>org.apache.logging.log4j</groupId>\n+          <artifactId>log4j-core</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>log4j-api</artifactId>\n           <groupId>org.apache.logging.log4j</groupId>\n+          <artifactId>log4j-api</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.jboss.resteasy</groupId>\n       <artifactId>resteasy-jaxrs</artifactId>\n       <scope>test</scope>\n"}]}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistry.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistry.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,296 +1,296 @@\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.registry.sofa;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.support.FailbackRegistry;\n-\n-import com.alipay.sofa.registry.client.api.RegistryClient;\n-import com.alipay.sofa.registry.client.api.RegistryClientConfig;\n-import com.alipay.sofa.registry.client.api.Subscriber;\n-import com.alipay.sofa.registry.client.api.model.RegistryType;\n-import com.alipay.sofa.registry.client.api.model.UserData;\n-import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;\n-import com.alipay.sofa.registry.client.api.registration.SubscriberRegistration;\n-import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;\n-import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;\n-import com.alipay.sofa.registry.core.model.ScopeEnum;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.CountDownLatch;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\n-import static org.apache.dubbo.registry.Constants.SUBSCRIBE_KEY;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.ADDRESS_WAIT_TIME_KEY;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.DEFAULT_GROUP;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_DATA_CENTER;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_REGION;\n-\n-/**\n- * The Sofa registry.\n- *\n- * @since 2.7.2\n- */\n-public class SofaRegistry extends FailbackRegistry {\n-\n-    /**\n-     * Cache subscriber by dataId\n-     */\n-    private final Map<String, Subscriber> subscribers = new ConcurrentHashMap<>();\n-\n-    /**\n-     * Direct registry client\n-     */\n-    private RegistryClient registryClient;\n-    /**\n-     * wait address from registry\n-     */\n-    private int waitAddressTimeout;\n-\n-    /**\n-     * Instantiates a new Sofa registry.\n-     *\n-     * @param url the url\n-     */\n-    public SofaRegistry(URL url) {\n-        super(url);\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Build sofa registry by url:\" + url);\n-        }\n-        this.registryClient = buildClient(url);\n-        this.waitAddressTimeout = Integer.parseInt(ConfigUtils.getProperty(ADDRESS_WAIT_TIME_KEY, \"5000\"));\n-    }\n-\n-    /**\n-     * Build client registry client.\n-     *\n-     * @param url the url\n-     * @return the registry client\n-     */\n-    protected RegistryClient buildClient(URL url) {\n-        RegistryClientConfig config = DefaultRegistryClientConfigBuilder.start()\n-                .setDataCenter(LOCAL_DATA_CENTER)\n-                .setZone(LOCAL_REGION)\n-                .setRegistryEndpoint(url.getHost())\n-                .setRegistryEndpointPort(url.getPort()).build();\n-\n-        DefaultRegistryClient registryClient = new DefaultRegistryClient(config);\n-        registryClient.init();\n-        return registryClient;\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return true;\n-    }\n-\n-    @Override\n-    public void doRegister(URL url) {\n-        if (!url.getParameter(REGISTER_KEY, true)\n-                || CONSUMER_PROTOCOL.equals(url.getProtocol())) {\n-            return;\n-        }\n-\n-        String serviceName = buildServiceName(url);\n-        String serviceData = url.toFullString();\n-\n-        PublisherRegistration registration = new PublisherRegistration(serviceName);\n-        addAttributesForPub(registration);\n-\n-        registryClient.register(registration, serviceData);\n-    }\n-\n-    /**\n-     * Add attributes for pub.\n-     *\n-     * @param publisherRegistration the publisher registration\n-     */\n-    protected void addAttributesForPub(PublisherRegistration publisherRegistration) {\n-        publisherRegistration.setGroup(DEFAULT_GROUP);\n-    }\n-\n-    @Override\n-    public void doUnregister(URL url) {\n-        if (!url.getParameter(REGISTER_KEY, true)\n-                || CONSUMER_PROTOCOL.equals(url.getProtocol())) {\n-            return;\n-        }\n-        String serviceName = buildServiceName(url);\n-        registryClient.unregister(serviceName, DEFAULT_GROUP, RegistryType.PUBLISHER);\n-    }\n-\n-    @Override\n-    public void doSubscribe(URL url, final NotifyListener listener) {\n-        if (!url.getParameter(SUBSCRIBE_KEY, true)\n-                || PROVIDER_PROTOCOL.equals(url.getProtocol())) {\n-            return;\n-        }\n-\n-        String serviceName = buildServiceName(url);\n-        // com.alipay.test.TestService:1.0:group@dubbo\n-        Subscriber listSubscriber = subscribers.get(serviceName);\n-\n-        if (listSubscriber != null) {\n-            logger.warn(\"Service name [\" + serviceName + \"] have bean registered in SOFARegistry.\");\n-\n-            CountDownLatch countDownLatch = new CountDownLatch(1);\n-            handleRegistryData(listSubscriber.peekData(), listener, countDownLatch);\n-            waitAddress(serviceName, countDownLatch);\n-            return;\n-        }\n-\n-        final CountDownLatch latch = new CountDownLatch(1);\n-        SubscriberRegistration subscriberRegistration = new SubscriberRegistration(serviceName,\n-                (dataId, data) -> {\n-                    //record change\n-                    printAddressData(dataId, data);\n-                    handleRegistryData(data, listener, latch);\n-                });\n-\n-        addAttributesForSub(subscriberRegistration);\n-        listSubscriber = registryClient.register(subscriberRegistration);\n-\n-        subscribers.put(serviceName, listSubscriber);\n-\n-        waitAddress(serviceName, latch);\n-    }\n-\n-    private void waitAddress(String serviceName, CountDownLatch countDownLatch) {\n-        try {\n-            if (!countDownLatch.await(waitAddressTimeout, TimeUnit.MILLISECONDS)) {\n-                logger.warn(\"Subscribe data failed by dataId \" + serviceName);\n-            }\n-        } catch (Exception e) {\n-            logger.error(\"Error when wait Address!\", e);\n-        }\n-    }\n-\n-    @Override\n-    public void doUnsubscribe(URL url, NotifyListener listener) {\n-        if (!url.getParameter(SUBSCRIBE_KEY, true)\n-                || PROVIDER_PROTOCOL.equals(url.getProtocol())) {\n-            return;\n-        }\n-        String serviceName = buildServiceName(url);\n-\n-        registryClient.unregister(serviceName, DEFAULT_GROUP, RegistryType.SUBSCRIBER);\n-    }\n-\n-    private void handleRegistryData(UserData data, NotifyListener notifyListener,\n-                                    CountDownLatch latch) {\n-        try {\n-            List<URL> urls = new ArrayList<>();\n-            if (null != data) {\n-\n-                List<String> datas = flatUserData(data);\n-                for (String serviceUrl : datas) {\n-                    URL url = URL.valueOf(serviceUrl);\n-                    String serverApplication = url.getParameter(APPLICATION_KEY);\n-                    if (StringUtils.isNotEmpty(serverApplication)) {\n-                        url = url.addParameter(\"dstApp\", serverApplication);\n-                    }\n-                    urls.add(url);\n-                }\n-            }\n-            notifyListener.notify(urls);\n-        } finally {\n-            latch.countDown();\n-        }\n-    }\n-\n-    private String buildServiceName(URL url) {\n-        // return url.getServiceKey();\n-        StringBuilder buf = new StringBuilder();\n-        buf.append(url.getServiceInterface());\n-        String version = url.getParameter(VERSION_KEY);\n-        if (StringUtils.isNotEmpty(version)) {\n-            buf.append(\":\").append(version);\n-        }\n-        String group = url.getParameter(GROUP_KEY);\n-        if (StringUtils.isNotEmpty(group)) {\n-            buf.append(\":\").append(group);\n-        }\n-        buf.append(\"@\").append(DUBBO);\n-        return buf.toString();\n-    }\n-\n-    /**\n-     * Print address data.\n-     *\n-     * @param dataId   the data id\n-     * @param userData the user data\n-     */\n-    protected void printAddressData(String dataId, UserData userData) {\n-\n-        List<String> datas;\n-        if (userData == null) {\n-            datas = new ArrayList<>(0);\n-        } else {\n-            datas = flatUserData(userData);\n-        }\n-\n-        StringBuilder sb = new StringBuilder();\n-        for (String provider : datas) {\n-            sb.append(\"  >>> \").append(provider).append(\"\\n\");\n-        }\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Receive updated RPC service addresses: service[\" + dataId\n-                    + \"]\\n  .Available target addresses size [\" + datas.size() + \"]\\n\"\n-                    + sb.toString());\n-        }\n-    }\n-\n-    /**\n-     * Add attributes for sub.\n-     *\n-     * @param subscriberRegistration the subscriber registration\n-     */\n-    protected void addAttributesForSub(SubscriberRegistration subscriberRegistration) {\n-        subscriberRegistration.setGroup(DEFAULT_GROUP);\n-        subscriberRegistration.setScopeEnum(ScopeEnum.global);\n-    }\n-\n-    /**\n-     * Flat user data list.\n-     *\n-     * @param userData the user data\n-     * @return the list\n-     */\n-    protected List<String> flatUserData(UserData userData) {\n-        List<String> result = new ArrayList<>();\n-        Map<String, List<String>> zoneData = userData.getZoneData();\n-\n-        for (Map.Entry<String, List<String>> entry : zoneData.entrySet()) {\n-            result.addAll(entry.getValue());\n-        }\n-\n-        return result;\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.registry.sofa;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.support.FailbackRegistry;\r\n+\r\n+import com.alipay.sofa.registry.client.api.RegistryClient;\r\n+import com.alipay.sofa.registry.client.api.RegistryClientConfig;\r\n+import com.alipay.sofa.registry.client.api.Subscriber;\r\n+import com.alipay.sofa.registry.client.api.model.RegistryType;\r\n+import com.alipay.sofa.registry.client.api.model.UserData;\r\n+import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;\r\n+import com.alipay.sofa.registry.client.api.registration.SubscriberRegistration;\r\n+import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;\r\n+import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;\r\n+import com.alipay.sofa.registry.core.model.ScopeEnum;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.CountDownLatch;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\r\n+import static org.apache.dubbo.registry.Constants.SUBSCRIBE_KEY;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.ADDRESS_WAIT_TIME_KEY;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.DEFAULT_GROUP;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_DATA_CENTER;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_REGION;\r\n+\r\n+/**\r\n+ * The Sofa registry.\r\n+ *\r\n+ * @since 2.7.2\r\n+ */\r\n+public class SofaRegistry extends FailbackRegistry {\r\n+\r\n+    /**\r\n+     * Cache subscriber by dataId\r\n+     */\r\n+    private final Map<String, Subscriber> subscribers = new ConcurrentHashMap<>();\r\n+\r\n+    /**\r\n+     * Direct registry client\r\n+     */\r\n+    private RegistryClient registryClient;\r\n+    /**\r\n+     * wait address from registry\r\n+     */\r\n+    private int waitAddressTimeout;\r\n+\r\n+    /**\r\n+     * Instantiates a new Sofa registry.\r\n+     *\r\n+     * @param url the url\r\n+     */\r\n+    public SofaRegistry(URL url) {\r\n+        super(url);\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Build sofa registry by url:\" + url);\r\n+        }\r\n+        this.registryClient = buildClient(url);\r\n+        this.waitAddressTimeout = Integer.parseInt(ConfigUtils.getProperty(ADDRESS_WAIT_TIME_KEY, \"5000\"));\r\n+    }\r\n+\r\n+    /**\r\n+     * Build client registry client.\r\n+     *\r\n+     * @param url the url\r\n+     * @return the registry client\r\n+     */\r\n+    protected RegistryClient buildClient(URL url) {\r\n+        RegistryClientConfig config = DefaultRegistryClientConfigBuilder.start()\r\n+                .setDataCenter(LOCAL_DATA_CENTER)\r\n+                .setZone(LOCAL_REGION)\r\n+                .setRegistryEndpoint(url.getHost())\r\n+                .setRegistryEndpointPort(url.getPort()).build();\r\n+\r\n+        DefaultRegistryClient registryClient = new DefaultRegistryClient(config);\r\n+        registryClient.init();\r\n+        return registryClient;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(URL url) {\r\n+        if (!url.getParameter(REGISTER_KEY, true)\r\n+                || CONSUMER_PROTOCOL.equals(url.getProtocol())) {\r\n+            return;\r\n+        }\r\n+\r\n+        String serviceName = buildServiceName(url);\r\n+        String serviceData = url.toFullString();\r\n+\r\n+        PublisherRegistration registration = new PublisherRegistration(serviceName);\r\n+        addAttributesForPub(registration);\r\n+\r\n+        registryClient.register(registration, serviceData);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add attributes for pub.\r\n+     *\r\n+     * @param publisherRegistration the publisher registration\r\n+     */\r\n+    protected void addAttributesForPub(PublisherRegistration publisherRegistration) {\r\n+        publisherRegistration.setGroup(DEFAULT_GROUP);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnregister(URL url) {\r\n+        if (!url.getParameter(REGISTER_KEY, true)\r\n+                || CONSUMER_PROTOCOL.equals(url.getProtocol())) {\r\n+            return;\r\n+        }\r\n+        String serviceName = buildServiceName(url);\r\n+        registryClient.unregister(serviceName, DEFAULT_GROUP, RegistryType.PUBLISHER);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doSubscribe(URL url, final NotifyListener listener) {\r\n+        if (!url.getParameter(SUBSCRIBE_KEY, true)\r\n+                || PROVIDER_PROTOCOL.equals(url.getProtocol())) {\r\n+            return;\r\n+        }\r\n+\r\n+        String serviceName = buildServiceName(url);\r\n+        // com.alipay.test.TestService:1.0:group@dubbo\r\n+        Subscriber listSubscriber = subscribers.get(serviceName);\r\n+\r\n+        if (listSubscriber != null) {\r\n+            logger.warn(\"Service name [\" + serviceName + \"] have bean registered in SOFARegistry.\");\r\n+\r\n+            CountDownLatch countDownLatch = new CountDownLatch(1);\r\n+            handleRegistryData(listSubscriber.peekData(), listener, countDownLatch);\r\n+            waitAddress(serviceName, countDownLatch);\r\n+            return;\r\n+        }\r\n+\r\n+        final CountDownLatch latch = new CountDownLatch(1);\r\n+        SubscriberRegistration subscriberRegistration = new SubscriberRegistration(serviceName,\r\n+                (dataId, data) -> {\r\n+                    //record change\r\n+                    printAddressData(dataId, data);\r\n+                    handleRegistryData(data, listener, latch);\r\n+                });\r\n+\r\n+        addAttributesForSub(subscriberRegistration);\r\n+        listSubscriber = registryClient.register(subscriberRegistration);\r\n+\r\n+        subscribers.put(serviceName, listSubscriber);\r\n+\r\n+        waitAddress(serviceName, latch);\r\n+    }\r\n+\r\n+    private void waitAddress(String serviceName, CountDownLatch countDownLatch) {\r\n+        try {\r\n+            if (!countDownLatch.await(waitAddressTimeout, TimeUnit.MILLISECONDS)) {\r\n+                logger.warn(\"Subscribe data failed by dataId \" + serviceName);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.error(\"Error when wait Address!\", e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnsubscribe(URL url, NotifyListener listener) {\r\n+        if (!url.getParameter(SUBSCRIBE_KEY, true)\r\n+                || PROVIDER_PROTOCOL.equals(url.getProtocol())) {\r\n+            return;\r\n+        }\r\n+        String serviceName = buildServiceName(url);\r\n+\r\n+        registryClient.unregister(serviceName, DEFAULT_GROUP, RegistryType.SUBSCRIBER);\r\n+    }\r\n+\r\n+    private void handleRegistryData(UserData data, NotifyListener notifyListener,\r\n+                                    CountDownLatch latch) {\r\n+        try {\r\n+            List<URL> urls = new ArrayList<>();\r\n+            if (null != data) {\r\n+\r\n+                List<String> datas = flatUserData(data);\r\n+                for (String serviceUrl : datas) {\r\n+                    URL url = URL.valueOf(serviceUrl);\r\n+                    String serverApplication = url.getParameter(APPLICATION_KEY);\r\n+                    if (StringUtils.isNotEmpty(serverApplication)) {\r\n+                        url = url.addParameter(\"dstApp\", serverApplication);\r\n+                    }\r\n+                    urls.add(url);\r\n+                }\r\n+            }\r\n+            notifyListener.notify(urls);\r\n+        } finally {\r\n+            latch.countDown();\r\n+        }\r\n+    }\r\n+\r\n+    private String buildServiceName(URL url) {\r\n+        // return url.getServiceKey();\r\n+        StringBuilder buf = new StringBuilder();\r\n+        buf.append(url.getServiceInterface());\r\n+        String version = url.getParameter(VERSION_KEY);\r\n+        if (StringUtils.isNotEmpty(version)) {\r\n+            buf.append(\":\").append(version);\r\n+        }\r\n+        String group = url.getParameter(GROUP_KEY);\r\n+        if (StringUtils.isNotEmpty(group)) {\r\n+            buf.append(\":\").append(group);\r\n+        }\r\n+        buf.append(\"@\").append(DUBBO);\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * Print address data.\r\n+     *\r\n+     * @param dataId   the data id\r\n+     * @param userData the user data\r\n+     */\r\n+    protected void printAddressData(String dataId, UserData userData) {\r\n+\r\n+        List<String> datas;\r\n+        if (userData == null) {\r\n+            datas = new ArrayList<>(0);\r\n+        } else {\r\n+            datas = flatUserData(userData);\r\n+        }\r\n+\r\n+        StringBuilder sb = new StringBuilder();\r\n+        for (String provider : datas) {\r\n+            sb.append(\"  >>> \").append(provider).append(\"\\n\");\r\n+        }\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Receive updated RPC service addresses: service[\" + dataId\r\n+                    + \"]\\n  .Available target addresses size [\" + datas.size() + \"]\\n\"\r\n+                    + sb.toString());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Add attributes for sub.\r\n+     *\r\n+     * @param subscriberRegistration the subscriber registration\r\n+     */\r\n+    protected void addAttributesForSub(SubscriberRegistration subscriberRegistration) {\r\n+        subscriberRegistration.setGroup(DEFAULT_GROUP);\r\n+        subscriberRegistration.setScopeEnum(ScopeEnum.global);\r\n+    }\r\n+\r\n+    /**\r\n+     * Flat user data list.\r\n+     *\r\n+     * @param userData the user data\r\n+     * @return the list\r\n+     */\r\n+    protected List<String> flatUserData(UserData userData) {\r\n+        List<String> result = new ArrayList<>();\r\n+        Map<String, List<String>> zoneData = userData.getZoneData();\r\n+\r\n+        for (Map.Entry<String, List<String>> entry : zoneData.entrySet()) {\r\n+            result.addAll(entry.getValue());\r\n+        }\r\n+\r\n+        return result;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryConstants.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryConstants.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,43 +1,43 @@\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.registry.sofa;\n-\n-/**\n- * @since 2.7.2\n- */\n-public class SofaRegistryConstants {\n-\n-    /**\n-     * Default data center\n-     */\n-    public static final String LOCAL_DATA_CENTER = \"DefaultDataCenter\";\n-\n-    /**\n-     * Default region\n-     */\n-    public static final String LOCAL_REGION = \"DEFAULT_ZONE\";\n-\n-    /**\n-     * Default group\n-     */\n-    public static final String DEFAULT_GROUP = \"SOFA\";\n-\n-    /**\n-     * parameter for address.wait.time of rpc reference\n-     */\n-    public static final String ADDRESS_WAIT_TIME_KEY = \"rpc.reference.address.wait.time\";\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.registry.sofa;\r\n+\r\n+/**\r\n+ * @since 2.7.2\r\n+ */\r\n+public class SofaRegistryConstants {\r\n+\r\n+    /**\r\n+     * Default data center\r\n+     */\r\n+    public static final String LOCAL_DATA_CENTER = \"DefaultDataCenter\";\r\n+\r\n+    /**\r\n+     * Default region\r\n+     */\r\n+    public static final String LOCAL_REGION = \"DEFAULT_ZONE\";\r\n+\r\n+    /**\r\n+     * Default group\r\n+     */\r\n+    public static final String DEFAULT_GROUP = \"SOFA\";\r\n+\r\n+    /**\r\n+     * parameter for address.wait.time of rpc reference\r\n+     */\r\n+    public static final String ADDRESS_WAIT_TIME_KEY = \"rpc.reference.address.wait.time\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryFactory.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryFactory.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.registry.sofa;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-\n-/**\n- * @since 2.7.2\n- */\n-public class SofaRegistryFactory extends AbstractRegistryFactory {\n-\n-    @Override\n-    protected Registry createRegistry(URL url) {\n-        initEnvironment(url);\n-        return new SofaRegistry(url);\n-    }\n-\n-    /**\n-     * For extension, such as load zone/accessKey/secretKey/...\n-     * \n-     * @param url URL\n-     */\n-    protected void initEnvironment(URL url) {\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.registry.sofa;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+\r\n+/**\r\n+ * @since 2.7.2\r\n+ */\r\n+public class SofaRegistryFactory extends AbstractRegistryFactory {\r\n+\r\n+    @Override\r\n+    protected Registry createRegistry(URL url) {\r\n+        initEnvironment(url);\r\n+        return new SofaRegistry(url);\r\n+    }\r\n+\r\n+    /**\r\n+     * For extension, such as load zone/accessKey/secretKey/...\r\n+     * \r\n+     * @param url URL\r\n+     */\r\n+    protected void initEnvironment(URL url) {\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryInstance.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryInstance.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,90 +1,90 @@\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.registry.sofa;\n-\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-public class SofaRegistryInstance {\n-    private String id;\n-\n-    private String host;\n-\n-    private int port;\n-\n-    private String name;\n-\n-    private Map<String, String> metadata = new HashMap<>();\n-\n-    private SofaRegistryInstance() {\n-    }\n-\n-    public SofaRegistryInstance(String id, String host, int port, String name, Map<String, String> metadata) {\n-        this.id = id;\n-        this.host = host;\n-        this.port = port;\n-        this.name = name;\n-        this.metadata = metadata;\n-    }\n-\n-    public String getHost() {\n-        return host;\n-    }\n-\n-    public void setHost(String host) {\n-        this.host = host;\n-    }\n-\n-    public int getPort() {\n-        return port;\n-    }\n-\n-    public void setPort(int port) {\n-        this.port = port;\n-    }\n-\n-    public String getId() {\n-        return id;\n-    }\n-\n-    public void setId(String id) {\n-        this.id = id;\n-    }\n-\n-    public String getName() {\n-        return this.name;\n-    }\n-\n-    public void setName(String name) {\n-        this.name = name;\n-    }\n-\n-    public Map<String, String> getMetadata() {\n-        return this.metadata;\n-    }\n-\n-    public void setMetadata(Map<String, String> metadata) {\n-        this.metadata = metadata;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"SofaRegistryInstance{\" + \"id='\" + this.id + '\\''+ \"host='\" + this.host + '\\'' + \"port='\" + this.port + '\\''+ \", name='\" + this.name\n-                + '\\'' + \", metadata=\" + this.metadata + '}';\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.registry.sofa;\r\n+\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+public class SofaRegistryInstance {\r\n+    private String id;\r\n+\r\n+    private String host;\r\n+\r\n+    private int port;\r\n+\r\n+    private String name;\r\n+\r\n+    private Map<String, String> metadata = new HashMap<>();\r\n+\r\n+    private SofaRegistryInstance() {\r\n+    }\r\n+\r\n+    public SofaRegistryInstance(String id, String host, int port, String name, Map<String, String> metadata) {\r\n+        this.id = id;\r\n+        this.host = host;\r\n+        this.port = port;\r\n+        this.name = name;\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    public String getHost() {\r\n+        return host;\r\n+    }\r\n+\r\n+    public void setHost(String host) {\r\n+        this.host = host;\r\n+    }\r\n+\r\n+    public int getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    public void setPort(int port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    public String getId() {\r\n+        return id;\r\n+    }\r\n+\r\n+    public void setId(String id) {\r\n+        this.id = id;\r\n+    }\r\n+\r\n+    public String getName() {\r\n+        return this.name;\r\n+    }\r\n+\r\n+    public void setName(String name) {\r\n+        this.name = name;\r\n+    }\r\n+\r\n+    public Map<String, String> getMetadata() {\r\n+        return this.metadata;\r\n+    }\r\n+\r\n+    public void setMetadata(Map<String, String> metadata) {\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"SofaRegistryInstance{\" + \"id='\" + this.id + '\\''+ \"host='\" + this.host + '\\'' + \"port='\" + this.port + '\\''+ \", name='\" + this.name\r\n+                + '\\'' + \", metadata=\" + this.metadata + '}';\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,254 +1,254 @@\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.registry.sofa;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.DefaultPage;\n-import org.apache.dubbo.common.utils.Page;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import com.alipay.sofa.registry.client.api.Publisher;\n-import com.alipay.sofa.registry.client.api.RegistryClientConfig;\n-import com.alipay.sofa.registry.client.api.Subscriber;\n-import com.alipay.sofa.registry.client.api.model.RegistryType;\n-import com.alipay.sofa.registry.client.api.model.UserData;\n-import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;\n-import com.alipay.sofa.registry.client.api.registration.SubscriberRegistration;\n-import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;\n-import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;\n-import com.alipay.sofa.registry.core.model.ScopeEnum;\n-import com.google.gson.Gson;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.CountDownLatch;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.ADDRESS_WAIT_TIME_KEY;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_DATA_CENTER;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_REGION;\n-\n-\n-public class SofaRegistryServiceDiscovery extends AbstractServiceDiscovery {\n-\n-    private static final Logger LOGGER = LoggerFactory.getLogger(SofaRegistryServiceDiscovery.class);\n-\n-    private static final String DEFAULT_GROUP = \"dubbo\";\n-\n-    private URL registryURL;\n-\n-    private DefaultRegistryClient registryClient;\n-\n-    private int waitAddressTimeout;\n-\n-    private RegistryClientConfig registryClientConfig;\n-\n-    private final Map<String, Publisher> publishers = new ConcurrentHashMap<>();\n-\n-    private final Map<String, Subscriber> subscribers = new ConcurrentHashMap<>();\n-\n-    private ServiceInstance serviceInstance;\n-\n-    private Gson gson = new Gson();\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.registryURL = registryURL;\n-\n-        this.registryClientConfig = DefaultRegistryClientConfigBuilder.start()\n-                .setDataCenter(LOCAL_DATA_CENTER)\n-                .setZone(LOCAL_REGION)\n-                .setRegistryEndpoint(registryURL.getHost())\n-                .setRegistryEndpointPort(registryURL.getPort()).build();\n-\n-        registryClient = new DefaultRegistryClient(this.registryClientConfig);\n-        registryClient.init();\n-\n-        this.waitAddressTimeout = Integer.parseInt(ConfigUtils.getProperty(ADDRESS_WAIT_TIME_KEY, \"5000\"));\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        SofaRegistryInstance sofaRegistryInstance = new SofaRegistryInstance(serviceInstance.getId(), serviceInstance.getHost(), serviceInstance.getPort(), serviceInstance.getServiceName(), serviceInstance.getMetadata());\n-        Publisher publisher = publishers.get(serviceInstance.getServiceName());\n-        this.serviceInstance = serviceInstance;\n-        if (null == publisher) {\n-            PublisherRegistration registration = new PublisherRegistration(serviceInstance.getServiceName());\n-            registration.setGroup(DEFAULT_GROUP);\n-            publisher = registryClient.register(registration, gson.toJson(sofaRegistryInstance));\n-\n-            publishers.put(serviceInstance.getServiceName(), publisher);\n-        } else {\n-            publisher.republish(gson.toJson(sofaRegistryInstance));\n-        }\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        register(serviceInstance);\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        registryClient.unregister(serviceInstance.getServiceName(), DEFAULT_GROUP, RegistryType.PUBLISHER);\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\n-        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName, listener));\n-    }\n-\n-    protected void registerServiceWatcher(String serviceName, ServiceInstancesChangedListener listener) {\n-        Subscriber subscriber = subscribers.get(serviceName);\n-\n-        if (null == subscriber) {\n-            final CountDownLatch latch = new CountDownLatch(1);\n-            SubscriberRegistration subscriberRegistration = new SubscriberRegistration(serviceName, (dataId, data) -> {\n-                handleRegistryData(dataId, data, listener, latch);\n-            });\n-            subscriberRegistration.setGroup(DEFAULT_GROUP);\n-            subscriberRegistration.setScopeEnum(ScopeEnum.global);\n-\n-            subscriber = registryClient.register(subscriberRegistration);\n-            subscribers.put(serviceName, subscriber);\n-            waitAddress(serviceName, latch);\n-        }\n-    }\n-\n-    @Override\n-    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly)\n-            throws NullPointerException, IllegalArgumentException, UnsupportedOperationException {\n-        Subscriber subscriber = subscribers.get(serviceName);\n-\n-        if (null != subscriber) {\n-            List<ServiceInstance> serviceInstanceList = handleRegistryData(serviceName, subscriber.peekData(), null, null);\n-            return new DefaultPage<>(offset, pageSize, serviceInstanceList, serviceInstanceList.size());\n-        }\n-\n-        throw new RpcException(\"getInstances error!\");\n-    }\n-\n-    private List<ServiceInstance> handleRegistryData(String dataId, UserData userData, ServiceInstancesChangedListener listener, CountDownLatch latch) {\n-        try {\n-            List<String> datas = getUserData(dataId, userData);\n-            List<ServiceInstance> serviceInstances = new ArrayList<>(datas.size());\n-\n-            for (String serviceData : datas) {\n-                SofaRegistryInstance sri = gson.fromJson(serviceData, SofaRegistryInstance.class);\n-\n-                DefaultServiceInstance serviceInstance = new DefaultServiceInstance(sri.getId(), dataId, sri.getHost(), sri.getPort());\n-                serviceInstance.setMetadata(sri.getMetadata());\n-                serviceInstances.add(serviceInstance);\n-            }\n-\n-            if (null != listener) {\n-                listener.onEvent(new ServiceInstancesChangedEvent(dataId, serviceInstances));\n-            }\n-\n-            return serviceInstances;\n-        } finally {\n-            if (null != latch) {\n-                latch.countDown();\n-            }\n-        }\n-    }\n-\n-    private void waitAddress(String serviceName, CountDownLatch countDownLatch) {\n-        try {\n-            if (!countDownLatch.await(waitAddressTimeout, TimeUnit.MILLISECONDS)) {\n-                LOGGER.warn(\"Subscribe data failed by dataId \" + serviceName);\n-            }\n-        } catch (Exception e) {\n-            LOGGER.error(\"Error when wait Address!\", e);\n-        }\n-    }\n-\n-    /**\n-     * Print address data.\n-     *\n-     * @param dataId   the data id\n-     * @param userData the user data\n-     */\n-    protected List<String> getUserData(String dataId, UserData userData) {\n-\n-        List<String> datas = null;\n-        if (userData == null) {\n-            datas = new ArrayList<>(0);\n-        } else {\n-            datas = flatUserData(userData);\n-        }\n-\n-        StringBuilder sb = new StringBuilder();\n-        for (String provider : datas) {\n-            sb.append(\"  >>> \").append(provider).append(\"\\n\");\n-        }\n-        if (LOGGER.isInfoEnabled()) {\n-            LOGGER.info(\"Receive updated RPC service addresses: service[\" + dataId\n-                    + \"]\\n  .Available target addresses size [\" + datas.size() + \"]\\n\"\n-                    + sb.toString());\n-        }\n-\n-        return datas;\n-    }\n-\n-    /**\n-     * Flat user data list.\n-     *\n-     * @param userData the user data\n-     * @return the list\n-     */\n-    protected List<String> flatUserData(UserData userData) {\n-        List<String> result = new ArrayList<>();\n-        Map<String, List<String>> zoneData = userData.getZoneData();\n-\n-        for (Map.Entry<String, List<String>> entry : zoneData.entrySet()) {\n-            result.addAll(entry.getValue());\n-        }\n-\n-        return result;\n-    }\n-\n-    /**\n-     * @return\n-     * @TODO \u540e\u7eed\u786e\u8ba4\u4e0b\n-     */\n-    @Override\n-    public Set<String> getServices() {\n-        return subscribers.keySet();\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.registry.sofa;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.DefaultPage;\r\n+import org.apache.dubbo.common.utils.Page;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import com.alipay.sofa.registry.client.api.Publisher;\r\n+import com.alipay.sofa.registry.client.api.RegistryClientConfig;\r\n+import com.alipay.sofa.registry.client.api.Subscriber;\r\n+import com.alipay.sofa.registry.client.api.model.RegistryType;\r\n+import com.alipay.sofa.registry.client.api.model.UserData;\r\n+import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;\r\n+import com.alipay.sofa.registry.client.api.registration.SubscriberRegistration;\r\n+import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;\r\n+import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;\r\n+import com.alipay.sofa.registry.core.model.ScopeEnum;\r\n+import com.google.gson.Gson;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.CountDownLatch;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.ADDRESS_WAIT_TIME_KEY;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_DATA_CENTER;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_REGION;\r\n+\r\n+\r\n+public class SofaRegistryServiceDiscovery extends AbstractServiceDiscovery {\r\n+\r\n+    private static final Logger LOGGER = LoggerFactory.getLogger(SofaRegistryServiceDiscovery.class);\r\n+\r\n+    private static final String DEFAULT_GROUP = \"dubbo\";\r\n+\r\n+    private URL registryURL;\r\n+\r\n+    private DefaultRegistryClient registryClient;\r\n+\r\n+    private int waitAddressTimeout;\r\n+\r\n+    private RegistryClientConfig registryClientConfig;\r\n+\r\n+    private final Map<String, Publisher> publishers = new ConcurrentHashMap<>();\r\n+\r\n+    private final Map<String, Subscriber> subscribers = new ConcurrentHashMap<>();\r\n+\r\n+    private ServiceInstance serviceInstance;\r\n+\r\n+    private Gson gson = new Gson();\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.registryURL = registryURL;\r\n+\r\n+        this.registryClientConfig = DefaultRegistryClientConfigBuilder.start()\r\n+                .setDataCenter(LOCAL_DATA_CENTER)\r\n+                .setZone(LOCAL_REGION)\r\n+                .setRegistryEndpoint(registryURL.getHost())\r\n+                .setRegistryEndpointPort(registryURL.getPort()).build();\r\n+\r\n+        registryClient = new DefaultRegistryClient(this.registryClientConfig);\r\n+        registryClient.init();\r\n+\r\n+        this.waitAddressTimeout = Integer.parseInt(ConfigUtils.getProperty(ADDRESS_WAIT_TIME_KEY, \"5000\"));\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        SofaRegistryInstance sofaRegistryInstance = new SofaRegistryInstance(serviceInstance.getId(), serviceInstance.getHost(), serviceInstance.getPort(), serviceInstance.getServiceName(), serviceInstance.getMetadata());\r\n+        Publisher publisher = publishers.get(serviceInstance.getServiceName());\r\n+        this.serviceInstance = serviceInstance;\r\n+        if (null == publisher) {\r\n+            PublisherRegistration registration = new PublisherRegistration(serviceInstance.getServiceName());\r\n+            registration.setGroup(DEFAULT_GROUP);\r\n+            publisher = registryClient.register(registration, gson.toJson(sofaRegistryInstance));\r\n+\r\n+            publishers.put(serviceInstance.getServiceName(), publisher);\r\n+        } else {\r\n+            publisher.republish(gson.toJson(sofaRegistryInstance));\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        register(serviceInstance);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        registryClient.unregister(serviceInstance.getServiceName(), DEFAULT_GROUP, RegistryType.PUBLISHER);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\r\n+        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName, listener));\r\n+    }\r\n+\r\n+    protected void registerServiceWatcher(String serviceName, ServiceInstancesChangedListener listener) {\r\n+        Subscriber subscriber = subscribers.get(serviceName);\r\n+\r\n+        if (null == subscriber) {\r\n+            final CountDownLatch latch = new CountDownLatch(1);\r\n+            SubscriberRegistration subscriberRegistration = new SubscriberRegistration(serviceName, (dataId, data) -> {\r\n+                handleRegistryData(dataId, data, listener, latch);\r\n+            });\r\n+            subscriberRegistration.setGroup(DEFAULT_GROUP);\r\n+            subscriberRegistration.setScopeEnum(ScopeEnum.global);\r\n+\r\n+            subscriber = registryClient.register(subscriberRegistration);\r\n+            subscribers.put(serviceName, subscriber);\r\n+            waitAddress(serviceName, latch);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly)\r\n+            throws NullPointerException, IllegalArgumentException, UnsupportedOperationException {\r\n+        Subscriber subscriber = subscribers.get(serviceName);\r\n+\r\n+        if (null != subscriber) {\r\n+            List<ServiceInstance> serviceInstanceList = handleRegistryData(serviceName, subscriber.peekData(), null, null);\r\n+            return new DefaultPage<>(offset, pageSize, serviceInstanceList, serviceInstanceList.size());\r\n+        }\r\n+\r\n+        throw new RpcException(\"getInstances error!\");\r\n+    }\r\n+\r\n+    private List<ServiceInstance> handleRegistryData(String dataId, UserData userData, ServiceInstancesChangedListener listener, CountDownLatch latch) {\r\n+        try {\r\n+            List<String> datas = getUserData(dataId, userData);\r\n+            List<ServiceInstance> serviceInstances = new ArrayList<>(datas.size());\r\n+\r\n+            for (String serviceData : datas) {\r\n+                SofaRegistryInstance sri = gson.fromJson(serviceData, SofaRegistryInstance.class);\r\n+\r\n+                DefaultServiceInstance serviceInstance = new DefaultServiceInstance(sri.getId(), dataId, sri.getHost(), sri.getPort());\r\n+                serviceInstance.setMetadata(sri.getMetadata());\r\n+                serviceInstances.add(serviceInstance);\r\n+            }\r\n+\r\n+            if (null != listener) {\r\n+                listener.onEvent(new ServiceInstancesChangedEvent(dataId, serviceInstances));\r\n+            }\r\n+\r\n+            return serviceInstances;\r\n+        } finally {\r\n+            if (null != latch) {\r\n+                latch.countDown();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void waitAddress(String serviceName, CountDownLatch countDownLatch) {\r\n+        try {\r\n+            if (!countDownLatch.await(waitAddressTimeout, TimeUnit.MILLISECONDS)) {\r\n+                LOGGER.warn(\"Subscribe data failed by dataId \" + serviceName);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            LOGGER.error(\"Error when wait Address!\", e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Print address data.\r\n+     *\r\n+     * @param dataId   the data id\r\n+     * @param userData the user data\r\n+     */\r\n+    protected List<String> getUserData(String dataId, UserData userData) {\r\n+\r\n+        List<String> datas = null;\r\n+        if (userData == null) {\r\n+            datas = new ArrayList<>(0);\r\n+        } else {\r\n+            datas = flatUserData(userData);\r\n+        }\r\n+\r\n+        StringBuilder sb = new StringBuilder();\r\n+        for (String provider : datas) {\r\n+            sb.append(\"  >>> \").append(provider).append(\"\\n\");\r\n+        }\r\n+        if (LOGGER.isInfoEnabled()) {\r\n+            LOGGER.info(\"Receive updated RPC service addresses: service[\" + dataId\r\n+                    + \"]\\n  .Available target addresses size [\" + datas.size() + \"]\\n\"\r\n+                    + sb.toString());\r\n+        }\r\n+\r\n+        return datas;\r\n+    }\r\n+\r\n+    /**\r\n+     * Flat user data list.\r\n+     *\r\n+     * @param userData the user data\r\n+     * @return the list\r\n+     */\r\n+    protected List<String> flatUserData(UserData userData) {\r\n+        List<String> result = new ArrayList<>();\r\n+        Map<String, List<String>> zoneData = userData.getZoneData();\r\n+\r\n+        for (Map.Entry<String, List<String>> entry : zoneData.entrySet()) {\r\n+            result.addAll(entry.getValue());\r\n+        }\r\n+\r\n+        return result;\r\n+    }\r\n+\r\n+    /**\r\n+     * @return\r\n+     * @TODO \u540e\u7eed\u786e\u8ba4\u4e0b\r\n+     */\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return subscribers.keySet();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,28 +1,28 @@\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.registry.sofa;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class SofaRegistryServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new SofaRegistryServiceDiscovery();\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.registry.sofa;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class SofaRegistryServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new SofaRegistryServiceDiscovery();\r\n+    }\r\n+}\r\n"}]}
