{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo {}", "source2": "zipinfo {}", "unified_diff": "@@ -1,25 +1,25 @@\n-Zip file size: 50714 bytes, number of entries: 23\n+Zip file size: 51417 bytes, number of entries: 23\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 META-INF/\n -rw----     2.0 fat     3533 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      187 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       80 bX stor 70-Jan-01 00:00 META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory\n+-rw----     2.0 fat       81 bX stor 70-Jan-01 00:00 META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory\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-metadata-report-failover/\n -rw----     2.0 fat        0 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.properties\n--rw----     2.0 fat     1806 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml\n+-rw----     2.0 fat     1763 bX stor 70-Jan-01 00:00 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/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/metadata/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/\n -rw----     2.0 fat        0 bx stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/\n--rw----     2.0 fat     1687 bX stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/FailoverCondition.java\n--rw----     2.0 fat    23562 bX stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java\n--rw----     2.0 fat     1239 bX stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java\n--rw----     2.0 fat     3157 bX stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java\n-23 files, 46634 bytes uncompressed, 46634 bytes compressed:  0.0%\n+-rw----     2.0 fat     1737 bX stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/FailoverCondition.java\n+-rw----     2.0 fat    24142 bX stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java\n+-rw----     2.0 fat     1267 bX stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java\n+-rw----     2.0 fat     3244 bX stor 70-Jan-01 00:00 org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java\n+23 files, 47337 bytes uncompressed, 47337 bytes compressed:  0.0%\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -192,1060 +192,1060 @@\n # WARNING: Offset 0x3CE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 3D34 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n 3D36   Length              0005 (5)\n 3D38   Flags               01 (1) 'Modification'\n 3D39   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-3D3D PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+3D3D PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-3D8D DATA DESCRIPTOR       08074B50 (134695760)\n-3D91 CRC                   09B68607 (162956807)\n-3D95 Compressed Size       00000050 (80)\n-3D99 Uncompressed Size     00000050 (80)\n-\n-3D9D LOCAL HEADER #9       04034B50 (67324752)\n-3DA1 Extract Zip Spec      14 (20) '2.0'\n-3DA2 Extract OS            00 (0) 'MS-DOS'\n-3DA3 General Purpose Flag  0000 (0)\n-3DA5 Compression Method    0000 (0) 'Stored'\n-3DA7 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-3DAB CRC                   00000000 (0)\n-3DAF Compressed Size       00000000 (0)\n-3DB3 Uncompressed Size     00000000 (0)\n-3DB7 Filename Length       000F (15)\n-3DB9 Extra Length          0009 (9)\n-3DBB Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x3DBB: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-3DCA Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-3DCC   Length              0005 (5)\n-3DCE   Flags               01 (1) 'Modification'\n-3DCF   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-3DD3 LOCAL HEADER #10      04034B50 (67324752)\n-3DD7 Extract Zip Spec      14 (20) '2.0'\n-3DD8 Extract OS            00 (0) 'MS-DOS'\n-3DD9 General Purpose Flag  0000 (0)\n-3DDB Compression Method    0000 (0) 'Stored'\n-3DDD Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-3DE1 CRC                   00000000 (0)\n-3DE5 Compressed Size       00000000 (0)\n-3DE9 Uncompressed Size     00000000 (0)\n-3DED Filename Length       0020 (32)\n-3DEF Extra Length          0009 (9)\n-3DF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x3DF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-3E11 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-3E13   Length              0005 (5)\n-3E15   Flags               01 (1) 'Modification'\n-3E16   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-3E1A LOCAL HEADER #11      04034B50 (67324752)\n-3E1E Extract Zip Spec      14 (20) '2.0'\n-3E1F Extract OS            00 (0) 'MS-DOS'\n-3E20 General Purpose Flag  0000 (0)\n-3E22 Compression Method    0000 (0) 'Stored'\n-3E24 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-3E28 CRC                   00000000 (0)\n-3E2C Compressed Size       00000000 (0)\n-3E30 Uncompressed Size     00000000 (0)\n-3E34 Filename Length       003F (63)\n-3E36 Extra Length          0009 (9)\n-3E38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x3E38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-3E77 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-3E79   Length              0005 (5)\n-3E7B   Flags               01 (1) 'Modification'\n-3E7C   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-3E80 LOCAL HEADER #12      04034B50 (67324752)\n-3E84 Extract Zip Spec      14 (20) '2.0'\n-3E85 Extract OS            00 (0) 'MS-DOS'\n-3E86 General Purpose Flag  0008 (8)\n+3D8E DATA DESCRIPTOR       08074B50 (134695760)\n+3D92 CRC                   E3FBB371 (3824923505)\n+3D96 Compressed Size       00000051 (81)\n+3D9A Uncompressed Size     00000051 (81)\n+\n+3D9E LOCAL HEADER #9       04034B50 (67324752)\n+3DA2 Extract Zip Spec      14 (20) '2.0'\n+3DA3 Extract OS            00 (0) 'MS-DOS'\n+3DA4 General Purpose Flag  0000 (0)\n+3DA6 Compression Method    0000 (0) 'Stored'\n+3DA8 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+3DAC CRC                   00000000 (0)\n+3DB0 Compressed Size       00000000 (0)\n+3DB4 Uncompressed Size     00000000 (0)\n+3DB8 Filename Length       000F (15)\n+3DBA Extra Length          0009 (9)\n+3DBC Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x3DBC: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+3DCB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+3DCD   Length              0005 (5)\n+3DCF   Flags               01 (1) 'Modification'\n+3DD0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+3DD4 LOCAL HEADER #10      04034B50 (67324752)\n+3DD8 Extract Zip Spec      14 (20) '2.0'\n+3DD9 Extract OS            00 (0) 'MS-DOS'\n+3DDA General Purpose Flag  0000 (0)\n+3DDC Compression Method    0000 (0) 'Stored'\n+3DDE Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+3DE2 CRC                   00000000 (0)\n+3DE6 Compressed Size       00000000 (0)\n+3DEA Uncompressed Size     00000000 (0)\n+3DEE Filename Length       0020 (32)\n+3DF0 Extra Length          0009 (9)\n+3DF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x3DF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+3E12 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+3E14   Length              0005 (5)\n+3E16   Flags               01 (1) 'Modification'\n+3E17   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+3E1B LOCAL HEADER #11      04034B50 (67324752)\n+3E1F Extract Zip Spec      14 (20) '2.0'\n+3E20 Extract OS            00 (0) 'MS-DOS'\n+3E21 General Purpose Flag  0000 (0)\n+3E23 Compression Method    0000 (0) 'Stored'\n+3E25 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+3E29 CRC                   00000000 (0)\n+3E2D Compressed Size       00000000 (0)\n+3E31 Uncompressed Size     00000000 (0)\n+3E35 Filename Length       003F (63)\n+3E37 Extra Length          0009 (9)\n+3E39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x3E39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+3E78 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+3E7A   Length              0005 (5)\n+3E7C   Flags               01 (1) 'Modification'\n+3E7D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+3E81 LOCAL HEADER #12      04034B50 (67324752)\n+3E85 Extract Zip Spec      14 (20) '2.0'\n+3E86 Extract OS            00 (0) 'MS-DOS'\n+3E87 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-3E88 Compression Method    0000 (0) 'Stored'\n-3E8A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-3E8E CRC                   00000000 (0)\n-3E92 Compressed Size       00000000 (0)\n-3E96 Uncompressed Size     00000000 (0)\n-3E9A Filename Length       004D (77)\n-3E9C Extra Length          0009 (9)\n-3E9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x3E9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-3EEB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-3EED   Length              0005 (5)\n-3EEF   Flags               01 (1) 'Modification'\n-3EF0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-3EF4 DATA DESCRIPTOR       08074B50 (134695760)\n-3EF8 CRC                   00000000 (0)\n-3EFC Compressed Size       00000000 (0)\n-3F00 Uncompressed Size     00000000 (0)\n-\n-3F04 LOCAL HEADER #13      04034B50 (67324752)\n-3F08 Extract Zip Spec      14 (20) '2.0'\n-3F09 Extract OS            00 (0) 'MS-DOS'\n-3F0A General Purpose Flag  0008 (8)\n+3E89 Compression Method    0000 (0) 'Stored'\n+3E8B Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+3E8F CRC                   00000000 (0)\n+3E93 Compressed Size       00000000 (0)\n+3E97 Uncompressed Size     00000000 (0)\n+3E9B Filename Length       004D (77)\n+3E9D Extra Length          0009 (9)\n+3E9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x3E9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+3EEC Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+3EEE   Length              0005 (5)\n+3EF0   Flags               01 (1) 'Modification'\n+3EF1   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+3EF5 DATA DESCRIPTOR       08074B50 (134695760)\n+3EF9 CRC                   00000000 (0)\n+3EFD Compressed Size       00000000 (0)\n+3F01 Uncompressed Size     00000000 (0)\n+\n+3F05 LOCAL HEADER #13      04034B50 (67324752)\n+3F09 Extract Zip Spec      14 (20) '2.0'\n+3F0A Extract OS            00 (0) 'MS-DOS'\n+3F0B General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-3F0C Compression Method    0000 (0) 'Stored'\n-3F0E Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-3F12 CRC                   00000000 (0)\n-3F16 Compressed Size       00000000 (0)\n-3F1A Uncompressed Size     00000000 (0)\n-3F1E Filename Length       0046 (70)\n-3F20 Extra Length          0009 (9)\n-3F22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x3F22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-3F68 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-3F6A   Length              0005 (5)\n-3F6C   Flags               01 (1) 'Modification'\n-3F6D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-3F71 PAYLOAD\n-\n-467F DATA DESCRIPTOR       08074B50 (134695760)\n-4683 CRC                   2219CEA0 (572116640)\n-4687 Compressed Size       0000070E (1806)\n-468B Uncompressed Size     0000070E (1806)\n-\n-468F LOCAL HEADER #14      04034B50 (67324752)\n-4693 Extract Zip Spec      14 (20) '2.0'\n-4694 Extract OS            00 (0) 'MS-DOS'\n-4695 General Purpose Flag  0000 (0)\n-4697 Compression Method    0000 (0) 'Stored'\n-4699 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-469D CRC                   00000000 (0)\n-46A1 Compressed Size       00000000 (0)\n-46A5 Uncompressed Size     00000000 (0)\n-46A9 Filename Length       0004 (4)\n-46AB Extra Length          0009 (9)\n-46AD Filename              'XXXX'\n-#\n-# WARNING: Offset 0x46AD: Filename 'XXXX'\n-#          Zero length filename\n-#\n-46B1 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-46B3   Length              0005 (5)\n-46B5   Flags               01 (1) 'Modification'\n-46B6   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-46BA LOCAL HEADER #15      04034B50 (67324752)\n-46BE Extract Zip Spec      14 (20) '2.0'\n-46BF Extract OS            00 (0) 'MS-DOS'\n-46C0 General Purpose Flag  0000 (0)\n-46C2 Compression Method    0000 (0) 'Stored'\n-46C4 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-46C8 CRC                   00000000 (0)\n-46CC Compressed Size       00000000 (0)\n-46D0 Uncompressed Size     00000000 (0)\n-46D4 Filename Length       000B (11)\n-46D6 Extra Length          0009 (9)\n-46D8 Filename              'XXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x46D8: Filename 'XXXXXXXXXXX'\n-#          Zero length filename\n-#\n-46E3 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-46E5   Length              0005 (5)\n-46E7   Flags               01 (1) 'Modification'\n-46E8   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-46EC LOCAL HEADER #16      04034B50 (67324752)\n-46F0 Extract Zip Spec      14 (20) '2.0'\n-46F1 Extract OS            00 (0) 'MS-DOS'\n-46F2 General Purpose Flag  0000 (0)\n-46F4 Compression Method    0000 (0) 'Stored'\n-46F6 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-46FA CRC                   00000000 (0)\n-46FE Compressed Size       00000000 (0)\n-4702 Uncompressed Size     00000000 (0)\n-4706 Filename Length       0011 (17)\n-4708 Extra Length          0009 (9)\n-470A Filename              'XXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x470A: Filename 'XXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-471B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-471D   Length              0005 (5)\n-471F   Flags               01 (1) 'Modification'\n-4720   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-4724 LOCAL HEADER #17      04034B50 (67324752)\n-4728 Extract Zip Spec      14 (20) '2.0'\n-4729 Extract OS            00 (0) 'MS-DOS'\n-472A General Purpose Flag  0000 (0)\n-472C Compression Method    0000 (0) 'Stored'\n-472E Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-4732 CRC                   00000000 (0)\n-4736 Compressed Size       00000000 (0)\n-473A Uncompressed Size     00000000 (0)\n-473E Filename Length       001A (26)\n-4740 Extra Length          0009 (9)\n-4742 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x4742: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-475C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-475E   Length              0005 (5)\n-4760   Flags               01 (1) 'Modification'\n-4761   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-4765 LOCAL HEADER #18      04034B50 (67324752)\n-4769 Extract Zip Spec      14 (20) '2.0'\n-476A Extract OS            00 (0) 'MS-DOS'\n-476B General Purpose Flag  0000 (0)\n-476D Compression Method    0000 (0) 'Stored'\n-476F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-4773 CRC                   00000000 (0)\n-4777 Compressed Size       00000000 (0)\n-477B Uncompressed Size     00000000 (0)\n-477F Filename Length       0020 (32)\n-4781 Extra Length          0009 (9)\n-4783 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x4783: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-47A3 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-47A5   Length              0005 (5)\n-47A7   Flags               01 (1) 'Modification'\n-47A8   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-47AC LOCAL HEADER #19      04034B50 (67324752)\n-47B0 Extract Zip Spec      14 (20) '2.0'\n-47B1 Extract OS            00 (0) 'MS-DOS'\n-47B2 General Purpose Flag  0000 (0)\n-47B4 Compression Method    0000 (0) 'Stored'\n-47B6 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-47BA CRC                   00000000 (0)\n-47BE Compressed Size       00000000 (0)\n-47C2 Uncompressed Size     00000000 (0)\n-47C6 Filename Length       0029 (41)\n-47C8 Extra Length          0009 (9)\n-47CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x47CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-47F3 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-47F5   Length              0005 (5)\n-47F7   Flags               01 (1) 'Modification'\n-47F8   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-47FC LOCAL HEADER #20      04034B50 (67324752)\n-4800 Extract Zip Spec      14 (20) '2.0'\n-4801 Extract OS            00 (0) 'MS-DOS'\n-4802 General Purpose Flag  0008 (8)\n+3F0D Compression Method    0000 (0) 'Stored'\n+3F0F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+3F13 CRC                   00000000 (0)\n+3F17 Compressed Size       00000000 (0)\n+3F1B Uncompressed Size     00000000 (0)\n+3F1F Filename Length       0046 (70)\n+3F21 Extra Length          0009 (9)\n+3F23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x3F23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+3F69 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+3F6B   Length              0005 (5)\n+3F6D   Flags               01 (1) 'Modification'\n+3F6E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+3F72 PAYLOAD\n+\n+4655 DATA DESCRIPTOR       08074B50 (134695760)\n+4659 CRC                   9E243A48 (2653174344)\n+465D Compressed Size       000006E3 (1763)\n+4661 Uncompressed Size     000006E3 (1763)\n+\n+4665 LOCAL HEADER #14      04034B50 (67324752)\n+4669 Extract Zip Spec      14 (20) '2.0'\n+466A Extract OS            00 (0) 'MS-DOS'\n+466B General Purpose Flag  0000 (0)\n+466D Compression Method    0000 (0) 'Stored'\n+466F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+4673 CRC                   00000000 (0)\n+4677 Compressed Size       00000000 (0)\n+467B Uncompressed Size     00000000 (0)\n+467F Filename Length       0004 (4)\n+4681 Extra Length          0009 (9)\n+4683 Filename              'XXXX'\n+#\n+# WARNING: Offset 0x4683: Filename 'XXXX'\n+#          Zero length filename\n+#\n+4687 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+4689   Length              0005 (5)\n+468B   Flags               01 (1) 'Modification'\n+468C   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+4690 LOCAL HEADER #15      04034B50 (67324752)\n+4694 Extract Zip Spec      14 (20) '2.0'\n+4695 Extract OS            00 (0) 'MS-DOS'\n+4696 General Purpose Flag  0000 (0)\n+4698 Compression Method    0000 (0) 'Stored'\n+469A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+469E CRC                   00000000 (0)\n+46A2 Compressed Size       00000000 (0)\n+46A6 Uncompressed Size     00000000 (0)\n+46AA Filename Length       000B (11)\n+46AC Extra Length          0009 (9)\n+46AE Filename              'XXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x46AE: Filename 'XXXXXXXXXXX'\n+#          Zero length filename\n+#\n+46B9 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+46BB   Length              0005 (5)\n+46BD   Flags               01 (1) 'Modification'\n+46BE   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+46C2 LOCAL HEADER #16      04034B50 (67324752)\n+46C6 Extract Zip Spec      14 (20) '2.0'\n+46C7 Extract OS            00 (0) 'MS-DOS'\n+46C8 General Purpose Flag  0000 (0)\n+46CA Compression Method    0000 (0) 'Stored'\n+46CC Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+46D0 CRC                   00000000 (0)\n+46D4 Compressed Size       00000000 (0)\n+46D8 Uncompressed Size     00000000 (0)\n+46DC Filename Length       0011 (17)\n+46DE Extra Length          0009 (9)\n+46E0 Filename              'XXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x46E0: Filename 'XXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+46F1 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+46F3   Length              0005 (5)\n+46F5   Flags               01 (1) 'Modification'\n+46F6   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+46FA LOCAL HEADER #17      04034B50 (67324752)\n+46FE Extract Zip Spec      14 (20) '2.0'\n+46FF Extract OS            00 (0) 'MS-DOS'\n+4700 General Purpose Flag  0000 (0)\n+4702 Compression Method    0000 (0) 'Stored'\n+4704 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+4708 CRC                   00000000 (0)\n+470C Compressed Size       00000000 (0)\n+4710 Uncompressed Size     00000000 (0)\n+4714 Filename Length       001A (26)\n+4716 Extra Length          0009 (9)\n+4718 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x4718: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+4732 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+4734   Length              0005 (5)\n+4736   Flags               01 (1) 'Modification'\n+4737   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+473B LOCAL HEADER #18      04034B50 (67324752)\n+473F Extract Zip Spec      14 (20) '2.0'\n+4740 Extract OS            00 (0) 'MS-DOS'\n+4741 General Purpose Flag  0000 (0)\n+4743 Compression Method    0000 (0) 'Stored'\n+4745 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+4749 CRC                   00000000 (0)\n+474D Compressed Size       00000000 (0)\n+4751 Uncompressed Size     00000000 (0)\n+4755 Filename Length       0020 (32)\n+4757 Extra Length          0009 (9)\n+4759 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x4759: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+4779 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+477B   Length              0005 (5)\n+477D   Flags               01 (1) 'Modification'\n+477E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+4782 LOCAL HEADER #19      04034B50 (67324752)\n+4786 Extract Zip Spec      14 (20) '2.0'\n+4787 Extract OS            00 (0) 'MS-DOS'\n+4788 General Purpose Flag  0000 (0)\n+478A Compression Method    0000 (0) 'Stored'\n+478C Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+4790 CRC                   00000000 (0)\n+4794 Compressed Size       00000000 (0)\n+4798 Uncompressed Size     00000000 (0)\n+479C Filename Length       0029 (41)\n+479E Extra Length          0009 (9)\n+47A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x47A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+47C9 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+47CB   Length              0005 (5)\n+47CD   Flags               01 (1) 'Modification'\n+47CE   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+47D2 LOCAL HEADER #20      04034B50 (67324752)\n+47D6 Extract Zip Spec      14 (20) '2.0'\n+47D7 Extract OS            00 (0) 'MS-DOS'\n+47D8 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-4804 Compression Method    0000 (0) 'Stored'\n-4806 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-480A CRC                   00000000 (0)\n-480E Compressed Size       00000000 (0)\n-4812 Uncompressed Size     00000000 (0)\n-4816 Filename Length       003F (63)\n-4818 Extra Length          0009 (9)\n-481A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x481A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-4859 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-485B   Length              0005 (5)\n-485D   Flags               01 (1) 'Modification'\n-485E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-4862 PAYLOAD\n-\n-4EF9 DATA DESCRIPTOR       08074B50 (134695760)\n-4EFD CRC                   AB30D581 (2872104321)\n-4F01 Compressed Size       00000697 (1687)\n-4F05 Uncompressed Size     00000697 (1687)\n-\n-4F09 LOCAL HEADER #21      04034B50 (67324752)\n-4F0D Extract Zip Spec      14 (20) '2.0'\n-4F0E Extract OS            00 (0) 'MS-DOS'\n-4F0F General Purpose Flag  0008 (8)\n+47DA Compression Method    0000 (0) 'Stored'\n+47DC Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+47E0 CRC                   00000000 (0)\n+47E4 Compressed Size       00000000 (0)\n+47E8 Uncompressed Size     00000000 (0)\n+47EC Filename Length       003F (63)\n+47EE Extra Length          0009 (9)\n+47F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x47F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+482F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+4831   Length              0005 (5)\n+4833   Flags               01 (1) 'Modification'\n+4834   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+4838 PAYLOAD\n+\n+4F01 DATA DESCRIPTOR       08074B50 (134695760)\n+4F05 CRC                   C5E6E015 (3320242197)\n+4F09 Compressed Size       000006C9 (1737)\n+4F0D Uncompressed Size     000006C9 (1737)\n+\n+4F11 LOCAL HEADER #21      04034B50 (67324752)\n+4F15 Extract Zip Spec      14 (20) '2.0'\n+4F16 Extract OS            00 (0) 'MS-DOS'\n+4F17 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-4F11 Compression Method    0000 (0) 'Stored'\n-4F13 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-4F17 CRC                   00000000 (0)\n-4F1B Compressed Size       00000000 (0)\n-4F1F Uncompressed Size     00000000 (0)\n-4F23 Filename Length       0044 (68)\n-4F25 Extra Length          0009 (9)\n-4F27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0x4F27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-4F6B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-4F6D   Length              0005 (5)\n-4F6F   Flags               01 (1) 'Modification'\n-4F70   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-4F74 PAYLOAD\n-\n-AB7E DATA DESCRIPTOR       08074B50 (134695760)\n-AB82 CRC                   546B40F4 (1416315124)\n-AB86 Compressed Size       00005C0A (23562)\n-AB8A Uncompressed Size     00005C0A (23562)\n-\n-AB8E LOCAL HEADER #22      04034B50 (67324752)\n-AB92 Extract Zip Spec      14 (20) '2.0'\n-AB93 Extract OS            00 (0) 'MS-DOS'\n-AB94 General Purpose Flag  0008 (8)\n+4F19 Compression Method    0000 (0) 'Stored'\n+4F1B Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+4F1F CRC                   00000000 (0)\n+4F23 Compressed Size       00000000 (0)\n+4F27 Uncompressed Size     00000000 (0)\n+4F2B Filename Length       0044 (68)\n+4F2D Extra Length          0009 (9)\n+4F2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0x4F2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+4F73 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+4F75   Length              0005 (5)\n+4F77   Flags               01 (1) 'Modification'\n+4F78   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+4F7C PAYLOAD\n+\n+ADCA DATA DESCRIPTOR       08074B50 (134695760)\n+ADCE CRC                   95EACAEA (2515192554)\n+ADD2 Compressed Size       00005E4E (24142)\n+ADD6 Uncompressed Size     00005E4E (24142)\n+\n+ADDA LOCAL HEADER #22      04034B50 (67324752)\n+ADDE Extract Zip Spec      14 (20) '2.0'\n+ADDF Extract OS            00 (0) 'MS-DOS'\n+ADE0 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-AB96 Compression Method    0000 (0) 'Stored'\n-AB98 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-AB9C CRC                   00000000 (0)\n-ABA0 Compressed Size       00000000 (0)\n-ABA4 Uncompressed Size     00000000 (0)\n-ABA8 Filename Length       004B (75)\n-ABAA Extra Length          0009 (9)\n-ABAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xABAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-ABF7 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-ABF9   Length              0005 (5)\n-ABFB   Flags               01 (1) 'Modification'\n-ABFC   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-AC00 PAYLOAD\n-\n-B0D7 DATA DESCRIPTOR       08074B50 (134695760)\n-B0DB CRC                   3F1A06E9 (1058670313)\n-B0DF Compressed Size       000004D7 (1239)\n-B0E3 Uncompressed Size     000004D7 (1239)\n-\n-B0E7 LOCAL HEADER #23      04034B50 (67324752)\n-B0EB Extract Zip Spec      14 (20) '2.0'\n-B0EC Extract OS            00 (0) 'MS-DOS'\n-B0ED General Purpose Flag  0008 (8)\n+ADE2 Compression Method    0000 (0) 'Stored'\n+ADE4 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+ADE8 CRC                   00000000 (0)\n+ADEC Compressed Size       00000000 (0)\n+ADF0 Uncompressed Size     00000000 (0)\n+ADF4 Filename Length       004B (75)\n+ADF6 Extra Length          0009 (9)\n+ADF8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xADF8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+AE43 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+AE45   Length              0005 (5)\n+AE47   Flags               01 (1) 'Modification'\n+AE48   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+AE4C PAYLOAD\n+\n+B33F DATA DESCRIPTOR       08074B50 (134695760)\n+B343 CRC                   880754E1 (2282181857)\n+B347 Compressed Size       000004F3 (1267)\n+B34B Uncompressed Size     000004F3 (1267)\n+\n+B34F LOCAL HEADER #23      04034B50 (67324752)\n+B353 Extract Zip Spec      14 (20) '2.0'\n+B354 Extract OS            00 (0) 'MS-DOS'\n+B355 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-B0EF Compression Method    0000 (0) 'Stored'\n-B0F1 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-B0F5 CRC                   00000000 (0)\n-B0F9 Compressed Size       00000000 (0)\n-B0FD Uncompressed Size     00000000 (0)\n-B101 Filename Length       0044 (68)\n-B103 Extra Length          0009 (9)\n-B105 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xB105: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-B149 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-B14B   Length              0005 (5)\n-B14D   Flags               01 (1) 'Modification'\n-B14E   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-B152 PAYLOAD\n-\n-BDA7 DATA DESCRIPTOR       08074B50 (134695760)\n-BDAB CRC                   A5D0004C (2781872204)\n-BDAF Compressed Size       00000C55 (3157)\n-BDB3 Uncompressed Size     00000C55 (3157)\n-\n-BDB7 CENTRAL HEADER #1     02014B50 (33639248)\n-BDBB Created Zip Spec      14 (20) '2.0'\n-BDBC Created OS            00 (0) 'MS-DOS'\n-BDBD Extract Zip Spec      14 (20) '2.0'\n-BDBE Extract OS            00 (0) 'MS-DOS'\n-BDBF General Purpose Flag  0000 (0)\n-BDC1 Compression Method    0000 (0) 'Stored'\n-BDC3 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-BDC7 CRC                   00000000 (0)\n-BDCB Compressed Size       00000000 (0)\n-BDCF Uncompressed Size     00000000 (0)\n-BDD3 Filename Length       0009 (9)\n-BDD5 Extra Length          0009 (9)\n-BDD7 Comment Length        0000 (0)\n-BDD9 Disk Start            0000 (0)\n-BDDB Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-BDDD Ext File Attributes   00000000 (0)\n-BDE1 Local Header Offset   00000000 (0)\n-BDE5 Filename              'XXXXXXXXX'\n-#\n-# WARNING: Offset 0xBDE5: Filename 'XXXXXXXXX'\n-#          Zero length filename\n-#\n-BDEE Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-BDF0   Length              0005 (5)\n-BDF2   Flags               01 (1) 'Modification'\n-BDF3   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-BDF7 CENTRAL HEADER #2     02014B50 (33639248)\n-BDFB Created Zip Spec      14 (20) '2.0'\n-BDFC Created OS            00 (0) 'MS-DOS'\n-BDFD Extract Zip Spec      14 (20) '2.0'\n-BDFE Extract OS            00 (0) 'MS-DOS'\n-BDFF General Purpose Flag  0008 (8)\n+B357 Compression Method    0000 (0) 'Stored'\n+B359 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+B35D CRC                   00000000 (0)\n+B361 Compressed Size       00000000 (0)\n+B365 Uncompressed Size     00000000 (0)\n+B369 Filename Length       0044 (68)\n+B36B Extra Length          0009 (9)\n+B36D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xB36D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+B3B1 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+B3B3   Length              0005 (5)\n+B3B5   Flags               01 (1) 'Modification'\n+B3B6   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+B3BA PAYLOAD\n+\n+C066 DATA DESCRIPTOR       08074B50 (134695760)\n+C06A CRC                   3DD6411C (1037451548)\n+C06E Compressed Size       00000CAC (3244)\n+C072 Uncompressed Size     00000CAC (3244)\n+\n+C076 CENTRAL HEADER #1     02014B50 (33639248)\n+C07A Created Zip Spec      14 (20) '2.0'\n+C07B Created OS            00 (0) 'MS-DOS'\n+C07C Extract Zip Spec      14 (20) '2.0'\n+C07D Extract OS            00 (0) 'MS-DOS'\n+C07E General Purpose Flag  0000 (0)\n+C080 Compression Method    0000 (0) 'Stored'\n+C082 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C086 CRC                   00000000 (0)\n+C08A Compressed Size       00000000 (0)\n+C08E Uncompressed Size     00000000 (0)\n+C092 Filename Length       0009 (9)\n+C094 Extra Length          0009 (9)\n+C096 Comment Length        0000 (0)\n+C098 Disk Start            0000 (0)\n+C09A Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C09C Ext File Attributes   00000000 (0)\n+C0A0 Local Header Offset   00000000 (0)\n+C0A4 Filename              'XXXXXXXXX'\n+#\n+# WARNING: Offset 0xC0A4: Filename 'XXXXXXXXX'\n+#          Zero length filename\n+#\n+C0AD Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C0AF   Length              0005 (5)\n+C0B1   Flags               01 (1) 'Modification'\n+C0B2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C0B6 CENTRAL HEADER #2     02014B50 (33639248)\n+C0BA Created Zip Spec      14 (20) '2.0'\n+C0BB Created OS            00 (0) 'MS-DOS'\n+C0BC Extract Zip Spec      14 (20) '2.0'\n+C0BD Extract OS            00 (0) 'MS-DOS'\n+C0BE General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-BE01 Compression Method    0000 (0) 'Stored'\n-BE03 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-BE07 CRC                   2E61A3FD (778150909)\n-BE0B Compressed Size       00000DCD (3533)\n-BE0F Uncompressed Size     00000DCD (3533)\n-BE13 Filename Length       0015 (21)\n-BE15 Extra Length          0009 (9)\n-BE17 Comment Length        0000 (0)\n-BE19 Disk Start            0000 (0)\n-BE1B Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-BE1D Ext File Attributes   00000000 (0)\n-BE21 Local Header Offset   00000030 (48)\n-BE25 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xBE25: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-BE3A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-BE3C   Length              0005 (5)\n-BE3E   Flags               01 (1) 'Modification'\n-BE3F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-BE43 CENTRAL HEADER #3     02014B50 (33639248)\n-BE47 Created Zip Spec      14 (20) '2.0'\n-BE48 Created OS            00 (0) 'MS-DOS'\n-BE49 Extract Zip Spec      14 (20) '2.0'\n-BE4A Extract OS            00 (0) 'MS-DOS'\n-BE4B General Purpose Flag  0008 (8)\n+C0C0 Compression Method    0000 (0) 'Stored'\n+C0C2 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C0C6 CRC                   2E61A3FD (778150909)\n+C0CA Compressed Size       00000DCD (3533)\n+C0CE Uncompressed Size     00000DCD (3533)\n+C0D2 Filename Length       0015 (21)\n+C0D4 Extra Length          0009 (9)\n+C0D6 Comment Length        0000 (0)\n+C0D8 Disk Start            0000 (0)\n+C0DA Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C0DC Ext File Attributes   00000000 (0)\n+C0E0 Local Header Offset   00000030 (48)\n+C0E4 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC0E4: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C0F9 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C0FB   Length              0005 (5)\n+C0FD   Flags               01 (1) 'Modification'\n+C0FE   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C102 CENTRAL HEADER #3     02014B50 (33639248)\n+C106 Created Zip Spec      14 (20) '2.0'\n+C107 Created OS            00 (0) 'MS-DOS'\n+C108 Extract Zip Spec      14 (20) '2.0'\n+C109 Extract OS            00 (0) 'MS-DOS'\n+C10A General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-BE4D Compression Method    0000 (0) 'Stored'\n-BE4F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-BE53 CRC                   86E2B4B4 (2263004340)\n-BE57 Compressed Size       00002C5E (11358)\n-BE5B Uncompressed Size     00002C5E (11358)\n-BE5F Filename Length       0010 (16)\n-BE61 Extra Length          0009 (9)\n-BE63 Comment Length        0000 (0)\n-BE65 Disk Start            0000 (0)\n-BE67 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-BE69 Ext File Attributes   00000000 (0)\n-BE6D Local Header Offset   00000E49 (3657)\n-BE71 Filename              'XXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xBE71: Filename 'XXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-BE81 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-BE83   Length              0005 (5)\n-BE85   Flags               01 (1) 'Modification'\n-BE86   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-BE8A CENTRAL HEADER #4     02014B50 (33639248)\n-BE8E Created Zip Spec      14 (20) '2.0'\n-BE8F Created OS            00 (0) 'MS-DOS'\n-BE90 Extract Zip Spec      14 (20) '2.0'\n-BE91 Extract OS            00 (0) 'MS-DOS'\n-BE92 General Purpose Flag  0008 (8)\n+C10C Compression Method    0000 (0) 'Stored'\n+C10E Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C112 CRC                   86E2B4B4 (2263004340)\n+C116 Compressed Size       00002C5E (11358)\n+C11A Uncompressed Size     00002C5E (11358)\n+C11E Filename Length       0010 (16)\n+C120 Extra Length          0009 (9)\n+C122 Comment Length        0000 (0)\n+C124 Disk Start            0000 (0)\n+C126 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C128 Ext File Attributes   00000000 (0)\n+C12C Local Header Offset   00000E49 (3657)\n+C130 Filename              'XXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC130: Filename 'XXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C140 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C142   Length              0005 (5)\n+C144   Flags               01 (1) 'Modification'\n+C145   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C149 CENTRAL HEADER #4     02014B50 (33639248)\n+C14D Created Zip Spec      14 (20) '2.0'\n+C14E Created OS            00 (0) 'MS-DOS'\n+C14F Extract Zip Spec      14 (20) '2.0'\n+C150 Extract OS            00 (0) 'MS-DOS'\n+C151 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-BE94 Compression Method    0000 (0) 'Stored'\n-BE96 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-BE9A CRC                   EE027FB2 (3993141170)\n-BE9E Compressed Size       00000019 (25)\n-BEA2 Uncompressed Size     00000019 (25)\n-BEA6 Filename Length       0014 (20)\n-BEA8 Extra Length          0009 (9)\n-BEAA Comment Length        0000 (0)\n-BEAC Disk Start            0000 (0)\n-BEAE Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-BEB0 Ext File Attributes   00000000 (0)\n-BEB4 Local Header Offset   00003AEE (15086)\n-BEB8 Filename              'XXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xBEB8: Filename 'XXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-BECC Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-BECE   Length              0005 (5)\n-BED0   Flags               01 (1) 'Modification'\n-BED1   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-BED5 CENTRAL HEADER #5     02014B50 (33639248)\n-BED9 Created Zip Spec      14 (20) '2.0'\n-BEDA Created OS            00 (0) 'MS-DOS'\n-BEDB Extract Zip Spec      14 (20) '2.0'\n-BEDC Extract OS            00 (0) 'MS-DOS'\n-BEDD General Purpose Flag  0008 (8)\n+C153 Compression Method    0000 (0) 'Stored'\n+C155 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C159 CRC                   EE027FB2 (3993141170)\n+C15D Compressed Size       00000019 (25)\n+C161 Uncompressed Size     00000019 (25)\n+C165 Filename Length       0014 (20)\n+C167 Extra Length          0009 (9)\n+C169 Comment Length        0000 (0)\n+C16B Disk Start            0000 (0)\n+C16D Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C16F Ext File Attributes   00000000 (0)\n+C173 Local Header Offset   00003AEE (15086)\n+C177 Filename              'XXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC177: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C18B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C18D   Length              0005 (5)\n+C18F   Flags               01 (1) 'Modification'\n+C190   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C194 CENTRAL HEADER #5     02014B50 (33639248)\n+C198 Created Zip Spec      14 (20) '2.0'\n+C199 Created OS            00 (0) 'MS-DOS'\n+C19A Extract Zip Spec      14 (20) '2.0'\n+C19B Extract OS            00 (0) 'MS-DOS'\n+C19C General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-BEDF Compression Method    0000 (0) 'Stored'\n-BEE1 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-BEE5 CRC                   43330610 (1127417360)\n-BEE9 Compressed Size       000000BB (187)\n-BEED Uncompressed Size     000000BB (187)\n-BEF1 Filename Length       000F (15)\n-BEF3 Extra Length          0009 (9)\n-BEF5 Comment Length        0000 (0)\n-BEF7 Disk Start            0000 (0)\n-BEF9 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-BEFB Ext File Attributes   00000000 (0)\n-BEFF Local Header Offset   00003B52 (15186)\n-BF03 Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xBF03: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-BF12 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-BF14   Length              0005 (5)\n-BF16   Flags               01 (1) 'Modification'\n-BF17   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-BF1B CENTRAL HEADER #6     02014B50 (33639248)\n-BF1F Created Zip Spec      14 (20) '2.0'\n-BF20 Created OS            00 (0) 'MS-DOS'\n-BF21 Extract Zip Spec      14 (20) '2.0'\n-BF22 Extract OS            00 (0) 'MS-DOS'\n-BF23 General Purpose Flag  0000 (0)\n-BF25 Compression Method    0000 (0) 'Stored'\n-BF27 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-BF2B CRC                   00000000 (0)\n-BF2F Compressed Size       00000000 (0)\n-BF33 Uncompressed Size     00000000 (0)\n-BF37 Filename Length       000F (15)\n-BF39 Extra Length          0009 (9)\n-BF3B Comment Length        0000 (0)\n-BF3D Disk Start            0000 (0)\n-BF3F Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-BF41 Ext File Attributes   00000000 (0)\n-BF45 Local Header Offset   00003C53 (15443)\n-BF49 Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xBF49: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-BF58 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-BF5A   Length              0005 (5)\n-BF5C   Flags               01 (1) 'Modification'\n-BF5D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-BF61 CENTRAL HEADER #7     02014B50 (33639248)\n-BF65 Created Zip Spec      14 (20) '2.0'\n-BF66 Created OS            00 (0) 'MS-DOS'\n-BF67 Extract Zip Spec      14 (20) '2.0'\n-BF68 Extract OS            00 (0) 'MS-DOS'\n-BF69 General Purpose Flag  0000 (0)\n-BF6B Compression Method    0000 (0) 'Stored'\n-BF6D Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-BF71 CRC                   00000000 (0)\n-BF75 Compressed Size       00000000 (0)\n-BF79 Uncompressed Size     00000000 (0)\n-BF7D Filename Length       0018 (24)\n-BF7F Extra Length          0009 (9)\n-BF81 Comment Length        0000 (0)\n-BF83 Disk Start            0000 (0)\n-BF85 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-BF87 Ext File Attributes   00000000 (0)\n-BF8B Local Header Offset   00003C89 (15497)\n-BF8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xBF8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-BFA7 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-BFA9   Length              0005 (5)\n-BFAB   Flags               01 (1) 'Modification'\n-BFAC   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-BFB0 CENTRAL HEADER #8     02014B50 (33639248)\n-BFB4 Created Zip Spec      14 (20) '2.0'\n-BFB5 Created OS            00 (0) 'MS-DOS'\n-BFB6 Extract Zip Spec      14 (20) '2.0'\n-BFB7 Extract OS            00 (0) 'MS-DOS'\n-BFB8 General Purpose Flag  0008 (8)\n+C19E Compression Method    0000 (0) 'Stored'\n+C1A0 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C1A4 CRC                   43330610 (1127417360)\n+C1A8 Compressed Size       000000BB (187)\n+C1AC Uncompressed Size     000000BB (187)\n+C1B0 Filename Length       000F (15)\n+C1B2 Extra Length          0009 (9)\n+C1B4 Comment Length        0000 (0)\n+C1B6 Disk Start            0000 (0)\n+C1B8 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C1BA Ext File Attributes   00000000 (0)\n+C1BE Local Header Offset   00003B52 (15186)\n+C1C2 Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC1C2: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C1D1 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C1D3   Length              0005 (5)\n+C1D5   Flags               01 (1) 'Modification'\n+C1D6   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C1DA CENTRAL HEADER #6     02014B50 (33639248)\n+C1DE Created Zip Spec      14 (20) '2.0'\n+C1DF Created OS            00 (0) 'MS-DOS'\n+C1E0 Extract Zip Spec      14 (20) '2.0'\n+C1E1 Extract OS            00 (0) 'MS-DOS'\n+C1E2 General Purpose Flag  0000 (0)\n+C1E4 Compression Method    0000 (0) 'Stored'\n+C1E6 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C1EA CRC                   00000000 (0)\n+C1EE Compressed Size       00000000 (0)\n+C1F2 Uncompressed Size     00000000 (0)\n+C1F6 Filename Length       000F (15)\n+C1F8 Extra Length          0009 (9)\n+C1FA Comment Length        0000 (0)\n+C1FC Disk Start            0000 (0)\n+C1FE Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C200 Ext File Attributes   00000000 (0)\n+C204 Local Header Offset   00003C53 (15443)\n+C208 Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC208: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C217 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C219   Length              0005 (5)\n+C21B   Flags               01 (1) 'Modification'\n+C21C   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C220 CENTRAL HEADER #7     02014B50 (33639248)\n+C224 Created Zip Spec      14 (20) '2.0'\n+C225 Created OS            00 (0) 'MS-DOS'\n+C226 Extract Zip Spec      14 (20) '2.0'\n+C227 Extract OS            00 (0) 'MS-DOS'\n+C228 General Purpose Flag  0000 (0)\n+C22A Compression Method    0000 (0) 'Stored'\n+C22C Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C230 CRC                   00000000 (0)\n+C234 Compressed Size       00000000 (0)\n+C238 Uncompressed Size     00000000 (0)\n+C23C Filename Length       0018 (24)\n+C23E Extra Length          0009 (9)\n+C240 Comment Length        0000 (0)\n+C242 Disk Start            0000 (0)\n+C244 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C246 Ext File Attributes   00000000 (0)\n+C24A Local Header Offset   00003C89 (15497)\n+C24E Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC24E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C266 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C268   Length              0005 (5)\n+C26A   Flags               01 (1) 'Modification'\n+C26B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C26F CENTRAL HEADER #8     02014B50 (33639248)\n+C273 Created Zip Spec      14 (20) '2.0'\n+C274 Created OS            00 (0) 'MS-DOS'\n+C275 Extract Zip Spec      14 (20) '2.0'\n+C276 Extract OS            00 (0) 'MS-DOS'\n+C277 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-BFBA Compression Method    0000 (0) 'Stored'\n-BFBC Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-BFC0 CRC                   09B68607 (162956807)\n-BFC4 Compressed Size       00000050 (80)\n-BFC8 Uncompressed Size     00000050 (80)\n-BFCC Filename Length       004E (78)\n-BFCE Extra Length          0009 (9)\n-BFD0 Comment Length        0000 (0)\n-BFD2 Disk Start            0000 (0)\n-BFD4 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-BFD6 Ext File Attributes   00000000 (0)\n-BFDA Local Header Offset   00003CC8 (15560)\n-BFDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xBFDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C02C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C02E   Length              0005 (5)\n-C030   Flags               01 (1) 'Modification'\n-C031   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C035 CENTRAL HEADER #9     02014B50 (33639248)\n-C039 Created Zip Spec      14 (20) '2.0'\n-C03A Created OS            00 (0) 'MS-DOS'\n-C03B Extract Zip Spec      14 (20) '2.0'\n-C03C Extract OS            00 (0) 'MS-DOS'\n-C03D General Purpose Flag  0000 (0)\n-C03F Compression Method    0000 (0) 'Stored'\n-C041 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C045 CRC                   00000000 (0)\n-C049 Compressed Size       00000000 (0)\n-C04D Uncompressed Size     00000000 (0)\n-C051 Filename Length       000F (15)\n-C053 Extra Length          0009 (9)\n-C055 Comment Length        0000 (0)\n-C057 Disk Start            0000 (0)\n-C059 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C05B Ext File Attributes   00000000 (0)\n-C05F Local Header Offset   00003D9D (15773)\n-C063 Filename              'XXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC063: Filename 'XXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C072 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C074   Length              0005 (5)\n-C076   Flags               01 (1) 'Modification'\n-C077   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C07B CENTRAL HEADER #10    02014B50 (33639248)\n-C07F Created Zip Spec      14 (20) '2.0'\n-C080 Created OS            00 (0) 'MS-DOS'\n-C081 Extract Zip Spec      14 (20) '2.0'\n-C082 Extract OS            00 (0) 'MS-DOS'\n-C083 General Purpose Flag  0000 (0)\n-C085 Compression Method    0000 (0) 'Stored'\n-C087 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C08B CRC                   00000000 (0)\n-C08F Compressed Size       00000000 (0)\n-C093 Uncompressed Size     00000000 (0)\n-C097 Filename Length       0020 (32)\n-C099 Extra Length          0009 (9)\n-C09B Comment Length        0000 (0)\n-C09D Disk Start            0000 (0)\n-C09F Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C0A1 Ext File Attributes   00000000 (0)\n-C0A5 Local Header Offset   00003DD3 (15827)\n-C0A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC0A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C0C9 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C0CB   Length              0005 (5)\n-C0CD   Flags               01 (1) 'Modification'\n-C0CE   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C0D2 CENTRAL HEADER #11    02014B50 (33639248)\n-C0D6 Created Zip Spec      14 (20) '2.0'\n-C0D7 Created OS            00 (0) 'MS-DOS'\n-C0D8 Extract Zip Spec      14 (20) '2.0'\n-C0D9 Extract OS            00 (0) 'MS-DOS'\n-C0DA General Purpose Flag  0000 (0)\n-C0DC Compression Method    0000 (0) 'Stored'\n-C0DE Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C0E2 CRC                   00000000 (0)\n-C0E6 Compressed Size       00000000 (0)\n-C0EA Uncompressed Size     00000000 (0)\n-C0EE Filename Length       003F (63)\n-C0F0 Extra Length          0009 (9)\n-C0F2 Comment Length        0000 (0)\n-C0F4 Disk Start            0000 (0)\n-C0F6 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C0F8 Ext File Attributes   00000000 (0)\n-C0FC Local Header Offset   00003E1A (15898)\n-C100 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC100: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C13F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C141   Length              0005 (5)\n-C143   Flags               01 (1) 'Modification'\n-C144   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C148 CENTRAL HEADER #12    02014B50 (33639248)\n-C14C Created Zip Spec      14 (20) '2.0'\n-C14D Created OS            00 (0) 'MS-DOS'\n-C14E Extract Zip Spec      14 (20) '2.0'\n-C14F Extract OS            00 (0) 'MS-DOS'\n-C150 General Purpose Flag  0008 (8)\n+C279 Compression Method    0000 (0) 'Stored'\n+C27B Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C27F CRC                   E3FBB371 (3824923505)\n+C283 Compressed Size       00000051 (81)\n+C287 Uncompressed Size     00000051 (81)\n+C28B Filename Length       004E (78)\n+C28D Extra Length          0009 (9)\n+C28F Comment Length        0000 (0)\n+C291 Disk Start            0000 (0)\n+C293 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C295 Ext File Attributes   00000000 (0)\n+C299 Local Header Offset   00003CC8 (15560)\n+C29D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC29D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C2EB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C2ED   Length              0005 (5)\n+C2EF   Flags               01 (1) 'Modification'\n+C2F0   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C2F4 CENTRAL HEADER #9     02014B50 (33639248)\n+C2F8 Created Zip Spec      14 (20) '2.0'\n+C2F9 Created OS            00 (0) 'MS-DOS'\n+C2FA Extract Zip Spec      14 (20) '2.0'\n+C2FB Extract OS            00 (0) 'MS-DOS'\n+C2FC General Purpose Flag  0000 (0)\n+C2FE Compression Method    0000 (0) 'Stored'\n+C300 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C304 CRC                   00000000 (0)\n+C308 Compressed Size       00000000 (0)\n+C30C Uncompressed Size     00000000 (0)\n+C310 Filename Length       000F (15)\n+C312 Extra Length          0009 (9)\n+C314 Comment Length        0000 (0)\n+C316 Disk Start            0000 (0)\n+C318 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C31A Ext File Attributes   00000000 (0)\n+C31E Local Header Offset   00003D9E (15774)\n+C322 Filename              'XXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC322: Filename 'XXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C331 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C333   Length              0005 (5)\n+C335   Flags               01 (1) 'Modification'\n+C336   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C33A CENTRAL HEADER #10    02014B50 (33639248)\n+C33E Created Zip Spec      14 (20) '2.0'\n+C33F Created OS            00 (0) 'MS-DOS'\n+C340 Extract Zip Spec      14 (20) '2.0'\n+C341 Extract OS            00 (0) 'MS-DOS'\n+C342 General Purpose Flag  0000 (0)\n+C344 Compression Method    0000 (0) 'Stored'\n+C346 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C34A CRC                   00000000 (0)\n+C34E Compressed Size       00000000 (0)\n+C352 Uncompressed Size     00000000 (0)\n+C356 Filename Length       0020 (32)\n+C358 Extra Length          0009 (9)\n+C35A Comment Length        0000 (0)\n+C35C Disk Start            0000 (0)\n+C35E Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C360 Ext File Attributes   00000000 (0)\n+C364 Local Header Offset   00003DD4 (15828)\n+C368 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC368: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C388 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C38A   Length              0005 (5)\n+C38C   Flags               01 (1) 'Modification'\n+C38D   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C391 CENTRAL HEADER #11    02014B50 (33639248)\n+C395 Created Zip Spec      14 (20) '2.0'\n+C396 Created OS            00 (0) 'MS-DOS'\n+C397 Extract Zip Spec      14 (20) '2.0'\n+C398 Extract OS            00 (0) 'MS-DOS'\n+C399 General Purpose Flag  0000 (0)\n+C39B Compression Method    0000 (0) 'Stored'\n+C39D Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C3A1 CRC                   00000000 (0)\n+C3A5 Compressed Size       00000000 (0)\n+C3A9 Uncompressed Size     00000000 (0)\n+C3AD Filename Length       003F (63)\n+C3AF Extra Length          0009 (9)\n+C3B1 Comment Length        0000 (0)\n+C3B3 Disk Start            0000 (0)\n+C3B5 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C3B7 Ext File Attributes   00000000 (0)\n+C3BB Local Header Offset   00003E1B (15899)\n+C3BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC3BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C3FE Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C400   Length              0005 (5)\n+C402   Flags               01 (1) 'Modification'\n+C403   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C407 CENTRAL HEADER #12    02014B50 (33639248)\n+C40B Created Zip Spec      14 (20) '2.0'\n+C40C Created OS            00 (0) 'MS-DOS'\n+C40D Extract Zip Spec      14 (20) '2.0'\n+C40E Extract OS            00 (0) 'MS-DOS'\n+C40F General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-C152 Compression Method    0000 (0) 'Stored'\n-C154 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C158 CRC                   00000000 (0)\n-C15C Compressed Size       00000000 (0)\n-C160 Uncompressed Size     00000000 (0)\n-C164 Filename Length       004D (77)\n-C166 Extra Length          0009 (9)\n-C168 Comment Length        0000 (0)\n-C16A Disk Start            0000 (0)\n-C16C Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C16E Ext File Attributes   00000000 (0)\n-C172 Local Header Offset   00003E80 (16000)\n-C176 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC176: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C1C3 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C1C5   Length              0005 (5)\n-C1C7   Flags               01 (1) 'Modification'\n-C1C8   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C1CC CENTRAL HEADER #13    02014B50 (33639248)\n-C1D0 Created Zip Spec      14 (20) '2.0'\n-C1D1 Created OS            00 (0) 'MS-DOS'\n-C1D2 Extract Zip Spec      14 (20) '2.0'\n-C1D3 Extract OS            00 (0) 'MS-DOS'\n-C1D4 General Purpose Flag  0008 (8)\n+C411 Compression Method    0000 (0) 'Stored'\n+C413 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C417 CRC                   00000000 (0)\n+C41B Compressed Size       00000000 (0)\n+C41F Uncompressed Size     00000000 (0)\n+C423 Filename Length       004D (77)\n+C425 Extra Length          0009 (9)\n+C427 Comment Length        0000 (0)\n+C429 Disk Start            0000 (0)\n+C42B Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C42D Ext File Attributes   00000000 (0)\n+C431 Local Header Offset   00003E81 (16001)\n+C435 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC435: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C482 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C484   Length              0005 (5)\n+C486   Flags               01 (1) 'Modification'\n+C487   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C48B CENTRAL HEADER #13    02014B50 (33639248)\n+C48F Created Zip Spec      14 (20) '2.0'\n+C490 Created OS            00 (0) 'MS-DOS'\n+C491 Extract Zip Spec      14 (20) '2.0'\n+C492 Extract OS            00 (0) 'MS-DOS'\n+C493 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-C1D6 Compression Method    0000 (0) 'Stored'\n-C1D8 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C1DC CRC                   2219CEA0 (572116640)\n-C1E0 Compressed Size       0000070E (1806)\n-C1E4 Uncompressed Size     0000070E (1806)\n-C1E8 Filename Length       0046 (70)\n-C1EA Extra Length          0009 (9)\n-C1EC Comment Length        0000 (0)\n-C1EE Disk Start            0000 (0)\n-C1F0 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C1F2 Ext File Attributes   00000000 (0)\n-C1F6 Local Header Offset   00003F04 (16132)\n-C1FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC1FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C240 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C242   Length              0005 (5)\n-C244   Flags               01 (1) 'Modification'\n-C245   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C249 CENTRAL HEADER #14    02014B50 (33639248)\n-C24D Created Zip Spec      14 (20) '2.0'\n-C24E Created OS            00 (0) 'MS-DOS'\n-C24F Extract Zip Spec      14 (20) '2.0'\n-C250 Extract OS            00 (0) 'MS-DOS'\n-C251 General Purpose Flag  0000 (0)\n-C253 Compression Method    0000 (0) 'Stored'\n-C255 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C259 CRC                   00000000 (0)\n-C25D Compressed Size       00000000 (0)\n-C261 Uncompressed Size     00000000 (0)\n-C265 Filename Length       0004 (4)\n-C267 Extra Length          0009 (9)\n-C269 Comment Length        0000 (0)\n-C26B Disk Start            0000 (0)\n-C26D Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C26F Ext File Attributes   00000000 (0)\n-C273 Local Header Offset   0000468F (18063)\n-C277 Filename              'XXXX'\n-#\n-# WARNING: Offset 0xC277: Filename 'XXXX'\n-#          Zero length filename\n-#\n-C27B Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C27D   Length              0005 (5)\n-C27F   Flags               01 (1) 'Modification'\n-C280   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C284 CENTRAL HEADER #15    02014B50 (33639248)\n-C288 Created Zip Spec      14 (20) '2.0'\n-C289 Created OS            00 (0) 'MS-DOS'\n-C28A Extract Zip Spec      14 (20) '2.0'\n-C28B Extract OS            00 (0) 'MS-DOS'\n-C28C General Purpose Flag  0000 (0)\n-C28E Compression Method    0000 (0) 'Stored'\n-C290 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C294 CRC                   00000000 (0)\n-C298 Compressed Size       00000000 (0)\n-C29C Uncompressed Size     00000000 (0)\n-C2A0 Filename Length       000B (11)\n-C2A2 Extra Length          0009 (9)\n-C2A4 Comment Length        0000 (0)\n-C2A6 Disk Start            0000 (0)\n-C2A8 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C2AA Ext File Attributes   00000000 (0)\n-C2AE Local Header Offset   000046BA (18106)\n-C2B2 Filename              'XXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC2B2: Filename 'XXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C2BD Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C2BF   Length              0005 (5)\n-C2C1   Flags               01 (1) 'Modification'\n-C2C2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C2C6 CENTRAL HEADER #16    02014B50 (33639248)\n-C2CA Created Zip Spec      14 (20) '2.0'\n-C2CB Created OS            00 (0) 'MS-DOS'\n-C2CC Extract Zip Spec      14 (20) '2.0'\n-C2CD Extract OS            00 (0) 'MS-DOS'\n-C2CE General Purpose Flag  0000 (0)\n-C2D0 Compression Method    0000 (0) 'Stored'\n-C2D2 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C2D6 CRC                   00000000 (0)\n-C2DA Compressed Size       00000000 (0)\n-C2DE Uncompressed Size     00000000 (0)\n-C2E2 Filename Length       0011 (17)\n-C2E4 Extra Length          0009 (9)\n-C2E6 Comment Length        0000 (0)\n-C2E8 Disk Start            0000 (0)\n-C2EA Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C2EC Ext File Attributes   00000000 (0)\n-C2F0 Local Header Offset   000046EC (18156)\n-C2F4 Filename              'XXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC2F4: Filename 'XXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C305 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C307   Length              0005 (5)\n-C309   Flags               01 (1) 'Modification'\n-C30A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C30E CENTRAL HEADER #17    02014B50 (33639248)\n-C312 Created Zip Spec      14 (20) '2.0'\n-C313 Created OS            00 (0) 'MS-DOS'\n-C314 Extract Zip Spec      14 (20) '2.0'\n-C315 Extract OS            00 (0) 'MS-DOS'\n-C316 General Purpose Flag  0000 (0)\n-C318 Compression Method    0000 (0) 'Stored'\n-C31A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C31E CRC                   00000000 (0)\n-C322 Compressed Size       00000000 (0)\n-C326 Uncompressed Size     00000000 (0)\n-C32A Filename Length       001A (26)\n-C32C Extra Length          0009 (9)\n-C32E Comment Length        0000 (0)\n-C330 Disk Start            0000 (0)\n-C332 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C334 Ext File Attributes   00000000 (0)\n-C338 Local Header Offset   00004724 (18212)\n-C33C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC33C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C356 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C358   Length              0005 (5)\n-C35A   Flags               01 (1) 'Modification'\n-C35B   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C35F CENTRAL HEADER #18    02014B50 (33639248)\n-C363 Created Zip Spec      14 (20) '2.0'\n-C364 Created OS            00 (0) 'MS-DOS'\n-C365 Extract Zip Spec      14 (20) '2.0'\n-C366 Extract OS            00 (0) 'MS-DOS'\n-C367 General Purpose Flag  0000 (0)\n-C369 Compression Method    0000 (0) 'Stored'\n-C36B Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C36F CRC                   00000000 (0)\n-C373 Compressed Size       00000000 (0)\n-C377 Uncompressed Size     00000000 (0)\n-C37B Filename Length       0020 (32)\n-C37D Extra Length          0009 (9)\n-C37F Comment Length        0000 (0)\n-C381 Disk Start            0000 (0)\n-C383 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C385 Ext File Attributes   00000000 (0)\n-C389 Local Header Offset   00004765 (18277)\n-C38D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC38D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C3AD Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C3AF   Length              0005 (5)\n-C3B1   Flags               01 (1) 'Modification'\n-C3B2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C3B6 CENTRAL HEADER #19    02014B50 (33639248)\n-C3BA Created Zip Spec      14 (20) '2.0'\n-C3BB Created OS            00 (0) 'MS-DOS'\n-C3BC Extract Zip Spec      14 (20) '2.0'\n-C3BD Extract OS            00 (0) 'MS-DOS'\n-C3BE General Purpose Flag  0000 (0)\n-C3C0 Compression Method    0000 (0) 'Stored'\n-C3C2 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C3C6 CRC                   00000000 (0)\n-C3CA Compressed Size       00000000 (0)\n-C3CE Uncompressed Size     00000000 (0)\n-C3D2 Filename Length       0029 (41)\n-C3D4 Extra Length          0009 (9)\n-C3D6 Comment Length        0000 (0)\n-C3D8 Disk Start            0000 (0)\n-C3DA Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C3DC Ext File Attributes   00000000 (0)\n-C3E0 Local Header Offset   000047AC (18348)\n-C3E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC3E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C40D Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C40F   Length              0005 (5)\n-C411   Flags               01 (1) 'Modification'\n-C412   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C416 CENTRAL HEADER #20    02014B50 (33639248)\n-C41A Created Zip Spec      14 (20) '2.0'\n-C41B Created OS            00 (0) 'MS-DOS'\n-C41C Extract Zip Spec      14 (20) '2.0'\n-C41D Extract OS            00 (0) 'MS-DOS'\n-C41E General Purpose Flag  0008 (8)\n+C495 Compression Method    0000 (0) 'Stored'\n+C497 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C49B CRC                   9E243A48 (2653174344)\n+C49F Compressed Size       000006E3 (1763)\n+C4A3 Uncompressed Size     000006E3 (1763)\n+C4A7 Filename Length       0046 (70)\n+C4A9 Extra Length          0009 (9)\n+C4AB Comment Length        0000 (0)\n+C4AD Disk Start            0000 (0)\n+C4AF Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C4B1 Ext File Attributes   00000000 (0)\n+C4B5 Local Header Offset   00003F05 (16133)\n+C4B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC4B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C4FF Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C501   Length              0005 (5)\n+C503   Flags               01 (1) 'Modification'\n+C504   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C508 CENTRAL HEADER #14    02014B50 (33639248)\n+C50C Created Zip Spec      14 (20) '2.0'\n+C50D Created OS            00 (0) 'MS-DOS'\n+C50E Extract Zip Spec      14 (20) '2.0'\n+C50F Extract OS            00 (0) 'MS-DOS'\n+C510 General Purpose Flag  0000 (0)\n+C512 Compression Method    0000 (0) 'Stored'\n+C514 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C518 CRC                   00000000 (0)\n+C51C Compressed Size       00000000 (0)\n+C520 Uncompressed Size     00000000 (0)\n+C524 Filename Length       0004 (4)\n+C526 Extra Length          0009 (9)\n+C528 Comment Length        0000 (0)\n+C52A Disk Start            0000 (0)\n+C52C Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C52E Ext File Attributes   00000000 (0)\n+C532 Local Header Offset   00004665 (18021)\n+C536 Filename              'XXXX'\n+#\n+# WARNING: Offset 0xC536: Filename 'XXXX'\n+#          Zero length filename\n+#\n+C53A Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C53C   Length              0005 (5)\n+C53E   Flags               01 (1) 'Modification'\n+C53F   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C543 CENTRAL HEADER #15    02014B50 (33639248)\n+C547 Created Zip Spec      14 (20) '2.0'\n+C548 Created OS            00 (0) 'MS-DOS'\n+C549 Extract Zip Spec      14 (20) '2.0'\n+C54A Extract OS            00 (0) 'MS-DOS'\n+C54B General Purpose Flag  0000 (0)\n+C54D Compression Method    0000 (0) 'Stored'\n+C54F Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C553 CRC                   00000000 (0)\n+C557 Compressed Size       00000000 (0)\n+C55B Uncompressed Size     00000000 (0)\n+C55F Filename Length       000B (11)\n+C561 Extra Length          0009 (9)\n+C563 Comment Length        0000 (0)\n+C565 Disk Start            0000 (0)\n+C567 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C569 Ext File Attributes   00000000 (0)\n+C56D Local Header Offset   00004690 (18064)\n+C571 Filename              'XXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC571: Filename 'XXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C57C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C57E   Length              0005 (5)\n+C580   Flags               01 (1) 'Modification'\n+C581   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C585 CENTRAL HEADER #16    02014B50 (33639248)\n+C589 Created Zip Spec      14 (20) '2.0'\n+C58A Created OS            00 (0) 'MS-DOS'\n+C58B Extract Zip Spec      14 (20) '2.0'\n+C58C Extract OS            00 (0) 'MS-DOS'\n+C58D General Purpose Flag  0000 (0)\n+C58F Compression Method    0000 (0) 'Stored'\n+C591 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C595 CRC                   00000000 (0)\n+C599 Compressed Size       00000000 (0)\n+C59D Uncompressed Size     00000000 (0)\n+C5A1 Filename Length       0011 (17)\n+C5A3 Extra Length          0009 (9)\n+C5A5 Comment Length        0000 (0)\n+C5A7 Disk Start            0000 (0)\n+C5A9 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C5AB Ext File Attributes   00000000 (0)\n+C5AF Local Header Offset   000046C2 (18114)\n+C5B3 Filename              'XXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC5B3: Filename 'XXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C5C4 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C5C6   Length              0005 (5)\n+C5C8   Flags               01 (1) 'Modification'\n+C5C9   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C5CD CENTRAL HEADER #17    02014B50 (33639248)\n+C5D1 Created Zip Spec      14 (20) '2.0'\n+C5D2 Created OS            00 (0) 'MS-DOS'\n+C5D3 Extract Zip Spec      14 (20) '2.0'\n+C5D4 Extract OS            00 (0) 'MS-DOS'\n+C5D5 General Purpose Flag  0000 (0)\n+C5D7 Compression Method    0000 (0) 'Stored'\n+C5D9 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C5DD CRC                   00000000 (0)\n+C5E1 Compressed Size       00000000 (0)\n+C5E5 Uncompressed Size     00000000 (0)\n+C5E9 Filename Length       001A (26)\n+C5EB Extra Length          0009 (9)\n+C5ED Comment Length        0000 (0)\n+C5EF Disk Start            0000 (0)\n+C5F1 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C5F3 Ext File Attributes   00000000 (0)\n+C5F7 Local Header Offset   000046FA (18170)\n+C5FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC5FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C615 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C617   Length              0005 (5)\n+C619   Flags               01 (1) 'Modification'\n+C61A   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C61E CENTRAL HEADER #18    02014B50 (33639248)\n+C622 Created Zip Spec      14 (20) '2.0'\n+C623 Created OS            00 (0) 'MS-DOS'\n+C624 Extract Zip Spec      14 (20) '2.0'\n+C625 Extract OS            00 (0) 'MS-DOS'\n+C626 General Purpose Flag  0000 (0)\n+C628 Compression Method    0000 (0) 'Stored'\n+C62A Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C62E CRC                   00000000 (0)\n+C632 Compressed Size       00000000 (0)\n+C636 Uncompressed Size     00000000 (0)\n+C63A Filename Length       0020 (32)\n+C63C Extra Length          0009 (9)\n+C63E Comment Length        0000 (0)\n+C640 Disk Start            0000 (0)\n+C642 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C644 Ext File Attributes   00000000 (0)\n+C648 Local Header Offset   0000473B (18235)\n+C64C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC64C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C66C Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C66E   Length              0005 (5)\n+C670   Flags               01 (1) 'Modification'\n+C671   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C675 CENTRAL HEADER #19    02014B50 (33639248)\n+C679 Created Zip Spec      14 (20) '2.0'\n+C67A Created OS            00 (0) 'MS-DOS'\n+C67B Extract Zip Spec      14 (20) '2.0'\n+C67C Extract OS            00 (0) 'MS-DOS'\n+C67D General Purpose Flag  0000 (0)\n+C67F Compression Method    0000 (0) 'Stored'\n+C681 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C685 CRC                   00000000 (0)\n+C689 Compressed Size       00000000 (0)\n+C68D Uncompressed Size     00000000 (0)\n+C691 Filename Length       0029 (41)\n+C693 Extra Length          0009 (9)\n+C695 Comment Length        0000 (0)\n+C697 Disk Start            0000 (0)\n+C699 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C69B Ext File Attributes   00000000 (0)\n+C69F Local Header Offset   00004782 (18306)\n+C6A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC6A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C6CC Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C6CE   Length              0005 (5)\n+C6D0   Flags               01 (1) 'Modification'\n+C6D1   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C6D5 CENTRAL HEADER #20    02014B50 (33639248)\n+C6D9 Created Zip Spec      14 (20) '2.0'\n+C6DA Created OS            00 (0) 'MS-DOS'\n+C6DB Extract Zip Spec      14 (20) '2.0'\n+C6DC Extract OS            00 (0) 'MS-DOS'\n+C6DD General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-C420 Compression Method    0000 (0) 'Stored'\n-C422 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C426 CRC                   AB30D581 (2872104321)\n-C42A Compressed Size       00000697 (1687)\n-C42E Uncompressed Size     00000697 (1687)\n-C432 Filename Length       003F (63)\n-C434 Extra Length          0009 (9)\n-C436 Comment Length        0000 (0)\n-C438 Disk Start            0000 (0)\n-C43A Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C43C Ext File Attributes   00000000 (0)\n-C440 Local Header Offset   000047FC (18428)\n-C444 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC444: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C483 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C485   Length              0005 (5)\n-C487   Flags               01 (1) 'Modification'\n-C488   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C48C CENTRAL HEADER #21    02014B50 (33639248)\n-C490 Created Zip Spec      14 (20) '2.0'\n-C491 Created OS            00 (0) 'MS-DOS'\n-C492 Extract Zip Spec      14 (20) '2.0'\n-C493 Extract OS            00 (0) 'MS-DOS'\n-C494 General Purpose Flag  0008 (8)\n+C6DF Compression Method    0000 (0) 'Stored'\n+C6E1 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C6E5 CRC                   C5E6E015 (3320242197)\n+C6E9 Compressed Size       000006C9 (1737)\n+C6ED Uncompressed Size     000006C9 (1737)\n+C6F1 Filename Length       003F (63)\n+C6F3 Extra Length          0009 (9)\n+C6F5 Comment Length        0000 (0)\n+C6F7 Disk Start            0000 (0)\n+C6F9 Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C6FB Ext File Attributes   00000000 (0)\n+C6FF Local Header Offset   000047D2 (18386)\n+C703 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC703: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C742 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C744   Length              0005 (5)\n+C746   Flags               01 (1) 'Modification'\n+C747   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C74B CENTRAL HEADER #21    02014B50 (33639248)\n+C74F Created Zip Spec      14 (20) '2.0'\n+C750 Created OS            00 (0) 'MS-DOS'\n+C751 Extract Zip Spec      14 (20) '2.0'\n+C752 Extract OS            00 (0) 'MS-DOS'\n+C753 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-C496 Compression Method    0000 (0) 'Stored'\n-C498 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C49C CRC                   546B40F4 (1416315124)\n-C4A0 Compressed Size       00005C0A (23562)\n-C4A4 Uncompressed Size     00005C0A (23562)\n-C4A8 Filename Length       0044 (68)\n-C4AA Extra Length          0009 (9)\n-C4AC Comment Length        0000 (0)\n-C4AE Disk Start            0000 (0)\n-C4B0 Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C4B2 Ext File Attributes   00000000 (0)\n-C4B6 Local Header Offset   00004F09 (20233)\n-C4BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC4BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C4FE Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C500   Length              0005 (5)\n-C502   Flags               01 (1) 'Modification'\n-C503   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C507 CENTRAL HEADER #22    02014B50 (33639248)\n-C50B Created Zip Spec      14 (20) '2.0'\n-C50C Created OS            00 (0) 'MS-DOS'\n-C50D Extract Zip Spec      14 (20) '2.0'\n-C50E Extract OS            00 (0) 'MS-DOS'\n-C50F General Purpose Flag  0008 (8)\n+C755 Compression Method    0000 (0) 'Stored'\n+C757 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C75B CRC                   95EACAEA (2515192554)\n+C75F Compressed Size       00005E4E (24142)\n+C763 Uncompressed Size     00005E4E (24142)\n+C767 Filename Length       0044 (68)\n+C769 Extra Length          0009 (9)\n+C76B Comment Length        0000 (0)\n+C76D Disk Start            0000 (0)\n+C76F Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C771 Ext File Attributes   00000000 (0)\n+C775 Local Header Offset   00004F11 (20241)\n+C779 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC779: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C7BD Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C7BF   Length              0005 (5)\n+C7C1   Flags               01 (1) 'Modification'\n+C7C2   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C7C6 CENTRAL HEADER #22    02014B50 (33639248)\n+C7CA Created Zip Spec      14 (20) '2.0'\n+C7CB Created OS            00 (0) 'MS-DOS'\n+C7CC Extract Zip Spec      14 (20) '2.0'\n+C7CD Extract OS            00 (0) 'MS-DOS'\n+C7CE General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-C511 Compression Method    0000 (0) 'Stored'\n-C513 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C517 CRC                   3F1A06E9 (1058670313)\n-C51B Compressed Size       000004D7 (1239)\n-C51F Uncompressed Size     000004D7 (1239)\n-C523 Filename Length       004B (75)\n-C525 Extra Length          0009 (9)\n-C527 Comment Length        0000 (0)\n-C529 Disk Start            0000 (0)\n-C52B Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C52D Ext File Attributes   00000000 (0)\n-C531 Local Header Offset   0000AB8E (43918)\n-C535 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC535: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C580 Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C582   Length              0005 (5)\n-C584   Flags               01 (1) 'Modification'\n-C585   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C589 CENTRAL HEADER #23    02014B50 (33639248)\n-C58D Created Zip Spec      14 (20) '2.0'\n-C58E Created OS            00 (0) 'MS-DOS'\n-C58F Extract Zip Spec      14 (20) '2.0'\n-C590 Extract OS            00 (0) 'MS-DOS'\n-C591 General Purpose Flag  0008 (8)\n+C7D0 Compression Method    0000 (0) 'Stored'\n+C7D2 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C7D6 CRC                   880754E1 (2282181857)\n+C7DA Compressed Size       000004F3 (1267)\n+C7DE Uncompressed Size     000004F3 (1267)\n+C7E2 Filename Length       004B (75)\n+C7E4 Extra Length          0009 (9)\n+C7E6 Comment Length        0000 (0)\n+C7E8 Disk Start            0000 (0)\n+C7EA Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C7EC Ext File Attributes   00000000 (0)\n+C7F0 Local Header Offset   0000ADDA (44506)\n+C7F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC7F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C83F Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C841   Length              0005 (5)\n+C843   Flags               01 (1) 'Modification'\n+C844   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C848 CENTRAL HEADER #23    02014B50 (33639248)\n+C84C Created Zip Spec      14 (20) '2.0'\n+C84D Created OS            00 (0) 'MS-DOS'\n+C84E Extract Zip Spec      14 (20) '2.0'\n+C84F Extract OS            00 (0) 'MS-DOS'\n+C850 General Purpose Flag  0008 (8)\n      [Bit  3]              1 'Streamed'\n-C593 Compression Method    0000 (0) 'Stored'\n-C595 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n-C599 CRC                   A5D0004C (2781872204)\n-C59D Compressed Size       00000C55 (3157)\n-C5A1 Uncompressed Size     00000C55 (3157)\n-C5A5 Filename Length       0044 (68)\n-C5A7 Extra Length          0009 (9)\n-C5A9 Comment Length        0000 (0)\n-C5AB Disk Start            0000 (0)\n-C5AD Int File Attributes   0000 (0)\n-     [Bit 0]               0 'Binary Data'\n-C5AF Ext File Attributes   00000000 (0)\n-C5B3 Local Header Offset   0000B0E7 (45287)\n-C5B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#\n-# WARNING: Offset 0xC5B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n-#          Zero length filename\n-#\n-C5FB Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n-C5FD   Length              0005 (5)\n-C5FF   Flags               01 (1) 'Modification'\n-C600   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n-\n-C604 END CENTRAL HEADER    06054B50 (101010256)\n-C608 Number of this disk   0000 (0)\n-C60A Central Dir Disk no   0000 (0)\n-C60C Entries in this disk  0017 (23)\n-C60E Total Entries         0017 (23)\n-C610 Size of Central Dir   0000084D (2125)\n-C614 Offset to Central Dir 0000BDB7 (48567)\n-C618 Comment Length        0000 (0)\n+C852 Compression Method    0000 (0) 'Stored'\n+C854 Modification Time     EC210000 (3961585664) 'Wed Jan  1 00:00:00 2098'\n+C858 CRC                   3DD6411C (1037451548)\n+C85C Compressed Size       00000CAC (3244)\n+C860 Uncompressed Size     00000CAC (3244)\n+C864 Filename Length       0044 (68)\n+C866 Extra Length          0009 (9)\n+C868 Comment Length        0000 (0)\n+C86A Disk Start            0000 (0)\n+C86C Int File Attributes   0000 (0)\n+     [Bit 0]               0 'Binary Data'\n+C86E Ext File Attributes   00000000 (0)\n+C872 Local Header Offset   0000B34F (45903)\n+C876 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#\n+# WARNING: Offset 0xC876: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+#          Zero length filename\n+#\n+C8BA Extra ID #1           5455 (21589) 'Extended Timestamp [UT]'\n+C8BC   Length              0005 (5)\n+C8BE   Flags               01 (1) 'Modification'\n+C8BF   Modification Time   00000000 (0) 'Thu Jan  1 00:00:00 1970'\n+\n+C8C3 END CENTRAL HEADER    06054B50 (101010256)\n+C8C7 Number of this disk   0000 (0)\n+C8C9 Central Dir Disk no   0000 (0)\n+C8CB Entries in this disk  0017 (23)\n+C8CD Total Entries         0017 (23)\n+C8CF Size of Central Dir   0000084D (2125)\n+C8D3 Offset to Central Dir 0000C076 (49270)\n+C8D7 Comment Length        0000 (0)\n #\n # Warning Count: 46\n #\n # Done\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory", "source2": "META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1 +1 @@\n-failover=org.apache.dubbo.metadata.store.failover.FailoverMetadataReportFactory\n+failover=org.apache.dubbo.metadata.store.failover.FailoverMetadataReportFactory\r\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,113 +1,111 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 2d2d 3e0d 0a3c 7072  ense... -->..<pr\n-00000350: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n-00000360: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n-00000370: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n-00000380: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n-00000390: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n-000003a0: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n-000003b0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n-000003c0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n-000003d0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n-000003e0: 2e30 220d 0a20 2020 2078 6d6c 6e73 3a78  .0\"..    xmlns:x\n-000003f0: 7369 3d22 6874 7470 3a2f 2f77 7777 2e77  si=\"http://www.w\n-00000400: 332e 6f72 672f 3230 3031 2f58 4d4c 5363  3.org/2001/XMLSc\n-00000410: 6865 6d61 2d69 6e73 7461 6e63 6522 3e0d  hema-instance\">.\n-00000420: 0a20 203c 6d6f 6465 6c56 6572 7369 6f6e  .  <modelVersion\n-00000430: 3e34 2e30 2e30 3c2f 6d6f 6465 6c56 6572  >4.0.0</modelVer\n-00000440: 7369 6f6e 3e0d 0a20 203c 7061 7265 6e74  sion>..  <parent\n-00000450: 3e0d 0a20 2020 203c 6772 6f75 7049 643e  >..    <groupId>\n-00000460: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000470: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000480: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000490: 6f2d 6d65 7461 6461 7461 3c2f 6172 7469  o-metadata</arti\n-000004a0: 6661 6374 4964 3e0d 0a20 2020 203c 7665  factId>..    <ve\n-000004b0: 7273 696f 6e3e 322e 372e 3130 3c2f 7665  rsion>2.7.10</ve\n-000004c0: 7273 696f 6e3e 0d0a 2020 3c2f 7061 7265  rsion>..  </pare\n-000004d0: 6e74 3e0d 0a20 203c 6772 6f75 7049 643e  nt>..  <groupId>\n-000004e0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-000004f0: 3c2f 6772 6f75 7049 643e 0d0a 2020 3c61  </groupId>..  <a\n-00000500: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000510: 6d65 7461 6461 7461 2d72 6570 6f72 742d  metadata-report-\n-00000520: 6661 696c 6f76 6572 3c2f 6172 7469 6661  failover</artifa\n-00000530: 6374 4964 3e0d 0a20 203c 7665 7273 696f  ctId>..  <versio\n-00000540: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-00000550: 6e3e 0d0a 2020 3c6c 6963 656e 7365 733e  n>..  <licenses>\n-00000560: 0d0a 2020 2020 3c6c 6963 656e 7365 3e0d  ..    <license>.\n-00000570: 0a20 2020 2020 203c 6e61 6d65 3e41 7061  .      <name>Apa\n-00000580: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n-00000590: 7369 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d  sion 2.0</name>.\n-000005a0: 0a20 2020 2020 203c 7572 6c3e 6874 7470  .      <url>http\n-000005b0: 3a2f 2f77 7777 2e61 7061 6368 652e 6f72  ://www.apache.or\n-000005c0: 672f 6c69 6365 6e73 6573 2f4c 4943 454e  g/licenses/LICEN\n-000005d0: 5345 2d32 2e30 3c2f 7572 6c3e 0d0a 2020  SE-2.0</url>..  \n-000005e0: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n-000005f0: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n-00000600: 7469 6f6e 3e0d 0a20 2020 203c 2f6c 6963  tion>..    </lic\n-00000610: 656e 7365 3e0d 0a20 203c 2f6c 6963 656e  ense>..  </licen\n-00000620: 7365 733e 0d0a 2020 3c64 6570 656e 6465  ses>..  <depende\n-00000630: 6e63 6965 733e 0d0a 2020 2020 3c64 6570  ncies>..    <dep\n-00000640: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000650: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n-00000660: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n-00000670: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000680: 6661 6374 4964 3e64 7562 626f 2d6d 6574  factId>dubbo-met\n-00000690: 6164 6174 612d 6170 693c 2f61 7274 6966  adata-api</artif\n-000006a0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-000006b0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-000006c0: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-000006d0: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-000006e0: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-000006f0: 203c 2f64 6570 656e 6465 6e63 6965 733e   </dependencies>\n-00000700: 0d0a 3c2f 7072 6f6a 6563 743e 0d0a       ..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 2d2d 3e0a 3c70 726f  cense.. -->.<pro\n+00000340: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n+00000350: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n+00000360: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n+00000370: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n+00000380: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n+00000390: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n+000003a0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n+000003b0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n+000003c0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n+000003d0: 3022 0a20 2020 2078 6d6c 6e73 3a78 7369  0\".    xmlns:xsi\n+000003e0: 3d22 6874 7470 3a2f 2f77 7777 2e77 332e  =\"http://www.w3.\n+000003f0: 6f72 672f 3230 3031 2f58 4d4c 5363 6865  org/2001/XMLSche\n+00000400: 6d61 2d69 6e73 7461 6e63 6522 3e0a 2020  ma-instance\">.  \n+00000410: 3c6d 6f64 656c 5665 7273 696f 6e3e 342e  <modelVersion>4.\n+00000420: 302e 303c 2f6d 6f64 656c 5665 7273 696f  0.0</modelVersio\n+00000430: 6e3e 0a20 203c 7061 7265 6e74 3e0a 2020  n>.  <parent>.  \n+00000440: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000450: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000460: 7570 4964 3e0a 2020 2020 3c61 7274 6966  upId>.    <artif\n+00000470: 6163 7449 643e 6475 6262 6f2d 6d65 7461  actId>dubbo-meta\n+00000480: 6461 7461 3c2f 6172 7469 6661 6374 4964  data</artifactId\n+00000490: 3e0a 2020 2020 3c76 6572 7369 6f6e 3e32  >.    <version>2\n+000004a0: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0a  .7.10</version>.\n+000004b0: 2020 3c2f 7061 7265 6e74 3e0a 2020 3c67    </parent>.  <g\n+000004c0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+000004d0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+000004e0: 3e0a 2020 3c61 7274 6966 6163 7449 643e  >.  <artifactId>\n+000004f0: 6475 6262 6f2d 6d65 7461 6461 7461 2d72  dubbo-metadata-r\n+00000500: 6570 6f72 742d 6661 696c 6f76 6572 3c2f  eport-failover</\n+00000510: 6172 7469 6661 6374 4964 3e0a 2020 3c76  artifactId>.  <v\n+00000520: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n+00000530: 6572 7369 6f6e 3e0a 2020 3c6c 6963 656e  ersion>.  <licen\n+00000540: 7365 733e 0a20 2020 203c 6c69 6365 6e73  ses>.    <licens\n+00000550: 653e 0a20 2020 2020 203c 6e61 6d65 3e41  e>.      <name>A\n+00000560: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n+00000570: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n+00000580: 3e0a 2020 2020 2020 3c75 726c 3e68 7474  >.      <url>htt\n+00000590: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n+000005a0: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n+000005b0: 4e53 452d 322e 303c 2f75 726c 3e0a 2020  NSE-2.0</url>.  \n+000005c0: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n+000005d0: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n+000005e0: 7469 6f6e 3e0a 2020 2020 3c2f 6c69 6365  tion>.    </lice\n+000005f0: 6e73 653e 0a20 203c 2f6c 6963 656e 7365  nse>.  </license\n+00000600: 733e 0a20 203c 6465 7065 6e64 656e 6369  s>.  <dependenci\n+00000610: 6573 3e0a 2020 2020 3c64 6570 656e 6465  es>.    <depende\n+00000620: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+00000630: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+00000640: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+00000650: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000660: 3e64 7562 626f 2d6d 6574 6164 6174 612d  >dubbo-metadata-\n+00000670: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000680: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000690: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+000006a0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+000006b0: 6f6e 3e0a 2020 2020 3c2f 6465 7065 6e64  on>.    </depend\n+000006c0: 656e 6379 3e0a 2020 3c2f 6465 7065 6e64  ency>.  </depend\n+000006d0: 656e 6369 6573 3e0a 3c2f 7072 6f6a 6563  encies>.</projec\n+000006e0: 743e 0a                                  t>.\n"}, {"source1": "org/apache/dubbo/metadata/store/failover/FailoverCondition.java", "source2": "org/apache/dubbo/metadata/store/failover/FailoverCondition.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,51 +1,51 @@\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.metadata.store.failover;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@SPI(\"failover\")\n-public interface FailoverCondition {\n-\n-    /**\n-     * Whether metadata should be reported.\n-     *\n-     * @param url registry url, eg: zookeeper://127.0.0.1:2181\n-     * @return true store metadata to the specified URL.\n-     */\n-    boolean shouldRegister(URL url);\n-\n-    /**\n-     * Whether metadata should be read from specified url.\n-     *\n-     * @param url registry url, eg: zookeeper://127.0.0.1:2181\n-     * @return true read metadata from specified URL.\n-     */\n-    boolean shouldQuery(URL url);\n-\n-    /**\n-     * Judge whether it is a local region or a local datacenter.\n-     * <p>\n-     * Allows the local region or datacenter to be read first.\n-     *\n-     * @param url\n-     * @return\n-     */\n-    boolean isLocalDataCenter(URL url);\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.metadata.store.failover;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@SPI(\"failover\")\r\n+public interface FailoverCondition {\r\n+\r\n+    /**\r\n+     * Whether metadata should be reported.\r\n+     *\r\n+     * @param url registry url, eg: zookeeper://127.0.0.1:2181\r\n+     * @return true store metadata to the specified URL.\r\n+     */\r\n+    boolean shouldRegister(URL url);\r\n+\r\n+    /**\r\n+     * Whether metadata should be read from specified url.\r\n+     *\r\n+     * @param url registry url, eg: zookeeper://127.0.0.1:2181\r\n+     * @return true read metadata from specified URL.\r\n+     */\r\n+    boolean shouldQuery(URL url);\r\n+\r\n+    /**\r\n+     * Judge whether it is a local region or a local datacenter.\r\n+     * <p>\r\n+     * Allows the local region or datacenter to be read first.\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    boolean isLocalDataCenter(URL url);\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,581 +1,581 @@\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.metadata.store.failover;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.constants.RemotingConstants;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.metadata.MappingListener;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.MetadataReportFactory;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.regex.Pattern;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CHECK_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_SPLIT_PATTERN;\n-\n-/**\n- * @author yiji@apache.org\n- */\n-public class FailoverMetadataReport extends StrategyMetadataReport {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(FailoverMetadataReport.class);\n-\n-    // proxy metadata report protocol, eg: zookeeper\n-    private static final String PROTOCOL_KEY = \"protocol\";\n-\n-    private static final String CLUSTER_KEY = \"clusters\";\n-\n-    // A cluster may have multiple instances\n-    private static final String HOST_KEY = \"hosts\";\n-\n-    private static final Pattern HOST_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[|:]+\\\\s*\");\n-\n-    // The metadata address of the agent.\n-    private List<URL> failoverUrls;\n-\n-    // The metadata report instance.\n-    private List<MetadataReportHolder> proxyReports;\n-\n-    // Local priority metadata center\n-    private MetadataReportHolder localDataCenterReportHolder;\n-\n-    public FailoverMetadataReport(URL url) {\n-        super(url);\n-        this.failoverUrls = fetchBackupUrls();\n-        this.proxyReports = buildProxyReports();\n-    }\n-\n-    protected List<URL> fetchBackupUrls() {\n-        String protocol = url.getParameter(PROTOCOL_KEY);\n-        if (protocol == null || !ExtensionLoader.getExtensionLoader(MetadataReportFactory.class).hasExtension(protocol)) {\n-            throw new IllegalArgumentException(\n-                    \"No '\" + protocol\n-                            + \"' metadata report extension found, please check if metadata report module dependencies are included.\");\n-        }\n-\n-        List<URL> urls = new ArrayList<>();\n-\n-        String clusters = this.url.getParameter(CLUSTER_KEY);\n-        String backupHost = this.url.getParameter(HOST_KEY);\n-        URL url = this.url.removeParameters(CLUSTER_KEY, HOST_KEY, PROTOCOL_KEY).setProtocol(protocol);\n-\n-        URL metadataURL = url;\n-        if (backupHost != null && backupHost.length() > 0) {\n-            metadataURL = metadataURL.addParameter(RemotingConstants.BACKUP_KEY, backupHost);\n-        }\n-        urls.add(metadataURL);\n-\n-        if (clusters != null && (clusters = clusters.trim()).length() > 0) {\n-            String[] addresses = REGISTRY_SPLIT_PATTERN.split(clusters);\n-            for (String address : addresses) {\n-                /**\n-                 * find multiple cluster hosts, supports multiple\n-                 * metadata report center read and write operations.\n-                 */\n-                String[] hosts = COMMA_SPLIT_PATTERN.split(address);\n-                if (hosts.length > 0) {\n-                    String node = hosts[0];\n-                    // contains user name and password with address ?\n-                    String username = null, password = null;\n-                    int index = node.indexOf(\"@\");\n-                    if (index > 0) {\n-                        String[] authority = HOST_SPLIT_PATTERN.split(node.substring(0, index));\n-                        username = authority[0];\n-                        password = authority[1];\n-                        node = node.substring(index + 1);\n-                    }\n-\n-                    String[] hostInfo = HOST_SPLIT_PATTERN.split(node);\n-                    String host = hostInfo[0];\n-                    int port = Integer.parseInt(hostInfo[1]);\n-                    URL clusterURL = new URL(protocol, username, password, host, port, url.getPath(), url.getParameters());\n-                    /**\n-                     * append backup address if required,\n-                     * the same cluster may have more than one node.\n-                     */\n-                    if (hosts.length > 1) {\n-                        StringBuilder buffer = new StringBuilder();\n-                        for (int i = 1; i < hosts.length; i++) {\n-                            if (i > 1) {\n-                                buffer.append(\",\");\n-                            }\n-                            buffer.append(hosts[i]);\n-                        }\n-                        clusterURL = clusterURL.addParameters(RemotingConstants.BACKUP_KEY, buffer.toString());\n-                    }\n-                    urls.add(clusterURL);\n-                }\n-            }\n-        }\n-        return urls;\n-    }\n-\n-    protected List<MetadataReportHolder> buildProxyReports() {\n-        List<MetadataReportHolder> reports = new ArrayList<>();\n-        if (this.failoverUrls != null && !this.failoverUrls.isEmpty()) {\n-            ExtensionLoader<MetadataReportFactory> factoryLoader = ExtensionLoader.getExtensionLoader(MetadataReportFactory.class);\n-            for (URL url : this.failoverUrls) {\n-                try {\n-                    MetadataReportHolder holder = new MetadataReportHolder(url,\n-                            factoryLoader.getExtension(url.getProtocol()).getMetadataReport(url));\n-                    reports.add(holder);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw new RuntimeException(\"Failed to create + '\" + url.getProtocol() + \"' metadata report extension instance\", e);\n-                    }\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to create + '\" + url.getProtocol()\n-                                + \"' metadata report extension instance, check=false found.\");\n-                    }\n-                }\n-            }\n-        }\n-\n-        Collections.shuffle(reports);\n-\n-        /**\n-         * Select the local priority metadata cluster.\n-         * In order to prevent clients from all connecting\n-         * to the same cluster, random sorting has been done.\n-         */\n-        reports.forEach(holder -> {\n-            if (isLocalDataCenter(holder.url)) {\n-                this.localDataCenterReportHolder = holder;\n-            }\n-        });\n-\n-        return reports;\n-    }\n-\n-    @Override\n-    public void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {\n-        this.proxyReports.forEach((holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.storeProviderMetadata(providerMetadataIdentifier, serviceDefinition);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to store provider metadata, register is false. url \" + holder.url);\n-                }\n-            }\n-        }));\n-    }\n-\n-    @Override\n-    public void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.storeConsumerMetadata(consumerMetadataIdentifier, serviceParameterMap);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to store consumer metadata, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.publishAppMetadata(identifier, metadataInfo);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to publish app metadata, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                String definition = localReportHolder.report.getServiceDefinition(metadataIdentifier);\n-                if (definition != null && definition.length() > 0) {\n-                    return definition;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get service definition from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    String definition = holder.report.getServiceDefinition(metadataIdentifier);\n-                    if (definition != null && definition.length() > 0) {\n-                        return definition;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get service definition from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get service definition, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return null;\n-    }\n-\n-    @Override\n-    public MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                MetadataInfo metadataInfo = localReportHolder.report.getAppMetadata(identifier, instanceMetadata);\n-                if (metadataInfo != null) {\n-                    return metadataInfo;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get app metadata from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    MetadataInfo metadataInfo = holder.report.getAppMetadata(identifier, instanceMetadata);\n-                    if (metadataInfo != null) {\n-                        return metadataInfo;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get app metadata from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get app metadata, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return null;\n-    }\n-\n-    @Override\n-    public Set<String> getServiceAppMapping(String serviceKey, MappingListener listener, URL url) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                Set<String> appMapping = localReportHolder.report.getServiceAppMapping(serviceKey, listener, url);\n-                if (appMapping != null && !appMapping.isEmpty()) {\n-                    return appMapping;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get service mapping from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    Set<String> appMapping = holder.report.getServiceAppMapping(serviceKey, listener, url);\n-                    if (appMapping != null && !appMapping.isEmpty()) {\n-                        return appMapping;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get service mapping from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get service mapping, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return Collections.EMPTY_SET;\n-    }\n-\n-    @Override\n-    public void registerServiceAppMapping(String serviceKey, String application, URL url) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.registerServiceAppMapping(serviceKey, application, url);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.saveServiceMetadata(metadataIdentifier, url);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.saveSubscribedData(subscriberMetadataIdentifier, urls);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.removeServiceMetadata(metadataIdentifier);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                List<String> exportedURLs = localReportHolder.report.getExportedURLs(metadataIdentifier);\n-                if (exportedURLs != null && !exportedURLs.isEmpty()) {\n-                    return exportedURLs;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get exported urls from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    List<String> exportedURLs = holder.report.getExportedURLs(metadataIdentifier);\n-                    if (exportedURLs != null && !exportedURLs.isEmpty()) {\n-                        return exportedURLs;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get exported urls from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get exported urls, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return Collections.EMPTY_LIST;\n-    }\n-\n-    @Override\n-    public List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                List<String> subscribedURLs = localReportHolder.report.getSubscribedURLs(subscriberMetadataIdentifier);\n-                if (subscribedURLs != null && !subscribedURLs.isEmpty()) {\n-                    return subscribedURLs;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get subscribed urls from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    List<String> subscribedURLs = holder.report.getSubscribedURLs(subscriberMetadataIdentifier);\n-                    if (subscribedURLs != null && !subscribedURLs.isEmpty()) {\n-                        return subscribedURLs;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get subscribed urls from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get subscribed urls, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return Collections.EMPTY_LIST;\n-    }\n-\n-    public List<MetadataReportHolder> getProxyReports() {\n-        return proxyReports;\n-    }\n-\n-    class MetadataReportHolder {\n-\n-        final URL            url;\n-        final MetadataReport report;\n-\n-        public MetadataReportHolder(URL url, MetadataReport report) {\n-            this.url = url;\n-            this.report = report;\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.metadata.store.failover;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.constants.RemotingConstants;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.metadata.MappingListener;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.MetadataReportFactory;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.regex.Pattern;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CHECK_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_SPLIT_PATTERN;\r\n+\r\n+/**\r\n+ * @author yiji@apache.org\r\n+ */\r\n+public class FailoverMetadataReport extends StrategyMetadataReport {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(FailoverMetadataReport.class);\r\n+\r\n+    // proxy metadata report protocol, eg: zookeeper\r\n+    private static final String PROTOCOL_KEY = \"protocol\";\r\n+\r\n+    private static final String CLUSTER_KEY = \"clusters\";\r\n+\r\n+    // A cluster may have multiple instances\r\n+    private static final String HOST_KEY = \"hosts\";\r\n+\r\n+    private static final Pattern HOST_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[|:]+\\\\s*\");\r\n+\r\n+    // The metadata address of the agent.\r\n+    private List<URL> failoverUrls;\r\n+\r\n+    // The metadata report instance.\r\n+    private List<MetadataReportHolder> proxyReports;\r\n+\r\n+    // Local priority metadata center\r\n+    private MetadataReportHolder localDataCenterReportHolder;\r\n+\r\n+    public FailoverMetadataReport(URL url) {\r\n+        super(url);\r\n+        this.failoverUrls = fetchBackupUrls();\r\n+        this.proxyReports = buildProxyReports();\r\n+    }\r\n+\r\n+    protected List<URL> fetchBackupUrls() {\r\n+        String protocol = url.getParameter(PROTOCOL_KEY);\r\n+        if (protocol == null || !ExtensionLoader.getExtensionLoader(MetadataReportFactory.class).hasExtension(protocol)) {\r\n+            throw new IllegalArgumentException(\r\n+                    \"No '\" + protocol\r\n+                            + \"' metadata report extension found, please check if metadata report module dependencies are included.\");\r\n+        }\r\n+\r\n+        List<URL> urls = new ArrayList<>();\r\n+\r\n+        String clusters = this.url.getParameter(CLUSTER_KEY);\r\n+        String backupHost = this.url.getParameter(HOST_KEY);\r\n+        URL url = this.url.removeParameters(CLUSTER_KEY, HOST_KEY, PROTOCOL_KEY).setProtocol(protocol);\r\n+\r\n+        URL metadataURL = url;\r\n+        if (backupHost != null && backupHost.length() > 0) {\r\n+            metadataURL = metadataURL.addParameter(RemotingConstants.BACKUP_KEY, backupHost);\r\n+        }\r\n+        urls.add(metadataURL);\r\n+\r\n+        if (clusters != null && (clusters = clusters.trim()).length() > 0) {\r\n+            String[] addresses = REGISTRY_SPLIT_PATTERN.split(clusters);\r\n+            for (String address : addresses) {\r\n+                /**\r\n+                 * find multiple cluster hosts, supports multiple\r\n+                 * metadata report center read and write operations.\r\n+                 */\r\n+                String[] hosts = COMMA_SPLIT_PATTERN.split(address);\r\n+                if (hosts.length > 0) {\r\n+                    String node = hosts[0];\r\n+                    // contains user name and password with address ?\r\n+                    String username = null, password = null;\r\n+                    int index = node.indexOf(\"@\");\r\n+                    if (index > 0) {\r\n+                        String[] authority = HOST_SPLIT_PATTERN.split(node.substring(0, index));\r\n+                        username = authority[0];\r\n+                        password = authority[1];\r\n+                        node = node.substring(index + 1);\r\n+                    }\r\n+\r\n+                    String[] hostInfo = HOST_SPLIT_PATTERN.split(node);\r\n+                    String host = hostInfo[0];\r\n+                    int port = Integer.parseInt(hostInfo[1]);\r\n+                    URL clusterURL = new URL(protocol, username, password, host, port, url.getPath(), url.getParameters());\r\n+                    /**\r\n+                     * append backup address if required,\r\n+                     * the same cluster may have more than one node.\r\n+                     */\r\n+                    if (hosts.length > 1) {\r\n+                        StringBuilder buffer = new StringBuilder();\r\n+                        for (int i = 1; i < hosts.length; i++) {\r\n+                            if (i > 1) {\r\n+                                buffer.append(\",\");\r\n+                            }\r\n+                            buffer.append(hosts[i]);\r\n+                        }\r\n+                        clusterURL = clusterURL.addParameters(RemotingConstants.BACKUP_KEY, buffer.toString());\r\n+                    }\r\n+                    urls.add(clusterURL);\r\n+                }\r\n+            }\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    protected List<MetadataReportHolder> buildProxyReports() {\r\n+        List<MetadataReportHolder> reports = new ArrayList<>();\r\n+        if (this.failoverUrls != null && !this.failoverUrls.isEmpty()) {\r\n+            ExtensionLoader<MetadataReportFactory> factoryLoader = ExtensionLoader.getExtensionLoader(MetadataReportFactory.class);\r\n+            for (URL url : this.failoverUrls) {\r\n+                try {\r\n+                    MetadataReportHolder holder = new MetadataReportHolder(url,\r\n+                            factoryLoader.getExtension(url.getProtocol()).getMetadataReport(url));\r\n+                    reports.add(holder);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw new RuntimeException(\"Failed to create + '\" + url.getProtocol() + \"' metadata report extension instance\", e);\r\n+                    }\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to create + '\" + url.getProtocol()\r\n+                                + \"' metadata report extension instance, check=false found.\");\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        Collections.shuffle(reports);\r\n+\r\n+        /**\r\n+         * Select the local priority metadata cluster.\r\n+         * In order to prevent clients from all connecting\r\n+         * to the same cluster, random sorting has been done.\r\n+         */\r\n+        reports.forEach(holder -> {\r\n+            if (isLocalDataCenter(holder.url)) {\r\n+                this.localDataCenterReportHolder = holder;\r\n+            }\r\n+        });\r\n+\r\n+        return reports;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {\r\n+        this.proxyReports.forEach((holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.storeProviderMetadata(providerMetadataIdentifier, serviceDefinition);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to store provider metadata, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        }));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.storeConsumerMetadata(consumerMetadataIdentifier, serviceParameterMap);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to store consumer metadata, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.publishAppMetadata(identifier, metadataInfo);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to publish app metadata, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                String definition = localReportHolder.report.getServiceDefinition(metadataIdentifier);\r\n+                if (definition != null && definition.length() > 0) {\r\n+                    return definition;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get service definition from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    String definition = holder.report.getServiceDefinition(metadataIdentifier);\r\n+                    if (definition != null && definition.length() > 0) {\r\n+                        return definition;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get service definition from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get service definition, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                MetadataInfo metadataInfo = localReportHolder.report.getAppMetadata(identifier, instanceMetadata);\r\n+                if (metadataInfo != null) {\r\n+                    return metadataInfo;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get app metadata from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    MetadataInfo metadataInfo = holder.report.getAppMetadata(identifier, instanceMetadata);\r\n+                    if (metadataInfo != null) {\r\n+                        return metadataInfo;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get app metadata from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get app metadata, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServiceAppMapping(String serviceKey, MappingListener listener, URL url) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                Set<String> appMapping = localReportHolder.report.getServiceAppMapping(serviceKey, listener, url);\r\n+                if (appMapping != null && !appMapping.isEmpty()) {\r\n+                    return appMapping;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get service mapping from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    Set<String> appMapping = holder.report.getServiceAppMapping(serviceKey, listener, url);\r\n+                    if (appMapping != null && !appMapping.isEmpty()) {\r\n+                        return appMapping;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get service mapping from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get service mapping, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return Collections.EMPTY_SET;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void registerServiceAppMapping(String serviceKey, String application, URL url) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.registerServiceAppMapping(serviceKey, application, url);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.saveServiceMetadata(metadataIdentifier, url);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.saveSubscribedData(subscriberMetadataIdentifier, urls);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.removeServiceMetadata(metadataIdentifier);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                List<String> exportedURLs = localReportHolder.report.getExportedURLs(metadataIdentifier);\r\n+                if (exportedURLs != null && !exportedURLs.isEmpty()) {\r\n+                    return exportedURLs;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get exported urls from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    List<String> exportedURLs = holder.report.getExportedURLs(metadataIdentifier);\r\n+                    if (exportedURLs != null && !exportedURLs.isEmpty()) {\r\n+                        return exportedURLs;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get exported urls from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get exported urls, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return Collections.EMPTY_LIST;\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                List<String> subscribedURLs = localReportHolder.report.getSubscribedURLs(subscriberMetadataIdentifier);\r\n+                if (subscribedURLs != null && !subscribedURLs.isEmpty()) {\r\n+                    return subscribedURLs;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get subscribed urls from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    List<String> subscribedURLs = holder.report.getSubscribedURLs(subscriberMetadataIdentifier);\r\n+                    if (subscribedURLs != null && !subscribedURLs.isEmpty()) {\r\n+                        return subscribedURLs;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get subscribed urls from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get subscribed urls, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return Collections.EMPTY_LIST;\r\n+    }\r\n+\r\n+    public List<MetadataReportHolder> getProxyReports() {\r\n+        return proxyReports;\r\n+    }\r\n+\r\n+    class MetadataReportHolder {\r\n+\r\n+        final URL            url;\r\n+        final MetadataReport report;\r\n+\r\n+        public MetadataReportHolder(URL url, MetadataReport report) {\r\n+            this.url = url;\r\n+            this.report = report;\r\n+        }\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,29 +1,29 @@\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.metadata.store.failover;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\n-\n-public class FailoverMetadataReportFactory extends AbstractMetadataReportFactory {\n-\n-    @Override\n-    protected MetadataReport createMetadataReport(URL url) {\n-        return new FailoverMetadataReport(url);\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.metadata.store.failover;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\r\n+\r\n+public class FailoverMetadataReportFactory extends AbstractMetadataReportFactory {\r\n+\r\n+    @Override\r\n+    protected MetadataReport createMetadataReport(URL url) {\r\n+        return new FailoverMetadataReport(url);\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java", "comments": ["Line-ending differences only"], "unified_diff": "@@ -1,88 +1,88 @@\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.metadata.store.failover;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-\n-/**\n- * @author yiji@apache.org\n- */\n-public abstract class StrategyMetadataReport implements MetadataReport {\n-\n-    // failover configured url, eg: failover://127.0.1:2181?backup=localhost:2181|localhost:2181\n-    protected URL url;\n-\n-    protected static final String STRATEGY_KEY = \"strategy\";\n-\n-    // proxy metadata report strategy, used to decide whether to write or read metadata\n-    protected FailoverCondition strategy;\n-\n-    protected ExtensionLoader<FailoverCondition> failoverLoader = ExtensionLoader.getExtensionLoader(FailoverCondition.class);\n-\n-    public StrategyMetadataReport(URL url) {\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"url is required.\");\n-        }\n-        this.url = url;\n-        createFailoverStrategy(url);\n-    }\n-\n-    protected void createFailoverStrategy(URL url) {\n-        String strategy = url.getParameter(STRATEGY_KEY);\n-        if (strategy != null) {\n-            if (!failoverLoader.hasExtension(strategy)) {\n-                throw new IllegalArgumentException(\"No '\" + strategy + \"' failover condition extension found.\");\n-            }\n-            this.strategy = failoverLoader.getExtension(strategy);\n-        }\n-    }\n-\n-    /**\n-     * Whether metadata should be reported.\n-     *\n-     * @param url registry url, eg: zookeeper://127.0.0.1:2181\n-     * @return true store metadata to the specified URL.\n-     */\n-    protected boolean shouldRegister(URL url) {\n-        return this.strategy == null || this.strategy.shouldRegister(url);\n-    }\n-\n-    /**\n-     * Whether metadata should be read from specified url.\n-     *\n-     * @param url registry url, eg: zookeeper://127.0.0.1:2181\n-     * @return true read metadata from specified URL.\n-     */\n-    protected boolean shouldQuery(URL url) {\n-        return this.strategy == null || this.strategy.shouldQuery(url);\n-    }\n-\n-    /**\n-     * Judge whether it is a local region or a local datacenter.\n-     * <p>\n-     * Allows the local region or datacenter to be read first.\n-     *\n-     * @param url\n-     * @return\n-     */\n-    protected boolean isLocalDataCenter(URL url) {\n-        return this.strategy == null || this.strategy.isLocalDataCenter(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.metadata.store.failover;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+\r\n+/**\r\n+ * @author yiji@apache.org\r\n+ */\r\n+public abstract class StrategyMetadataReport implements MetadataReport {\r\n+\r\n+    // failover configured url, eg: failover://127.0.1:2181?backup=localhost:2181|localhost:2181\r\n+    protected URL url;\r\n+\r\n+    protected static final String STRATEGY_KEY = \"strategy\";\r\n+\r\n+    // proxy metadata report strategy, used to decide whether to write or read metadata\r\n+    protected FailoverCondition strategy;\r\n+\r\n+    protected ExtensionLoader<FailoverCondition> failoverLoader = ExtensionLoader.getExtensionLoader(FailoverCondition.class);\r\n+\r\n+    public StrategyMetadataReport(URL url) {\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"url is required.\");\r\n+        }\r\n+        this.url = url;\r\n+        createFailoverStrategy(url);\r\n+    }\r\n+\r\n+    protected void createFailoverStrategy(URL url) {\r\n+        String strategy = url.getParameter(STRATEGY_KEY);\r\n+        if (strategy != null) {\r\n+            if (!failoverLoader.hasExtension(strategy)) {\r\n+                throw new IllegalArgumentException(\"No '\" + strategy + \"' failover condition extension found.\");\r\n+            }\r\n+            this.strategy = failoverLoader.getExtension(strategy);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Whether metadata should be reported.\r\n+     *\r\n+     * @param url registry url, eg: zookeeper://127.0.0.1:2181\r\n+     * @return true store metadata to the specified URL.\r\n+     */\r\n+    protected boolean shouldRegister(URL url) {\r\n+        return this.strategy == null || this.strategy.shouldRegister(url);\r\n+    }\r\n+\r\n+    /**\r\n+     * Whether metadata should be read from specified url.\r\n+     *\r\n+     * @param url registry url, eg: zookeeper://127.0.0.1:2181\r\n+     * @return true read metadata from specified URL.\r\n+     */\r\n+    protected boolean shouldQuery(URL url) {\r\n+        return this.strategy == null || this.strategy.shouldQuery(url);\r\n+    }\r\n+\r\n+    /**\r\n+     * Judge whether it is a local region or a local datacenter.\r\n+     * <p>\r\n+     * Allows the local region or datacenter to be read first.\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    protected boolean isLocalDataCenter(URL url) {\r\n+        return this.strategy == null || this.strategy.isLocalDataCenter(url);\r\n+    }\r\n+\r\n }\n"}]}
