{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo {}", "source2": "zipinfo {}", "unified_diff": "@@ -1,8 +1,8 @@\n-Zip file size: 23050 bytes, number of entries: 29\n+Zip file size: 23110 bytes, number of entries: 29\n -rw-r--r--  2.0 unx       64 b- defN 20-Apr-01 08:04 META-INF/MANIFEST.MF\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/registry/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/\n@@ -11,21 +11,21 @@\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/dubbo/internal/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/\n -rw-r--r--  2.0 unx     6629 b- defN 20-Apr-01 08:04 META-INF/DEPENDENCIES\n -rw-r--r--  2.0 unx    11358 b- defN 20-Apr-01 08:04 META-INF/LICENSE\n -rw-r--r--  2.0 unx      181 b- defN 20-Apr-01 08:04 META-INF/NOTICE\n--rw-r--r--  2.0 unx     2078 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java\n+-rw-r--r--  2.0 unx     2155 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java\n -rw-r--r--  2.0 unx    14879 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperRegistry.java\n -rw-r--r--  2.0 unx     1667 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperRegistryFactory.java\n--rw-r--r--  2.0 unx     8284 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java\n--rw-r--r--  2.0 unx     3183 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java\n--rw-r--r--  2.0 unx     1241 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryFactory.java\n--rw-r--r--  2.0 unx     3185 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java\n--rw-r--r--  2.0 unx     5462 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java\n+-rw-r--r--  2.0 unx     8495 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java\n+-rw-r--r--  2.0 unx     3258 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java\n+-rw-r--r--  2.0 unx     1270 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryFactory.java\n+-rw-r--r--  2.0 unx     3287 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java\n+-rw-r--r--  2.0 unx     5579 b- defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java\n -rw-r--r--  2.0 unx       70 b- defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory\n -rw-r--r--  2.0 unx       71 b- defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery\n -rw-r--r--  2.0 unx       78 b- defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory\n--rw-r--r--  2.0 unx     2476 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml\n+-rw-r--r--  2.0 unx     2414 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml\n -rw-r--r--  2.0 unx       79 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.properties\n-29 files, 60985 bytes uncompressed, 18332 bytes compressed:  69.9%\n+29 files, 61534 bytes uncompressed, 18392 bytes compressed:  70.1%\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -299,1173 +299,1173 @@\n 18A8 Extract Zip Spec      14 (20) '2.0'\n 18A9 Extract OS            00 (0) 'MS-DOS'\n 18AA General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n 18AC Compression Method    0008 (8) 'Deflated'\n 18AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18B2 CRC                   FA431F6B (4198702955)\n-18B6 Compressed Size       00000362 (866)\n-18BA Uncompressed Size     0000081E (2078)\n+18B2 CRC                   7F603610 (2137011728)\n+18B6 Compressed Size       0000036D (877)\n+18BA Uncompressed Size     0000086B (2155)\n 18BE Filename Length       003A (58)\n 18C0 Extra Length          0000 (0)\n 18C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n # WARNING: Offset 0x18C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 18FC PAYLOAD\n \n-1C5E LOCAL HEADER #18      04034B50 (67324752)\n-1C62 Extract Zip Spec      14 (20) '2.0'\n-1C63 Extract OS            00 (0) 'MS-DOS'\n-1C64 General Purpose Flag  0800 (2048)\n+1C69 LOCAL HEADER #18      04034B50 (67324752)\n+1C6D Extract Zip Spec      14 (20) '2.0'\n+1C6E Extract OS            00 (0) 'MS-DOS'\n+1C6F General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-1C66 Compression Method    0008 (8) 'Deflated'\n-1C68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C6C CRC                   57271651 (1462179409)\n-1C70 Compressed Size       00000D7A (3450)\n-1C74 Uncompressed Size     00003A1F (14879)\n-1C78 Filename Length       003A (58)\n-1C7A Extra Length          0000 (0)\n-1C7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C71 Compression Method    0008 (8) 'Deflated'\n+1C73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C77 CRC                   57271651 (1462179409)\n+1C7B Compressed Size       00000D7A (3450)\n+1C7F Uncompressed Size     00003A1F (14879)\n+1C83 Filename Length       003A (58)\n+1C85 Extra Length          0000 (0)\n+1C87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CB6 PAYLOAD\n+1CC1 PAYLOAD\n \n-2A30 LOCAL HEADER #19      04034B50 (67324752)\n-2A34 Extract Zip Spec      14 (20) '2.0'\n-2A35 Extract OS            00 (0) 'MS-DOS'\n-2A36 General Purpose Flag  0800 (2048)\n+2A3B LOCAL HEADER #19      04034B50 (67324752)\n+2A3F Extract Zip Spec      14 (20) '2.0'\n+2A40 Extract OS            00 (0) 'MS-DOS'\n+2A41 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2A38 Compression Method    0008 (8) 'Deflated'\n-2A3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2A3E CRC                   E96DE12E (3916292398)\n-2A42 Compressed Size       000002D8 (728)\n-2A46 Uncompressed Size     00000683 (1667)\n-2A4A Filename Length       0041 (65)\n-2A4C Extra Length          0000 (0)\n-2A4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2A43 Compression Method    0008 (8) 'Deflated'\n+2A45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2A49 CRC                   E96DE12E (3916292398)\n+2A4D Compressed Size       000002D8 (728)\n+2A51 Uncompressed Size     00000683 (1667)\n+2A55 Filename Length       0041 (65)\n+2A57 Extra Length          0000 (0)\n+2A59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2A4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2A59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2A8F PAYLOAD\n+2A9A PAYLOAD\n \n-2D67 LOCAL HEADER #20      04034B50 (67324752)\n-2D6B Extract Zip Spec      14 (20) '2.0'\n-2D6C Extract OS            00 (0) 'MS-DOS'\n-2D6D General Purpose Flag  0800 (2048)\n+2D72 LOCAL HEADER #20      04034B50 (67324752)\n+2D76 Extract Zip Spec      14 (20) '2.0'\n+2D77 Extract OS            00 (0) 'MS-DOS'\n+2D78 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2D6F Compression Method    0008 (8) 'Deflated'\n-2D71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2D75 CRC                   F6A7D6C9 (4138194633)\n-2D79 Compressed Size       00000865 (2149)\n-2D7D Uncompressed Size     0000205C (8284)\n-2D81 Filename Length       0042 (66)\n-2D83 Extra Length          0000 (0)\n-2D85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2D7A Compression Method    0008 (8) 'Deflated'\n+2D7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2D80 CRC                   30ABB121 (816558369)\n+2D84 Compressed Size       00000873 (2163)\n+2D88 Uncompressed Size     0000212F (8495)\n+2D8C Filename Length       0042 (66)\n+2D8E Extra Length          0000 (0)\n+2D90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2D85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2D90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2DC7 PAYLOAD\n+2DD2 PAYLOAD\n \n-362C LOCAL HEADER #21      04034B50 (67324752)\n-3630 Extract Zip Spec      14 (20) '2.0'\n-3631 Extract OS            00 (0) 'MS-DOS'\n-3632 General Purpose Flag  0800 (2048)\n+3645 LOCAL HEADER #21      04034B50 (67324752)\n+3649 Extract Zip Spec      14 (20) '2.0'\n+364A Extract OS            00 (0) 'MS-DOS'\n+364B General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3634 Compression Method    0008 (8) 'Deflated'\n-3636 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-363A CRC                   B6EA911C (3068825884)\n-363E Compressed Size       0000042F (1071)\n-3642 Uncompressed Size     00000C6F (3183)\n-3646 Filename Length       004F (79)\n-3648 Extra Length          0000 (0)\n-364A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+364D Compression Method    0008 (8) 'Deflated'\n+364F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3653 CRC                   9A6BCF9D (2590756765)\n+3657 Compressed Size       0000043A (1082)\n+365B Uncompressed Size     00000CBA (3258)\n+365F Filename Length       004F (79)\n+3661 Extra Length          0000 (0)\n+3663 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x364A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3663: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-3699 PAYLOAD\n+36B2 PAYLOAD\n \n-3AC8 LOCAL HEADER #22      04034B50 (67324752)\n-3ACC Extract Zip Spec      14 (20) '2.0'\n-3ACD Extract OS            00 (0) 'MS-DOS'\n-3ACE General Purpose Flag  0800 (2048)\n+3AEC LOCAL HEADER #22      04034B50 (67324752)\n+3AF0 Extract Zip Spec      14 (20) '2.0'\n+3AF1 Extract OS            00 (0) 'MS-DOS'\n+3AF2 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3AD0 Compression Method    0008 (8) 'Deflated'\n-3AD2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3AD6 CRC                   ACDFEDCC (2900356556)\n-3ADA Compressed Size       00000266 (614)\n-3ADE Uncompressed Size     000004D9 (1241)\n-3AE2 Filename Length       0049 (73)\n-3AE4 Extra Length          0000 (0)\n-3AE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+3AF4 Compression Method    0008 (8) 'Deflated'\n+3AF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3AFA CRC                   3AB6ADA6 (985050534)\n+3AFE Compressed Size       0000026F (623)\n+3B02 Uncompressed Size     000004F6 (1270)\n+3B06 Filename Length       0049 (73)\n+3B08 Extra Length          0000 (0)\n+3B0A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3AE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3B0A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-3B2F PAYLOAD\n+3B53 PAYLOAD\n \n-3D95 LOCAL HEADER #23      04034B50 (67324752)\n-3D99 Extract Zip Spec      14 (20) '2.0'\n-3D9A Extract OS            00 (0) 'MS-DOS'\n-3D9B General Purpose Flag  0800 (2048)\n+3DC2 LOCAL HEADER #23      04034B50 (67324752)\n+3DC6 Extract Zip Spec      14 (20) '2.0'\n+3DC7 Extract OS            00 (0) 'MS-DOS'\n+3DC8 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3D9D Compression Method    0008 (8) 'Deflated'\n-3D9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3DA3 CRC                   7087B36E (1887941486)\n-3DA7 Compressed Size       00000508 (1288)\n-3DAB Uncompressed Size     00000C71 (3185)\n-3DAF Filename Length       0044 (68)\n-3DB1 Extra Length          0000 (0)\n-3DB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+3DCA Compression Method    0008 (8) 'Deflated'\n+3DCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3DD0 CRC                   2502C8DF (620939487)\n+3DD4 Compressed Size       00000514 (1300)\n+3DD8 Uncompressed Size     00000CD7 (3287)\n+3DDC Filename Length       0044 (68)\n+3DDE Extra Length          0000 (0)\n+3DE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3DB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3DE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-3DF7 PAYLOAD\n+3E24 PAYLOAD\n \n-42FF LOCAL HEADER #24      04034B50 (67324752)\n-4303 Extract Zip Spec      14 (20) '2.0'\n-4304 Extract OS            00 (0) 'MS-DOS'\n-4305 General Purpose Flag  0800 (2048)\n+4338 LOCAL HEADER #24      04034B50 (67324752)\n+433C Extract Zip Spec      14 (20) '2.0'\n+433D Extract OS            00 (0) 'MS-DOS'\n+433E General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-4307 Compression Method    0008 (8) 'Deflated'\n-4309 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-430D CRC                   AF46E40B (2940658699)\n-4311 Compressed Size       000005EE (1518)\n-4315 Uncompressed Size     00001556 (5462)\n-4319 Filename Length       0043 (67)\n-431B Extra Length          0000 (0)\n-431D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+4340 Compression Method    0008 (8) 'Deflated'\n+4342 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+4346 CRC                   B9A91D04 (3114867972)\n+434A Compressed Size       000005F8 (1528)\n+434E Uncompressed Size     000015CB (5579)\n+4352 Filename Length       0043 (67)\n+4354 Extra Length          0000 (0)\n+4356 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x431D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4356: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-4360 PAYLOAD\n+4399 PAYLOAD\n \n-494E LOCAL HEADER #25      04034B50 (67324752)\n-4952 Extract Zip Spec      14 (20) '2.0'\n-4953 Extract OS            00 (0) 'MS-DOS'\n-4954 General Purpose Flag  0800 (2048)\n+4991 LOCAL HEADER #25      04034B50 (67324752)\n+4995 Extract Zip Spec      14 (20) '2.0'\n+4996 Extract OS            00 (0) 'MS-DOS'\n+4997 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-4956 Compression Method    0008 (8) 'Deflated'\n-4958 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-495C CRC                   DB66EBCB (3680955339)\n-4960 Compressed Size       00000036 (54)\n-4964 Uncompressed Size     00000046 (70)\n-4968 Filename Length       0041 (65)\n-496A Extra Length          0000 (0)\n-496C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+4999 Compression Method    0008 (8) 'Deflated'\n+499B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+499F CRC                   DB66EBCB (3680955339)\n+49A3 Compressed Size       00000036 (54)\n+49A7 Uncompressed Size     00000046 (70)\n+49AB Filename Length       0041 (65)\n+49AD Extra Length          0000 (0)\n+49AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x496C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x49AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-49AD PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+49F0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-49E3 LOCAL HEADER #26      04034B50 (67324752)\n-49E7 Extract Zip Spec      14 (20) '2.0'\n-49E8 Extract OS            00 (0) 'MS-DOS'\n-49E9 General Purpose Flag  0800 (2048)\n+4A26 LOCAL HEADER #26      04034B50 (67324752)\n+4A2A Extract Zip Spec      14 (20) '2.0'\n+4A2B Extract OS            00 (0) 'MS-DOS'\n+4A2C General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-49EB Compression Method    0008 (8) 'Deflated'\n-49ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-49F1 CRC                   43FDADDD (1140698589)\n-49F5 Compressed Size       0000003C (60)\n-49F9 Uncompressed Size     00000047 (71)\n-49FD Filename Length       0049 (73)\n-49FF Extra Length          0000 (0)\n-4A01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+4A2E Compression Method    0008 (8) 'Deflated'\n+4A30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+4A34 CRC                   43FDADDD (1140698589)\n+4A38 Compressed Size       0000003C (60)\n+4A3C Uncompressed Size     00000047 (71)\n+4A40 Filename Length       0049 (73)\n+4A42 Extra Length          0000 (0)\n+4A44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4A01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4A44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-4A4A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+4A8D PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-4A86 LOCAL HEADER #27      04034B50 (67324752)\n-4A8A Extract Zip Spec      14 (20) '2.0'\n-4A8B Extract OS            00 (0) 'MS-DOS'\n-4A8C General Purpose Flag  0800 (2048)\n+4AC9 LOCAL HEADER #27      04034B50 (67324752)\n+4ACD Extract Zip Spec      14 (20) '2.0'\n+4ACE Extract OS            00 (0) 'MS-DOS'\n+4ACF General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-4A8E Compression Method    0008 (8) 'Deflated'\n-4A90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-4A94 CRC                   621824EF (1645749487)\n-4A98 Compressed Size       00000043 (67)\n-4A9C Uncompressed Size     0000004E (78)\n-4AA0 Filename Length       0050 (80)\n-4AA2 Extra Length          0000 (0)\n-4AA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+4AD1 Compression Method    0008 (8) 'Deflated'\n+4AD3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+4AD7 CRC                   621824EF (1645749487)\n+4ADB Compressed Size       00000043 (67)\n+4ADF Uncompressed Size     0000004E (78)\n+4AE3 Filename Length       0050 (80)\n+4AE5 Extra Length          0000 (0)\n+4AE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4AA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4AE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-4AF4 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+4B37 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-4B37 LOCAL HEADER #28      04034B50 (67324752)\n-4B3B Extract Zip Spec      14 (20) '2.0'\n-4B3C Extract OS            00 (0) 'MS-DOS'\n-4B3D General Purpose Flag  0800 (2048)\n+4B7A LOCAL HEADER #28      04034B50 (67324752)\n+4B7E Extract Zip Spec      14 (20) '2.0'\n+4B7F Extract OS            00 (0) 'MS-DOS'\n+4B80 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-4B3F Compression Method    0008 (8) 'Deflated'\n-4B41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-4B45 CRC                   4C2A7690 (1277851280)\n-4B49 Compressed Size       00000399 (921)\n-4B4D Uncompressed Size     000009AC (2476)\n-4B51 Filename Length       0040 (64)\n-4B53 Extra Length          0000 (0)\n-4B55 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+4B82 Compression Method    0008 (8) 'Deflated'\n+4B84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+4B88 CRC                   2D62C29D (761447069)\n+4B8C Compressed Size       00000392 (914)\n+4B90 Uncompressed Size     0000096E (2414)\n+4B94 Filename Length       0040 (64)\n+4B96 Extra Length          0000 (0)\n+4B98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4B55: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4B98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-4B95 PAYLOAD\n+4BD8 PAYLOAD\n \n-4F2E LOCAL HEADER #29      04034B50 (67324752)\n-4F32 Extract Zip Spec      14 (20) '2.0'\n-4F33 Extract OS            00 (0) 'MS-DOS'\n-4F34 General Purpose Flag  0800 (2048)\n+4F6A LOCAL HEADER #29      04034B50 (67324752)\n+4F6E Extract Zip Spec      14 (20) '2.0'\n+4F6F Extract OS            00 (0) 'MS-DOS'\n+4F70 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-4F36 Compression Method    0008 (8) 'Deflated'\n-4F38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-4F3C CRC                   68C29EEA (1757585130)\n-4F40 Compressed Size       0000004D (77)\n-4F44 Uncompressed Size     0000004F (79)\n-4F48 Filename Length       0047 (71)\n-4F4A Extra Length          0000 (0)\n-4F4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+4F72 Compression Method    0008 (8) 'Deflated'\n+4F74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+4F78 CRC                   68C29EEA (1757585130)\n+4F7C Compressed Size       0000004D (77)\n+4F80 Uncompressed Size     0000004F (79)\n+4F84 Filename Length       0047 (71)\n+4F86 Extra Length          0000 (0)\n+4F88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4F4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4F88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-4F93 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+4FCF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-4FE0 CENTRAL HEADER #1     02014B50 (33639248)\n-4FE4 Created Zip Spec      14 (20) '2.0'\n-4FE5 Created OS            03 (3) 'Unix'\n-4FE6 Extract Zip Spec      14 (20) '2.0'\n-4FE7 Extract OS            00 (0) 'MS-DOS'\n-4FE8 General Purpose Flag  0800 (2048)\n+501C CENTRAL HEADER #1     02014B50 (33639248)\n+5020 Created Zip Spec      14 (20) '2.0'\n+5021 Created OS            03 (3) 'Unix'\n+5022 Extract Zip Spec      14 (20) '2.0'\n+5023 Extract OS            00 (0) 'MS-DOS'\n+5024 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-4FEA Compression Method    0008 (8) 'Deflated'\n-4FEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-4FF0 CRC                   A689EB18 (2794056472)\n-4FF4 Compressed Size       00000042 (66)\n-4FF8 Uncompressed Size     00000040 (64)\n-4FFC Filename Length       0014 (20)\n-4FFE Extra Length          0000 (0)\n-5000 Comment Length        0000 (0)\n-5002 Disk Start            0000 (0)\n-5004 Int File Attributes   0000 (0)\n+5026 Compression Method    0008 (8) 'Deflated'\n+5028 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+502C CRC                   A689EB18 (2794056472)\n+5030 Compressed Size       00000042 (66)\n+5034 Uncompressed Size     00000040 (64)\n+5038 Filename Length       0014 (20)\n+503A Extra Length          0000 (0)\n+503C Comment Length        0000 (0)\n+503E Disk Start            0000 (0)\n+5040 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5006 Ext File Attributes   81A40000 (2175008768)\n+5042 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-500A Local Header Offset   00000000 (0)\n-500E Filename              'XXXXXXXXXXXXXXXXXXXX'\n+5046 Local Header Offset   00000000 (0)\n+504A Filename              'XXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x500E: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x504A: Filename 'XXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-5022 CENTRAL HEADER #2     02014B50 (33639248)\n-5026 Created Zip Spec      14 (20) '2.0'\n-5027 Created OS            03 (3) 'Unix'\n-5028 Extract Zip Spec      0A (10) '1.0'\n-5029 Extract OS            00 (0) 'MS-DOS'\n-502A General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-502C Compression Method    0000 (0) 'Stored'\n-502E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5032 CRC                   00000000 (0)\n-5036 Compressed Size       00000000 (0)\n-503A Uncompressed Size     00000000 (0)\n-503E Filename Length       0009 (9)\n-5040 Extra Length          0000 (0)\n-5042 Comment Length        0000 (0)\n-5044 Disk Start            0000 (0)\n-5046 Int File Attributes   0000 (0)\n+505E CENTRAL HEADER #2     02014B50 (33639248)\n+5062 Created Zip Spec      14 (20) '2.0'\n+5063 Created OS            03 (3) 'Unix'\n+5064 Extract Zip Spec      0A (10) '1.0'\n+5065 Extract OS            00 (0) 'MS-DOS'\n+5066 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+5068 Compression Method    0000 (0) 'Stored'\n+506A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+506E CRC                   00000000 (0)\n+5072 Compressed Size       00000000 (0)\n+5076 Uncompressed Size     00000000 (0)\n+507A Filename Length       0009 (9)\n+507C Extra Length          0000 (0)\n+507E Comment Length        0000 (0)\n+5080 Disk Start            0000 (0)\n+5082 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5048 Ext File Attributes   41ED0010 (1106051088)\n+5084 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-504C Local Header Offset   00000074 (116)\n-5050 Filename              'XXXXXXXXX'\n+5088 Local Header Offset   00000074 (116)\n+508C Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0x5050: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0x508C: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x5050: Directory 'XXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x508C: Directory 'XXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x5028: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXX'\n+# WARNING: Offset 0x5064: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXX'\n #\n \n-5059 CENTRAL HEADER #3     02014B50 (33639248)\n-505D Created Zip Spec      14 (20) '2.0'\n-505E Created OS            03 (3) 'Unix'\n-505F Extract Zip Spec      0A (10) '1.0'\n-5060 Extract OS            00 (0) 'MS-DOS'\n-5061 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-5063 Compression Method    0000 (0) 'Stored'\n-5065 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5069 CRC                   00000000 (0)\n-506D Compressed Size       00000000 (0)\n-5071 Uncompressed Size     00000000 (0)\n-5075 Filename Length       0004 (4)\n-5077 Extra Length          0000 (0)\n-5079 Comment Length        0000 (0)\n-507B Disk Start            0000 (0)\n-507D Int File Attributes   0000 (0)\n+5095 CENTRAL HEADER #3     02014B50 (33639248)\n+5099 Created Zip Spec      14 (20) '2.0'\n+509A Created OS            03 (3) 'Unix'\n+509B Extract Zip Spec      0A (10) '1.0'\n+509C Extract OS            00 (0) 'MS-DOS'\n+509D General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+509F Compression Method    0000 (0) 'Stored'\n+50A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+50A5 CRC                   00000000 (0)\n+50A9 Compressed Size       00000000 (0)\n+50AD Uncompressed Size     00000000 (0)\n+50B1 Filename Length       0004 (4)\n+50B3 Extra Length          0000 (0)\n+50B5 Comment Length        0000 (0)\n+50B7 Disk Start            0000 (0)\n+50B9 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-507F Ext File Attributes   41ED0010 (1106051088)\n+50BB Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-5083 Local Header Offset   0000009B (155)\n-5087 Filename              'XXXX'\n+50BF Local Header Offset   0000009B (155)\n+50C3 Filename              'XXXX'\n #\n-# WARNING: Offset 0x5087: Filename 'XXXX'\n+# WARNING: Offset 0x50C3: Filename 'XXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x5087: Directory 'XXXX' must end in a '/'\n+# ERROR: Offset 0x50C3: Directory 'XXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x505F: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXX'\n+# WARNING: Offset 0x509B: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXX'\n #\n \n-508B CENTRAL HEADER #4     02014B50 (33639248)\n-508F Created Zip Spec      14 (20) '2.0'\n-5090 Created OS            03 (3) 'Unix'\n-5091 Extract Zip Spec      0A (10) '1.0'\n-5092 Extract OS            00 (0) 'MS-DOS'\n-5093 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-5095 Compression Method    0000 (0) 'Stored'\n-5097 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-509B CRC                   00000000 (0)\n-509F Compressed Size       00000000 (0)\n-50A3 Uncompressed Size     00000000 (0)\n-50A7 Filename Length       000B (11)\n-50A9 Extra Length          0000 (0)\n-50AB Comment Length        0000 (0)\n-50AD Disk Start            0000 (0)\n-50AF Int File Attributes   0000 (0)\n+50C7 CENTRAL HEADER #4     02014B50 (33639248)\n+50CB Created Zip Spec      14 (20) '2.0'\n+50CC Created OS            03 (3) 'Unix'\n+50CD Extract Zip Spec      0A (10) '1.0'\n+50CE Extract OS            00 (0) 'MS-DOS'\n+50CF General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+50D1 Compression Method    0000 (0) 'Stored'\n+50D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+50D7 CRC                   00000000 (0)\n+50DB Compressed Size       00000000 (0)\n+50DF Uncompressed Size     00000000 (0)\n+50E3 Filename Length       000B (11)\n+50E5 Extra Length          0000 (0)\n+50E7 Comment Length        0000 (0)\n+50E9 Disk Start            0000 (0)\n+50EB Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-50B1 Ext File Attributes   41ED0010 (1106051088)\n+50ED Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-50B5 Local Header Offset   000000BD (189)\n-50B9 Filename              'XXXXXXXXXXX'\n+50F1 Local Header Offset   000000BD (189)\n+50F5 Filename              'XXXXXXXXXXX'\n #\n-# WARNING: Offset 0x50B9: Filename 'XXXXXXXXXXX'\n+# WARNING: Offset 0x50F5: Filename 'XXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x50B9: Directory 'XXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x50F5: Directory 'XXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x5091: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXX'\n+# WARNING: Offset 0x50CD: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXX'\n #\n \n-50C4 CENTRAL HEADER #5     02014B50 (33639248)\n-50C8 Created Zip Spec      14 (20) '2.0'\n-50C9 Created OS            03 (3) 'Unix'\n-50CA Extract Zip Spec      0A (10) '1.0'\n-50CB Extract OS            00 (0) 'MS-DOS'\n-50CC General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-50CE Compression Method    0000 (0) 'Stored'\n-50D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-50D4 CRC                   00000000 (0)\n-50D8 Compressed Size       00000000 (0)\n-50DC Uncompressed Size     00000000 (0)\n-50E0 Filename Length       0011 (17)\n-50E2 Extra Length          0000 (0)\n-50E4 Comment Length        0000 (0)\n-50E6 Disk Start            0000 (0)\n-50E8 Int File Attributes   0000 (0)\n+5100 CENTRAL HEADER #5     02014B50 (33639248)\n+5104 Created Zip Spec      14 (20) '2.0'\n+5105 Created OS            03 (3) 'Unix'\n+5106 Extract Zip Spec      0A (10) '1.0'\n+5107 Extract OS            00 (0) 'MS-DOS'\n+5108 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+510A Compression Method    0000 (0) 'Stored'\n+510C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5110 CRC                   00000000 (0)\n+5114 Compressed Size       00000000 (0)\n+5118 Uncompressed Size     00000000 (0)\n+511C Filename Length       0011 (17)\n+511E Extra Length          0000 (0)\n+5120 Comment Length        0000 (0)\n+5122 Disk Start            0000 (0)\n+5124 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-50EA Ext File Attributes   41ED0010 (1106051088)\n+5126 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-50EE Local Header Offset   000000E6 (230)\n-50F2 Filename              'XXXXXXXXXXXXXXXXX'\n+512A Local Header Offset   000000E6 (230)\n+512E Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x50F2: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x512E: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x50F2: Directory 'XXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x512E: Directory 'XXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x50CA: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5106: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXX'\n #\n \n-5103 CENTRAL HEADER #6     02014B50 (33639248)\n-5107 Created Zip Spec      14 (20) '2.0'\n-5108 Created OS            03 (3) 'Unix'\n-5109 Extract Zip Spec      0A (10) '1.0'\n-510A Extract OS            00 (0) 'MS-DOS'\n-510B General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-510D Compression Method    0000 (0) 'Stored'\n-510F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5113 CRC                   00000000 (0)\n-5117 Compressed Size       00000000 (0)\n-511B Uncompressed Size     00000000 (0)\n-511F Filename Length       001A (26)\n-5121 Extra Length          0000 (0)\n-5123 Comment Length        0000 (0)\n-5125 Disk Start            0000 (0)\n-5127 Int File Attributes   0000 (0)\n+513F CENTRAL HEADER #6     02014B50 (33639248)\n+5143 Created Zip Spec      14 (20) '2.0'\n+5144 Created OS            03 (3) 'Unix'\n+5145 Extract Zip Spec      0A (10) '1.0'\n+5146 Extract OS            00 (0) 'MS-DOS'\n+5147 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+5149 Compression Method    0000 (0) 'Stored'\n+514B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+514F CRC                   00000000 (0)\n+5153 Compressed Size       00000000 (0)\n+5157 Uncompressed Size     00000000 (0)\n+515B Filename Length       001A (26)\n+515D Extra Length          0000 (0)\n+515F Comment Length        0000 (0)\n+5161 Disk Start            0000 (0)\n+5163 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5129 Ext File Attributes   41ED0010 (1106051088)\n+5165 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-512D Local Header Offset   00000115 (277)\n-5131 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5169 Local Header Offset   00000115 (277)\n+516D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5131: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x516D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x5131: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x516D: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x5109: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5145: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-514B CENTRAL HEADER #7     02014B50 (33639248)\n-514F Created Zip Spec      14 (20) '2.0'\n-5150 Created OS            03 (3) 'Unix'\n-5151 Extract Zip Spec      0A (10) '1.0'\n-5152 Extract OS            00 (0) 'MS-DOS'\n-5153 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-5155 Compression Method    0000 (0) 'Stored'\n-5157 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-515B CRC                   00000000 (0)\n-515F Compressed Size       00000000 (0)\n-5163 Uncompressed Size     00000000 (0)\n-5167 Filename Length       0024 (36)\n-5169 Extra Length          0000 (0)\n-516B Comment Length        0000 (0)\n-516D Disk Start            0000 (0)\n-516F Int File Attributes   0000 (0)\n+5187 CENTRAL HEADER #7     02014B50 (33639248)\n+518B Created Zip Spec      14 (20) '2.0'\n+518C Created OS            03 (3) 'Unix'\n+518D Extract Zip Spec      0A (10) '1.0'\n+518E Extract OS            00 (0) 'MS-DOS'\n+518F General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+5191 Compression Method    0000 (0) 'Stored'\n+5193 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5197 CRC                   00000000 (0)\n+519B Compressed Size       00000000 (0)\n+519F Uncompressed Size     00000000 (0)\n+51A3 Filename Length       0024 (36)\n+51A5 Extra Length          0000 (0)\n+51A7 Comment Length        0000 (0)\n+51A9 Disk Start            0000 (0)\n+51AB Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5171 Ext File Attributes   41ED0010 (1106051088)\n+51AD Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-5175 Local Header Offset   0000014D (333)\n-5179 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+51B1 Local Header Offset   0000014D (333)\n+51B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5179: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x51B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x5179: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x51B5: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x5151: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x518D: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-519D CENTRAL HEADER #8     02014B50 (33639248)\n-51A1 Created Zip Spec      14 (20) '2.0'\n-51A2 Created OS            03 (3) 'Unix'\n-51A3 Extract Zip Spec      0A (10) '1.0'\n-51A4 Extract OS            00 (0) 'MS-DOS'\n-51A5 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-51A7 Compression Method    0000 (0) 'Stored'\n-51A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-51AD CRC                   00000000 (0)\n-51B1 Compressed Size       00000000 (0)\n-51B5 Uncompressed Size     00000000 (0)\n-51B9 Filename Length       0029 (41)\n-51BB Extra Length          0000 (0)\n-51BD Comment Length        0000 (0)\n-51BF Disk Start            0000 (0)\n-51C1 Int File Attributes   0000 (0)\n+51D9 CENTRAL HEADER #8     02014B50 (33639248)\n+51DD Created Zip Spec      14 (20) '2.0'\n+51DE Created OS            03 (3) 'Unix'\n+51DF Extract Zip Spec      0A (10) '1.0'\n+51E0 Extract OS            00 (0) 'MS-DOS'\n+51E1 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+51E3 Compression Method    0000 (0) 'Stored'\n+51E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+51E9 CRC                   00000000 (0)\n+51ED Compressed Size       00000000 (0)\n+51F1 Uncompressed Size     00000000 (0)\n+51F5 Filename Length       0029 (41)\n+51F7 Extra Length          0000 (0)\n+51F9 Comment Length        0000 (0)\n+51FB Disk Start            0000 (0)\n+51FD Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-51C3 Ext File Attributes   41ED0010 (1106051088)\n+51FF Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-51C7 Local Header Offset   0000018F (399)\n-51CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5203 Local Header Offset   0000018F (399)\n+5207 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x51CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5207: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x51CB: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x5207: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x51A3: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x51DF: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-51F4 CENTRAL HEADER #9     02014B50 (33639248)\n-51F8 Created Zip Spec      14 (20) '2.0'\n-51F9 Created OS            03 (3) 'Unix'\n-51FA Extract Zip Spec      0A (10) '1.0'\n-51FB Extract OS            00 (0) 'MS-DOS'\n-51FC General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-51FE Compression Method    0000 (0) 'Stored'\n-5200 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5204 CRC                   00000000 (0)\n-5208 Compressed Size       00000000 (0)\n-520C Uncompressed Size     00000000 (0)\n-5210 Filename Length       000F (15)\n-5212 Extra Length          0000 (0)\n-5214 Comment Length        0000 (0)\n-5216 Disk Start            0000 (0)\n-5218 Int File Attributes   0000 (0)\n+5230 CENTRAL HEADER #9     02014B50 (33639248)\n+5234 Created Zip Spec      14 (20) '2.0'\n+5235 Created OS            03 (3) 'Unix'\n+5236 Extract Zip Spec      0A (10) '1.0'\n+5237 Extract OS            00 (0) 'MS-DOS'\n+5238 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+523A Compression Method    0000 (0) 'Stored'\n+523C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5240 CRC                   00000000 (0)\n+5244 Compressed Size       00000000 (0)\n+5248 Uncompressed Size     00000000 (0)\n+524C Filename Length       000F (15)\n+524E Extra Length          0000 (0)\n+5250 Comment Length        0000 (0)\n+5252 Disk Start            0000 (0)\n+5254 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-521A Ext File Attributes   41ED0010 (1106051088)\n+5256 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-521E Local Header Offset   000001D6 (470)\n-5222 Filename              'XXXXXXXXXXXXXXX'\n+525A Local Header Offset   000001D6 (470)\n+525E Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5222: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x525E: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x5222: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x525E: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x51FA: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5236: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n #\n \n-5231 CENTRAL HEADER #10    02014B50 (33639248)\n-5235 Created Zip Spec      14 (20) '2.0'\n-5236 Created OS            03 (3) 'Unix'\n-5237 Extract Zip Spec      0A (10) '1.0'\n-5238 Extract OS            00 (0) 'MS-DOS'\n-5239 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-523B Compression Method    0000 (0) 'Stored'\n-523D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5241 CRC                   00000000 (0)\n-5245 Compressed Size       00000000 (0)\n-5249 Uncompressed Size     00000000 (0)\n-524D Filename Length       0018 (24)\n-524F Extra Length          0000 (0)\n-5251 Comment Length        0000 (0)\n-5253 Disk Start            0000 (0)\n-5255 Int File Attributes   0000 (0)\n+526D CENTRAL HEADER #10    02014B50 (33639248)\n+5271 Created Zip Spec      14 (20) '2.0'\n+5272 Created OS            03 (3) 'Unix'\n+5273 Extract Zip Spec      0A (10) '1.0'\n+5274 Extract OS            00 (0) 'MS-DOS'\n+5275 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+5277 Compression Method    0000 (0) 'Stored'\n+5279 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+527D CRC                   00000000 (0)\n+5281 Compressed Size       00000000 (0)\n+5285 Uncompressed Size     00000000 (0)\n+5289 Filename Length       0018 (24)\n+528B Extra Length          0000 (0)\n+528D Comment Length        0000 (0)\n+528F Disk Start            0000 (0)\n+5291 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5257 Ext File Attributes   41ED0010 (1106051088)\n+5293 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-525B Local Header Offset   00000203 (515)\n-525F Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+5297 Local Header Offset   00000203 (515)\n+529B Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x525F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x529B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x525F: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x529B: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x5237: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5273: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-5277 CENTRAL HEADER #11    02014B50 (33639248)\n-527B Created Zip Spec      14 (20) '2.0'\n-527C Created OS            03 (3) 'Unix'\n-527D Extract Zip Spec      0A (10) '1.0'\n-527E Extract OS            00 (0) 'MS-DOS'\n-527F General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-5281 Compression Method    0000 (0) 'Stored'\n-5283 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5287 CRC                   00000000 (0)\n-528B Compressed Size       00000000 (0)\n-528F Uncompressed Size     00000000 (0)\n-5293 Filename Length       000F (15)\n-5295 Extra Length          0000 (0)\n-5297 Comment Length        0000 (0)\n-5299 Disk Start            0000 (0)\n-529B Int File Attributes   0000 (0)\n+52B3 CENTRAL HEADER #11    02014B50 (33639248)\n+52B7 Created Zip Spec      14 (20) '2.0'\n+52B8 Created OS            03 (3) 'Unix'\n+52B9 Extract Zip Spec      0A (10) '1.0'\n+52BA Extract OS            00 (0) 'MS-DOS'\n+52BB General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+52BD Compression Method    0000 (0) 'Stored'\n+52BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+52C3 CRC                   00000000 (0)\n+52C7 Compressed Size       00000000 (0)\n+52CB Uncompressed Size     00000000 (0)\n+52CF Filename Length       000F (15)\n+52D1 Extra Length          0000 (0)\n+52D3 Comment Length        0000 (0)\n+52D5 Disk Start            0000 (0)\n+52D7 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-529D Ext File Attributes   41ED0010 (1106051088)\n+52D9 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-52A1 Local Header Offset   00000239 (569)\n-52A5 Filename              'XXXXXXXXXXXXXXX'\n+52DD Local Header Offset   00000239 (569)\n+52E1 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x52A5: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x52E1: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x52A5: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x52E1: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x527D: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x52B9: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n #\n \n-52B4 CENTRAL HEADER #12    02014B50 (33639248)\n-52B8 Created Zip Spec      14 (20) '2.0'\n-52B9 Created OS            03 (3) 'Unix'\n-52BA Extract Zip Spec      0A (10) '1.0'\n-52BB Extract OS            00 (0) 'MS-DOS'\n-52BC General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-52BE Compression Method    0000 (0) 'Stored'\n-52C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-52C4 CRC                   00000000 (0)\n-52C8 Compressed Size       00000000 (0)\n-52CC Uncompressed Size     00000000 (0)\n-52D0 Filename Length       0020 (32)\n-52D2 Extra Length          0000 (0)\n-52D4 Comment Length        0000 (0)\n-52D6 Disk Start            0000 (0)\n-52D8 Int File Attributes   0000 (0)\n+52F0 CENTRAL HEADER #12    02014B50 (33639248)\n+52F4 Created Zip Spec      14 (20) '2.0'\n+52F5 Created OS            03 (3) 'Unix'\n+52F6 Extract Zip Spec      0A (10) '1.0'\n+52F7 Extract OS            00 (0) 'MS-DOS'\n+52F8 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+52FA Compression Method    0000 (0) 'Stored'\n+52FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5300 CRC                   00000000 (0)\n+5304 Compressed Size       00000000 (0)\n+5308 Uncompressed Size     00000000 (0)\n+530C Filename Length       0020 (32)\n+530E Extra Length          0000 (0)\n+5310 Comment Length        0000 (0)\n+5312 Disk Start            0000 (0)\n+5314 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-52DA Ext File Attributes   41ED0010 (1106051088)\n+5316 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-52DE Local Header Offset   00000266 (614)\n-52E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+531A Local Header Offset   00000266 (614)\n+531E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x52E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x531E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x52E2: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x531E: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x52BA: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x52F6: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-5302 CENTRAL HEADER #13    02014B50 (33639248)\n-5306 Created Zip Spec      14 (20) '2.0'\n-5307 Created OS            03 (3) 'Unix'\n-5308 Extract Zip Spec      0A (10) '1.0'\n-5309 Extract OS            00 (0) 'MS-DOS'\n-530A General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-530C Compression Method    0000 (0) 'Stored'\n-530E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5312 CRC                   00000000 (0)\n-5316 Compressed Size       00000000 (0)\n-531A Uncompressed Size     00000000 (0)\n-531E Filename Length       0039 (57)\n-5320 Extra Length          0000 (0)\n-5322 Comment Length        0000 (0)\n-5324 Disk Start            0000 (0)\n-5326 Int File Attributes   0000 (0)\n+533E CENTRAL HEADER #13    02014B50 (33639248)\n+5342 Created Zip Spec      14 (20) '2.0'\n+5343 Created OS            03 (3) 'Unix'\n+5344 Extract Zip Spec      0A (10) '1.0'\n+5345 Extract OS            00 (0) 'MS-DOS'\n+5346 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+5348 Compression Method    0000 (0) 'Stored'\n+534A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+534E CRC                   00000000 (0)\n+5352 Compressed Size       00000000 (0)\n+5356 Uncompressed Size     00000000 (0)\n+535A Filename Length       0039 (57)\n+535C Extra Length          0000 (0)\n+535E Comment Length        0000 (0)\n+5360 Disk Start            0000 (0)\n+5362 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5328 Ext File Attributes   41ED0010 (1106051088)\n+5364 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-532C Local Header Offset   000002A4 (676)\n-5330 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5368 Local Header Offset   000002A4 (676)\n+536C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5330: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x536C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x5330: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x536C: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x5308: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5344: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-5369 CENTRAL HEADER #14    02014B50 (33639248)\n-536D Created Zip Spec      14 (20) '2.0'\n-536E Created OS            03 (3) 'Unix'\n-536F Extract Zip Spec      14 (20) '2.0'\n-5370 Extract OS            00 (0) 'MS-DOS'\n-5371 General Purpose Flag  0800 (2048)\n-     [Bits 1-2]            0 'Normal Compression'\n-     [Bit 11]              1 'Language Encoding'\n-5373 Compression Method    0008 (8) 'Deflated'\n-5375 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5379 CRC                   3A1AC0B7 (974831799)\n-537D Compressed Size       0000052A (1322)\n-5381 Uncompressed Size     000019E5 (6629)\n-5385 Filename Length       0015 (21)\n-5387 Extra Length          0000 (0)\n-5389 Comment Length        0000 (0)\n-538B Disk Start            0000 (0)\n-538D Int File Attributes   0000 (0)\n+53A5 CENTRAL HEADER #14    02014B50 (33639248)\n+53A9 Created Zip Spec      14 (20) '2.0'\n+53AA Created OS            03 (3) 'Unix'\n+53AB Extract Zip Spec      14 (20) '2.0'\n+53AC Extract OS            00 (0) 'MS-DOS'\n+53AD General Purpose Flag  0800 (2048)\n+     [Bits 1-2]            0 'Normal Compression'\n+     [Bit 11]              1 'Language Encoding'\n+53AF Compression Method    0008 (8) 'Deflated'\n+53B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+53B5 CRC                   3A1AC0B7 (974831799)\n+53B9 Compressed Size       0000052A (1322)\n+53BD Uncompressed Size     000019E5 (6629)\n+53C1 Filename Length       0015 (21)\n+53C3 Extra Length          0000 (0)\n+53C5 Comment Length        0000 (0)\n+53C7 Disk Start            0000 (0)\n+53C9 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-538F Ext File Attributes   81A40000 (2175008768)\n+53CB Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-5393 Local Header Offset   000002FB (763)\n-5397 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+53CF Local Header Offset   000002FB (763)\n+53D3 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5397: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x53D3: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-53AC CENTRAL HEADER #15    02014B50 (33639248)\n-53B0 Created Zip Spec      14 (20) '2.0'\n-53B1 Created OS            03 (3) 'Unix'\n-53B2 Extract Zip Spec      14 (20) '2.0'\n-53B3 Extract OS            00 (0) 'MS-DOS'\n-53B4 General Purpose Flag  0800 (2048)\n+53E8 CENTRAL HEADER #15    02014B50 (33639248)\n+53EC Created Zip Spec      14 (20) '2.0'\n+53ED Created OS            03 (3) 'Unix'\n+53EE Extract Zip Spec      14 (20) '2.0'\n+53EF Extract OS            00 (0) 'MS-DOS'\n+53F0 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-53B6 Compression Method    0008 (8) 'Deflated'\n-53B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-53BC CRC                   86E2B4B4 (2263004340)\n-53C0 Compressed Size       00000F6D (3949)\n-53C4 Uncompressed Size     00002C5E (11358)\n-53C8 Filename Length       0010 (16)\n-53CA Extra Length          0000 (0)\n-53CC Comment Length        0000 (0)\n-53CE Disk Start            0000 (0)\n-53D0 Int File Attributes   0000 (0)\n+53F2 Compression Method    0008 (8) 'Deflated'\n+53F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+53F8 CRC                   86E2B4B4 (2263004340)\n+53FC Compressed Size       00000F6D (3949)\n+5400 Uncompressed Size     00002C5E (11358)\n+5404 Filename Length       0010 (16)\n+5406 Extra Length          0000 (0)\n+5408 Comment Length        0000 (0)\n+540A Disk Start            0000 (0)\n+540C Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-53D2 Ext File Attributes   81A40000 (2175008768)\n+540E Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-53D6 Local Header Offset   00000858 (2136)\n-53DA Filename              'XXXXXXXXXXXXXXXX'\n+5412 Local Header Offset   00000858 (2136)\n+5416 Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x53DA: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5416: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-53EA CENTRAL HEADER #16    02014B50 (33639248)\n-53EE Created Zip Spec      14 (20) '2.0'\n-53EF Created OS            03 (3) 'Unix'\n-53F0 Extract Zip Spec      14 (20) '2.0'\n-53F1 Extract OS            00 (0) 'MS-DOS'\n-53F2 General Purpose Flag  0800 (2048)\n+5426 CENTRAL HEADER #16    02014B50 (33639248)\n+542A Created Zip Spec      14 (20) '2.0'\n+542B Created OS            03 (3) 'Unix'\n+542C Extract Zip Spec      14 (20) '2.0'\n+542D Extract OS            00 (0) 'MS-DOS'\n+542E General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-53F4 Compression Method    0008 (8) 'Deflated'\n-53F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-53FA CRC                   796EC16A (2037301610)\n-53FE Compressed Size       00000084 (132)\n-5402 Uncompressed Size     000000B5 (181)\n-5406 Filename Length       000F (15)\n-5408 Extra Length          0000 (0)\n-540A Comment Length        0000 (0)\n-540C Disk Start            0000 (0)\n-540E Int File Attributes   0000 (0)\n+5430 Compression Method    0008 (8) 'Deflated'\n+5432 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5436 CRC                   796EC16A (2037301610)\n+543A Compressed Size       00000084 (132)\n+543E Uncompressed Size     000000B5 (181)\n+5442 Filename Length       000F (15)\n+5444 Extra Length          0000 (0)\n+5446 Comment Length        0000 (0)\n+5448 Disk Start            0000 (0)\n+544A Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5410 Ext File Attributes   81A40000 (2175008768)\n+544C Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-5414 Local Header Offset   000017F3 (6131)\n-5418 Filename              'XXXXXXXXXXXXXXX'\n+5450 Local Header Offset   000017F3 (6131)\n+5454 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5418: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5454: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-5427 CENTRAL HEADER #17    02014B50 (33639248)\n-542B Created Zip Spec      14 (20) '2.0'\n-542C Created OS            03 (3) 'Unix'\n-542D Extract Zip Spec      14 (20) '2.0'\n-542E Extract OS            00 (0) 'MS-DOS'\n-542F General Purpose Flag  0800 (2048)\n+5463 CENTRAL HEADER #17    02014B50 (33639248)\n+5467 Created Zip Spec      14 (20) '2.0'\n+5468 Created OS            03 (3) 'Unix'\n+5469 Extract Zip Spec      14 (20) '2.0'\n+546A Extract OS            00 (0) 'MS-DOS'\n+546B General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-5431 Compression Method    0008 (8) 'Deflated'\n-5433 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5437 CRC                   FA431F6B (4198702955)\n-543B Compressed Size       00000362 (866)\n-543F Uncompressed Size     0000081E (2078)\n-5443 Filename Length       003A (58)\n-5445 Extra Length          0000 (0)\n-5447 Comment Length        0000 (0)\n-5449 Disk Start            0000 (0)\n-544B Int File Attributes   0000 (0)\n+546D Compression Method    0008 (8) 'Deflated'\n+546F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5473 CRC                   7F603610 (2137011728)\n+5477 Compressed Size       0000036D (877)\n+547B Uncompressed Size     0000086B (2155)\n+547F Filename Length       003A (58)\n+5481 Extra Length          0000 (0)\n+5483 Comment Length        0000 (0)\n+5485 Disk Start            0000 (0)\n+5487 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-544D Ext File Attributes   81A40000 (2175008768)\n+5489 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-5451 Local Header Offset   000018A4 (6308)\n-5455 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+548D Local Header Offset   000018A4 (6308)\n+5491 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5455: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5491: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-548F CENTRAL HEADER #18    02014B50 (33639248)\n-5493 Created Zip Spec      14 (20) '2.0'\n-5494 Created OS            03 (3) 'Unix'\n-5495 Extract Zip Spec      14 (20) '2.0'\n-5496 Extract OS            00 (0) 'MS-DOS'\n-5497 General Purpose Flag  0800 (2048)\n+54CB CENTRAL HEADER #18    02014B50 (33639248)\n+54CF Created Zip Spec      14 (20) '2.0'\n+54D0 Created OS            03 (3) 'Unix'\n+54D1 Extract Zip Spec      14 (20) '2.0'\n+54D2 Extract OS            00 (0) 'MS-DOS'\n+54D3 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-5499 Compression Method    0008 (8) 'Deflated'\n-549B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-549F CRC                   57271651 (1462179409)\n-54A3 Compressed Size       00000D7A (3450)\n-54A7 Uncompressed Size     00003A1F (14879)\n-54AB Filename Length       003A (58)\n-54AD Extra Length          0000 (0)\n-54AF Comment Length        0000 (0)\n-54B1 Disk Start            0000 (0)\n-54B3 Int File Attributes   0000 (0)\n+54D5 Compression Method    0008 (8) 'Deflated'\n+54D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+54DB CRC                   57271651 (1462179409)\n+54DF Compressed Size       00000D7A (3450)\n+54E3 Uncompressed Size     00003A1F (14879)\n+54E7 Filename Length       003A (58)\n+54E9 Extra Length          0000 (0)\n+54EB Comment Length        0000 (0)\n+54ED Disk Start            0000 (0)\n+54EF Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-54B5 Ext File Attributes   81A40000 (2175008768)\n+54F1 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-54B9 Local Header Offset   00001C5E (7262)\n-54BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+54F5 Local Header Offset   00001C69 (7273)\n+54F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x54BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x54F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-54F7 CENTRAL HEADER #19    02014B50 (33639248)\n-54FB Created Zip Spec      14 (20) '2.0'\n-54FC Created OS            03 (3) 'Unix'\n-54FD Extract Zip Spec      14 (20) '2.0'\n-54FE Extract OS            00 (0) 'MS-DOS'\n-54FF General Purpose Flag  0800 (2048)\n+5533 CENTRAL HEADER #19    02014B50 (33639248)\n+5537 Created Zip Spec      14 (20) '2.0'\n+5538 Created OS            03 (3) 'Unix'\n+5539 Extract Zip Spec      14 (20) '2.0'\n+553A Extract OS            00 (0) 'MS-DOS'\n+553B General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-5501 Compression Method    0008 (8) 'Deflated'\n-5503 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5507 CRC                   E96DE12E (3916292398)\n-550B Compressed Size       000002D8 (728)\n-550F Uncompressed Size     00000683 (1667)\n-5513 Filename Length       0041 (65)\n-5515 Extra Length          0000 (0)\n-5517 Comment Length        0000 (0)\n-5519 Disk Start            0000 (0)\n-551B Int File Attributes   0000 (0)\n+553D Compression Method    0008 (8) 'Deflated'\n+553F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5543 CRC                   E96DE12E (3916292398)\n+5547 Compressed Size       000002D8 (728)\n+554B Uncompressed Size     00000683 (1667)\n+554F Filename Length       0041 (65)\n+5551 Extra Length          0000 (0)\n+5553 Comment Length        0000 (0)\n+5555 Disk Start            0000 (0)\n+5557 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-551D Ext File Attributes   81A40000 (2175008768)\n+5559 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-5521 Local Header Offset   00002A30 (10800)\n-5525 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+555D Local Header Offset   00002A3B (10811)\n+5561 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5525: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5561: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-5566 CENTRAL HEADER #20    02014B50 (33639248)\n-556A Created Zip Spec      14 (20) '2.0'\n-556B Created OS            03 (3) 'Unix'\n-556C Extract Zip Spec      14 (20) '2.0'\n-556D Extract OS            00 (0) 'MS-DOS'\n-556E General Purpose Flag  0800 (2048)\n+55A2 CENTRAL HEADER #20    02014B50 (33639248)\n+55A6 Created Zip Spec      14 (20) '2.0'\n+55A7 Created OS            03 (3) 'Unix'\n+55A8 Extract Zip Spec      14 (20) '2.0'\n+55A9 Extract OS            00 (0) 'MS-DOS'\n+55AA General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-5570 Compression Method    0008 (8) 'Deflated'\n-5572 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5576 CRC                   F6A7D6C9 (4138194633)\n-557A Compressed Size       00000865 (2149)\n-557E Uncompressed Size     0000205C (8284)\n-5582 Filename Length       0042 (66)\n-5584 Extra Length          0000 (0)\n-5586 Comment Length        0000 (0)\n-5588 Disk Start            0000 (0)\n-558A Int File Attributes   0000 (0)\n+55AC Compression Method    0008 (8) 'Deflated'\n+55AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+55B2 CRC                   30ABB121 (816558369)\n+55B6 Compressed Size       00000873 (2163)\n+55BA Uncompressed Size     0000212F (8495)\n+55BE Filename Length       0042 (66)\n+55C0 Extra Length          0000 (0)\n+55C2 Comment Length        0000 (0)\n+55C4 Disk Start            0000 (0)\n+55C6 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-558C Ext File Attributes   81A40000 (2175008768)\n+55C8 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-5590 Local Header Offset   00002D67 (11623)\n-5594 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+55CC Local Header Offset   00002D72 (11634)\n+55D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5594: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x55D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-55D6 CENTRAL HEADER #21    02014B50 (33639248)\n-55DA Created Zip Spec      14 (20) '2.0'\n-55DB Created OS            03 (3) 'Unix'\n-55DC Extract Zip Spec      14 (20) '2.0'\n-55DD Extract OS            00 (0) 'MS-DOS'\n-55DE General Purpose Flag  0800 (2048)\n+5612 CENTRAL HEADER #21    02014B50 (33639248)\n+5616 Created Zip Spec      14 (20) '2.0'\n+5617 Created OS            03 (3) 'Unix'\n+5618 Extract Zip Spec      14 (20) '2.0'\n+5619 Extract OS            00 (0) 'MS-DOS'\n+561A General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-55E0 Compression Method    0008 (8) 'Deflated'\n-55E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-55E6 CRC                   B6EA911C (3068825884)\n-55EA Compressed Size       0000042F (1071)\n-55EE Uncompressed Size     00000C6F (3183)\n-55F2 Filename Length       004F (79)\n-55F4 Extra Length          0000 (0)\n-55F6 Comment Length        0000 (0)\n-55F8 Disk Start            0000 (0)\n-55FA Int File Attributes   0000 (0)\n+561C Compression Method    0008 (8) 'Deflated'\n+561E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5622 CRC                   9A6BCF9D (2590756765)\n+5626 Compressed Size       0000043A (1082)\n+562A Uncompressed Size     00000CBA (3258)\n+562E Filename Length       004F (79)\n+5630 Extra Length          0000 (0)\n+5632 Comment Length        0000 (0)\n+5634 Disk Start            0000 (0)\n+5636 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-55FC Ext File Attributes   81A40000 (2175008768)\n+5638 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-5600 Local Header Offset   0000362C (13868)\n-5604 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+563C Local Header Offset   00003645 (13893)\n+5640 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5604: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5640: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-5653 CENTRAL HEADER #22    02014B50 (33639248)\n-5657 Created Zip Spec      14 (20) '2.0'\n-5658 Created OS            03 (3) 'Unix'\n-5659 Extract Zip Spec      14 (20) '2.0'\n-565A Extract OS            00 (0) 'MS-DOS'\n-565B General Purpose Flag  0800 (2048)\n+568F CENTRAL HEADER #22    02014B50 (33639248)\n+5693 Created Zip Spec      14 (20) '2.0'\n+5694 Created OS            03 (3) 'Unix'\n+5695 Extract Zip Spec      14 (20) '2.0'\n+5696 Extract OS            00 (0) 'MS-DOS'\n+5697 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-565D Compression Method    0008 (8) 'Deflated'\n-565F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5663 CRC                   ACDFEDCC (2900356556)\n-5667 Compressed Size       00000266 (614)\n-566B Uncompressed Size     000004D9 (1241)\n-566F Filename Length       0049 (73)\n-5671 Extra Length          0000 (0)\n-5673 Comment Length        0000 (0)\n-5675 Disk Start            0000 (0)\n-5677 Int File Attributes   0000 (0)\n+5699 Compression Method    0008 (8) 'Deflated'\n+569B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+569F CRC                   3AB6ADA6 (985050534)\n+56A3 Compressed Size       0000026F (623)\n+56A7 Uncompressed Size     000004F6 (1270)\n+56AB Filename Length       0049 (73)\n+56AD Extra Length          0000 (0)\n+56AF Comment Length        0000 (0)\n+56B1 Disk Start            0000 (0)\n+56B3 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5679 Ext File Attributes   81A40000 (2175008768)\n+56B5 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-567D Local Header Offset   00003AC8 (15048)\n-5681 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+56B9 Local Header Offset   00003AEC (15084)\n+56BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5681: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x56BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-56CA CENTRAL HEADER #23    02014B50 (33639248)\n-56CE Created Zip Spec      14 (20) '2.0'\n-56CF Created OS            03 (3) 'Unix'\n-56D0 Extract Zip Spec      14 (20) '2.0'\n-56D1 Extract OS            00 (0) 'MS-DOS'\n-56D2 General Purpose Flag  0800 (2048)\n+5706 CENTRAL HEADER #23    02014B50 (33639248)\n+570A Created Zip Spec      14 (20) '2.0'\n+570B Created OS            03 (3) 'Unix'\n+570C Extract Zip Spec      14 (20) '2.0'\n+570D Extract OS            00 (0) 'MS-DOS'\n+570E General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-56D4 Compression Method    0008 (8) 'Deflated'\n-56D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-56DA CRC                   7087B36E (1887941486)\n-56DE Compressed Size       00000508 (1288)\n-56E2 Uncompressed Size     00000C71 (3185)\n-56E6 Filename Length       0044 (68)\n-56E8 Extra Length          0000 (0)\n-56EA Comment Length        0000 (0)\n-56EC Disk Start            0000 (0)\n-56EE Int File Attributes   0000 (0)\n+5710 Compression Method    0008 (8) 'Deflated'\n+5712 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5716 CRC                   2502C8DF (620939487)\n+571A Compressed Size       00000514 (1300)\n+571E Uncompressed Size     00000CD7 (3287)\n+5722 Filename Length       0044 (68)\n+5724 Extra Length          0000 (0)\n+5726 Comment Length        0000 (0)\n+5728 Disk Start            0000 (0)\n+572A Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-56F0 Ext File Attributes   81A40000 (2175008768)\n+572C Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-56F4 Local Header Offset   00003D95 (15765)\n-56F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5730 Local Header Offset   00003DC2 (15810)\n+5734 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x56F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5734: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-573C CENTRAL HEADER #24    02014B50 (33639248)\n-5740 Created Zip Spec      14 (20) '2.0'\n-5741 Created OS            03 (3) 'Unix'\n-5742 Extract Zip Spec      14 (20) '2.0'\n-5743 Extract OS            00 (0) 'MS-DOS'\n-5744 General Purpose Flag  0800 (2048)\n+5778 CENTRAL HEADER #24    02014B50 (33639248)\n+577C Created Zip Spec      14 (20) '2.0'\n+577D Created OS            03 (3) 'Unix'\n+577E Extract Zip Spec      14 (20) '2.0'\n+577F Extract OS            00 (0) 'MS-DOS'\n+5780 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-5746 Compression Method    0008 (8) 'Deflated'\n-5748 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-574C CRC                   AF46E40B (2940658699)\n-5750 Compressed Size       000005EE (1518)\n-5754 Uncompressed Size     00001556 (5462)\n-5758 Filename Length       0043 (67)\n-575A Extra Length          0000 (0)\n-575C Comment Length        0000 (0)\n-575E Disk Start            0000 (0)\n-5760 Int File Attributes   0000 (0)\n+5782 Compression Method    0008 (8) 'Deflated'\n+5784 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5788 CRC                   B9A91D04 (3114867972)\n+578C Compressed Size       000005F8 (1528)\n+5790 Uncompressed Size     000015CB (5579)\n+5794 Filename Length       0043 (67)\n+5796 Extra Length          0000 (0)\n+5798 Comment Length        0000 (0)\n+579A Disk Start            0000 (0)\n+579C Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5762 Ext File Attributes   81A40000 (2175008768)\n+579E Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-5766 Local Header Offset   000042FF (17151)\n-576A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+57A2 Local Header Offset   00004338 (17208)\n+57A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x576A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x57A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-57AD CENTRAL HEADER #25    02014B50 (33639248)\n-57B1 Created Zip Spec      14 (20) '2.0'\n-57B2 Created OS            03 (3) 'Unix'\n-57B3 Extract Zip Spec      14 (20) '2.0'\n-57B4 Extract OS            00 (0) 'MS-DOS'\n-57B5 General Purpose Flag  0800 (2048)\n+57E9 CENTRAL HEADER #25    02014B50 (33639248)\n+57ED Created Zip Spec      14 (20) '2.0'\n+57EE Created OS            03 (3) 'Unix'\n+57EF Extract Zip Spec      14 (20) '2.0'\n+57F0 Extract OS            00 (0) 'MS-DOS'\n+57F1 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-57B7 Compression Method    0008 (8) 'Deflated'\n-57B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-57BD CRC                   DB66EBCB (3680955339)\n-57C1 Compressed Size       00000036 (54)\n-57C5 Uncompressed Size     00000046 (70)\n-57C9 Filename Length       0041 (65)\n-57CB Extra Length          0000 (0)\n-57CD Comment Length        0000 (0)\n-57CF Disk Start            0000 (0)\n-57D1 Int File Attributes   0000 (0)\n+57F3 Compression Method    0008 (8) 'Deflated'\n+57F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+57F9 CRC                   DB66EBCB (3680955339)\n+57FD Compressed Size       00000036 (54)\n+5801 Uncompressed Size     00000046 (70)\n+5805 Filename Length       0041 (65)\n+5807 Extra Length          0000 (0)\n+5809 Comment Length        0000 (0)\n+580B Disk Start            0000 (0)\n+580D Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-57D3 Ext File Attributes   81A40000 (2175008768)\n+580F Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-57D7 Local Header Offset   0000494E (18766)\n-57DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5813 Local Header Offset   00004991 (18833)\n+5817 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x57DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5817: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-581C CENTRAL HEADER #26    02014B50 (33639248)\n-5820 Created Zip Spec      14 (20) '2.0'\n-5821 Created OS            03 (3) 'Unix'\n-5822 Extract Zip Spec      14 (20) '2.0'\n-5823 Extract OS            00 (0) 'MS-DOS'\n-5824 General Purpose Flag  0800 (2048)\n+5858 CENTRAL HEADER #26    02014B50 (33639248)\n+585C Created Zip Spec      14 (20) '2.0'\n+585D Created OS            03 (3) 'Unix'\n+585E Extract Zip Spec      14 (20) '2.0'\n+585F Extract OS            00 (0) 'MS-DOS'\n+5860 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-5826 Compression Method    0008 (8) 'Deflated'\n-5828 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-582C CRC                   43FDADDD (1140698589)\n-5830 Compressed Size       0000003C (60)\n-5834 Uncompressed Size     00000047 (71)\n-5838 Filename Length       0049 (73)\n-583A Extra Length          0000 (0)\n-583C Comment Length        0000 (0)\n-583E Disk Start            0000 (0)\n-5840 Int File Attributes   0000 (0)\n+5862 Compression Method    0008 (8) 'Deflated'\n+5864 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5868 CRC                   43FDADDD (1140698589)\n+586C Compressed Size       0000003C (60)\n+5870 Uncompressed Size     00000047 (71)\n+5874 Filename Length       0049 (73)\n+5876 Extra Length          0000 (0)\n+5878 Comment Length        0000 (0)\n+587A Disk Start            0000 (0)\n+587C Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5842 Ext File Attributes   81A40000 (2175008768)\n+587E Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-5846 Local Header Offset   000049E3 (18915)\n-584A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5882 Local Header Offset   00004A26 (18982)\n+5886 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x584A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5886: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-5893 CENTRAL HEADER #27    02014B50 (33639248)\n-5897 Created Zip Spec      14 (20) '2.0'\n-5898 Created OS            03 (3) 'Unix'\n-5899 Extract Zip Spec      14 (20) '2.0'\n-589A Extract OS            00 (0) 'MS-DOS'\n-589B General Purpose Flag  0800 (2048)\n+58CF CENTRAL HEADER #27    02014B50 (33639248)\n+58D3 Created Zip Spec      14 (20) '2.0'\n+58D4 Created OS            03 (3) 'Unix'\n+58D5 Extract Zip Spec      14 (20) '2.0'\n+58D6 Extract OS            00 (0) 'MS-DOS'\n+58D7 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-589D Compression Method    0008 (8) 'Deflated'\n-589F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-58A3 CRC                   621824EF (1645749487)\n-58A7 Compressed Size       00000043 (67)\n-58AB Uncompressed Size     0000004E (78)\n-58AF Filename Length       0050 (80)\n-58B1 Extra Length          0000 (0)\n-58B3 Comment Length        0000 (0)\n-58B5 Disk Start            0000 (0)\n-58B7 Int File Attributes   0000 (0)\n+58D9 Compression Method    0008 (8) 'Deflated'\n+58DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+58DF CRC                   621824EF (1645749487)\n+58E3 Compressed Size       00000043 (67)\n+58E7 Uncompressed Size     0000004E (78)\n+58EB Filename Length       0050 (80)\n+58ED Extra Length          0000 (0)\n+58EF Comment Length        0000 (0)\n+58F1 Disk Start            0000 (0)\n+58F3 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-58B9 Ext File Attributes   81A40000 (2175008768)\n+58F5 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-58BD Local Header Offset   00004A86 (19078)\n-58C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+58F9 Local Header Offset   00004AC9 (19145)\n+58FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x58C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x58FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-5911 CENTRAL HEADER #28    02014B50 (33639248)\n-5915 Created Zip Spec      14 (20) '2.0'\n-5916 Created OS            03 (3) 'Unix'\n-5917 Extract Zip Spec      14 (20) '2.0'\n-5918 Extract OS            00 (0) 'MS-DOS'\n-5919 General Purpose Flag  0800 (2048)\n+594D CENTRAL HEADER #28    02014B50 (33639248)\n+5951 Created Zip Spec      14 (20) '2.0'\n+5952 Created OS            03 (3) 'Unix'\n+5953 Extract Zip Spec      14 (20) '2.0'\n+5954 Extract OS            00 (0) 'MS-DOS'\n+5955 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-591B Compression Method    0008 (8) 'Deflated'\n-591D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5921 CRC                   4C2A7690 (1277851280)\n-5925 Compressed Size       00000399 (921)\n-5929 Uncompressed Size     000009AC (2476)\n-592D Filename Length       0040 (64)\n-592F Extra Length          0000 (0)\n-5931 Comment Length        0000 (0)\n-5933 Disk Start            0000 (0)\n-5935 Int File Attributes   0000 (0)\n+5957 Compression Method    0008 (8) 'Deflated'\n+5959 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+595D CRC                   2D62C29D (761447069)\n+5961 Compressed Size       00000392 (914)\n+5965 Uncompressed Size     0000096E (2414)\n+5969 Filename Length       0040 (64)\n+596B Extra Length          0000 (0)\n+596D Comment Length        0000 (0)\n+596F Disk Start            0000 (0)\n+5971 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-5937 Ext File Attributes   81A40000 (2175008768)\n+5973 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-593B Local Header Offset   00004B37 (19255)\n-593F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5977 Local Header Offset   00004B7A (19322)\n+597B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x593F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x597B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-597F CENTRAL HEADER #29    02014B50 (33639248)\n-5983 Created Zip Spec      14 (20) '2.0'\n-5984 Created OS            03 (3) 'Unix'\n-5985 Extract Zip Spec      14 (20) '2.0'\n-5986 Extract OS            00 (0) 'MS-DOS'\n-5987 General Purpose Flag  0800 (2048)\n+59BB CENTRAL HEADER #29    02014B50 (33639248)\n+59BF Created Zip Spec      14 (20) '2.0'\n+59C0 Created OS            03 (3) 'Unix'\n+59C1 Extract Zip Spec      14 (20) '2.0'\n+59C2 Extract OS            00 (0) 'MS-DOS'\n+59C3 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-5989 Compression Method    0008 (8) 'Deflated'\n-598B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-598F CRC                   68C29EEA (1757585130)\n-5993 Compressed Size       0000004D (77)\n-5997 Uncompressed Size     0000004F (79)\n-599B Filename Length       0047 (71)\n-599D Extra Length          0000 (0)\n-599F Comment Length        0000 (0)\n-59A1 Disk Start            0000 (0)\n-59A3 Int File Attributes   0000 (0)\n+59C5 Compression Method    0008 (8) 'Deflated'\n+59C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+59CB CRC                   68C29EEA (1757585130)\n+59CF Compressed Size       0000004D (77)\n+59D3 Uncompressed Size     0000004F (79)\n+59D7 Filename Length       0047 (71)\n+59D9 Extra Length          0000 (0)\n+59DB Comment Length        0000 (0)\n+59DD Disk Start            0000 (0)\n+59DF Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-59A5 Ext File Attributes   81A40000 (2175008768)\n+59E1 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-59A9 Local Header Offset   00004F2E (20270)\n-59AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+59E5 Local Header Offset   00004F6A (20330)\n+59E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x59AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x59E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-59F4 END CENTRAL HEADER    06054B50 (101010256)\n-59F8 Number of this disk   0000 (0)\n-59FA Central Dir Disk no   0000 (0)\n-59FC Entries in this disk  001D (29)\n-59FE Total Entries         001D (29)\n-5A00 Size of Central Dir   00000A14 (2580)\n-5A04 Offset to Central Dir 00004FE0 (20448)\n-5A08 Comment Length        0000 (0)\n+5A30 END CENTRAL HEADER    06054B50 (101010256)\n+5A34 Number of this disk   0000 (0)\n+5A36 Central Dir Disk no   0000 (0)\n+5A38 Entries in this disk  001D (29)\n+5A3A Total Entries         001D (29)\n+5A3C Size of Central Dir   00000A14 (2580)\n+5A40 Offset to Central Dir 0000501C (20508)\n+5A44 Comment Length        0000 (0)\n #\n # Error Count: 12\n # Warning Count: 70\n #\n # Done\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java", "source2": "org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,77 +1,77 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-/**\n- * Represents the default payload of a registered service in Zookeeper.\n- * <p>\n- * It's compatible with Spring Cloud\n- *\n- * @since 2.7.5\n- */\n-public class ZookeeperInstance {\n-\n-    private String id;\n-\n-    private String name;\n-\n-    private Map<String, String> metadata = new HashMap<>();\n-\n-    @SuppressWarnings(\"unused\")\n-    private ZookeeperInstance() {\n-    }\n-\n-    public ZookeeperInstance(String id, String name, Map<String, String> metadata) {\n-        this.id = id;\n-        this.name = name;\n-        this.metadata = metadata;\n-    }\n-\n-    public String getId() {\n-        return this.id;\n-    }\n-\n-    public String getName() {\n-        return this.name;\n-    }\n-\n-    public void setId(String id) {\n-        this.id = id;\n-    }\n-\n-    public void setName(String name) {\n-        this.name = name;\n-    }\n-\n-    public Map<String, String> getMetadata() {\n-        return this.metadata;\n-    }\n-\n-    public void setMetadata(Map<String, String> metadata) {\n-        this.metadata = metadata;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"ZookeeperInstance{\" + \"id='\" + this.id + '\\'' + \", name='\" + this.name\n-                + '\\'' + \", metadata=\" + this.metadata + '}';\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * Represents the default payload of a registered service in Zookeeper.\r\n+ * <p>\r\n+ * It's compatible with Spring Cloud\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ZookeeperInstance {\r\n+\r\n+    private String id;\r\n+\r\n+    private String name;\r\n+\r\n+    private Map<String, String> metadata = new HashMap<>();\r\n+\r\n+    @SuppressWarnings(\"unused\")\r\n+    private ZookeeperInstance() {\r\n+    }\r\n+\r\n+    public ZookeeperInstance(String id, String name, Map<String, String> metadata) {\r\n+        this.id = id;\r\n+        this.name = name;\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    public String getId() {\r\n+        return this.id;\r\n+    }\r\n+\r\n+    public String getName() {\r\n+        return this.name;\r\n+    }\r\n+\r\n+    public void setId(String id) {\r\n+        this.id = id;\r\n+    }\r\n+\r\n+    public void setName(String name) {\r\n+        this.name = name;\r\n+    }\r\n+\r\n+    public Map<String, String> getMetadata() {\r\n+        return this.metadata;\r\n+    }\r\n+\r\n+    public void setMetadata(Map<String, String> metadata) {\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"ZookeeperInstance{\" + \"id='\" + this.id + '\\'' + \", name='\" + this.name\r\n+                + '\\'' + \", metadata=\" + this.metadata + '}';\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java", "source2": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,211 +1,211 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.function.ThrowableConsumer;\n-import org.apache.dubbo.common.function.ThrowableFunction;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.DefaultPage;\n-import org.apache.dubbo.common.utils.Page;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import org.apache.curator.framework.CuratorFramework;\n-import org.apache.curator.framework.api.CuratorWatcher;\n-import org.apache.zookeeper.KeeperException;\n-\n-import java.util.Iterator;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.common.function.ThrowableFunction.execute;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.ROOT_PATH;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.build;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildCuratorFramework;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildServiceDiscovery;\n-\n-/**\n- * Zookeeper {@link ServiceDiscovery} implementation based on\n- * <a href=\"https://curator.apache.org/curator-x-discovery/index.html\">Apache Curator X Discovery</a>\n- */\n-public class ZookeeperServiceDiscovery extends AbstractServiceDiscovery {\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private URL registryURL;\n-\n-    private CuratorFramework curatorFramework;\n-\n-    private String rootPath;\n-\n-    private org.apache.curator.x.discovery.ServiceDiscovery<ZookeeperInstance> serviceDiscovery;\n-\n-    /**\n-     * The Key is watched Zookeeper path, the value is an instance of {@link CuratorWatcher}\n-     */\n-    private final Map<String, ZookeeperServiceDiscoveryChangeWatcher> watcherCaches = new ConcurrentHashMap<>();\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.registryURL = registryURL;\n-        this.curatorFramework = buildCuratorFramework(registryURL);\n-        this.rootPath = ROOT_PATH.getParameterValue(registryURL);\n-        this.serviceDiscovery = buildServiceDiscovery(curatorFramework, rootPath);\n-        this.serviceDiscovery.start();\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-\n-    public void destroy() throws Exception {\n-        serviceDiscovery.close();\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        doInServiceRegistry(serviceDiscovery -> {\n-            serviceDiscovery.registerService(build(serviceInstance));\n-        });\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        doInServiceRegistry(serviceDiscovery -> {\n-            serviceDiscovery.updateService(build(serviceInstance));\n-        });\n-    }\n-\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        doInServiceRegistry(serviceDiscovery -> {\n-            serviceDiscovery.unregisterService(build(serviceInstance));\n-        });\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        return doInServiceDiscovery(s -> new LinkedHashSet<>(s.queryForNames()));\n-    }\n-\n-    @Override\n-    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\n-        return doInServiceDiscovery(s -> build(s.queryForInstances(serviceName)));\n-    }\n-\n-    @Override\n-    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) {\n-        String path = buildServicePath(serviceName);\n-\n-        return execute(path, p -> {\n-\n-            List<ServiceInstance> serviceInstances = new LinkedList<>();\n-\n-            int totalSize = 0;\n-            try {\n-                List<String> serviceIds = new LinkedList<>(curatorFramework.getChildren().forPath(p));\n-\n-                totalSize = serviceIds.size();\n-\n-                Iterator<String> iterator = serviceIds.iterator();\n-\n-                for (int i = 0; i < offset; i++) {\n-                    if (iterator.hasNext()) { // remove the elements from 0 to offset\n-                        iterator.next();\n-                        iterator.remove();\n-                    }\n-                }\n-\n-                for (int i = 0; i < pageSize; i++) {\n-                    if (iterator.hasNext()) {\n-                        String serviceId = iterator.next();\n-                        ServiceInstance serviceInstance = build(serviceDiscovery.queryForInstance(serviceName, serviceId));\n-                        serviceInstances.add(serviceInstance);\n-                    }\n-                }\n-            } catch (KeeperException.NoNodeException e) {\n-                logger.warn(p + \" path not exist.\", e);\n-            }\n-\n-            return new DefaultPage<>(offset, pageSize, serviceInstances, totalSize);\n-        });\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\n-            throws NullPointerException, IllegalArgumentException {\n-        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName, listener));\n-    }\n-\n-    @Override\n-    public void removeServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws IllegalArgumentException {\n-        listener.getServiceNames().forEach(serviceName -> {\n-            ZookeeperServiceDiscoveryChangeWatcher watcher = watcherCaches.remove(serviceName);\n-            watcher.stopWatching();\n-        });\n-    }\n-\n-    private void doInServiceRegistry(ThrowableConsumer<org.apache.curator.x.discovery.ServiceDiscovery> consumer) {\n-        ThrowableConsumer.execute(serviceDiscovery, s -> {\n-            consumer.accept(s);\n-        });\n-    }\n-\n-    private <R> R doInServiceDiscovery(ThrowableFunction<org.apache.curator.x.discovery.ServiceDiscovery, R> function) {\n-        return execute(serviceDiscovery, function);\n-    }\n-\n-    protected void registerServiceWatcher(String serviceName, ServiceInstancesChangedListener listener) {\n-        String path = buildServicePath(serviceName);\n-        try {\n-            curatorFramework.create().creatingParentsIfNeeded().forPath(path);\n-        } catch (KeeperException.NodeExistsException e) {\n-            // ignored\n-            if (logger.isDebugEnabled()) {\n-\n-                logger.debug(e);\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalStateException(\"registerServiceWatcher create path=\" + path + \" fail.\", e);\n-        }\n-\n-        CuratorWatcher watcher = watcherCaches.computeIfAbsent(path, key ->\n-                new ZookeeperServiceDiscoveryChangeWatcher(this, serviceName, listener));\n-        try {\n-            curatorFramework.getChildren().usingWatcher(watcher).forPath(path);\n-        } catch (KeeperException.NoNodeException e) {\n-            // ignored\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getMessage());\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    private String buildServicePath(String serviceName) {\n-        return rootPath + \"/\" + serviceName;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.function.ThrowableConsumer;\r\n+import org.apache.dubbo.common.function.ThrowableFunction;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.DefaultPage;\r\n+import org.apache.dubbo.common.utils.Page;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import org.apache.curator.framework.CuratorFramework;\r\n+import org.apache.curator.framework.api.CuratorWatcher;\r\n+import org.apache.zookeeper.KeeperException;\r\n+\r\n+import java.util.Iterator;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.common.function.ThrowableFunction.execute;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.ROOT_PATH;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.build;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildCuratorFramework;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildServiceDiscovery;\r\n+\r\n+/**\r\n+ * Zookeeper {@link ServiceDiscovery} implementation based on\r\n+ * <a href=\"https://curator.apache.org/curator-x-discovery/index.html\">Apache Curator X Discovery</a>\r\n+ */\r\n+public class ZookeeperServiceDiscovery extends AbstractServiceDiscovery {\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private URL registryURL;\r\n+\r\n+    private CuratorFramework curatorFramework;\r\n+\r\n+    private String rootPath;\r\n+\r\n+    private org.apache.curator.x.discovery.ServiceDiscovery<ZookeeperInstance> serviceDiscovery;\r\n+\r\n+    /**\r\n+     * The Key is watched Zookeeper path, the value is an instance of {@link CuratorWatcher}\r\n+     */\r\n+    private final Map<String, ZookeeperServiceDiscoveryChangeWatcher> watcherCaches = new ConcurrentHashMap<>();\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.registryURL = registryURL;\r\n+        this.curatorFramework = buildCuratorFramework(registryURL);\r\n+        this.rootPath = ROOT_PATH.getParameterValue(registryURL);\r\n+        this.serviceDiscovery = buildServiceDiscovery(curatorFramework, rootPath);\r\n+        this.serviceDiscovery.start();\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+\r\n+    public void destroy() throws Exception {\r\n+        serviceDiscovery.close();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        doInServiceRegistry(serviceDiscovery -> {\r\n+            serviceDiscovery.registerService(build(serviceInstance));\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        doInServiceRegistry(serviceDiscovery -> {\r\n+            serviceDiscovery.updateService(build(serviceInstance));\r\n+        });\r\n+    }\r\n+\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        doInServiceRegistry(serviceDiscovery -> {\r\n+            serviceDiscovery.unregisterService(build(serviceInstance));\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return doInServiceDiscovery(s -> new LinkedHashSet<>(s.queryForNames()));\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\r\n+        return doInServiceDiscovery(s -> build(s.queryForInstances(serviceName)));\r\n+    }\r\n+\r\n+    @Override\r\n+    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) {\r\n+        String path = buildServicePath(serviceName);\r\n+\r\n+        return execute(path, p -> {\r\n+\r\n+            List<ServiceInstance> serviceInstances = new LinkedList<>();\r\n+\r\n+            int totalSize = 0;\r\n+            try {\r\n+                List<String> serviceIds = new LinkedList<>(curatorFramework.getChildren().forPath(p));\r\n+\r\n+                totalSize = serviceIds.size();\r\n+\r\n+                Iterator<String> iterator = serviceIds.iterator();\r\n+\r\n+                for (int i = 0; i < offset; i++) {\r\n+                    if (iterator.hasNext()) { // remove the elements from 0 to offset\r\n+                        iterator.next();\r\n+                        iterator.remove();\r\n+                    }\r\n+                }\r\n+\r\n+                for (int i = 0; i < pageSize; i++) {\r\n+                    if (iterator.hasNext()) {\r\n+                        String serviceId = iterator.next();\r\n+                        ServiceInstance serviceInstance = build(serviceDiscovery.queryForInstance(serviceName, serviceId));\r\n+                        serviceInstances.add(serviceInstance);\r\n+                    }\r\n+                }\r\n+            } catch (KeeperException.NoNodeException e) {\r\n+                logger.warn(p + \" path not exist.\", e);\r\n+            }\r\n+\r\n+            return new DefaultPage<>(offset, pageSize, serviceInstances, totalSize);\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\r\n+            throws NullPointerException, IllegalArgumentException {\r\n+        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName, listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws IllegalArgumentException {\r\n+        listener.getServiceNames().forEach(serviceName -> {\r\n+            ZookeeperServiceDiscoveryChangeWatcher watcher = watcherCaches.remove(serviceName);\r\n+            watcher.stopWatching();\r\n+        });\r\n+    }\r\n+\r\n+    private void doInServiceRegistry(ThrowableConsumer<org.apache.curator.x.discovery.ServiceDiscovery> consumer) {\r\n+        ThrowableConsumer.execute(serviceDiscovery, s -> {\r\n+            consumer.accept(s);\r\n+        });\r\n+    }\r\n+\r\n+    private <R> R doInServiceDiscovery(ThrowableFunction<org.apache.curator.x.discovery.ServiceDiscovery, R> function) {\r\n+        return execute(serviceDiscovery, function);\r\n+    }\r\n+\r\n+    protected void registerServiceWatcher(String serviceName, ServiceInstancesChangedListener listener) {\r\n+        String path = buildServicePath(serviceName);\r\n+        try {\r\n+            curatorFramework.create().creatingParentsIfNeeded().forPath(path);\r\n+        } catch (KeeperException.NodeExistsException e) {\r\n+            // ignored\r\n+            if (logger.isDebugEnabled()) {\r\n+\r\n+                logger.debug(e);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(\"registerServiceWatcher create path=\" + path + \" fail.\", e);\r\n+        }\r\n+\r\n+        CuratorWatcher watcher = watcherCaches.computeIfAbsent(path, key ->\r\n+                new ZookeeperServiceDiscoveryChangeWatcher(this, serviceName, listener));\r\n+        try {\r\n+            curatorFramework.getChildren().usingWatcher(watcher).forPath(path);\r\n+        } catch (KeeperException.NoNodeException e) {\r\n+            // ignored\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getMessage());\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private String buildServicePath(String serviceName) {\r\n+        return rootPath + \"/\" + serviceName;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java", "source2": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,75 +1,75 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import org.apache.curator.framework.api.CuratorWatcher;\n-import org.apache.zookeeper.WatchedEvent;\n-import org.apache.zookeeper.Watcher;\n-\n-import static org.apache.zookeeper.Watcher.Event.EventType.NodeChildrenChanged;\n-import static org.apache.zookeeper.Watcher.Event.EventType.NodeDataChanged;\n-\n-/**\n- * Zookeeper {@link ServiceDiscovery} Change {@link CuratorWatcher watcher} only interests in\n- * {@link Watcher.Event.EventType#NodeChildrenChanged} and {@link Watcher.Event.EventType#NodeDataChanged} event types,\n- * which will multicast a {@link ServiceInstancesChangedEvent} when the service node has been changed.\n- *\n- * @since 2.7.5\n- */\n-public class ZookeeperServiceDiscoveryChangeWatcher implements CuratorWatcher {\n-    private ServiceInstancesChangedListener listener;\n-\n-    private final ZookeeperServiceDiscovery zookeeperServiceDiscovery;\n-\n-    private boolean keepWatching = true;\n-\n-    private final String serviceName;\n-\n-    public ZookeeperServiceDiscoveryChangeWatcher(ZookeeperServiceDiscovery zookeeperServiceDiscovery,\n-                                                  String serviceName,\n-                                                  ServiceInstancesChangedListener listener) {\n-        this.zookeeperServiceDiscovery = zookeeperServiceDiscovery;\n-        this.serviceName = serviceName;\n-        this.listener = listener;\n-    }\n-\n-    @Override\n-    public void process(WatchedEvent event) throws Exception {\n-\n-        Watcher.Event.EventType eventType = event.getType();\n-\n-        if (NodeChildrenChanged.equals(eventType) || NodeDataChanged.equals(eventType)) {\n-            if (shouldKeepWatching()) {\n-                listener.onEvent(new ServiceInstancesChangedEvent(serviceName, zookeeperServiceDiscovery.getInstances(serviceName)));\n-                zookeeperServiceDiscovery.registerServiceWatcher(serviceName, listener);\n-                zookeeperServiceDiscovery.dispatchServiceInstancesChangedEvent(serviceName);\n-            }\n-        }\n-    }\n-\n-    public boolean shouldKeepWatching() {\n-        return keepWatching;\n-    }\n-\n-    public void stopWatching() {\n-        this.keepWatching = false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import org.apache.curator.framework.api.CuratorWatcher;\r\n+import org.apache.zookeeper.WatchedEvent;\r\n+import org.apache.zookeeper.Watcher;\r\n+\r\n+import static org.apache.zookeeper.Watcher.Event.EventType.NodeChildrenChanged;\r\n+import static org.apache.zookeeper.Watcher.Event.EventType.NodeDataChanged;\r\n+\r\n+/**\r\n+ * Zookeeper {@link ServiceDiscovery} Change {@link CuratorWatcher watcher} only interests in\r\n+ * {@link Watcher.Event.EventType#NodeChildrenChanged} and {@link Watcher.Event.EventType#NodeDataChanged} event types,\r\n+ * which will multicast a {@link ServiceInstancesChangedEvent} when the service node has been changed.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ZookeeperServiceDiscoveryChangeWatcher implements CuratorWatcher {\r\n+    private ServiceInstancesChangedListener listener;\r\n+\r\n+    private final ZookeeperServiceDiscovery zookeeperServiceDiscovery;\r\n+\r\n+    private boolean keepWatching = true;\r\n+\r\n+    private final String serviceName;\r\n+\r\n+    public ZookeeperServiceDiscoveryChangeWatcher(ZookeeperServiceDiscovery zookeeperServiceDiscovery,\r\n+                                                  String serviceName,\r\n+                                                  ServiceInstancesChangedListener listener) {\r\n+        this.zookeeperServiceDiscovery = zookeeperServiceDiscovery;\r\n+        this.serviceName = serviceName;\r\n+        this.listener = listener;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void process(WatchedEvent event) throws Exception {\r\n+\r\n+        Watcher.Event.EventType eventType = event.getType();\r\n+\r\n+        if (NodeChildrenChanged.equals(eventType) || NodeDataChanged.equals(eventType)) {\r\n+            if (shouldKeepWatching()) {\r\n+                listener.onEvent(new ServiceInstancesChangedEvent(serviceName, zookeeperServiceDiscovery.getInstances(serviceName)));\r\n+                zookeeperServiceDiscovery.registerServiceWatcher(serviceName, listener);\r\n+                zookeeperServiceDiscovery.dispatchServiceInstancesChangedEvent(serviceName);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public boolean shouldKeepWatching() {\r\n+        return keepWatching;\r\n+    }\r\n+\r\n+    public void stopWatching() {\r\n+        this.keepWatching = false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryFactory.java", "comments": ["Ordering 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.registry.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class ZookeeperServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new ZookeeperServiceDiscovery();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class ZookeeperServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new ZookeeperServiceDiscovery();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java", "source2": "org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,102 +1,102 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper.util;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import org.apache.curator.framework.CuratorFramework;\n-\n-import java.util.concurrent.TimeUnit;\n-import java.util.function.Function;\n-\n-/**\n- * The enumeration for the parameters  of {@link CuratorFramework}\n- *\n- * @see CuratorFramework\n- * @since 2.7.5\n- */\n-public enum CuratorFrameworkParams {\n-\n-    /**\n-     * The root path of Dubbo Service\n-     */\n-    ROOT_PATH(\"rootPath\", \"/services\", value -> value),\n-\n-    /**\n-     * The host of current {@link ServiceInstance service instance} that will be registered\n-     */\n-    INSTANCE_HOST(\"instanceHost\", null, value -> value),\n-\n-    /**\n-     * The port of current {@link ServiceInstance service instance} that will be registered\n-     */\n-    INSTANCE_PORT(\"instancePort\", null, value -> value),\n-\n-    /**\n-     * Initial amount of time to wait between retries\n-     */\n-    BASE_SLEEP_TIME(\"baseSleepTimeMs\", 50, Integer::valueOf),\n-\n-    /**\n-     * Max number of times to retry.\n-     */\n-    MAX_RETRIES(\"maxRetries\", 10, Integer::valueOf),\n-\n-    /**\n-     * Max time in ms to sleep on each retry.\n-     */\n-    MAX_SLEEP(\"maxSleepMs\", 500, Integer::valueOf),\n-\n-    /**\n-     * Wait time to block on connection to Zookeeper.\n-     */\n-    BLOCK_UNTIL_CONNECTED_WAIT(\"blockUntilConnectedWait\", 10, Integer::valueOf),\n-\n-    /**\n-     * The unit of time related to blocking on connection to Zookeeper.\n-     */\n-    BLOCK_UNTIL_CONNECTED_UNIT(\"blockUntilConnectedUnit\", TimeUnit.SECONDS, TimeUnit::valueOf),\n-\n-    ;\n-\n-    private final String name;\n-\n-    private final Object defaultValue;\n-\n-    private final Function<String, Object> converter;\n-\n-    <T> CuratorFrameworkParams(String name, T defaultValue, Function<String, T> converter) {\n-        this.name = name;\n-        this.defaultValue = defaultValue;\n-        this.converter = (Function<String, Object>) converter;\n-    }\n-\n-    /**\n-     * Get the parameter value from the specified {@link URL}\n-     *\n-     * @param url the Dubbo registry {@link URL}\n-     * @param <T> the type of value\n-     * @return the parameter value if present, or return <code>null</code>\n-     */\n-    public <T> T getParameterValue(URL url) {\n-        String param = url.getParameter(name);\n-        Object value = param != null ? converter.apply(param) : defaultValue;\n-        return (T) value;\n-    }\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper.util;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import org.apache.curator.framework.CuratorFramework;\r\n+\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.function.Function;\r\n+\r\n+/**\r\n+ * The enumeration for the parameters  of {@link CuratorFramework}\r\n+ *\r\n+ * @see CuratorFramework\r\n+ * @since 2.7.5\r\n+ */\r\n+public enum CuratorFrameworkParams {\r\n+\r\n+    /**\r\n+     * The root path of Dubbo Service\r\n+     */\r\n+    ROOT_PATH(\"rootPath\", \"/services\", value -> value),\r\n+\r\n+    /**\r\n+     * The host of current {@link ServiceInstance service instance} that will be registered\r\n+     */\r\n+    INSTANCE_HOST(\"instanceHost\", null, value -> value),\r\n+\r\n+    /**\r\n+     * The port of current {@link ServiceInstance service instance} that will be registered\r\n+     */\r\n+    INSTANCE_PORT(\"instancePort\", null, value -> value),\r\n+\r\n+    /**\r\n+     * Initial amount of time to wait between retries\r\n+     */\r\n+    BASE_SLEEP_TIME(\"baseSleepTimeMs\", 50, Integer::valueOf),\r\n+\r\n+    /**\r\n+     * Max number of times to retry.\r\n+     */\r\n+    MAX_RETRIES(\"maxRetries\", 10, Integer::valueOf),\r\n+\r\n+    /**\r\n+     * Max time in ms to sleep on each retry.\r\n+     */\r\n+    MAX_SLEEP(\"maxSleepMs\", 500, Integer::valueOf),\r\n+\r\n+    /**\r\n+     * Wait time to block on connection to Zookeeper.\r\n+     */\r\n+    BLOCK_UNTIL_CONNECTED_WAIT(\"blockUntilConnectedWait\", 10, Integer::valueOf),\r\n+\r\n+    /**\r\n+     * The unit of time related to blocking on connection to Zookeeper.\r\n+     */\r\n+    BLOCK_UNTIL_CONNECTED_UNIT(\"blockUntilConnectedUnit\", TimeUnit.SECONDS, TimeUnit::valueOf),\r\n+\r\n+    ;\r\n+\r\n+    private final String name;\r\n+\r\n+    private final Object defaultValue;\r\n+\r\n+    private final Function<String, Object> converter;\r\n+\r\n+    <T> CuratorFrameworkParams(String name, T defaultValue, Function<String, T> converter) {\r\n+        this.name = name;\r\n+        this.defaultValue = defaultValue;\r\n+        this.converter = (Function<String, Object>) converter;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the parameter value from the specified {@link URL}\r\n+     *\r\n+     * @param url the Dubbo registry {@link URL}\r\n+     * @param <T> the type of value\r\n+     * @return the parameter value if present, or return <code>null</code>\r\n+     */\r\n+    public <T> T getParameterValue(URL url) {\r\n+        String param = url.getParameter(name);\r\n+        Object value = param != null ? converter.apply(param) : defaultValue;\r\n+        return (T) value;\r\n+    }\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java", "source2": "org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,117 +1,117 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper.util;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.zookeeper.ZookeeperInstance;\n-\n-import org.apache.curator.RetryPolicy;\n-import org.apache.curator.framework.CuratorFramework;\n-import org.apache.curator.framework.CuratorFrameworkFactory;\n-import org.apache.curator.retry.ExponentialBackoffRetry;\n-import org.apache.curator.x.discovery.ServiceDiscovery;\n-import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;\n-import org.apache.curator.x.discovery.ServiceInstanceBuilder;\n-\n-import java.util.Collection;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.curator.x.discovery.ServiceInstance.builder;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BASE_SLEEP_TIME;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BLOCK_UNTIL_CONNECTED_UNIT;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BLOCK_UNTIL_CONNECTED_WAIT;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.MAX_RETRIES;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.MAX_SLEEP;\n-\n-/**\n- * Curator Framework Utilities Class\n- *\n- * @since 2.7.5\n- */\n-public abstract class CuratorFrameworkUtils {\n-\n-    public static ServiceDiscovery<ZookeeperInstance> buildServiceDiscovery(CuratorFramework curatorFramework,\n-                                                                            String basePath) {\n-        return ServiceDiscoveryBuilder.builder(ZookeeperInstance.class)\n-                .client(curatorFramework)\n-                .basePath(basePath)\n-                .build();\n-    }\n-\n-    public static CuratorFramework buildCuratorFramework(URL connectionURL) throws Exception {\n-        CuratorFramework curatorFramework = CuratorFrameworkFactory.builder()\n-                .connectString(connectionURL.getIp() + \":\" + connectionURL.getPort())\n-                .retryPolicy(buildRetryPolicy(connectionURL))\n-                .build();\n-        curatorFramework.start();\n-        curatorFramework.blockUntilConnected(BLOCK_UNTIL_CONNECTED_WAIT.getParameterValue(connectionURL),\n-                BLOCK_UNTIL_CONNECTED_UNIT.getParameterValue(connectionURL));\n-        return curatorFramework;\n-    }\n-\n-    public static RetryPolicy buildRetryPolicy(URL connectionURL) {\n-        int baseSleepTimeMs = BASE_SLEEP_TIME.getParameterValue(connectionURL);\n-        int maxRetries = MAX_RETRIES.getParameterValue(connectionURL);\n-        int getMaxSleepMs = MAX_SLEEP.getParameterValue(connectionURL);\n-        return new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries, getMaxSleepMs);\n-    }\n-\n-\n-    public static List<ServiceInstance> build(Collection<org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance>>\n-                                                      instances) {\n-        return instances.stream().map(CuratorFrameworkUtils::build).collect(Collectors.toList());\n-    }\n-\n-    public static ServiceInstance build(org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> instance) {\n-        String name = instance.getName();\n-        String host = instance.getAddress();\n-        int port = instance.getPort();\n-        ZookeeperInstance zookeeperInstance = instance.getPayload();\n-        DefaultServiceInstance serviceInstance = new DefaultServiceInstance(instance.getId(), name, host, port);\n-        serviceInstance.setMetadata(zookeeperInstance.getMetadata());\n-        return serviceInstance;\n-    }\n-\n-    public static org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> build(ServiceInstance serviceInstance) {\n-        ServiceInstanceBuilder builder = null;\n-        String serviceName = serviceInstance.getServiceName();\n-        String host = serviceInstance.getHost();\n-        int port = serviceInstance.getPort();\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        String id = generateId(host, port);\n-        ZookeeperInstance zookeeperInstance = new ZookeeperInstance(null, serviceName, metadata);\n-        try {\n-            builder = builder()\n-                    .id(id)\n-                    .name(serviceName)\n-                    .address(host)\n-                    .port(port)\n-                    .payload(zookeeperInstance);\n-        } catch (Exception e) {\n-            throw new RuntimeException(e);\n-        }\n-        return builder.build();\n-    }\n-\n-    public static final String generateId(String host, int port) {\n-        return host + \":\" + port;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper.util;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.zookeeper.ZookeeperInstance;\r\n+\r\n+import org.apache.curator.RetryPolicy;\r\n+import org.apache.curator.framework.CuratorFramework;\r\n+import org.apache.curator.framework.CuratorFrameworkFactory;\r\n+import org.apache.curator.retry.ExponentialBackoffRetry;\r\n+import org.apache.curator.x.discovery.ServiceDiscovery;\r\n+import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;\r\n+import org.apache.curator.x.discovery.ServiceInstanceBuilder;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.curator.x.discovery.ServiceInstance.builder;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BASE_SLEEP_TIME;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BLOCK_UNTIL_CONNECTED_UNIT;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BLOCK_UNTIL_CONNECTED_WAIT;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.MAX_RETRIES;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.MAX_SLEEP;\r\n+\r\n+/**\r\n+ * Curator Framework Utilities Class\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class CuratorFrameworkUtils {\r\n+\r\n+    public static ServiceDiscovery<ZookeeperInstance> buildServiceDiscovery(CuratorFramework curatorFramework,\r\n+                                                                            String basePath) {\r\n+        return ServiceDiscoveryBuilder.builder(ZookeeperInstance.class)\r\n+                .client(curatorFramework)\r\n+                .basePath(basePath)\r\n+                .build();\r\n+    }\r\n+\r\n+    public static CuratorFramework buildCuratorFramework(URL connectionURL) throws Exception {\r\n+        CuratorFramework curatorFramework = CuratorFrameworkFactory.builder()\r\n+                .connectString(connectionURL.getIp() + \":\" + connectionURL.getPort())\r\n+                .retryPolicy(buildRetryPolicy(connectionURL))\r\n+                .build();\r\n+        curatorFramework.start();\r\n+        curatorFramework.blockUntilConnected(BLOCK_UNTIL_CONNECTED_WAIT.getParameterValue(connectionURL),\r\n+                BLOCK_UNTIL_CONNECTED_UNIT.getParameterValue(connectionURL));\r\n+        return curatorFramework;\r\n+    }\r\n+\r\n+    public static RetryPolicy buildRetryPolicy(URL connectionURL) {\r\n+        int baseSleepTimeMs = BASE_SLEEP_TIME.getParameterValue(connectionURL);\r\n+        int maxRetries = MAX_RETRIES.getParameterValue(connectionURL);\r\n+        int getMaxSleepMs = MAX_SLEEP.getParameterValue(connectionURL);\r\n+        return new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries, getMaxSleepMs);\r\n+    }\r\n+\r\n+\r\n+    public static List<ServiceInstance> build(Collection<org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance>>\r\n+                                                      instances) {\r\n+        return instances.stream().map(CuratorFrameworkUtils::build).collect(Collectors.toList());\r\n+    }\r\n+\r\n+    public static ServiceInstance build(org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> instance) {\r\n+        String name = instance.getName();\r\n+        String host = instance.getAddress();\r\n+        int port = instance.getPort();\r\n+        ZookeeperInstance zookeeperInstance = instance.getPayload();\r\n+        DefaultServiceInstance serviceInstance = new DefaultServiceInstance(instance.getId(), name, host, port);\r\n+        serviceInstance.setMetadata(zookeeperInstance.getMetadata());\r\n+        return serviceInstance;\r\n+    }\r\n+\r\n+    public static org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> build(ServiceInstance serviceInstance) {\r\n+        ServiceInstanceBuilder builder = null;\r\n+        String serviceName = serviceInstance.getServiceName();\r\n+        String host = serviceInstance.getHost();\r\n+        int port = serviceInstance.getPort();\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        String id = generateId(host, port);\r\n+        ZookeeperInstance zookeeperInstance = new ZookeeperInstance(null, serviceName, metadata);\r\n+        try {\r\n+            builder = builder()\r\n+                    .id(id)\r\n+                    .name(serviceName)\r\n+                    .address(host)\r\n+                    .port(port)\r\n+                    .payload(zookeeperInstance);\r\n+        } catch (Exception e) {\r\n+            throw new RuntimeException(e);\r\n+        }\r\n+        return builder.build();\r\n+    }\r\n+\r\n+    public static final String generateId(String host, int port) {\r\n+        return host + \":\" + port;\r\n+    }\r\n+}\r\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/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,155 +1,151 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 6567 6973 7472 793c 2f61 7274  bo-registry</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 6567 6973 7472 792d 7a6f 6f6b 6565  -registry-zookee\n-00000520: 7065 723c 2f61 7274 6966 6163 7449 643e  per</artifactId>\n-00000530: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000540: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000550: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000560: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000570: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000580: 696f 6e3e 5468 6520 7a6f 6f6b 6565 7065  ion>The zookeepe\n-00000590: 7220 7265 6769 7374 7279 206d 6f64 756c  r registry modul\n-000005a0: 6520 6f66 2064 7562 626f 2070 726f 6a65  e of dubbo proje\n-000005b0: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n-000005c0: 0d0a 2020 3c6c 6963 656e 7365 733e 0d0a  ..  <licenses>..\n-000005d0: 2020 2020 3c6c 6963 656e 7365 3e0d 0a20      <license>.. \n-000005e0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n-000005f0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n-00000600: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d 0a20  on 2.0</name>.. \n-00000610: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n-00000620: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n-00000630: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n-00000640: 2d32 2e30 3c2f 7572 6c3e 0d0a 2020 2020  -2.0</url>..    \n-00000650: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n-00000660: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n-00000670: 6f6e 3e0d 0a20 2020 203c 2f6c 6963 656e  on>..    </licen\n-00000680: 7365 3e0d 0a20 203c 2f6c 6963 656e 7365  se>..  </license\n-00000690: 733e 0d0a 2020 3c70 726f 7065 7274 6965  s>..  <propertie\n-000006a0: 733e 0d0a 2020 2020 3c73 6b69 705f 6d61  s>..    <skip_ma\n-000006b0: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n-000006c0: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n-000006d0: 6c6f 793e 0d0a 2020 3c2f 7072 6f70 6572  loy>..  </proper\n-000006e0: 7469 6573 3e0d 0a20 203c 6465 7065 6e64  ties>..  <depend\n-000006f0: 656e 6369 6573 3e0d 0a20 2020 203c 6465  encies>..    <de\n-00000700: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000710: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-00000720: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-00000730: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000740: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n-00000750: 6769 7374 7279 2d61 7069 3c2f 6172 7469  gistry-api</arti\n-00000760: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000770: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000780: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000790: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-000007a0: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000007b0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-000007c0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-000007d0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000007e0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-000007f0: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n-00000800: 7562 626f 2d72 656d 6f74 696e 672d 7a6f  ubbo-remoting-zo\n-00000810: 6f6b 6565 7065 723c 2f61 7274 6966 6163  okeeper</artifac\n-00000820: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000830: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-00000840: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-00000850: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-00000860: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000870: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000880: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000890: 672e 6170 6163 6865 2e63 7572 6174 6f72  g.apache.curator\n-000008a0: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-000008b0: 2020 3c61 7274 6966 6163 7449 643e 6375    <artifactId>cu\n-000008c0: 7261 746f 722d 782d 6469 7363 6f76 6572  rator-x-discover\n-000008d0: 793c 2f61 7274 6966 6163 7449 643e 0d0a  y</artifactId>..\n-000008e0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-000008f0: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000900: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000910: 7049 643e 6f72 672e 6170 6163 6865 2e63  pId>org.apache.c\n-00000920: 7572 6174 6f72 3c2f 6772 6f75 7049 643e  urator</groupId>\n-00000930: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000940: 7449 643e 6375 7261 746f 722d 7465 7374  tId>curator-test\n-00000950: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000960: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000970: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000980: 6465 7065 6e64 656e 6379 3e0d 0a20 203c  dependency>..  <\n-00000990: 2f64 6570 656e 6465 6e63 6965 733e 0d0a  /dependencies>..\n-000009a0: 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 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 6567  factId>dubbo-reg\n+00000480: 6973 7472 793c 2f61 7274 6966 6163 7449  istry</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 6567 6973 7472 792d  >dubbo-registry-\n+00000500: 7a6f 6f6b 6565 7065 723c 2f61 7274 6966  zookeeper</artif\n+00000510: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000520: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000530: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000540: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000550: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000560: 6970 7469 6f6e 3e54 6865 207a 6f6f 6b65  iption>The zooke\n+00000570: 6570 6572 2072 6567 6973 7472 7920 6d6f  eper registry mo\n+00000580: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n+00000590: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n+000005a0: 6f6e 3e0a 2020 3c6c 6963 656e 7365 733e  on>.  <licenses>\n+000005b0: 0a20 2020 203c 6c69 6365 6e73 653e 0a20  .    <license>. \n+000005c0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n+000005d0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n+000005e0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a 2020  on 2.0</name>.  \n+000005f0: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n+00000600: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n+00000610: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n+00000620: 322e 303c 2f75 726c 3e0a 2020 2020 2020  2.0</url>.      \n+00000630: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n+00000640: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n+00000650: 3e0a 2020 2020 3c2f 6c69 6365 6e73 653e  >.    </license>\n+00000660: 0a20 203c 2f6c 6963 656e 7365 733e 0a20  .  </licenses>. \n+00000670: 203c 7072 6f70 6572 7469 6573 3e0a 2020   <properties>.  \n+00000680: 2020 3c73 6b69 705f 6d61 7665 6e5f 6465    <skip_maven_de\n+00000690: 706c 6f79 3e66 616c 7365 3c2f 736b 6970  ploy>false</skip\n+000006a0: 5f6d 6176 656e 5f64 6570 6c6f 793e 0a20  _maven_deploy>. \n+000006b0: 203c 2f70 726f 7065 7274 6965 733e 0a20   </properties>. \n+000006c0: 203c 6465 7065 6e64 656e 6369 6573 3e0a   <dependencies>.\n+000006d0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+000006e0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000006f0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000700: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000710: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000720: 626f 2d72 6567 6973 7472 792d 6170 693c  bo-registry-api<\n+00000730: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000740: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+00000750: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+00000760: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000770: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000780: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000790: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+000007a0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+000007b0: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+000007c0: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+000007d0: 7562 626f 2d72 656d 6f74 696e 672d 7a6f  ubbo-remoting-zo\n+000007e0: 6f6b 6565 7065 723c 2f61 7274 6966 6163  okeeper</artifac\n+000007f0: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+00000800: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+00000810: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000820: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+00000830: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000840: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000850: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000860: 6163 6865 2e63 7572 6174 6f72 3c2f 6772  ache.curator</gr\n+00000870: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000880: 7469 6661 6374 4964 3e63 7572 6174 6f72  tifactId>curator\n+00000890: 2d78 2d64 6973 636f 7665 7279 3c2f 6172  -x-discovery</ar\n+000008a0: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+000008b0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000008c0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000008d0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+000008e0: 6170 6163 6865 2e63 7572 6174 6f72 3c2f  apache.curator</\n+000008f0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+00000900: 6172 7469 6661 6374 4964 3e63 7572 6174  artifactId>curat\n+00000910: 6f72 2d74 6573 743c 2f61 7274 6966 6163  or-test</artifac\n+00000920: 7449 643e 0a20 2020 2020 203c 7363 6f70  tId>.      <scop\n+00000930: 653e 7465 7374 3c2f 7363 6f70 653e 0a20  e>test</scope>. \n+00000940: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000950: 0a20 203c 2f64 6570 656e 6465 6e63 6965  .  </dependencie\n+00000960: 733e 0a3c 2f70 726f 6a65 6374 3e0a       s>.</project>.\n"}]}
