{"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: 38880 bytes, number of entries: 33\n+Zip file size: 38988 bytes, number of entries: 33\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/common/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/common/serialize/\n@@ -13,23 +13,23 @@\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-serialization-protobuf/\n -rw-r--r--  2.0 unx     3232 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      185 b- defN 20-Apr-01 08:04 META-INF/NOTICE\n--rw-r--r--  2.0 unx     5367 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java\n--rw-r--r--  2.0 unx     5344 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectOutput.java\n--rw-r--r--  2.0 unx     1918 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonSerialization.java\n--rw-r--r--  2.0 unx     4776 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectInput.java\n--rw-r--r--  2.0 unx     5377 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectOutput.java\n--rw-r--r--  2.0 unx     2439 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufSerialization.java\n--rw-r--r--  2.0 unx     8140 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/ProtobufUtils.java\n--rw-r--r--  2.0 unx     2577 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/ProtobufWrappedException.java\n+-rw-r--r--  2.0 unx     5531 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java\n+-rw-r--r--  2.0 unx     5504 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectOutput.java\n+-rw-r--r--  2.0 unx     1972 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonSerialization.java\n+-rw-r--r--  2.0 unx     4922 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectInput.java\n+-rw-r--r--  2.0 unx     5533 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectOutput.java\n+-rw-r--r--  2.0 unx     2502 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufSerialization.java\n+-rw-r--r--  2.0 unx     8345 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/ProtobufUtils.java\n+-rw-r--r--  2.0 unx     2645 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/ProtobufWrappedException.java\n -rw-r--r--  2.0 unx    31696 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/wrapper/MapValue.java\n--rw-r--r--  2.0 unx   102165 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java\n--rw-r--r--  2.0 unx      186 b- defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization\n--rw-r--r--  2.0 unx     1140 b- defN 20-Apr-01 08:04 MapValue.proto\n--rw-r--r--  2.0 unx     2781 b- defN 20-Apr-01 08:04 ThrowablePB.proto\n--rw-r--r--  2.0 unx     3855 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml\n+-rw-r--r--  2.0 unx   102349 b- defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java\n+-rw-r--r--  2.0 unx      187 b- defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization\n+-rw-r--r--  2.0 unx     1166 b- defN 20-Apr-01 08:04 MapValue.proto\n+-rw-r--r--  2.0 unx     2845 b- defN 20-Apr-01 08:04 ThrowablePB.proto\n+-rw-r--r--  2.0 unx     3751 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml\n -rw-r--r--  2.0 unx       83 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.properties\n-33 files, 192683 bytes uncompressed, 33306 bytes compressed:  82.7%\n+33 files, 193870 bytes uncompressed, 33414 bytes compressed:  82.8%\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -335,1339 +335,1339 @@\n 17A9 Extract Zip Spec      14 (20) '2.0'\n 17AA Extract OS            00 (0) 'MS-DOS'\n 17AB General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n 17AD Compression Method    0008 (8) 'Deflated'\n 17AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17B3 CRC                   F393F7AB (4086560683)\n-17B7 Compressed Size       0000061C (1564)\n-17BB Uncompressed Size     000014F7 (5367)\n+17B3 CRC                   770B2AC5 (1997220549)\n+17B7 Compressed Size       0000062A (1578)\n+17BB Uncompressed Size     0000159B (5531)\n 17BF Filename Length       0056 (86)\n 17C1 Extra Length          0000 (0)\n 17C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n # WARNING: Offset 0x17C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 1819 PAYLOAD\n \n-1E35 LOCAL HEADER #20      04034B50 (67324752)\n-1E39 Extract Zip Spec      14 (20) '2.0'\n-1E3A Extract OS            00 (0) 'MS-DOS'\n-1E3B General Purpose Flag  0800 (2048)\n+1E43 LOCAL HEADER #20      04034B50 (67324752)\n+1E47 Extract Zip Spec      14 (20) '2.0'\n+1E48 Extract OS            00 (0) 'MS-DOS'\n+1E49 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-1E3D Compression Method    0008 (8) 'Deflated'\n-1E3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1E43 CRC                   836D6DDB (2204986843)\n-1E47 Compressed Size       000005BA (1466)\n-1E4B Uncompressed Size     000014E0 (5344)\n-1E4F Filename Length       0057 (87)\n-1E51 Extra Length          0000 (0)\n-1E53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E4B Compression Method    0008 (8) 'Deflated'\n+1E4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1E51 CRC                   680E4C03 (1745767427)\n+1E55 Compressed Size       000005C7 (1479)\n+1E59 Uncompressed Size     00001580 (5504)\n+1E5D Filename Length       0057 (87)\n+1E5F Extra Length          0000 (0)\n+1E61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EAA PAYLOAD\n+1EB8 PAYLOAD\n \n-2464 LOCAL HEADER #21      04034B50 (67324752)\n-2468 Extract Zip Spec      14 (20) '2.0'\n-2469 Extract OS            00 (0) 'MS-DOS'\n-246A General Purpose Flag  0800 (2048)\n+247F LOCAL HEADER #21      04034B50 (67324752)\n+2483 Extract Zip Spec      14 (20) '2.0'\n+2484 Extract OS            00 (0) 'MS-DOS'\n+2485 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-246C Compression Method    0008 (8) 'Deflated'\n-246E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2472 CRC                   B1C72E69 (2982620777)\n-2476 Compressed Size       00000333 (819)\n-247A Uncompressed Size     0000077E (1918)\n-247E Filename Length       0058 (88)\n-2480 Extra Length          0000 (0)\n-2482 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2487 Compression Method    0008 (8) 'Deflated'\n+2489 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+248D CRC                   CECB8E17 (3469446679)\n+2491 Compressed Size       00000339 (825)\n+2495 Uncompressed Size     000007B4 (1972)\n+2499 Filename Length       0058 (88)\n+249B Extra Length          0000 (0)\n+249D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2482: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x249D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-24DA PAYLOAD\n+24F5 PAYLOAD\n \n-280D LOCAL HEADER #22      04034B50 (67324752)\n-2811 Extract Zip Spec      14 (20) '2.0'\n-2812 Extract OS            00 (0) 'MS-DOS'\n-2813 General Purpose Flag  0800 (2048)\n+282E LOCAL HEADER #22      04034B50 (67324752)\n+2832 Extract Zip Spec      14 (20) '2.0'\n+2833 Extract OS            00 (0) 'MS-DOS'\n+2834 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2815 Compression Method    0008 (8) 'Deflated'\n-2817 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-281B CRC                   78006A1A (2013293082)\n-281F Compressed Size       00000592 (1426)\n-2823 Uncompressed Size     000012A8 (4776)\n-2827 Filename Length       0052 (82)\n-2829 Extra Length          0000 (0)\n-282B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2836 Compression Method    0008 (8) 'Deflated'\n+2838 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+283C CRC                   16AE2BE0 (380513248)\n+2840 Compressed Size       000005A0 (1440)\n+2844 Uncompressed Size     0000133A (4922)\n+2848 Filename Length       0052 (82)\n+284A Extra Length          0000 (0)\n+284C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x282B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x284C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-287D PAYLOAD\n+289E PAYLOAD\n \n-2E0F LOCAL HEADER #23      04034B50 (67324752)\n-2E13 Extract Zip Spec      14 (20) '2.0'\n-2E14 Extract OS            00 (0) 'MS-DOS'\n-2E15 General Purpose Flag  0800 (2048)\n+2E3E LOCAL HEADER #23      04034B50 (67324752)\n+2E42 Extract Zip Spec      14 (20) '2.0'\n+2E43 Extract OS            00 (0) 'MS-DOS'\n+2E44 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2E17 Compression Method    0008 (8) 'Deflated'\n-2E19 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2E1D CRC                   E8DE57DA (3906885594)\n-2E21 Compressed Size       00000616 (1558)\n-2E25 Uncompressed Size     00001501 (5377)\n-2E29 Filename Length       0053 (83)\n-2E2B Extra Length          0000 (0)\n-2E2D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2E46 Compression Method    0008 (8) 'Deflated'\n+2E48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2E4C CRC                   71435F02 (1900240642)\n+2E50 Compressed Size       00000620 (1568)\n+2E54 Uncompressed Size     0000159D (5533)\n+2E58 Filename Length       0053 (83)\n+2E5A Extra Length          0000 (0)\n+2E5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2E2D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2E5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2E80 PAYLOAD\n+2EAF PAYLOAD\n \n-3496 LOCAL HEADER #24      04034B50 (67324752)\n-349A Extract Zip Spec      14 (20) '2.0'\n-349B Extract OS            00 (0) 'MS-DOS'\n-349C General Purpose Flag  0800 (2048)\n+34CF LOCAL HEADER #24      04034B50 (67324752)\n+34D3 Extract Zip Spec      14 (20) '2.0'\n+34D4 Extract OS            00 (0) 'MS-DOS'\n+34D5 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-349E Compression Method    0008 (8) 'Deflated'\n-34A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-34A4 CRC                   DB97F7FB (3684169723)\n-34A8 Compressed Size       00000420 (1056)\n-34AC Uncompressed Size     00000987 (2439)\n-34B0 Filename Length       0054 (84)\n-34B2 Extra Length          0000 (0)\n-34B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+34D7 Compression Method    0008 (8) 'Deflated'\n+34D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+34DD CRC                   A92A8781 (2838136705)\n+34E1 Compressed Size       00000429 (1065)\n+34E5 Uncompressed Size     000009C6 (2502)\n+34E9 Filename Length       0054 (84)\n+34EB Extra Length          0000 (0)\n+34ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x34B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x34ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-3508 PAYLOAD\n+3541 PAYLOAD\n \n-3928 LOCAL HEADER #25      04034B50 (67324752)\n-392C Extract Zip Spec      14 (20) '2.0'\n-392D Extract OS            00 (0) 'MS-DOS'\n-392E General Purpose Flag  0800 (2048)\n+396A LOCAL HEADER #25      04034B50 (67324752)\n+396E Extract Zip Spec      14 (20) '2.0'\n+396F Extract OS            00 (0) 'MS-DOS'\n+3970 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3930 Compression Method    0008 (8) 'Deflated'\n-3932 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3936 CRC                   FACFCF03 (4207922947)\n-393A Compressed Size       00000909 (2313)\n-393E Uncompressed Size     00001FCC (8140)\n-3942 Filename Length       0045 (69)\n-3944 Extra Length          0000 (0)\n-3946 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+3972 Compression Method    0008 (8) 'Deflated'\n+3974 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3978 CRC                   7EEE431C (2129543964)\n+397C Compressed Size       0000091A (2330)\n+3980 Uncompressed Size     00002099 (8345)\n+3984 Filename Length       0045 (69)\n+3986 Extra Length          0000 (0)\n+3988 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3946: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3988: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-398B PAYLOAD\n+39CD PAYLOAD\n \n-4294 LOCAL HEADER #26      04034B50 (67324752)\n-4298 Extract Zip Spec      14 (20) '2.0'\n-4299 Extract OS            00 (0) 'MS-DOS'\n-429A General Purpose Flag  0800 (2048)\n+42E7 LOCAL HEADER #26      04034B50 (67324752)\n+42EB Extract Zip Spec      14 (20) '2.0'\n+42EC Extract OS            00 (0) 'MS-DOS'\n+42ED General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-429C Compression Method    0008 (8) 'Deflated'\n-429E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-42A2 CRC                   8EB7D7DD (2394413021)\n-42A6 Compressed Size       000003DD (989)\n-42AA Uncompressed Size     00000A11 (2577)\n-42AE Filename Length       0050 (80)\n-42B0 Extra Length          0000 (0)\n-42B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+42EF Compression Method    0008 (8) 'Deflated'\n+42F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+42F5 CRC                   E46DD072 (3832402034)\n+42F9 Compressed Size       000003E8 (1000)\n+42FD Uncompressed Size     00000A55 (2645)\n+4301 Filename Length       0050 (80)\n+4303 Extra Length          0000 (0)\n+4305 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x42B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4305: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-4302 PAYLOAD\n+4355 PAYLOAD\n \n-46DF LOCAL HEADER #27      04034B50 (67324752)\n-46E3 Extract Zip Spec      14 (20) '2.0'\n-46E4 Extract OS            00 (0) 'MS-DOS'\n-46E5 General Purpose Flag  0800 (2048)\n+473D LOCAL HEADER #27      04034B50 (67324752)\n+4741 Extract Zip Spec      14 (20) '2.0'\n+4742 Extract OS            00 (0) 'MS-DOS'\n+4743 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-46E7 Compression Method    0008 (8) 'Deflated'\n-46E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-46ED CRC                   3E2D4260 (1043153504)\n-46F1 Compressed Size       000010B5 (4277)\n-46F5 Uncompressed Size     00007BD0 (31696)\n-46F9 Filename Length       0048 (72)\n-46FB Extra Length          0000 (0)\n-46FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+4745 Compression Method    0008 (8) 'Deflated'\n+4747 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+474B CRC                   3E2D4260 (1043153504)\n+474F Compressed Size       000010B5 (4277)\n+4753 Uncompressed Size     00007BD0 (31696)\n+4757 Filename Length       0048 (72)\n+4759 Extra Length          0000 (0)\n+475B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x46FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x475B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-4745 PAYLOAD\n+47A3 PAYLOAD\n \n-57FA LOCAL HEADER #28      04034B50 (67324752)\n-57FE Extract Zip Spec      14 (20) '2.0'\n-57FF Extract OS            00 (0) 'MS-DOS'\n-5800 General Purpose Flag  0800 (2048)\n+5858 LOCAL HEADER #28      04034B50 (67324752)\n+585C Extract Zip Spec      14 (20) '2.0'\n+585D Extract OS            00 (0) 'MS-DOS'\n+585E General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-5802 Compression Method    0008 (8) 'Deflated'\n-5804 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-5808 CRC                   218FA1FC (563061244)\n-580C Compressed Size       000025A0 (9632)\n-5810 Uncompressed Size     00018F15 (102165)\n-5814 Filename Length       004B (75)\n-5816 Extra Length          0000 (0)\n-5818 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+5860 Compression Method    0008 (8) 'Deflated'\n+5862 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+5866 CRC                   C5D2D6A4 (3318929060)\n+586A Compressed Size       000025B2 (9650)\n+586E Uncompressed Size     00018FCD (102349)\n+5872 Filename Length       004B (75)\n+5874 Extra Length          0000 (0)\n+5876 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5818: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5876: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-5863 PAYLOAD\n+58C1 PAYLOAD\n \n-7E03 LOCAL HEADER #29      04034B50 (67324752)\n-7E07 Extract Zip Spec      14 (20) '2.0'\n-7E08 Extract OS            00 (0) 'MS-DOS'\n-7E09 General Purpose Flag  0800 (2048)\n+7E73 LOCAL HEADER #29      04034B50 (67324752)\n+7E77 Extract Zip Spec      14 (20) '2.0'\n+7E78 Extract OS            00 (0) 'MS-DOS'\n+7E79 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-7E0B Compression Method    0008 (8) 'Deflated'\n-7E0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-7E11 CRC                   1AFBAFD1 (452702161)\n-7E15 Compressed Size       00000059 (89)\n-7E19 Uncompressed Size     000000BA (186)\n-7E1D Filename Length       0047 (71)\n-7E1F Extra Length          0000 (0)\n-7E21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+7E7B Compression Method    0008 (8) 'Deflated'\n+7E7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+7E81 CRC                   A9EE6CDC (2850974940)\n+7E85 Compressed Size       0000005A (90)\n+7E89 Uncompressed Size     000000BB (187)\n+7E8D Filename Length       0047 (71)\n+7E8F Extra Length          0000 (0)\n+7E91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7E21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7E91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-7E68 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+7ED8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-7EC1 LOCAL HEADER #30      04034B50 (67324752)\n-7EC5 Extract Zip Spec      14 (20) '2.0'\n-7EC6 Extract OS            00 (0) 'MS-DOS'\n-7EC7 General Purpose Flag  0800 (2048)\n+7F32 LOCAL HEADER #30      04034B50 (67324752)\n+7F36 Extract Zip Spec      14 (20) '2.0'\n+7F37 Extract OS            00 (0) 'MS-DOS'\n+7F38 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-7EC9 Compression Method    0008 (8) 'Deflated'\n-7ECB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-7ECF CRC                   B6BD94DA (3065877722)\n-7ED3 Compressed Size       0000026B (619)\n-7ED7 Uncompressed Size     00000474 (1140)\n-7EDB Filename Length       000E (14)\n-7EDD Extra Length          0000 (0)\n-7EDF Filename              'XXXXXXXXXXXXXX'\n+7F3A Compression Method    0008 (8) 'Deflated'\n+7F3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+7F40 CRC                   812B2402 (2167088130)\n+7F44 Compressed Size       0000026F (623)\n+7F48 Uncompressed Size     0000048E (1166)\n+7F4C Filename Length       000E (14)\n+7F4E Extra Length          0000 (0)\n+7F50 Filename              'XXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7EDF: Filename 'XXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7F50: Filename 'XXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-7EED PAYLOAD\n+7F5E PAYLOAD\n \n-8158 LOCAL HEADER #31      04034B50 (67324752)\n-815C Extract Zip Spec      14 (20) '2.0'\n-815D Extract OS            00 (0) 'MS-DOS'\n-815E General Purpose Flag  0800 (2048)\n+81CD LOCAL HEADER #31      04034B50 (67324752)\n+81D1 Extract Zip Spec      14 (20) '2.0'\n+81D2 Extract OS            00 (0) 'MS-DOS'\n+81D3 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-8160 Compression Method    0008 (8) 'Deflated'\n-8162 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8166 CRC                   0A4703DB (172426203)\n-816A Compressed Size       0000044A (1098)\n-816E Uncompressed Size     00000ADD (2781)\n-8172 Filename Length       0011 (17)\n-8174 Extra Length          0000 (0)\n-8176 Filename              'XXXXXXXXXXXXXXXXX'\n+81D5 Compression Method    0008 (8) 'Deflated'\n+81D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+81DB CRC                   79E45B46 (2045008710)\n+81DF Compressed Size       00000453 (1107)\n+81E3 Uncompressed Size     00000B1D (2845)\n+81E7 Filename Length       0011 (17)\n+81E9 Extra Length          0000 (0)\n+81EB Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8176: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x81EB: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-8187 PAYLOAD\n+81FC PAYLOAD\n \n-85D1 LOCAL HEADER #32      04034B50 (67324752)\n-85D5 Extract Zip Spec      14 (20) '2.0'\n-85D6 Extract OS            00 (0) 'MS-DOS'\n-85D7 General Purpose Flag  0800 (2048)\n+864F LOCAL HEADER #32      04034B50 (67324752)\n+8653 Extract Zip Spec      14 (20) '2.0'\n+8654 Extract OS            00 (0) 'MS-DOS'\n+8655 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-85D9 Compression Method    0008 (8) 'Deflated'\n-85DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-85DF CRC                   FA85A8D5 (4203063509)\n-85E3 Compressed Size       00000500 (1280)\n-85E7 Uncompressed Size     00000F0F (3855)\n-85EB Filename Length       0044 (68)\n-85ED Extra Length          0000 (0)\n-85EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+8657 Compression Method    0008 (8) 'Deflated'\n+8659 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+865D CRC                   A4C37506 (2764272902)\n+8661 Compressed Size       000004EE (1262)\n+8665 Uncompressed Size     00000EA7 (3751)\n+8669 Filename Length       0044 (68)\n+866B Extra Length          0000 (0)\n+866D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x85EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x866D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-8633 PAYLOAD\n+86B1 PAYLOAD\n \n-8B33 LOCAL HEADER #33      04034B50 (67324752)\n-8B37 Extract Zip Spec      14 (20) '2.0'\n-8B38 Extract OS            00 (0) 'MS-DOS'\n-8B39 General Purpose Flag  0800 (2048)\n+8B9F LOCAL HEADER #33      04034B50 (67324752)\n+8BA3 Extract Zip Spec      14 (20) '2.0'\n+8BA4 Extract OS            00 (0) 'MS-DOS'\n+8BA5 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-8B3B Compression Method    0008 (8) 'Deflated'\n-8B3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8B41 CRC                   A6E93060 (2800300128)\n-8B45 Compressed Size       0000004E (78)\n-8B49 Uncompressed Size     00000053 (83)\n-8B4D Filename Length       004B (75)\n-8B4F Extra Length          0000 (0)\n-8B51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+8BA7 Compression Method    0008 (8) 'Deflated'\n+8BA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8BAD CRC                   A6E93060 (2800300128)\n+8BB1 Compressed Size       0000004E (78)\n+8BB5 Uncompressed Size     00000053 (83)\n+8BB9 Filename Length       004B (75)\n+8BBB Extra Length          0000 (0)\n+8BBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8B51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8BBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-8B9C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+8C08 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-8BEA CENTRAL HEADER #1     02014B50 (33639248)\n-8BEE Created Zip Spec      14 (20) '2.0'\n-8BEF Created OS            03 (3) 'Unix'\n-8BF0 Extract Zip Spec      14 (20) '2.0'\n-8BF1 Extract OS            00 (0) 'MS-DOS'\n-8BF2 General Purpose Flag  0800 (2048)\n+8C56 CENTRAL HEADER #1     02014B50 (33639248)\n+8C5A Created Zip Spec      14 (20) '2.0'\n+8C5B Created OS            03 (3) 'Unix'\n+8C5C Extract Zip Spec      14 (20) '2.0'\n+8C5D Extract OS            00 (0) 'MS-DOS'\n+8C5E General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-8BF4 Compression Method    0008 (8) 'Deflated'\n-8BF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8BFA CRC                   A689EB18 (2794056472)\n-8BFE Compressed Size       00000042 (66)\n-8C02 Uncompressed Size     00000040 (64)\n-8C06 Filename Length       0014 (20)\n-8C08 Extra Length          0000 (0)\n-8C0A Comment Length        0000 (0)\n-8C0C Disk Start            0000 (0)\n-8C0E Int File Attributes   0000 (0)\n+8C60 Compression Method    0008 (8) 'Deflated'\n+8C62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8C66 CRC                   A689EB18 (2794056472)\n+8C6A Compressed Size       00000042 (66)\n+8C6E Uncompressed Size     00000040 (64)\n+8C72 Filename Length       0014 (20)\n+8C74 Extra Length          0000 (0)\n+8C76 Comment Length        0000 (0)\n+8C78 Disk Start            0000 (0)\n+8C7A Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8C10 Ext File Attributes   81A40000 (2175008768)\n+8C7C 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-8C14 Local Header Offset   00000000 (0)\n-8C18 Filename              'XXXXXXXXXXXXXXXXXXXX'\n+8C80 Local Header Offset   00000000 (0)\n+8C84 Filename              'XXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8C18: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8C84: Filename 'XXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-8C2C CENTRAL HEADER #2     02014B50 (33639248)\n-8C30 Created Zip Spec      14 (20) '2.0'\n-8C31 Created OS            03 (3) 'Unix'\n-8C32 Extract Zip Spec      0A (10) '1.0'\n-8C33 Extract OS            00 (0) 'MS-DOS'\n-8C34 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8C36 Compression Method    0000 (0) 'Stored'\n-8C38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8C3C CRC                   00000000 (0)\n-8C40 Compressed Size       00000000 (0)\n-8C44 Uncompressed Size     00000000 (0)\n-8C48 Filename Length       0009 (9)\n-8C4A Extra Length          0000 (0)\n-8C4C Comment Length        0000 (0)\n-8C4E Disk Start            0000 (0)\n-8C50 Int File Attributes   0000 (0)\n+8C98 CENTRAL HEADER #2     02014B50 (33639248)\n+8C9C Created Zip Spec      14 (20) '2.0'\n+8C9D Created OS            03 (3) 'Unix'\n+8C9E Extract Zip Spec      0A (10) '1.0'\n+8C9F Extract OS            00 (0) 'MS-DOS'\n+8CA0 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8CA2 Compression Method    0000 (0) 'Stored'\n+8CA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8CA8 CRC                   00000000 (0)\n+8CAC Compressed Size       00000000 (0)\n+8CB0 Uncompressed Size     00000000 (0)\n+8CB4 Filename Length       0009 (9)\n+8CB6 Extra Length          0000 (0)\n+8CB8 Comment Length        0000 (0)\n+8CBA Disk Start            0000 (0)\n+8CBC Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8C52 Ext File Attributes   41ED0010 (1106051088)\n+8CBE 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-8C56 Local Header Offset   00000074 (116)\n-8C5A Filename              'XXXXXXXXX'\n+8CC2 Local Header Offset   00000074 (116)\n+8CC6 Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0x8C5A: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0x8CC6: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8C5A: Directory 'XXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8CC6: Directory 'XXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8C32: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXX'\n+# WARNING: Offset 0x8C9E: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXX'\n #\n \n-8C63 CENTRAL HEADER #3     02014B50 (33639248)\n-8C67 Created Zip Spec      14 (20) '2.0'\n-8C68 Created OS            03 (3) 'Unix'\n-8C69 Extract Zip Spec      0A (10) '1.0'\n-8C6A Extract OS            00 (0) 'MS-DOS'\n-8C6B General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8C6D Compression Method    0000 (0) 'Stored'\n-8C6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8C73 CRC                   00000000 (0)\n-8C77 Compressed Size       00000000 (0)\n-8C7B Uncompressed Size     00000000 (0)\n-8C7F Filename Length       0004 (4)\n-8C81 Extra Length          0000 (0)\n-8C83 Comment Length        0000 (0)\n-8C85 Disk Start            0000 (0)\n-8C87 Int File Attributes   0000 (0)\n+8CCF CENTRAL HEADER #3     02014B50 (33639248)\n+8CD3 Created Zip Spec      14 (20) '2.0'\n+8CD4 Created OS            03 (3) 'Unix'\n+8CD5 Extract Zip Spec      0A (10) '1.0'\n+8CD6 Extract OS            00 (0) 'MS-DOS'\n+8CD7 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8CD9 Compression Method    0000 (0) 'Stored'\n+8CDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8CDF CRC                   00000000 (0)\n+8CE3 Compressed Size       00000000 (0)\n+8CE7 Uncompressed Size     00000000 (0)\n+8CEB Filename Length       0004 (4)\n+8CED Extra Length          0000 (0)\n+8CEF Comment Length        0000 (0)\n+8CF1 Disk Start            0000 (0)\n+8CF3 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8C89 Ext File Attributes   41ED0010 (1106051088)\n+8CF5 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-8C8D Local Header Offset   0000009B (155)\n-8C91 Filename              'XXXX'\n+8CF9 Local Header Offset   0000009B (155)\n+8CFD Filename              'XXXX'\n #\n-# WARNING: Offset 0x8C91: Filename 'XXXX'\n+# WARNING: Offset 0x8CFD: Filename 'XXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8C91: Directory 'XXXX' must end in a '/'\n+# ERROR: Offset 0x8CFD: Directory 'XXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8C69: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXX'\n+# WARNING: Offset 0x8CD5: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXX'\n #\n \n-8C95 CENTRAL HEADER #4     02014B50 (33639248)\n-8C99 Created Zip Spec      14 (20) '2.0'\n-8C9A Created OS            03 (3) 'Unix'\n-8C9B Extract Zip Spec      0A (10) '1.0'\n-8C9C Extract OS            00 (0) 'MS-DOS'\n-8C9D General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8C9F Compression Method    0000 (0) 'Stored'\n-8CA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8CA5 CRC                   00000000 (0)\n-8CA9 Compressed Size       00000000 (0)\n-8CAD Uncompressed Size     00000000 (0)\n-8CB1 Filename Length       000B (11)\n-8CB3 Extra Length          0000 (0)\n-8CB5 Comment Length        0000 (0)\n-8CB7 Disk Start            0000 (0)\n-8CB9 Int File Attributes   0000 (0)\n+8D01 CENTRAL HEADER #4     02014B50 (33639248)\n+8D05 Created Zip Spec      14 (20) '2.0'\n+8D06 Created OS            03 (3) 'Unix'\n+8D07 Extract Zip Spec      0A (10) '1.0'\n+8D08 Extract OS            00 (0) 'MS-DOS'\n+8D09 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8D0B Compression Method    0000 (0) 'Stored'\n+8D0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8D11 CRC                   00000000 (0)\n+8D15 Compressed Size       00000000 (0)\n+8D19 Uncompressed Size     00000000 (0)\n+8D1D Filename Length       000B (11)\n+8D1F Extra Length          0000 (0)\n+8D21 Comment Length        0000 (0)\n+8D23 Disk Start            0000 (0)\n+8D25 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8CBB Ext File Attributes   41ED0010 (1106051088)\n+8D27 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-8CBF Local Header Offset   000000BD (189)\n-8CC3 Filename              'XXXXXXXXXXX'\n+8D2B Local Header Offset   000000BD (189)\n+8D2F Filename              'XXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8CC3: Filename 'XXXXXXXXXXX'\n+# WARNING: Offset 0x8D2F: Filename 'XXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8CC3: Directory 'XXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8D2F: Directory 'XXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8C9B: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXX'\n+# WARNING: Offset 0x8D07: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXX'\n #\n \n-8CCE CENTRAL HEADER #5     02014B50 (33639248)\n-8CD2 Created Zip Spec      14 (20) '2.0'\n-8CD3 Created OS            03 (3) 'Unix'\n-8CD4 Extract Zip Spec      0A (10) '1.0'\n-8CD5 Extract OS            00 (0) 'MS-DOS'\n-8CD6 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8CD8 Compression Method    0000 (0) 'Stored'\n-8CDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8CDE CRC                   00000000 (0)\n-8CE2 Compressed Size       00000000 (0)\n-8CE6 Uncompressed Size     00000000 (0)\n-8CEA Filename Length       0011 (17)\n-8CEC Extra Length          0000 (0)\n-8CEE Comment Length        0000 (0)\n-8CF0 Disk Start            0000 (0)\n-8CF2 Int File Attributes   0000 (0)\n+8D3A CENTRAL HEADER #5     02014B50 (33639248)\n+8D3E Created Zip Spec      14 (20) '2.0'\n+8D3F Created OS            03 (3) 'Unix'\n+8D40 Extract Zip Spec      0A (10) '1.0'\n+8D41 Extract OS            00 (0) 'MS-DOS'\n+8D42 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8D44 Compression Method    0000 (0) 'Stored'\n+8D46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8D4A CRC                   00000000 (0)\n+8D4E Compressed Size       00000000 (0)\n+8D52 Uncompressed Size     00000000 (0)\n+8D56 Filename Length       0011 (17)\n+8D58 Extra Length          0000 (0)\n+8D5A Comment Length        0000 (0)\n+8D5C Disk Start            0000 (0)\n+8D5E Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8CF4 Ext File Attributes   41ED0010 (1106051088)\n+8D60 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-8CF8 Local Header Offset   000000E6 (230)\n-8CFC Filename              'XXXXXXXXXXXXXXXXX'\n+8D64 Local Header Offset   000000E6 (230)\n+8D68 Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8CFC: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8D68: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8CFC: Directory 'XXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8D68: Directory 'XXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8CD4: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8D40: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXX'\n #\n \n-8D0D CENTRAL HEADER #6     02014B50 (33639248)\n-8D11 Created Zip Spec      14 (20) '2.0'\n-8D12 Created OS            03 (3) 'Unix'\n-8D13 Extract Zip Spec      0A (10) '1.0'\n-8D14 Extract OS            00 (0) 'MS-DOS'\n-8D15 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8D17 Compression Method    0000 (0) 'Stored'\n-8D19 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8D1D CRC                   00000000 (0)\n-8D21 Compressed Size       00000000 (0)\n-8D25 Uncompressed Size     00000000 (0)\n-8D29 Filename Length       0018 (24)\n-8D2B Extra Length          0000 (0)\n-8D2D Comment Length        0000 (0)\n-8D2F Disk Start            0000 (0)\n-8D31 Int File Attributes   0000 (0)\n+8D79 CENTRAL HEADER #6     02014B50 (33639248)\n+8D7D Created Zip Spec      14 (20) '2.0'\n+8D7E Created OS            03 (3) 'Unix'\n+8D7F Extract Zip Spec      0A (10) '1.0'\n+8D80 Extract OS            00 (0) 'MS-DOS'\n+8D81 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8D83 Compression Method    0000 (0) 'Stored'\n+8D85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8D89 CRC                   00000000 (0)\n+8D8D Compressed Size       00000000 (0)\n+8D91 Uncompressed Size     00000000 (0)\n+8D95 Filename Length       0018 (24)\n+8D97 Extra Length          0000 (0)\n+8D99 Comment Length        0000 (0)\n+8D9B Disk Start            0000 (0)\n+8D9D Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8D33 Ext File Attributes   41ED0010 (1106051088)\n+8D9F 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-8D37 Local Header Offset   00000115 (277)\n-8D3B Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+8DA3 Local Header Offset   00000115 (277)\n+8DA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8D3B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8DA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8D3B: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8DA7: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8D13: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8D7F: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-8D53 CENTRAL HEADER #7     02014B50 (33639248)\n-8D57 Created Zip Spec      14 (20) '2.0'\n-8D58 Created OS            03 (3) 'Unix'\n-8D59 Extract Zip Spec      0A (10) '1.0'\n-8D5A Extract OS            00 (0) 'MS-DOS'\n-8D5B General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8D5D Compression Method    0000 (0) 'Stored'\n-8D5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8D63 CRC                   00000000 (0)\n-8D67 Compressed Size       00000000 (0)\n-8D6B Uncompressed Size     00000000 (0)\n-8D6F Filename Length       0022 (34)\n-8D71 Extra Length          0000 (0)\n-8D73 Comment Length        0000 (0)\n-8D75 Disk Start            0000 (0)\n-8D77 Int File Attributes   0000 (0)\n+8DBF CENTRAL HEADER #7     02014B50 (33639248)\n+8DC3 Created Zip Spec      14 (20) '2.0'\n+8DC4 Created OS            03 (3) 'Unix'\n+8DC5 Extract Zip Spec      0A (10) '1.0'\n+8DC6 Extract OS            00 (0) 'MS-DOS'\n+8DC7 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8DC9 Compression Method    0000 (0) 'Stored'\n+8DCB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8DCF CRC                   00000000 (0)\n+8DD3 Compressed Size       00000000 (0)\n+8DD7 Uncompressed Size     00000000 (0)\n+8DDB Filename Length       0022 (34)\n+8DDD Extra Length          0000 (0)\n+8DDF Comment Length        0000 (0)\n+8DE1 Disk Start            0000 (0)\n+8DE3 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8D79 Ext File Attributes   41ED0010 (1106051088)\n+8DE5 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-8D7D Local Header Offset   0000014B (331)\n-8D81 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+8DE9 Local Header Offset   0000014B (331)\n+8DED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8D81: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8DED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8D81: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8DED: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8D59: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8DC5: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-8DA3 CENTRAL HEADER #8     02014B50 (33639248)\n-8DA7 Created Zip Spec      14 (20) '2.0'\n-8DA8 Created OS            03 (3) 'Unix'\n-8DA9 Extract Zip Spec      0A (10) '1.0'\n-8DAA Extract OS            00 (0) 'MS-DOS'\n-8DAB General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8DAD Compression Method    0000 (0) 'Stored'\n-8DAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8DB3 CRC                   00000000 (0)\n-8DB7 Compressed Size       00000000 (0)\n-8DBB Uncompressed Size     00000000 (0)\n-8DBF Filename Length       002B (43)\n-8DC1 Extra Length          0000 (0)\n-8DC3 Comment Length        0000 (0)\n-8DC5 Disk Start            0000 (0)\n-8DC7 Int File Attributes   0000 (0)\n+8E0F CENTRAL HEADER #8     02014B50 (33639248)\n+8E13 Created Zip Spec      14 (20) '2.0'\n+8E14 Created OS            03 (3) 'Unix'\n+8E15 Extract Zip Spec      0A (10) '1.0'\n+8E16 Extract OS            00 (0) 'MS-DOS'\n+8E17 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8E19 Compression Method    0000 (0) 'Stored'\n+8E1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8E1F CRC                   00000000 (0)\n+8E23 Compressed Size       00000000 (0)\n+8E27 Uncompressed Size     00000000 (0)\n+8E2B Filename Length       002B (43)\n+8E2D Extra Length          0000 (0)\n+8E2F Comment Length        0000 (0)\n+8E31 Disk Start            0000 (0)\n+8E33 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8DC9 Ext File Attributes   41ED0010 (1106051088)\n+8E35 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-8DCD Local Header Offset   0000018B (395)\n-8DD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+8E39 Local Header Offset   0000018B (395)\n+8E3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8DD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8E3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8DD1: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8E3D: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8DA9: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8E15: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-8DFC CENTRAL HEADER #9     02014B50 (33639248)\n-8E00 Created Zip Spec      14 (20) '2.0'\n-8E01 Created OS            03 (3) 'Unix'\n-8E02 Extract Zip Spec      0A (10) '1.0'\n-8E03 Extract OS            00 (0) 'MS-DOS'\n-8E04 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8E06 Compression Method    0000 (0) 'Stored'\n-8E08 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8E0C CRC                   00000000 (0)\n-8E10 Compressed Size       00000000 (0)\n-8E14 Uncompressed Size     00000000 (0)\n-8E18 Filename Length       0033 (51)\n-8E1A Extra Length          0000 (0)\n-8E1C Comment Length        0000 (0)\n-8E1E Disk Start            0000 (0)\n-8E20 Int File Attributes   0000 (0)\n+8E68 CENTRAL HEADER #9     02014B50 (33639248)\n+8E6C Created Zip Spec      14 (20) '2.0'\n+8E6D Created OS            03 (3) 'Unix'\n+8E6E Extract Zip Spec      0A (10) '1.0'\n+8E6F Extract OS            00 (0) 'MS-DOS'\n+8E70 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8E72 Compression Method    0000 (0) 'Stored'\n+8E74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8E78 CRC                   00000000 (0)\n+8E7C Compressed Size       00000000 (0)\n+8E80 Uncompressed Size     00000000 (0)\n+8E84 Filename Length       0033 (51)\n+8E86 Extra Length          0000 (0)\n+8E88 Comment Length        0000 (0)\n+8E8A Disk Start            0000 (0)\n+8E8C Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8E22 Ext File Attributes   41ED0010 (1106051088)\n+8E8E 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-8E26 Local Header Offset   000001D4 (468)\n-8E2A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+8E92 Local Header Offset   000001D4 (468)\n+8E96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8E2A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8E96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8E2A: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8E96: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8E02: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8E6E: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-8E5D CENTRAL HEADER #10    02014B50 (33639248)\n-8E61 Created Zip Spec      14 (20) '2.0'\n-8E62 Created OS            03 (3) 'Unix'\n-8E63 Extract Zip Spec      0A (10) '1.0'\n-8E64 Extract OS            00 (0) 'MS-DOS'\n-8E65 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8E67 Compression Method    0000 (0) 'Stored'\n-8E69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8E6D CRC                   00000000 (0)\n-8E71 Compressed Size       00000000 (0)\n-8E75 Uncompressed Size     00000000 (0)\n-8E79 Filename Length       003B (59)\n-8E7B Extra Length          0000 (0)\n-8E7D Comment Length        0000 (0)\n-8E7F Disk Start            0000 (0)\n-8E81 Int File Attributes   0000 (0)\n+8EC9 CENTRAL HEADER #10    02014B50 (33639248)\n+8ECD Created Zip Spec      14 (20) '2.0'\n+8ECE Created OS            03 (3) 'Unix'\n+8ECF Extract Zip Spec      0A (10) '1.0'\n+8ED0 Extract OS            00 (0) 'MS-DOS'\n+8ED1 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8ED3 Compression Method    0000 (0) 'Stored'\n+8ED5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8ED9 CRC                   00000000 (0)\n+8EDD Compressed Size       00000000 (0)\n+8EE1 Uncompressed Size     00000000 (0)\n+8EE5 Filename Length       003B (59)\n+8EE7 Extra Length          0000 (0)\n+8EE9 Comment Length        0000 (0)\n+8EEB Disk Start            0000 (0)\n+8EED Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8E83 Ext File Attributes   41ED0010 (1106051088)\n+8EEF 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-8E87 Local Header Offset   00000225 (549)\n-8E8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+8EF3 Local Header Offset   00000225 (549)\n+8EF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8E8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8EF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8E8B: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8EF7: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8E63: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8ECF: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-8EC6 CENTRAL HEADER #11    02014B50 (33639248)\n-8ECA Created Zip Spec      14 (20) '2.0'\n-8ECB Created OS            03 (3) 'Unix'\n-8ECC Extract Zip Spec      0A (10) '1.0'\n-8ECD Extract OS            00 (0) 'MS-DOS'\n-8ECE General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8ED0 Compression Method    0000 (0) 'Stored'\n-8ED2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8ED6 CRC                   00000000 (0)\n-8EDA Compressed Size       00000000 (0)\n-8EDE Uncompressed Size     00000000 (0)\n-8EE2 Filename Length       000F (15)\n-8EE4 Extra Length          0000 (0)\n-8EE6 Comment Length        0000 (0)\n-8EE8 Disk Start            0000 (0)\n-8EEA Int File Attributes   0000 (0)\n+8F32 CENTRAL HEADER #11    02014B50 (33639248)\n+8F36 Created Zip Spec      14 (20) '2.0'\n+8F37 Created OS            03 (3) 'Unix'\n+8F38 Extract Zip Spec      0A (10) '1.0'\n+8F39 Extract OS            00 (0) 'MS-DOS'\n+8F3A General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8F3C Compression Method    0000 (0) 'Stored'\n+8F3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8F42 CRC                   00000000 (0)\n+8F46 Compressed Size       00000000 (0)\n+8F4A Uncompressed Size     00000000 (0)\n+8F4E Filename Length       000F (15)\n+8F50 Extra Length          0000 (0)\n+8F52 Comment Length        0000 (0)\n+8F54 Disk Start            0000 (0)\n+8F56 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8EEC Ext File Attributes   41ED0010 (1106051088)\n+8F58 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-8EF0 Local Header Offset   0000027E (638)\n-8EF4 Filename              'XXXXXXXXXXXXXXX'\n+8F5C Local Header Offset   0000027E (638)\n+8F60 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8EF4: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8F60: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8EF4: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8F60: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8ECC: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8F38: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n #\n \n-8F03 CENTRAL HEADER #12    02014B50 (33639248)\n-8F07 Created Zip Spec      14 (20) '2.0'\n-8F08 Created OS            03 (3) 'Unix'\n-8F09 Extract Zip Spec      0A (10) '1.0'\n-8F0A Extract OS            00 (0) 'MS-DOS'\n-8F0B General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8F0D Compression Method    0000 (0) 'Stored'\n-8F0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8F13 CRC                   00000000 (0)\n-8F17 Compressed Size       00000000 (0)\n-8F1B Uncompressed Size     00000000 (0)\n-8F1F Filename Length       0018 (24)\n-8F21 Extra Length          0000 (0)\n-8F23 Comment Length        0000 (0)\n-8F25 Disk Start            0000 (0)\n-8F27 Int File Attributes   0000 (0)\n+8F6F CENTRAL HEADER #12    02014B50 (33639248)\n+8F73 Created Zip Spec      14 (20) '2.0'\n+8F74 Created OS            03 (3) 'Unix'\n+8F75 Extract Zip Spec      0A (10) '1.0'\n+8F76 Extract OS            00 (0) 'MS-DOS'\n+8F77 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8F79 Compression Method    0000 (0) 'Stored'\n+8F7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8F7F CRC                   00000000 (0)\n+8F83 Compressed Size       00000000 (0)\n+8F87 Uncompressed Size     00000000 (0)\n+8F8B Filename Length       0018 (24)\n+8F8D Extra Length          0000 (0)\n+8F8F Comment Length        0000 (0)\n+8F91 Disk Start            0000 (0)\n+8F93 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8F29 Ext File Attributes   41ED0010 (1106051088)\n+8F95 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-8F2D Local Header Offset   000002AB (683)\n-8F31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+8F99 Local Header Offset   000002AB (683)\n+8F9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8F31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8F9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8F31: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8F9D: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8F09: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8F75: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-8F49 CENTRAL HEADER #13    02014B50 (33639248)\n-8F4D Created Zip Spec      14 (20) '2.0'\n-8F4E Created OS            03 (3) 'Unix'\n-8F4F Extract Zip Spec      0A (10) '1.0'\n-8F50 Extract OS            00 (0) 'MS-DOS'\n-8F51 General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8F53 Compression Method    0000 (0) 'Stored'\n-8F55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8F59 CRC                   00000000 (0)\n-8F5D Compressed Size       00000000 (0)\n-8F61 Uncompressed Size     00000000 (0)\n-8F65 Filename Length       000F (15)\n-8F67 Extra Length          0000 (0)\n-8F69 Comment Length        0000 (0)\n-8F6B Disk Start            0000 (0)\n-8F6D Int File Attributes   0000 (0)\n+8FB5 CENTRAL HEADER #13    02014B50 (33639248)\n+8FB9 Created Zip Spec      14 (20) '2.0'\n+8FBA Created OS            03 (3) 'Unix'\n+8FBB Extract Zip Spec      0A (10) '1.0'\n+8FBC Extract OS            00 (0) 'MS-DOS'\n+8FBD General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8FBF Compression Method    0000 (0) 'Stored'\n+8FC1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+8FC5 CRC                   00000000 (0)\n+8FC9 Compressed Size       00000000 (0)\n+8FCD Uncompressed Size     00000000 (0)\n+8FD1 Filename Length       000F (15)\n+8FD3 Extra Length          0000 (0)\n+8FD5 Comment Length        0000 (0)\n+8FD7 Disk Start            0000 (0)\n+8FD9 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8F6F Ext File Attributes   41ED0010 (1106051088)\n+8FDB 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-8F73 Local Header Offset   000002E1 (737)\n-8F77 Filename              'XXXXXXXXXXXXXXX'\n+8FDF Local Header Offset   000002E1 (737)\n+8FE3 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8F77: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8FE3: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8F77: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x8FE3: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8F4F: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8FBB: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n #\n \n-8F86 CENTRAL HEADER #14    02014B50 (33639248)\n-8F8A Created Zip Spec      14 (20) '2.0'\n-8F8B Created OS            03 (3) 'Unix'\n-8F8C Extract Zip Spec      0A (10) '1.0'\n-8F8D Extract OS            00 (0) 'MS-DOS'\n-8F8E General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8F90 Compression Method    0000 (0) 'Stored'\n-8F92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8F96 CRC                   00000000 (0)\n-8F9A Compressed Size       00000000 (0)\n-8F9E Uncompressed Size     00000000 (0)\n-8FA2 Filename Length       0020 (32)\n-8FA4 Extra Length          0000 (0)\n-8FA6 Comment Length        0000 (0)\n-8FA8 Disk Start            0000 (0)\n-8FAA Int File Attributes   0000 (0)\n+8FF2 CENTRAL HEADER #14    02014B50 (33639248)\n+8FF6 Created Zip Spec      14 (20) '2.0'\n+8FF7 Created OS            03 (3) 'Unix'\n+8FF8 Extract Zip Spec      0A (10) '1.0'\n+8FF9 Extract OS            00 (0) 'MS-DOS'\n+8FFA General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+8FFC Compression Method    0000 (0) 'Stored'\n+8FFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+9002 CRC                   00000000 (0)\n+9006 Compressed Size       00000000 (0)\n+900A Uncompressed Size     00000000 (0)\n+900E Filename Length       0020 (32)\n+9010 Extra Length          0000 (0)\n+9012 Comment Length        0000 (0)\n+9014 Disk Start            0000 (0)\n+9016 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8FAC Ext File Attributes   41ED0010 (1106051088)\n+9018 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-8FB0 Local Header Offset   0000030E (782)\n-8FB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+901C Local Header Offset   0000030E (782)\n+9020 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8FB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9020: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x8FB4: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x9020: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8F8C: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8FF8: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-8FD4 CENTRAL HEADER #15    02014B50 (33639248)\n-8FD8 Created Zip Spec      14 (20) '2.0'\n-8FD9 Created OS            03 (3) 'Unix'\n-8FDA Extract Zip Spec      0A (10) '1.0'\n-8FDB Extract OS            00 (0) 'MS-DOS'\n-8FDC General Purpose Flag  0800 (2048)\n-     [Bit 11]              1 'Language Encoding'\n-8FDE Compression Method    0000 (0) 'Stored'\n-8FE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-8FE4 CRC                   00000000 (0)\n-8FE8 Compressed Size       00000000 (0)\n-8FEC Uncompressed Size     00000000 (0)\n-8FF0 Filename Length       003D (61)\n-8FF2 Extra Length          0000 (0)\n-8FF4 Comment Length        0000 (0)\n-8FF6 Disk Start            0000 (0)\n-8FF8 Int File Attributes   0000 (0)\n+9040 CENTRAL HEADER #15    02014B50 (33639248)\n+9044 Created Zip Spec      14 (20) '2.0'\n+9045 Created OS            03 (3) 'Unix'\n+9046 Extract Zip Spec      0A (10) '1.0'\n+9047 Extract OS            00 (0) 'MS-DOS'\n+9048 General Purpose Flag  0800 (2048)\n+     [Bit 11]              1 'Language Encoding'\n+904A Compression Method    0000 (0) 'Stored'\n+904C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+9050 CRC                   00000000 (0)\n+9054 Compressed Size       00000000 (0)\n+9058 Uncompressed Size     00000000 (0)\n+905C Filename Length       003D (61)\n+905E Extra Length          0000 (0)\n+9060 Comment Length        0000 (0)\n+9062 Disk Start            0000 (0)\n+9064 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-8FFA Ext File Attributes   41ED0010 (1106051088)\n+9066 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-8FFE Local Header Offset   0000034C (844)\n-9002 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+906A Local Header Offset   0000034C (844)\n+906E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9002: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x906E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x9002: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x906E: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x8FDA: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9046: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-903F CENTRAL HEADER #16    02014B50 (33639248)\n-9043 Created Zip Spec      14 (20) '2.0'\n-9044 Created OS            03 (3) 'Unix'\n-9045 Extract Zip Spec      14 (20) '2.0'\n-9046 Extract OS            00 (0) 'MS-DOS'\n-9047 General Purpose Flag  0800 (2048)\n-     [Bits 1-2]            0 'Normal Compression'\n-     [Bit 11]              1 'Language Encoding'\n-9049 Compression Method    0008 (8) 'Deflated'\n-904B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-904F CRC                   8BFD2146 (2348622150)\n-9053 Compressed Size       0000037E (894)\n-9057 Uncompressed Size     00000CA0 (3232)\n-905B Filename Length       0015 (21)\n-905D Extra Length          0000 (0)\n-905F Comment Length        0000 (0)\n-9061 Disk Start            0000 (0)\n-9063 Int File Attributes   0000 (0)\n+90AB CENTRAL HEADER #16    02014B50 (33639248)\n+90AF Created Zip Spec      14 (20) '2.0'\n+90B0 Created OS            03 (3) 'Unix'\n+90B1 Extract Zip Spec      14 (20) '2.0'\n+90B2 Extract OS            00 (0) 'MS-DOS'\n+90B3 General Purpose Flag  0800 (2048)\n+     [Bits 1-2]            0 'Normal Compression'\n+     [Bit 11]              1 'Language Encoding'\n+90B5 Compression Method    0008 (8) 'Deflated'\n+90B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+90BB CRC                   8BFD2146 (2348622150)\n+90BF Compressed Size       0000037E (894)\n+90C3 Uncompressed Size     00000CA0 (3232)\n+90C7 Filename Length       0015 (21)\n+90C9 Extra Length          0000 (0)\n+90CB Comment Length        0000 (0)\n+90CD Disk Start            0000 (0)\n+90CF Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-9065 Ext File Attributes   81A40000 (2175008768)\n+90D1 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-9069 Local Header Offset   000003A7 (935)\n-906D Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+90D5 Local Header Offset   000003A7 (935)\n+90D9 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x906D: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x90D9: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-9082 CENTRAL HEADER #17    02014B50 (33639248)\n-9086 Created Zip Spec      14 (20) '2.0'\n-9087 Created OS            03 (3) 'Unix'\n-9088 Extract Zip Spec      14 (20) '2.0'\n-9089 Extract OS            00 (0) 'MS-DOS'\n-908A General Purpose Flag  0800 (2048)\n+90EE CENTRAL HEADER #17    02014B50 (33639248)\n+90F2 Created Zip Spec      14 (20) '2.0'\n+90F3 Created OS            03 (3) 'Unix'\n+90F4 Extract Zip Spec      14 (20) '2.0'\n+90F5 Extract OS            00 (0) 'MS-DOS'\n+90F6 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-908C Compression Method    0008 (8) 'Deflated'\n-908E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-9092 CRC                   86E2B4B4 (2263004340)\n-9096 Compressed Size       00000F6D (3949)\n-909A Uncompressed Size     00002C5E (11358)\n-909E Filename Length       0010 (16)\n-90A0 Extra Length          0000 (0)\n-90A2 Comment Length        0000 (0)\n-90A4 Disk Start            0000 (0)\n-90A6 Int File Attributes   0000 (0)\n+90F8 Compression Method    0008 (8) 'Deflated'\n+90FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+90FE CRC                   86E2B4B4 (2263004340)\n+9102 Compressed Size       00000F6D (3949)\n+9106 Uncompressed Size     00002C5E (11358)\n+910A Filename Length       0010 (16)\n+910C Extra Length          0000 (0)\n+910E Comment Length        0000 (0)\n+9110 Disk Start            0000 (0)\n+9112 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-90A8 Ext File Attributes   81A40000 (2175008768)\n+9114 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-90AC Local Header Offset   00000758 (1880)\n-90B0 Filename              'XXXXXXXXXXXXXXXX'\n+9118 Local Header Offset   00000758 (1880)\n+911C Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x90B0: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x911C: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-90C0 CENTRAL HEADER #18    02014B50 (33639248)\n-90C4 Created Zip Spec      14 (20) '2.0'\n-90C5 Created OS            03 (3) 'Unix'\n-90C6 Extract Zip Spec      14 (20) '2.0'\n-90C7 Extract OS            00 (0) 'MS-DOS'\n-90C8 General Purpose Flag  0800 (2048)\n+912C CENTRAL HEADER #18    02014B50 (33639248)\n+9130 Created Zip Spec      14 (20) '2.0'\n+9131 Created OS            03 (3) 'Unix'\n+9132 Extract Zip Spec      14 (20) '2.0'\n+9133 Extract OS            00 (0) 'MS-DOS'\n+9134 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-90CA Compression Method    0008 (8) 'Deflated'\n-90CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-90D0 CRC                   D74DA525 (3612189989)\n-90D4 Compressed Size       00000085 (133)\n-90D8 Uncompressed Size     000000B9 (185)\n-90DC Filename Length       000F (15)\n-90DE Extra Length          0000 (0)\n-90E0 Comment Length        0000 (0)\n-90E2 Disk Start            0000 (0)\n-90E4 Int File Attributes   0000 (0)\n+9136 Compression Method    0008 (8) 'Deflated'\n+9138 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+913C CRC                   D74DA525 (3612189989)\n+9140 Compressed Size       00000085 (133)\n+9144 Uncompressed Size     000000B9 (185)\n+9148 Filename Length       000F (15)\n+914A Extra Length          0000 (0)\n+914C Comment Length        0000 (0)\n+914E Disk Start            0000 (0)\n+9150 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-90E6 Ext File Attributes   81A40000 (2175008768)\n+9152 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-90EA Local Header Offset   000016F3 (5875)\n-90EE Filename              'XXXXXXXXXXXXXXX'\n+9156 Local Header Offset   000016F3 (5875)\n+915A Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x90EE: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x915A: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-90FD CENTRAL HEADER #19    02014B50 (33639248)\n-9101 Created Zip Spec      14 (20) '2.0'\n-9102 Created OS            03 (3) 'Unix'\n-9103 Extract Zip Spec      14 (20) '2.0'\n-9104 Extract OS            00 (0) 'MS-DOS'\n-9105 General Purpose Flag  0800 (2048)\n+9169 CENTRAL HEADER #19    02014B50 (33639248)\n+916D Created Zip Spec      14 (20) '2.0'\n+916E Created OS            03 (3) 'Unix'\n+916F Extract Zip Spec      14 (20) '2.0'\n+9170 Extract OS            00 (0) 'MS-DOS'\n+9171 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-9107 Compression Method    0008 (8) 'Deflated'\n-9109 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-910D CRC                   F393F7AB (4086560683)\n-9111 Compressed Size       0000061C (1564)\n-9115 Uncompressed Size     000014F7 (5367)\n-9119 Filename Length       0056 (86)\n-911B Extra Length          0000 (0)\n-911D Comment Length        0000 (0)\n-911F Disk Start            0000 (0)\n-9121 Int File Attributes   0000 (0)\n+9173 Compression Method    0008 (8) 'Deflated'\n+9175 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+9179 CRC                   770B2AC5 (1997220549)\n+917D Compressed Size       0000062A (1578)\n+9181 Uncompressed Size     0000159B (5531)\n+9185 Filename Length       0056 (86)\n+9187 Extra Length          0000 (0)\n+9189 Comment Length        0000 (0)\n+918B Disk Start            0000 (0)\n+918D Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-9123 Ext File Attributes   81A40000 (2175008768)\n+918F 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-9127 Local Header Offset   000017A5 (6053)\n-912B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+9193 Local Header Offset   000017A5 (6053)\n+9197 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x912B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9197: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-9181 CENTRAL HEADER #20    02014B50 (33639248)\n-9185 Created Zip Spec      14 (20) '2.0'\n-9186 Created OS            03 (3) 'Unix'\n-9187 Extract Zip Spec      14 (20) '2.0'\n-9188 Extract OS            00 (0) 'MS-DOS'\n-9189 General Purpose Flag  0800 (2048)\n+91ED CENTRAL HEADER #20    02014B50 (33639248)\n+91F1 Created Zip Spec      14 (20) '2.0'\n+91F2 Created OS            03 (3) 'Unix'\n+91F3 Extract Zip Spec      14 (20) '2.0'\n+91F4 Extract OS            00 (0) 'MS-DOS'\n+91F5 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-918B Compression Method    0008 (8) 'Deflated'\n-918D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-9191 CRC                   836D6DDB (2204986843)\n-9195 Compressed Size       000005BA (1466)\n-9199 Uncompressed Size     000014E0 (5344)\n-919D Filename Length       0057 (87)\n-919F Extra Length          0000 (0)\n-91A1 Comment Length        0000 (0)\n-91A3 Disk Start            0000 (0)\n-91A5 Int File Attributes   0000 (0)\n+91F7 Compression Method    0008 (8) 'Deflated'\n+91F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+91FD CRC                   680E4C03 (1745767427)\n+9201 Compressed Size       000005C7 (1479)\n+9205 Uncompressed Size     00001580 (5504)\n+9209 Filename Length       0057 (87)\n+920B Extra Length          0000 (0)\n+920D Comment Length        0000 (0)\n+920F Disk Start            0000 (0)\n+9211 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-91A7 Ext File Attributes   81A40000 (2175008768)\n+9213 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-91AB Local Header Offset   00001E35 (7733)\n-91AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+9217 Local Header Offset   00001E43 (7747)\n+921B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x91AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x921B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-9206 CENTRAL HEADER #21    02014B50 (33639248)\n-920A Created Zip Spec      14 (20) '2.0'\n-920B Created OS            03 (3) 'Unix'\n-920C Extract Zip Spec      14 (20) '2.0'\n-920D Extract OS            00 (0) 'MS-DOS'\n-920E General Purpose Flag  0800 (2048)\n+9272 CENTRAL HEADER #21    02014B50 (33639248)\n+9276 Created Zip Spec      14 (20) '2.0'\n+9277 Created OS            03 (3) 'Unix'\n+9278 Extract Zip Spec      14 (20) '2.0'\n+9279 Extract OS            00 (0) 'MS-DOS'\n+927A General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-9210 Compression Method    0008 (8) 'Deflated'\n-9212 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-9216 CRC                   B1C72E69 (2982620777)\n-921A Compressed Size       00000333 (819)\n-921E Uncompressed Size     0000077E (1918)\n-9222 Filename Length       0058 (88)\n-9224 Extra Length          0000 (0)\n-9226 Comment Length        0000 (0)\n-9228 Disk Start            0000 (0)\n-922A Int File Attributes   0000 (0)\n+927C Compression Method    0008 (8) 'Deflated'\n+927E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+9282 CRC                   CECB8E17 (3469446679)\n+9286 Compressed Size       00000339 (825)\n+928A Uncompressed Size     000007B4 (1972)\n+928E Filename Length       0058 (88)\n+9290 Extra Length          0000 (0)\n+9292 Comment Length        0000 (0)\n+9294 Disk Start            0000 (0)\n+9296 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-922C Ext File Attributes   81A40000 (2175008768)\n+9298 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-9230 Local Header Offset   00002464 (9316)\n-9234 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+929C Local Header Offset   0000247F (9343)\n+92A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9234: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x92A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-928C CENTRAL HEADER #22    02014B50 (33639248)\n-9290 Created Zip Spec      14 (20) '2.0'\n-9291 Created OS            03 (3) 'Unix'\n-9292 Extract Zip Spec      14 (20) '2.0'\n-9293 Extract OS            00 (0) 'MS-DOS'\n-9294 General Purpose Flag  0800 (2048)\n+92F8 CENTRAL HEADER #22    02014B50 (33639248)\n+92FC Created Zip Spec      14 (20) '2.0'\n+92FD Created OS            03 (3) 'Unix'\n+92FE Extract Zip Spec      14 (20) '2.0'\n+92FF Extract OS            00 (0) 'MS-DOS'\n+9300 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-9296 Compression Method    0008 (8) 'Deflated'\n-9298 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-929C CRC                   78006A1A (2013293082)\n-92A0 Compressed Size       00000592 (1426)\n-92A4 Uncompressed Size     000012A8 (4776)\n-92A8 Filename Length       0052 (82)\n-92AA Extra Length          0000 (0)\n-92AC Comment Length        0000 (0)\n-92AE Disk Start            0000 (0)\n-92B0 Int File Attributes   0000 (0)\n+9302 Compression Method    0008 (8) 'Deflated'\n+9304 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+9308 CRC                   16AE2BE0 (380513248)\n+930C Compressed Size       000005A0 (1440)\n+9310 Uncompressed Size     0000133A (4922)\n+9314 Filename Length       0052 (82)\n+9316 Extra Length          0000 (0)\n+9318 Comment Length        0000 (0)\n+931A Disk Start            0000 (0)\n+931C Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-92B2 Ext File Attributes   81A40000 (2175008768)\n+931E 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-92B6 Local Header Offset   0000280D (10253)\n-92BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+9322 Local Header Offset   0000282E (10286)\n+9326 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x92BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9326: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-930C CENTRAL HEADER #23    02014B50 (33639248)\n-9310 Created Zip Spec      14 (20) '2.0'\n-9311 Created OS            03 (3) 'Unix'\n-9312 Extract Zip Spec      14 (20) '2.0'\n-9313 Extract OS            00 (0) 'MS-DOS'\n-9314 General Purpose Flag  0800 (2048)\n+9378 CENTRAL HEADER #23    02014B50 (33639248)\n+937C Created Zip Spec      14 (20) '2.0'\n+937D Created OS            03 (3) 'Unix'\n+937E Extract Zip Spec      14 (20) '2.0'\n+937F Extract OS            00 (0) 'MS-DOS'\n+9380 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-9316 Compression Method    0008 (8) 'Deflated'\n-9318 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-931C CRC                   E8DE57DA (3906885594)\n-9320 Compressed Size       00000616 (1558)\n-9324 Uncompressed Size     00001501 (5377)\n-9328 Filename Length       0053 (83)\n-932A Extra Length          0000 (0)\n-932C Comment Length        0000 (0)\n-932E Disk Start            0000 (0)\n-9330 Int File Attributes   0000 (0)\n+9382 Compression Method    0008 (8) 'Deflated'\n+9384 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+9388 CRC                   71435F02 (1900240642)\n+938C Compressed Size       00000620 (1568)\n+9390 Uncompressed Size     0000159D (5533)\n+9394 Filename Length       0053 (83)\n+9396 Extra Length          0000 (0)\n+9398 Comment Length        0000 (0)\n+939A Disk Start            0000 (0)\n+939C Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-9332 Ext File Attributes   81A40000 (2175008768)\n+939E 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-9336 Local Header Offset   00002E0F (11791)\n-933A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+93A2 Local Header Offset   00002E3E (11838)\n+93A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x933A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x93A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-938D CENTRAL HEADER #24    02014B50 (33639248)\n-9391 Created Zip Spec      14 (20) '2.0'\n-9392 Created OS            03 (3) 'Unix'\n-9393 Extract Zip Spec      14 (20) '2.0'\n-9394 Extract OS            00 (0) 'MS-DOS'\n-9395 General Purpose Flag  0800 (2048)\n+93F9 CENTRAL HEADER #24    02014B50 (33639248)\n+93FD Created Zip Spec      14 (20) '2.0'\n+93FE Created OS            03 (3) 'Unix'\n+93FF Extract Zip Spec      14 (20) '2.0'\n+9400 Extract OS            00 (0) 'MS-DOS'\n+9401 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-9397 Compression Method    0008 (8) 'Deflated'\n-9399 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-939D CRC                   DB97F7FB (3684169723)\n-93A1 Compressed Size       00000420 (1056)\n-93A5 Uncompressed Size     00000987 (2439)\n-93A9 Filename Length       0054 (84)\n-93AB Extra Length          0000 (0)\n-93AD Comment Length        0000 (0)\n-93AF Disk Start            0000 (0)\n-93B1 Int File Attributes   0000 (0)\n+9403 Compression Method    0008 (8) 'Deflated'\n+9405 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+9409 CRC                   A92A8781 (2838136705)\n+940D Compressed Size       00000429 (1065)\n+9411 Uncompressed Size     000009C6 (2502)\n+9415 Filename Length       0054 (84)\n+9417 Extra Length          0000 (0)\n+9419 Comment Length        0000 (0)\n+941B Disk Start            0000 (0)\n+941D Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-93B3 Ext File Attributes   81A40000 (2175008768)\n+941F 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-93B7 Local Header Offset   00003496 (13462)\n-93BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+9423 Local Header Offset   000034CF (13519)\n+9427 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x93BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9427: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-940F CENTRAL HEADER #25    02014B50 (33639248)\n-9413 Created Zip Spec      14 (20) '2.0'\n-9414 Created OS            03 (3) 'Unix'\n-9415 Extract Zip Spec      14 (20) '2.0'\n-9416 Extract OS            00 (0) 'MS-DOS'\n-9417 General Purpose Flag  0800 (2048)\n+947B CENTRAL HEADER #25    02014B50 (33639248)\n+947F Created Zip Spec      14 (20) '2.0'\n+9480 Created OS            03 (3) 'Unix'\n+9481 Extract Zip Spec      14 (20) '2.0'\n+9482 Extract OS            00 (0) 'MS-DOS'\n+9483 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-9419 Compression Method    0008 (8) 'Deflated'\n-941B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-941F CRC                   FACFCF03 (4207922947)\n-9423 Compressed Size       00000909 (2313)\n-9427 Uncompressed Size     00001FCC (8140)\n-942B Filename Length       0045 (69)\n-942D Extra Length          0000 (0)\n-942F Comment Length        0000 (0)\n-9431 Disk Start            0000 (0)\n-9433 Int File Attributes   0000 (0)\n+9485 Compression Method    0008 (8) 'Deflated'\n+9487 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+948B CRC                   7EEE431C (2129543964)\n+948F Compressed Size       0000091A (2330)\n+9493 Uncompressed Size     00002099 (8345)\n+9497 Filename Length       0045 (69)\n+9499 Extra Length          0000 (0)\n+949B Comment Length        0000 (0)\n+949D Disk Start            0000 (0)\n+949F Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-9435 Ext File Attributes   81A40000 (2175008768)\n+94A1 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-9439 Local Header Offset   00003928 (14632)\n-943D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+94A5 Local Header Offset   0000396A (14698)\n+94A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x943D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x94A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-9482 CENTRAL HEADER #26    02014B50 (33639248)\n-9486 Created Zip Spec      14 (20) '2.0'\n-9487 Created OS            03 (3) 'Unix'\n-9488 Extract Zip Spec      14 (20) '2.0'\n-9489 Extract OS            00 (0) 'MS-DOS'\n-948A General Purpose Flag  0800 (2048)\n+94EE CENTRAL HEADER #26    02014B50 (33639248)\n+94F2 Created Zip Spec      14 (20) '2.0'\n+94F3 Created OS            03 (3) 'Unix'\n+94F4 Extract Zip Spec      14 (20) '2.0'\n+94F5 Extract OS            00 (0) 'MS-DOS'\n+94F6 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-948C Compression Method    0008 (8) 'Deflated'\n-948E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-9492 CRC                   8EB7D7DD (2394413021)\n-9496 Compressed Size       000003DD (989)\n-949A Uncompressed Size     00000A11 (2577)\n-949E Filename Length       0050 (80)\n-94A0 Extra Length          0000 (0)\n-94A2 Comment Length        0000 (0)\n-94A4 Disk Start            0000 (0)\n-94A6 Int File Attributes   0000 (0)\n+94F8 Compression Method    0008 (8) 'Deflated'\n+94FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+94FE CRC                   E46DD072 (3832402034)\n+9502 Compressed Size       000003E8 (1000)\n+9506 Uncompressed Size     00000A55 (2645)\n+950A Filename Length       0050 (80)\n+950C Extra Length          0000 (0)\n+950E Comment Length        0000 (0)\n+9510 Disk Start            0000 (0)\n+9512 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-94A8 Ext File Attributes   81A40000 (2175008768)\n+9514 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-94AC Local Header Offset   00004294 (17044)\n-94B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+9518 Local Header Offset   000042E7 (17127)\n+951C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x94B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x951C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-9500 CENTRAL HEADER #27    02014B50 (33639248)\n-9504 Created Zip Spec      14 (20) '2.0'\n-9505 Created OS            03 (3) 'Unix'\n-9506 Extract Zip Spec      14 (20) '2.0'\n-9507 Extract OS            00 (0) 'MS-DOS'\n-9508 General Purpose Flag  0800 (2048)\n+956C CENTRAL HEADER #27    02014B50 (33639248)\n+9570 Created Zip Spec      14 (20) '2.0'\n+9571 Created OS            03 (3) 'Unix'\n+9572 Extract Zip Spec      14 (20) '2.0'\n+9573 Extract OS            00 (0) 'MS-DOS'\n+9574 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-950A Compression Method    0008 (8) 'Deflated'\n-950C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-9510 CRC                   3E2D4260 (1043153504)\n-9514 Compressed Size       000010B5 (4277)\n-9518 Uncompressed Size     00007BD0 (31696)\n-951C Filename Length       0048 (72)\n-951E Extra Length          0000 (0)\n-9520 Comment Length        0000 (0)\n-9522 Disk Start            0000 (0)\n-9524 Int File Attributes   0000 (0)\n+9576 Compression Method    0008 (8) 'Deflated'\n+9578 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+957C CRC                   3E2D4260 (1043153504)\n+9580 Compressed Size       000010B5 (4277)\n+9584 Uncompressed Size     00007BD0 (31696)\n+9588 Filename Length       0048 (72)\n+958A Extra Length          0000 (0)\n+958C Comment Length        0000 (0)\n+958E Disk Start            0000 (0)\n+9590 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-9526 Ext File Attributes   81A40000 (2175008768)\n+9592 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-952A Local Header Offset   000046DF (18143)\n-952E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+9596 Local Header Offset   0000473D (18237)\n+959A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x952E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x959A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-9576 CENTRAL HEADER #28    02014B50 (33639248)\n-957A Created Zip Spec      14 (20) '2.0'\n-957B Created OS            03 (3) 'Unix'\n-957C Extract Zip Spec      14 (20) '2.0'\n-957D Extract OS            00 (0) 'MS-DOS'\n-957E General Purpose Flag  0800 (2048)\n+95E2 CENTRAL HEADER #28    02014B50 (33639248)\n+95E6 Created Zip Spec      14 (20) '2.0'\n+95E7 Created OS            03 (3) 'Unix'\n+95E8 Extract Zip Spec      14 (20) '2.0'\n+95E9 Extract OS            00 (0) 'MS-DOS'\n+95EA General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-9580 Compression Method    0008 (8) 'Deflated'\n-9582 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-9586 CRC                   218FA1FC (563061244)\n-958A Compressed Size       000025A0 (9632)\n-958E Uncompressed Size     00018F15 (102165)\n-9592 Filename Length       004B (75)\n-9594 Extra Length          0000 (0)\n-9596 Comment Length        0000 (0)\n-9598 Disk Start            0000 (0)\n-959A Int File Attributes   0000 (0)\n+95EC Compression Method    0008 (8) 'Deflated'\n+95EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+95F2 CRC                   C5D2D6A4 (3318929060)\n+95F6 Compressed Size       000025B2 (9650)\n+95FA Uncompressed Size     00018FCD (102349)\n+95FE Filename Length       004B (75)\n+9600 Extra Length          0000 (0)\n+9602 Comment Length        0000 (0)\n+9604 Disk Start            0000 (0)\n+9606 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-959C Ext File Attributes   81A40000 (2175008768)\n+9608 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-95A0 Local Header Offset   000057FA (22522)\n-95A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+960C Local Header Offset   00005858 (22616)\n+9610 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x95A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9610: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-95EF CENTRAL HEADER #29    02014B50 (33639248)\n-95F3 Created Zip Spec      14 (20) '2.0'\n-95F4 Created OS            03 (3) 'Unix'\n-95F5 Extract Zip Spec      14 (20) '2.0'\n-95F6 Extract OS            00 (0) 'MS-DOS'\n-95F7 General Purpose Flag  0800 (2048)\n+965B CENTRAL HEADER #29    02014B50 (33639248)\n+965F Created Zip Spec      14 (20) '2.0'\n+9660 Created OS            03 (3) 'Unix'\n+9661 Extract Zip Spec      14 (20) '2.0'\n+9662 Extract OS            00 (0) 'MS-DOS'\n+9663 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-95F9 Compression Method    0008 (8) 'Deflated'\n-95FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-95FF CRC                   1AFBAFD1 (452702161)\n-9603 Compressed Size       00000059 (89)\n-9607 Uncompressed Size     000000BA (186)\n-960B Filename Length       0047 (71)\n-960D Extra Length          0000 (0)\n-960F Comment Length        0000 (0)\n-9611 Disk Start            0000 (0)\n-9613 Int File Attributes   0000 (0)\n+9665 Compression Method    0008 (8) 'Deflated'\n+9667 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+966B CRC                   A9EE6CDC (2850974940)\n+966F Compressed Size       0000005A (90)\n+9673 Uncompressed Size     000000BB (187)\n+9677 Filename Length       0047 (71)\n+9679 Extra Length          0000 (0)\n+967B Comment Length        0000 (0)\n+967D Disk Start            0000 (0)\n+967F Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-9615 Ext File Attributes   81A40000 (2175008768)\n+9681 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-9619 Local Header Offset   00007E03 (32259)\n-961D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+9685 Local Header Offset   00007E73 (32371)\n+9689 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x961D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9689: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-9664 CENTRAL HEADER #30    02014B50 (33639248)\n-9668 Created Zip Spec      14 (20) '2.0'\n-9669 Created OS            03 (3) 'Unix'\n-966A Extract Zip Spec      14 (20) '2.0'\n-966B Extract OS            00 (0) 'MS-DOS'\n-966C General Purpose Flag  0800 (2048)\n+96D0 CENTRAL HEADER #30    02014B50 (33639248)\n+96D4 Created Zip Spec      14 (20) '2.0'\n+96D5 Created OS            03 (3) 'Unix'\n+96D6 Extract Zip Spec      14 (20) '2.0'\n+96D7 Extract OS            00 (0) 'MS-DOS'\n+96D8 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-966E Compression Method    0008 (8) 'Deflated'\n-9670 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-9674 CRC                   B6BD94DA (3065877722)\n-9678 Compressed Size       0000026B (619)\n-967C Uncompressed Size     00000474 (1140)\n-9680 Filename Length       000E (14)\n-9682 Extra Length          0000 (0)\n-9684 Comment Length        0000 (0)\n-9686 Disk Start            0000 (0)\n-9688 Int File Attributes   0000 (0)\n+96DA Compression Method    0008 (8) 'Deflated'\n+96DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+96E0 CRC                   812B2402 (2167088130)\n+96E4 Compressed Size       0000026F (623)\n+96E8 Uncompressed Size     0000048E (1166)\n+96EC Filename Length       000E (14)\n+96EE Extra Length          0000 (0)\n+96F0 Comment Length        0000 (0)\n+96F2 Disk Start            0000 (0)\n+96F4 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-968A Ext File Attributes   81A40000 (2175008768)\n+96F6 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-968E Local Header Offset   00007EC1 (32449)\n-9692 Filename              'XXXXXXXXXXXXXX'\n+96FA Local Header Offset   00007F32 (32562)\n+96FE Filename              'XXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9692: Filename 'XXXXXXXXXXXXXX'\n+# WARNING: Offset 0x96FE: Filename 'XXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-96A0 CENTRAL HEADER #31    02014B50 (33639248)\n-96A4 Created Zip Spec      14 (20) '2.0'\n-96A5 Created OS            03 (3) 'Unix'\n-96A6 Extract Zip Spec      14 (20) '2.0'\n-96A7 Extract OS            00 (0) 'MS-DOS'\n-96A8 General Purpose Flag  0800 (2048)\n+970C CENTRAL HEADER #31    02014B50 (33639248)\n+9710 Created Zip Spec      14 (20) '2.0'\n+9711 Created OS            03 (3) 'Unix'\n+9712 Extract Zip Spec      14 (20) '2.0'\n+9713 Extract OS            00 (0) 'MS-DOS'\n+9714 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-96AA Compression Method    0008 (8) 'Deflated'\n-96AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-96B0 CRC                   0A4703DB (172426203)\n-96B4 Compressed Size       0000044A (1098)\n-96B8 Uncompressed Size     00000ADD (2781)\n-96BC Filename Length       0011 (17)\n-96BE Extra Length          0000 (0)\n-96C0 Comment Length        0000 (0)\n-96C2 Disk Start            0000 (0)\n-96C4 Int File Attributes   0000 (0)\n+9716 Compression Method    0008 (8) 'Deflated'\n+9718 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+971C CRC                   79E45B46 (2045008710)\n+9720 Compressed Size       00000453 (1107)\n+9724 Uncompressed Size     00000B1D (2845)\n+9728 Filename Length       0011 (17)\n+972A Extra Length          0000 (0)\n+972C Comment Length        0000 (0)\n+972E Disk Start            0000 (0)\n+9730 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-96C6 Ext File Attributes   81A40000 (2175008768)\n+9732 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-96CA Local Header Offset   00008158 (33112)\n-96CE Filename              'XXXXXXXXXXXXXXXXX'\n+9736 Local Header Offset   000081CD (33229)\n+973A Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x96CE: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x973A: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-96DF CENTRAL HEADER #32    02014B50 (33639248)\n-96E3 Created Zip Spec      14 (20) '2.0'\n-96E4 Created OS            03 (3) 'Unix'\n-96E5 Extract Zip Spec      14 (20) '2.0'\n-96E6 Extract OS            00 (0) 'MS-DOS'\n-96E7 General Purpose Flag  0800 (2048)\n+974B CENTRAL HEADER #32    02014B50 (33639248)\n+974F Created Zip Spec      14 (20) '2.0'\n+9750 Created OS            03 (3) 'Unix'\n+9751 Extract Zip Spec      14 (20) '2.0'\n+9752 Extract OS            00 (0) 'MS-DOS'\n+9753 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-96E9 Compression Method    0008 (8) 'Deflated'\n-96EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-96EF CRC                   FA85A8D5 (4203063509)\n-96F3 Compressed Size       00000500 (1280)\n-96F7 Uncompressed Size     00000F0F (3855)\n-96FB Filename Length       0044 (68)\n-96FD Extra Length          0000 (0)\n-96FF Comment Length        0000 (0)\n-9701 Disk Start            0000 (0)\n-9703 Int File Attributes   0000 (0)\n+9755 Compression Method    0008 (8) 'Deflated'\n+9757 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+975B CRC                   A4C37506 (2764272902)\n+975F Compressed Size       000004EE (1262)\n+9763 Uncompressed Size     00000EA7 (3751)\n+9767 Filename Length       0044 (68)\n+9769 Extra Length          0000 (0)\n+976B Comment Length        0000 (0)\n+976D Disk Start            0000 (0)\n+976F Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-9705 Ext File Attributes   81A40000 (2175008768)\n+9771 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-9709 Local Header Offset   000085D1 (34257)\n-970D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+9775 Local Header Offset   0000864F (34383)\n+9779 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x970D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9779: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-9751 CENTRAL HEADER #33    02014B50 (33639248)\n-9755 Created Zip Spec      14 (20) '2.0'\n-9756 Created OS            03 (3) 'Unix'\n-9757 Extract Zip Spec      14 (20) '2.0'\n-9758 Extract OS            00 (0) 'MS-DOS'\n-9759 General Purpose Flag  0800 (2048)\n+97BD CENTRAL HEADER #33    02014B50 (33639248)\n+97C1 Created Zip Spec      14 (20) '2.0'\n+97C2 Created OS            03 (3) 'Unix'\n+97C3 Extract Zip Spec      14 (20) '2.0'\n+97C4 Extract OS            00 (0) 'MS-DOS'\n+97C5 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-975B Compression Method    0008 (8) 'Deflated'\n-975D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-9761 CRC                   A6E93060 (2800300128)\n-9765 Compressed Size       0000004E (78)\n-9769 Uncompressed Size     00000053 (83)\n-976D Filename Length       004B (75)\n-976F Extra Length          0000 (0)\n-9771 Comment Length        0000 (0)\n-9773 Disk Start            0000 (0)\n-9775 Int File Attributes   0000 (0)\n+97C7 Compression Method    0008 (8) 'Deflated'\n+97C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+97CD CRC                   A6E93060 (2800300128)\n+97D1 Compressed Size       0000004E (78)\n+97D5 Uncompressed Size     00000053 (83)\n+97D9 Filename Length       004B (75)\n+97DB Extra Length          0000 (0)\n+97DD Comment Length        0000 (0)\n+97DF Disk Start            0000 (0)\n+97E1 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-9777 Ext File Attributes   81A40000 (2175008768)\n+97E3 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-977B Local Header Offset   00008B33 (35635)\n-977F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+97E7 Local Header Offset   00008B9F (35743)\n+97EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x977F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x97EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-97CA END CENTRAL HEADER    06054B50 (101010256)\n-97CE Number of this disk   0000 (0)\n-97D0 Central Dir Disk no   0000 (0)\n-97D2 Entries in this disk  0021 (33)\n-97D4 Total Entries         0021 (33)\n-97D6 Size of Central Dir   00000BE0 (3040)\n-97DA Offset to Central Dir 00008BEA (35818)\n-97DE Comment Length        0000 (0)\n+9836 END CENTRAL HEADER    06054B50 (101010256)\n+983A Number of this disk   0000 (0)\n+983C Central Dir Disk no   0000 (0)\n+983E Entries in this disk  0021 (33)\n+9840 Total Entries         0021 (33)\n+9842 Size of Central Dir   00000BE0 (3040)\n+9846 Offset to Central Dir 00008C56 (35926)\n+984A Comment Length        0000 (0)\n #\n # Error Count: 14\n # Warning Count: 80\n #\n # Done\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,164 +1,164 @@\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.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\n-\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.StringValue;\n-\n-import java.io.BufferedReader;\n-import java.io.EOFException;\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.InputStreamReader;\n-import java.lang.reflect.Type;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\n-\n-/**\n- * GenericGoogleProtobuf object input implementation\n- */\n-public class GenericProtobufJsonObjectInput implements ObjectInput {\n-    private final BufferedReader reader;\n-\n-    public GenericProtobufJsonObjectInput(InputStream in) {\n-        this.reader = new BufferedReader(new InputStreamReader(in));\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        return read(BoolValue.class).getValue();\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        return (byte) read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        return (short) read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        return read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        return read(Int64Value.class).getValue();\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        return read(FloatValue.class).getValue();\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        return read(DoubleValue.class).getValue();\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        return read(StringValue.class).getValue();\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        return read(BytesValue.class).getValue().toByteArray();\n-    }\n-\n-    @Override\n-    public Object readObject() {\n-        throw new UnsupportedOperationException(\"Provide the protobuf message type you want to read.\");\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls) throws IOException {\n-        return read(cls);\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T readObject(Class<T> cls, Type type) throws IOException {\n-        return readObject(cls);\n-    }\n-\n-    private String readLine() throws IOException {\n-        String line = reader.readLine();\n-        if (line == null || line.trim().length() == 0) {\n-            throw new EOFException();\n-        }\n-        return line;\n-    }\n-\n-    private <T> T read(Class<T> cls) throws IOException {\n-        if (!ProtobufUtils.isSupported(cls)) {\n-            throw new IllegalArgumentException(\"This serialization only support google protobuf entity, the class is :\" + cls.getName());\n-        }\n-\n-        String json = readLine();\n-        return ProtobufUtils.deserializeJson(json, cls);\n-    }\n-\n-    @Override\n-    public Throwable readThrowable() throws IOException {\n-        String json = readLine();\n-        ThrowablePB.ThrowableProto throwableProto = ProtobufUtils.deserializeJson(json, ThrowablePB.ThrowableProto.class);\n-        return ProtobufUtils.convertToException(throwableProto);\n-    }\n-\n-    /**\n-     * FIXME, only supports transmission of String values.\n-     *\n-     * @return\n-     * @throws IOException\n-     * @throws ClassNotFoundException\n-     */\n-    @Override\n-    public Map<String, Object> readAttachments() throws IOException, ClassNotFoundException {\n-        String json = readLine();\n-        Map<String, String> attachments = ProtobufUtils.deserializeJson(json, MapValue.Map.class).getAttachmentsMap();\n-        Map<String, Object> genericAttachments = new HashMap<>();\n-        attachments.forEach((k, v) -> {\n-            genericAttachments.put(k, v);\n-        });\n-        return genericAttachments;\n-    }\n-\n-    @Override\n-    public Object readEvent() throws IOException, ClassNotFoundException {\n-        String eventData = readUTF();\n-        if (eventData.equals(MOCK_HEARTBEAT_EVENT)) {\n-            eventData = HEARTBEAT_EVENT;\n-        }\n-        return eventData;\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.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\r\n+\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.StringValue;\r\n+\r\n+import java.io.BufferedReader;\r\n+import java.io.EOFException;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.InputStreamReader;\r\n+import java.lang.reflect.Type;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * GenericGoogleProtobuf object input implementation\r\n+ */\r\n+public class GenericProtobufJsonObjectInput implements ObjectInput {\r\n+    private final BufferedReader reader;\r\n+\r\n+    public GenericProtobufJsonObjectInput(InputStream in) {\r\n+        this.reader = new BufferedReader(new InputStreamReader(in));\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        return read(BoolValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        return (byte) read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        return (short) read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        return read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        return read(Int64Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        return read(FloatValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        return read(DoubleValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        return read(StringValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        return read(BytesValue.class).getValue().toByteArray();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readObject() {\r\n+        throw new UnsupportedOperationException(\"Provide the protobuf message type you want to read.\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls) throws IOException {\r\n+        return read(cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T readObject(Class<T> cls, Type type) throws IOException {\r\n+        return readObject(cls);\r\n+    }\r\n+\r\n+    private String readLine() throws IOException {\r\n+        String line = reader.readLine();\r\n+        if (line == null || line.trim().length() == 0) {\r\n+            throw new EOFException();\r\n+        }\r\n+        return line;\r\n+    }\r\n+\r\n+    private <T> T read(Class<T> cls) throws IOException {\r\n+        if (!ProtobufUtils.isSupported(cls)) {\r\n+            throw new IllegalArgumentException(\"This serialization only support google protobuf entity, the class is :\" + cls.getName());\r\n+        }\r\n+\r\n+        String json = readLine();\r\n+        return ProtobufUtils.deserializeJson(json, cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Throwable readThrowable() throws IOException {\r\n+        String json = readLine();\r\n+        ThrowablePB.ThrowableProto throwableProto = ProtobufUtils.deserializeJson(json, ThrowablePB.ThrowableProto.class);\r\n+        return ProtobufUtils.convertToException(throwableProto);\r\n+    }\r\n+\r\n+    /**\r\n+     * FIXME, only supports transmission of String values.\r\n+     *\r\n+     * @return\r\n+     * @throws IOException\r\n+     * @throws ClassNotFoundException\r\n+     */\r\n+    @Override\r\n+    public Map<String, Object> readAttachments() throws IOException, ClassNotFoundException {\r\n+        String json = readLine();\r\n+        Map<String, String> attachments = ProtobufUtils.deserializeJson(json, MapValue.Map.class).getAttachmentsMap();\r\n+        Map<String, Object> genericAttachments = new HashMap<>();\r\n+        attachments.forEach((k, v) -> {\r\n+            genericAttachments.put(k, v);\r\n+        });\r\n+        return genericAttachments;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readEvent() throws IOException, ClassNotFoundException {\r\n+        String eventData = readUTF();\r\n+        if (eventData.equals(MOCK_HEARTBEAT_EVENT)) {\r\n+            eventData = HEARTBEAT_EVENT;\r\n+        }\r\n+        return eventData;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectOutput.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,161 +1,161 @@\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.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.ByteString;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.StringValue;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-import java.io.OutputStreamWriter;\n-import java.io.PrintWriter;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\n-\n-/**\n- * GenericGoogleProtobuf object output implementation\n- */\n-public class GenericProtobufJsonObjectOutput implements ObjectOutput {\n-\n-    private final PrintWriter writer;\n-\n-    public GenericProtobufJsonObjectOutput(OutputStream out) {\n-        this.writer = new PrintWriter(new OutputStreamWriter(out));\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-\n-        writeObject(BoolValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue((v)).build());\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        writeObject(Int64Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        writeObject(FloatValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        writeObject(DoubleValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        writeObject(StringValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b) throws IOException {\n-        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b)).build());\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b, int off, int len) throws IOException {\n-        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b, off, len)).build());\n-    }\n-\n-\n-    @Override\n-    public void writeObject(Object obj) throws IOException {\n-        if (obj == null) {\n-            throw new IllegalArgumentException(\"This serialization only support google protobuf object, the object is : null\");\n-        }\n-        if (!ProtobufUtils.isSupported(obj.getClass())) {\n-            throw new IllegalArgumentException(\"This serialization only support google protobuf object, the object class is: \" + obj.getClass().getName());\n-        }\n-\n-        writer.write(ProtobufUtils.serializeJson(obj));\n-        writer.println();\n-        writer.flush();\n-    }\n-\n-    @Override\n-    public void writeThrowable(Object th) throws IOException {\n-        if (th instanceof Throwable && !ProtobufUtils.isSupported(th.getClass())) {\n-            th = ProtobufUtils.convertToThrowableProto((Throwable) th);\n-        }\n-        writer.write(ProtobufUtils.serializeJson(th));\n-        writer.println();\n-        writer.flush();\n-    }\n-\n-    @Override\n-    public void writeEvent(Object data) throws IOException {\n-        if (data == HEARTBEAT_EVENT) {\n-            data = MOCK_HEARTBEAT_EVENT;\n-        }\n-        writeUTF((String) data);\n-    }\n-\n-    /**\n-     * FIXME, only supports transmission of String values.\n-     *\n-     * @param attachments\n-     * @throws IOException\n-     */\n-    @Override\n-    public void writeAttachments(Map<String, Object> attachments) throws IOException {\n-        if (attachments == null) {\n-            return;\n-        }\n-\n-        Map<String, String> stringAttachments = new HashMap<>();\n-        attachments.forEach((k, v) -> stringAttachments.put(k, (String) v));\n-        MapValue.Map proto = MapValue.Map.newBuilder().putAllAttachments(stringAttachments).build();\n-        writer.write(ProtobufUtils.serializeJson(proto));\n-        writer.println();\n-        writer.flush();\n-    }\n-\n-    @Override\n-    public void flushBuffer() {\n-        writer.flush();\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.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.ByteString;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.StringValue;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+import java.io.OutputStreamWriter;\r\n+import java.io.PrintWriter;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * GenericGoogleProtobuf object output implementation\r\n+ */\r\n+public class GenericProtobufJsonObjectOutput implements ObjectOutput {\r\n+\r\n+    private final PrintWriter writer;\r\n+\r\n+    public GenericProtobufJsonObjectOutput(OutputStream out) {\r\n+        this.writer = new PrintWriter(new OutputStreamWriter(out));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+\r\n+        writeObject(BoolValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue((v)).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        writeObject(Int64Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        writeObject(FloatValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        writeObject(DoubleValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        writeObject(StringValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b) throws IOException {\r\n+        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b)).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b, int off, int len) throws IOException {\r\n+        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b, off, len)).build());\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public void writeObject(Object obj) throws IOException {\r\n+        if (obj == null) {\r\n+            throw new IllegalArgumentException(\"This serialization only support google protobuf object, the object is : null\");\r\n+        }\r\n+        if (!ProtobufUtils.isSupported(obj.getClass())) {\r\n+            throw new IllegalArgumentException(\"This serialization only support google protobuf object, the object class is: \" + obj.getClass().getName());\r\n+        }\r\n+\r\n+        writer.write(ProtobufUtils.serializeJson(obj));\r\n+        writer.println();\r\n+        writer.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeThrowable(Object th) throws IOException {\r\n+        if (th instanceof Throwable && !ProtobufUtils.isSupported(th.getClass())) {\r\n+            th = ProtobufUtils.convertToThrowableProto((Throwable) th);\r\n+        }\r\n+        writer.write(ProtobufUtils.serializeJson(th));\r\n+        writer.println();\r\n+        writer.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeEvent(Object data) throws IOException {\r\n+        if (data == HEARTBEAT_EVENT) {\r\n+            data = MOCK_HEARTBEAT_EVENT;\r\n+        }\r\n+        writeUTF((String) data);\r\n+    }\r\n+\r\n+    /**\r\n+     * FIXME, only supports transmission of String values.\r\n+     *\r\n+     * @param attachments\r\n+     * @throws IOException\r\n+     */\r\n+    @Override\r\n+    public void writeAttachments(Map<String, Object> attachments) throws IOException {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        Map<String, String> stringAttachments = new HashMap<>();\r\n+        attachments.forEach((k, v) -> stringAttachments.put(k, (String) v));\r\n+        MapValue.Map proto = MapValue.Map.newBuilder().putAllAttachments(stringAttachments).build();\r\n+        writer.write(ProtobufUtils.serializeJson(proto));\r\n+        writer.println();\r\n+        writer.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() {\r\n+        writer.flush();\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonSerialization.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,54 +1,54 @@\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.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.PROTOBUF_JSON_SERIALIZATION_ID;\n-\n-/**\n- * This serialization is use for google protobuf generic reference.\n- * The entity be transported between client and server by json string.\n- */\n-public class GenericProtobufJsonSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return PROTOBUF_JSON_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"text/json\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream output) {\n-        return new GenericProtobufJsonObjectOutput(output);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream input) {\n-        return new GenericProtobufJsonObjectInput(input);\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.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.PROTOBUF_JSON_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * This serialization is use for google protobuf generic reference.\r\n+ * The entity be transported between client and server by json string.\r\n+ */\r\n+public class GenericProtobufJsonSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return PROTOBUF_JSON_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"text/json\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream output) {\r\n+        return new GenericProtobufJsonObjectOutput(output);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream input) {\r\n+        return new GenericProtobufJsonObjectInput(input);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectInput.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,146 +1,146 @@\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.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\n-\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.StringValue;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.lang.reflect.Type;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\n-\n-public class GenericProtobufObjectInput implements ObjectInput {\n-    private final InputStream is;\n-\n-    public GenericProtobufObjectInput(InputStream is) {\n-        this.is = is;\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        return read(BoolValue.class).getValue();\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        return (byte) read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        return (short) read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        return read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        return read(Int64Value.class).getValue();\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        return read(FloatValue.class).getValue();\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        return read(DoubleValue.class).getValue();\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        return read(StringValue.class).getValue();\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        return read(BytesValue.class).getValue().toByteArray();\n-    }\n-\n-    /**\n-     * Avoid using readObject, always try to pass the target class type for the data you want to read.\n-     *\n-     * @return\n-     */\n-    @Override\n-    public Object readObject() {\n-        throw new UnsupportedOperationException(\"Provide the protobuf message type you want to read.\");\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls) throws IOException {\n-        return read(cls);\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls, Type type) throws IOException {\n-        return readObject(cls);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private <T> T read(Class<T> cls) throws IOException {\n-        if (!ProtobufUtils.isSupported(cls)) {\n-            throw new IllegalArgumentException(\"This serialization only support google protobuf messages, but the actual input type is :\" + cls.getName());\n-        }\n-\n-        return ProtobufUtils.deserialize(is, cls);\n-    }\n-\n-    @Override\n-    public Throwable readThrowable() throws IOException {\n-        ThrowablePB.ThrowableProto throwableProto = ProtobufUtils.deserialize(is, ThrowablePB.ThrowableProto.class);\n-        return ProtobufUtils.convertToException(throwableProto);\n-    }\n-\n-    @Override\n-    public Object readEvent() throws IOException {\n-        String eventData = readUTF();\n-        if (eventData.equals(MOCK_HEARTBEAT_EVENT)) {\n-            eventData = HEARTBEAT_EVENT;\n-        }\n-        return eventData;\n-    }\n-\n-    @Override\n-    public Map<String, Object> readAttachments() throws IOException {\n-        Map<String, String> stringAttachments = ProtobufUtils.deserialize(is, MapValue.Map.class).getAttachmentsMap();\n-        Map<String, Object> attachments = new HashMap<>();\n-\n-        if (stringAttachments != null) {\n-            stringAttachments.forEach((k, v) -> attachments.put(k, v));\n-        }\n-        return attachments;\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.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\r\n+\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.StringValue;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.lang.reflect.Type;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\r\n+\r\n+public class GenericProtobufObjectInput implements ObjectInput {\r\n+    private final InputStream is;\r\n+\r\n+    public GenericProtobufObjectInput(InputStream is) {\r\n+        this.is = is;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        return read(BoolValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        return (byte) read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        return (short) read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        return read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        return read(Int64Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        return read(FloatValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        return read(DoubleValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        return read(StringValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        return read(BytesValue.class).getValue().toByteArray();\r\n+    }\r\n+\r\n+    /**\r\n+     * Avoid using readObject, always try to pass the target class type for the data you want to read.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public Object readObject() {\r\n+        throw new UnsupportedOperationException(\"Provide the protobuf message type you want to read.\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls) throws IOException {\r\n+        return read(cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls, Type type) throws IOException {\r\n+        return readObject(cls);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private <T> T read(Class<T> cls) throws IOException {\r\n+        if (!ProtobufUtils.isSupported(cls)) {\r\n+            throw new IllegalArgumentException(\"This serialization only support google protobuf messages, but the actual input type is :\" + cls.getName());\r\n+        }\r\n+\r\n+        return ProtobufUtils.deserialize(is, cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Throwable readThrowable() throws IOException {\r\n+        ThrowablePB.ThrowableProto throwableProto = ProtobufUtils.deserialize(is, ThrowablePB.ThrowableProto.class);\r\n+        return ProtobufUtils.convertToException(throwableProto);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readEvent() throws IOException {\r\n+        String eventData = readUTF();\r\n+        if (eventData.equals(MOCK_HEARTBEAT_EVENT)) {\r\n+            eventData = HEARTBEAT_EVENT;\r\n+        }\r\n+        return eventData;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, Object> readAttachments() throws IOException {\r\n+        Map<String, String> stringAttachments = ProtobufUtils.deserialize(is, MapValue.Map.class).getAttachmentsMap();\r\n+        Map<String, Object> attachments = new HashMap<>();\r\n+\r\n+        if (stringAttachments != null) {\r\n+            stringAttachments.forEach((k, v) -> attachments.put(k, v));\r\n+        }\r\n+        return attachments;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectOutput.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,157 +1,157 @@\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.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.ByteString;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.MessageLite;\n-import com.google.protobuf.StringValue;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\n-\n-/**\n- * GenericGoogleProtobuf object output implementation\n- */\n-public class GenericProtobufObjectOutput implements ObjectOutput {\n-\n-    private final OutputStream os;\n-\n-    public GenericProtobufObjectOutput(OutputStream os) {\n-        this.os = os;\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-\n-        writeObject(BoolValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue((v)).build());\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        writeObject(Int64Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        writeObject(FloatValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        writeObject(DoubleValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        writeObject(StringValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b) throws IOException {\n-        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b)).build());\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b, int off, int len) throws IOException {\n-        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b, off, len)).build());\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    @Override\n-    public void writeObject(Object obj) throws IOException {\n-        /**\n-         * Protobuf does not allow writing of non-protobuf generated messages, including null value.\n-         * Writing of null value from developers should be denied immediately by throwing exception.\n-         */\n-        if (obj == null) {\n-            throw new IllegalStateException(\"This serialization only supports google protobuf objects, \" +\n-                    \"please use com.google.protobuf.Empty instead if you want to transmit null values.\");\n-            // obj = ProtobufUtils.convertNullToEmpty();\n-        }\n-        if (!ProtobufUtils.isSupported(obj.getClass())) {\n-            throw new IllegalArgumentException(\"This serialization only supports google protobuf objects, current object class is: \" + obj.getClass().getName());\n-        }\n-\n-        ProtobufUtils.serialize(obj, os);\n-        os.flush();\n-    }\n-\n-    @Override\n-    public void writeEvent(Object data) throws IOException {\n-        if (data == HEARTBEAT_EVENT) {\n-            data = MOCK_HEARTBEAT_EVENT;\n-        }\n-        writeUTF((String) data);\n-    }\n-\n-    @Override\n-    public void writeThrowable(Object obj) throws IOException {\n-        if (obj instanceof Throwable && !(obj instanceof MessageLite)) {\n-            obj = ProtobufUtils.convertToThrowableProto((Throwable) obj);\n-        }\n-        ProtobufUtils.serialize(obj, os);\n-        os.flush();\n-    }\n-\n-    @Override\n-    public void writeAttachments(Map<String, Object> attachments) throws IOException {\n-        if (attachments == null) {\n-            return;\n-        }\n-\n-        Map<String, String> stringAttachments = new HashMap<>();\n-        attachments.forEach((k, v) -> stringAttachments.put(k, (String) v));\n-\n-        ProtobufUtils.serialize(MapValue.Map.newBuilder().putAllAttachments(stringAttachments).build(), os);\n-        os.flush();\n-    }\n-\n-    @Override\n-    public void flushBuffer() throws IOException {\n-        os.flush();\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.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.ByteString;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.MessageLite;\r\n+import com.google.protobuf.StringValue;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * GenericGoogleProtobuf object output implementation\r\n+ */\r\n+public class GenericProtobufObjectOutput implements ObjectOutput {\r\n+\r\n+    private final OutputStream os;\r\n+\r\n+    public GenericProtobufObjectOutput(OutputStream os) {\r\n+        this.os = os;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+\r\n+        writeObject(BoolValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue((v)).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        writeObject(Int64Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        writeObject(FloatValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        writeObject(DoubleValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        writeObject(StringValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b) throws IOException {\r\n+        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b)).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b, int off, int len) throws IOException {\r\n+        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b, off, len)).build());\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    @Override\r\n+    public void writeObject(Object obj) throws IOException {\r\n+        /**\r\n+         * Protobuf does not allow writing of non-protobuf generated messages, including null value.\r\n+         * Writing of null value from developers should be denied immediately by throwing exception.\r\n+         */\r\n+        if (obj == null) {\r\n+            throw new IllegalStateException(\"This serialization only supports google protobuf objects, \" +\r\n+                    \"please use com.google.protobuf.Empty instead if you want to transmit null values.\");\r\n+            // obj = ProtobufUtils.convertNullToEmpty();\r\n+        }\r\n+        if (!ProtobufUtils.isSupported(obj.getClass())) {\r\n+            throw new IllegalArgumentException(\"This serialization only supports google protobuf objects, current object class is: \" + obj.getClass().getName());\r\n+        }\r\n+\r\n+        ProtobufUtils.serialize(obj, os);\r\n+        os.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeEvent(Object data) throws IOException {\r\n+        if (data == HEARTBEAT_EVENT) {\r\n+            data = MOCK_HEARTBEAT_EVENT;\r\n+        }\r\n+        writeUTF((String) data);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeThrowable(Object obj) throws IOException {\r\n+        if (obj instanceof Throwable && !(obj instanceof MessageLite)) {\r\n+            obj = ProtobufUtils.convertToThrowableProto((Throwable) obj);\r\n+        }\r\n+        ProtobufUtils.serialize(obj, os);\r\n+        os.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeAttachments(Map<String, Object> attachments) throws IOException {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        Map<String, String> stringAttachments = new HashMap<>();\r\n+        attachments.forEach((k, v) -> stringAttachments.put(k, (String) v));\r\n+\r\n+        ProtobufUtils.serialize(MapValue.Map.newBuilder().putAllAttachments(stringAttachments).build(), os);\r\n+        os.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() throws IOException {\r\n+        os.flush();\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufSerialization.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,63 +1,63 @@\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.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.Constants;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-/**\n- * <p>\n- * Currently, the Dubbo protocol / framework data, such as attachments, event data, etc.,\n- * depends on business layer serialization protocol to do serialization before transmitted.\n- * That's a problem when using Protobuf as business serialization protocol, because Protobuf does not support raw java Object types,\n- * to solve it, we can use one of the following methods:\n- *\n- * <ul>\n- *     <li>1. Package these data with Protobuf so that they can be serialized.</li>\n- *     <li>2. Separate the serialization of Dubbo protocol/framework and the service args (easy to cross-platform, cross-language serialization) to avoid the binding of this part and serialization protocol.</li>\n- * </ul>\n- *\n- * </p>\n- */\n-public class GenericProtobufSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return Constants.PROTOBUF_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"text/json\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream output) {\n-        return new GenericProtobufObjectOutput(output);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream input) {\n-        return new GenericProtobufObjectInput(input);\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.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.Constants;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * <p>\r\n+ * Currently, the Dubbo protocol / framework data, such as attachments, event data, etc.,\r\n+ * depends on business layer serialization protocol to do serialization before transmitted.\r\n+ * That's a problem when using Protobuf as business serialization protocol, because Protobuf does not support raw java Object types,\r\n+ * to solve it, we can use one of the following methods:\r\n+ *\r\n+ * <ul>\r\n+ *     <li>1. Package these data with Protobuf so that they can be serialized.</li>\r\n+ *     <li>2. Separate the serialization of Dubbo protocol/framework and the service args (easy to cross-platform, cross-language serialization) to avoid the binding of this part and serialization protocol.</li>\r\n+ * </ul>\r\n+ *\r\n+ * </p>\r\n+ */\r\n+public class GenericProtobufSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return Constants.PROTOBUF_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"text/json\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream output) {\r\n+        return new GenericProtobufObjectOutput(output);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream input) {\r\n+        return new GenericProtobufObjectInput(input);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/ProtobufUtils.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/ProtobufUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,206 +1,206 @@\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.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto;\n-\n-import com.google.common.base.Strings;\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.CodedInputStream;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.Empty;\n-import com.google.protobuf.ExtensionRegistryLite;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.GeneratedMessageV3.Builder;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.InvalidProtocolBufferException;\n-import com.google.protobuf.MessageLite;\n-import com.google.protobuf.MessageOrBuilder;\n-import com.google.protobuf.Parser;\n-import com.google.protobuf.StringValue;\n-import com.google.protobuf.util.JsonFormat;\n-import com.google.protobuf.util.JsonFormat.Printer;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-import java.lang.reflect.Method;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-public class ProtobufUtils {\n-\n-    static boolean isSupported(Class<?> clazz) {\n-        if (clazz == null) {\n-            return false;\n-        }\n-\n-        if (MessageLite.class.isAssignableFrom(clazz)) {\n-            return true;\n-        }\n-        return false;\n-    }\n-\n-    /* Protobuf json */\n-\n-    static <T> T deserializeJson(String json, Class<T> requestClass) throws InvalidProtocolBufferException {\n-        Builder builder;\n-        try {\n-            builder = getMessageBuilder(requestClass);\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Get google protobuf message builder from \" + requestClass.getName() + \"failed\", e);\n-        }\n-        JsonFormat.parser().merge(json, builder);\n-        return (T) builder.build();\n-    }\n-\n-    static String serializeJson(Object value) throws InvalidProtocolBufferException {\n-        Printer printer = JsonFormat.printer().omittingInsignificantWhitespace();\n-        return printer.print((MessageOrBuilder) value);\n-    }\n-\n-    private static Builder getMessageBuilder(Class<?> requestType) throws Exception {\n-        Method method = requestType.getMethod(\"newBuilder\");\n-        return (Builder) method.invoke(null, null);\n-    }\n-\n-\n-    /* Protobuf */\n-\n-    private static ConcurrentMap<Class<? extends MessageLite>, MessageMarshaller> marshallers =\n-            new ConcurrentHashMap<>();\n-\n-    private static volatile ExtensionRegistryLite globalRegistry =\n-            ExtensionRegistryLite.getEmptyRegistry();\n-\n-    static {\n-        // Built-in types need to be registered in advance\n-        marshaller(MapValue.Map.getDefaultInstance());\n-        marshaller(Empty.getDefaultInstance());\n-        marshaller(ThrowableProto.getDefaultInstance());\n-        marshaller(BoolValue.getDefaultInstance());\n-        marshaller(Int32Value.getDefaultInstance());\n-        marshaller(Int64Value.getDefaultInstance());\n-        marshaller(FloatValue.getDefaultInstance());\n-        marshaller(DoubleValue.getDefaultInstance());\n-        marshaller(BytesValue.getDefaultInstance());\n-        marshaller(StringValue.getDefaultInstance());\n-    }\n-\n-    public static <T extends MessageLite> void marshaller(T defaultInstance) {\n-        marshallers.put(defaultInstance.getClass(), new MessageMarshaller<>(defaultInstance));\n-    }\n-\n-    static void serialize(Object value, OutputStream os) throws IOException {\n-        MessageLite messageLite = (MessageLite) value;\n-        messageLite.writeDelimitedTo(os);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    static <T> T deserialize(InputStream is, Class<T> requestClass) throws InvalidProtocolBufferException {\n-        MessageMarshaller<?> marshaller = marshallers.get(requestClass);\n-        if (marshaller == null) {\n-            throw new IllegalStateException(String.format(\"Protobuf classes should be registered in advance before \" +\n-                    \"do serialization, class name: %s\", requestClass.getName()));\n-        }\n-        return (T) marshaller.parse(is);\n-    }\n-\n-    public static Empty convertNullToEmpty() {\n-        return Empty.newBuilder().build();\n-    }\n-\n-    public static Object convertEmptyToNull(Empty empty) {\n-        return null;\n-    }\n-\n-    public static ThrowableProto convertToThrowableProto(Throwable throwable) {\n-        final ThrowableProto.Builder builder = ThrowableProto.newBuilder();\n-        builder.setOriginalClassName(throwable.getClass().getCanonicalName());\n-        builder.setOriginalMessage(Strings.nullToEmpty(throwable.getMessage()));\n-\n-        for (StackTraceElement e : throwable.getStackTrace()) {\n-            builder.addStackTrace(toStackTraceElement(e));\n-        }\n-\n-        if (throwable.getCause() != null) {\n-            builder.setCause(convertToThrowableProto(throwable.getCause()));\n-        }\n-        return builder.build();\n-    }\n-\n-    public static Throwable convertToException(ThrowableProto throwableProto) {\n-        return new ProtobufWrappedException(throwableProto);\n-    }\n-\n-    private static StackTraceElementProto toStackTraceElement(StackTraceElement element) {\n-        final StackTraceElementProto.Builder builder =\n-                StackTraceElementProto.newBuilder()\n-                        .setClassName(element.getClassName())\n-                        .setMethodName(element.getMethodName())\n-                        .setLineNumber(element.getLineNumber());\n-        if (element.getFileName() != null) {\n-            builder.setFileName(element.getFileName());\n-        }\n-        return builder.build();\n-    }\n-\n-    private static final class MessageMarshaller<T extends MessageLite> {\n-        private final Parser<T> parser;\n-        private final T defaultInstance;\n-\n-        @SuppressWarnings(\"unchecked\")\n-        MessageMarshaller(T defaultInstance) {\n-            this.defaultInstance = defaultInstance;\n-            parser = (Parser<T>) defaultInstance.getParserForType();\n-        }\n-\n-        @SuppressWarnings(\"unchecked\")\n-        public Class<T> getMessageClass() {\n-            // Precisely T since protobuf doesn't let messages extend other messages.\n-            return (Class<T>) defaultInstance.getClass();\n-        }\n-\n-        public T getMessagePrototype() {\n-            return defaultInstance;\n-        }\n-\n-        public T parse(InputStream stream) throws InvalidProtocolBufferException {\n-            return parser.parseDelimitedFrom(stream, globalRegistry);\n-//            CodedInputStream cis = CodedInputStream.newInstance(stream);\n-//            // Pre-create the CodedInputStream so that we can remove the size limit restriction\n-//            // when parsing.\n-//            cis.setSizeLimit(Integer.MAX_VALUE);\n-//            return parseFrom(cis);\n-        }\n-\n-        private T parseFrom(CodedInputStream stream) throws InvalidProtocolBufferException {\n-            T message = parser.parseFrom(stream, globalRegistry);\n-            try {\n-                stream.checkLastTagWas(0);\n-                return message;\n-            } catch (InvalidProtocolBufferException e) {\n-                e.setUnfinishedMessage(message);\n-                throw e;\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.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto;\r\n+\r\n+import com.google.common.base.Strings;\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.CodedInputStream;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.Empty;\r\n+import com.google.protobuf.ExtensionRegistryLite;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.GeneratedMessageV3.Builder;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.InvalidProtocolBufferException;\r\n+import com.google.protobuf.MessageLite;\r\n+import com.google.protobuf.MessageOrBuilder;\r\n+import com.google.protobuf.Parser;\r\n+import com.google.protobuf.StringValue;\r\n+import com.google.protobuf.util.JsonFormat;\r\n+import com.google.protobuf.util.JsonFormat.Printer;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+import java.lang.reflect.Method;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+public class ProtobufUtils {\r\n+\r\n+    static boolean isSupported(Class<?> clazz) {\r\n+        if (clazz == null) {\r\n+            return false;\r\n+        }\r\n+\r\n+        if (MessageLite.class.isAssignableFrom(clazz)) {\r\n+            return true;\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    /* Protobuf json */\r\n+\r\n+    static <T> T deserializeJson(String json, Class<T> requestClass) throws InvalidProtocolBufferException {\r\n+        Builder builder;\r\n+        try {\r\n+            builder = getMessageBuilder(requestClass);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(\"Get google protobuf message builder from \" + requestClass.getName() + \"failed\", e);\r\n+        }\r\n+        JsonFormat.parser().merge(json, builder);\r\n+        return (T) builder.build();\r\n+    }\r\n+\r\n+    static String serializeJson(Object value) throws InvalidProtocolBufferException {\r\n+        Printer printer = JsonFormat.printer().omittingInsignificantWhitespace();\r\n+        return printer.print((MessageOrBuilder) value);\r\n+    }\r\n+\r\n+    private static Builder getMessageBuilder(Class<?> requestType) throws Exception {\r\n+        Method method = requestType.getMethod(\"newBuilder\");\r\n+        return (Builder) method.invoke(null, null);\r\n+    }\r\n+\r\n+\r\n+    /* Protobuf */\r\n+\r\n+    private static ConcurrentMap<Class<? extends MessageLite>, MessageMarshaller> marshallers =\r\n+            new ConcurrentHashMap<>();\r\n+\r\n+    private static volatile ExtensionRegistryLite globalRegistry =\r\n+            ExtensionRegistryLite.getEmptyRegistry();\r\n+\r\n+    static {\r\n+        // Built-in types need to be registered in advance\r\n+        marshaller(MapValue.Map.getDefaultInstance());\r\n+        marshaller(Empty.getDefaultInstance());\r\n+        marshaller(ThrowableProto.getDefaultInstance());\r\n+        marshaller(BoolValue.getDefaultInstance());\r\n+        marshaller(Int32Value.getDefaultInstance());\r\n+        marshaller(Int64Value.getDefaultInstance());\r\n+        marshaller(FloatValue.getDefaultInstance());\r\n+        marshaller(DoubleValue.getDefaultInstance());\r\n+        marshaller(BytesValue.getDefaultInstance());\r\n+        marshaller(StringValue.getDefaultInstance());\r\n+    }\r\n+\r\n+    public static <T extends MessageLite> void marshaller(T defaultInstance) {\r\n+        marshallers.put(defaultInstance.getClass(), new MessageMarshaller<>(defaultInstance));\r\n+    }\r\n+\r\n+    static void serialize(Object value, OutputStream os) throws IOException {\r\n+        MessageLite messageLite = (MessageLite) value;\r\n+        messageLite.writeDelimitedTo(os);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    static <T> T deserialize(InputStream is, Class<T> requestClass) throws InvalidProtocolBufferException {\r\n+        MessageMarshaller<?> marshaller = marshallers.get(requestClass);\r\n+        if (marshaller == null) {\r\n+            throw new IllegalStateException(String.format(\"Protobuf classes should be registered in advance before \" +\r\n+                    \"do serialization, class name: %s\", requestClass.getName()));\r\n+        }\r\n+        return (T) marshaller.parse(is);\r\n+    }\r\n+\r\n+    public static Empty convertNullToEmpty() {\r\n+        return Empty.newBuilder().build();\r\n+    }\r\n+\r\n+    public static Object convertEmptyToNull(Empty empty) {\r\n+        return null;\r\n+    }\r\n+\r\n+    public static ThrowableProto convertToThrowableProto(Throwable throwable) {\r\n+        final ThrowableProto.Builder builder = ThrowableProto.newBuilder();\r\n+        builder.setOriginalClassName(throwable.getClass().getCanonicalName());\r\n+        builder.setOriginalMessage(Strings.nullToEmpty(throwable.getMessage()));\r\n+\r\n+        for (StackTraceElement e : throwable.getStackTrace()) {\r\n+            builder.addStackTrace(toStackTraceElement(e));\r\n+        }\r\n+\r\n+        if (throwable.getCause() != null) {\r\n+            builder.setCause(convertToThrowableProto(throwable.getCause()));\r\n+        }\r\n+        return builder.build();\r\n+    }\r\n+\r\n+    public static Throwable convertToException(ThrowableProto throwableProto) {\r\n+        return new ProtobufWrappedException(throwableProto);\r\n+    }\r\n+\r\n+    private static StackTraceElementProto toStackTraceElement(StackTraceElement element) {\r\n+        final StackTraceElementProto.Builder builder =\r\n+                StackTraceElementProto.newBuilder()\r\n+                        .setClassName(element.getClassName())\r\n+                        .setMethodName(element.getMethodName())\r\n+                        .setLineNumber(element.getLineNumber());\r\n+        if (element.getFileName() != null) {\r\n+            builder.setFileName(element.getFileName());\r\n+        }\r\n+        return builder.build();\r\n+    }\r\n+\r\n+    private static final class MessageMarshaller<T extends MessageLite> {\r\n+        private final Parser<T> parser;\r\n+        private final T defaultInstance;\r\n+\r\n+        @SuppressWarnings(\"unchecked\")\r\n+        MessageMarshaller(T defaultInstance) {\r\n+            this.defaultInstance = defaultInstance;\r\n+            parser = (Parser<T>) defaultInstance.getParserForType();\r\n+        }\r\n+\r\n+        @SuppressWarnings(\"unchecked\")\r\n+        public Class<T> getMessageClass() {\r\n+            // Precisely T since protobuf doesn't let messages extend other messages.\r\n+            return (Class<T>) defaultInstance.getClass();\r\n+        }\r\n+\r\n+        public T getMessagePrototype() {\r\n+            return defaultInstance;\r\n+        }\r\n+\r\n+        public T parse(InputStream stream) throws InvalidProtocolBufferException {\r\n+            return parser.parseDelimitedFrom(stream, globalRegistry);\r\n+//            CodedInputStream cis = CodedInputStream.newInstance(stream);\r\n+//            // Pre-create the CodedInputStream so that we can remove the size limit restriction\r\n+//            // when parsing.\r\n+//            cis.setSizeLimit(Integer.MAX_VALUE);\r\n+//            return parseFrom(cis);\r\n+        }\r\n+\r\n+        private T parseFrom(CodedInputStream stream) throws InvalidProtocolBufferException {\r\n+            T message = parser.parseFrom(stream, globalRegistry);\r\n+            try {\r\n+                stream.checkLastTagWas(0);\r\n+                return message;\r\n+            } catch (InvalidProtocolBufferException e) {\r\n+                e.setUnfinishedMessage(message);\r\n+                throw e;\r\n+            }\r\n+        }\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/ProtobufWrappedException.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/ProtobufWrappedException.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,68 +1,68 @@\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.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto;\n-\n-import com.google.common.base.Strings;\n-\n-/**\n- * For protobuf, all server side exceptions should be wrapped using this specific one.\n- */\n-public class ProtobufWrappedException extends RuntimeException {\n-\n-    private static final long serialVersionUID = -1792808536714102039L;\n-\n-    private String originalClassName;\n-    private String originalMessage;\n-\n-    public ProtobufWrappedException(ThrowableProto throwableProto) {\n-        super(throwableProto.getOriginalClassName() + \": \" + throwableProto.getOriginalMessage());\n-\n-        originalClassName = throwableProto.getOriginalClassName();\n-        originalMessage = throwableProto.getOriginalMessage();\n-\n-        if (throwableProto.getStackTraceCount() > 0) {\n-            setStackTrace(throwableProto.getStackTraceList().stream()\n-                    .map(ProtobufWrappedException::toStackTraceElement)\n-                    .toArray(StackTraceElement[]::new));\n-        }\n-\n-        if (throwableProto.hasCause()) {\n-            initCause(new ProtobufWrappedException(throwableProto.getCause()));\n-        }\n-    }\n-\n-    public String getOriginalClassName() {\n-        return originalClassName;\n-    }\n-\n-    public String getOriginalMessage() {\n-        return originalMessage;\n-    }\n-\n-    private static StackTraceElement toStackTraceElement(ThrowablePB.StackTraceElementProto proto) {\n-        return new StackTraceElement(\n-                proto.getClassName(),\n-                proto.getMethodName(),\n-                Strings.emptyToNull(proto.getFileName()),\n-                proto.getLineNumber());\n-    }\n-\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto;\r\n+\r\n+import com.google.common.base.Strings;\r\n+\r\n+/**\r\n+ * For protobuf, all server side exceptions should be wrapped using this specific one.\r\n+ */\r\n+public class ProtobufWrappedException extends RuntimeException {\r\n+\r\n+    private static final long serialVersionUID = -1792808536714102039L;\r\n+\r\n+    private String originalClassName;\r\n+    private String originalMessage;\r\n+\r\n+    public ProtobufWrappedException(ThrowableProto throwableProto) {\r\n+        super(throwableProto.getOriginalClassName() + \": \" + throwableProto.getOriginalMessage());\r\n+\r\n+        originalClassName = throwableProto.getOriginalClassName();\r\n+        originalMessage = throwableProto.getOriginalMessage();\r\n+\r\n+        if (throwableProto.getStackTraceCount() > 0) {\r\n+            setStackTrace(throwableProto.getStackTraceList().stream()\r\n+                    .map(ProtobufWrappedException::toStackTraceElement)\r\n+                    .toArray(StackTraceElement[]::new));\r\n+        }\r\n+\r\n+        if (throwableProto.hasCause()) {\r\n+            initCause(new ProtobufWrappedException(throwableProto.getCause()));\r\n+        }\r\n+    }\r\n+\r\n+    public String getOriginalClassName() {\r\n+        return originalClassName;\r\n+    }\r\n+\r\n+    public String getOriginalMessage() {\r\n+        return originalMessage;\r\n+    }\r\n+\r\n+    private static StackTraceElement toStackTraceElement(ThrowablePB.StackTraceElementProto proto) {\r\n+        return new StackTraceElement(\r\n+                proto.getClassName(),\r\n+                proto.getMethodName(),\r\n+                Strings.emptyToNull(proto.getFileName()),\r\n+                proto.getLineNumber());\r\n+    }\r\n+\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java", "unified_diff": "@@ -16,87 +16,88 @@\n   }\n   public interface StackTraceElementProtoOrBuilder extends\n       // @@protoc_insertion_point(interface_extends:org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto)\n       com.google.protobuf.MessageOrBuilder {\n \n     /**\n      * <pre>\n-     * The fully qualified name of the class containing the execution point\n-     * represented by the stack trace element.\n+     * The fully qualified name of the class containing the execution point\r\n+     * represented by the stack trace element.\r\n      * </pre>\n      *\n      * <code>string class_name = 1;</code>\n      */\n     java.lang.String getClassName();\n     /**\n      * <pre>\n-     * The fully qualified name of the class containing the execution point\n-     * represented by the stack trace element.\n+     * The fully qualified name of the class containing the execution point\r\n+     * represented by the stack trace element.\r\n      * </pre>\n      *\n      * <code>string class_name = 1;</code>\n      */\n     com.google.protobuf.ByteString\n         getClassNameBytes();\n \n     /**\n      * <pre>\n-     * The name of the method containing the execution point represented by the\n-     * stack trace element\n+     * The name of the method containing the execution point represented by the\r\n+     * stack trace element\r\n      * </pre>\n      *\n      * <code>string method_name = 2;</code>\n      */\n     java.lang.String getMethodName();\n     /**\n      * <pre>\n-     * The name of the method containing the execution point represented by the\n-     * stack trace element\n+     * The name of the method containing the execution point represented by the\r\n+     * stack trace element\r\n      * </pre>\n      *\n      * <code>string method_name = 2;</code>\n      */\n     com.google.protobuf.ByteString\n         getMethodNameBytes();\n \n     /**\n      * <pre>\n-     * The name of the file containing the execution point represented by the\n-     * stack trace element, or null if this information is unavailable.\n+     * The name of the file containing the execution point represented by the\r\n+     * stack trace element, or null if this information is unavailable.\r\n      * </pre>\n      *\n      * <code>string file_name = 3;</code>\n      */\n     java.lang.String getFileName();\n     /**\n      * <pre>\n-     * The name of the file containing the execution point represented by the\n-     * stack trace element, or null if this information is unavailable.\n+     * The name of the file containing the execution point represented by the\r\n+     * stack trace element, or null if this information is unavailable.\r\n      * </pre>\n      *\n      * <code>string file_name = 3;</code>\n      */\n     com.google.protobuf.ByteString\n         getFileNameBytes();\n \n     /**\n      * <pre>\n-     * The line number of the source line containing the execution point represented\n-     * by this stack trace element, or a negative number if this information is\n-     * unavailable.\n+     * The line number of the source line containing the execution point represented\r\n+     * by this stack trace element, or a negative number if this information is\r\n+     * unavailable.\r\n      * </pre>\n      *\n      * <code>int32 line_number = 4;</code>\n      */\n     int getLineNumber();\n   }\n   /**\n    * <pre>\n-   * An element in a stack trace, based on the Java type of the same name.\n-   * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\n+   * An element in a stack trace, based on the Java type of the same name.\r\n+   *\r\n+   * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\r\n    * </pre>\n    *\n    * Protobuf type {@code org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto}\n    */\n   public  static final class StackTraceElementProto extends\n       com.google.protobuf.GeneratedMessageV3 implements\n       // @@protoc_insertion_point(message_implements:org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto)\n@@ -191,16 +192,16 @@\n               org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.class, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder.class);\n     }\n \n     public static final int CLASS_NAME_FIELD_NUMBER = 1;\n     private volatile java.lang.Object className_;\n     /**\n      * <pre>\n-     * The fully qualified name of the class containing the execution point\n-     * represented by the stack trace element.\n+     * The fully qualified name of the class containing the execution point\r\n+     * represented by the stack trace element.\r\n      * </pre>\n      *\n      * <code>string class_name = 1;</code>\n      */\n     public java.lang.String getClassName() {\n       java.lang.Object ref = className_;\n       if (ref instanceof java.lang.String) {\n@@ -211,16 +212,16 @@\n         java.lang.String s = bs.toStringUtf8();\n         className_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The fully qualified name of the class containing the execution point\n-     * represented by the stack trace element.\n+     * The fully qualified name of the class containing the execution point\r\n+     * represented by the stack trace element.\r\n      * </pre>\n      *\n      * <code>string class_name = 1;</code>\n      */\n     public com.google.protobuf.ByteString\n         getClassNameBytes() {\n       java.lang.Object ref = className_;\n@@ -235,16 +236,16 @@\n       }\n     }\n \n     public static final int METHOD_NAME_FIELD_NUMBER = 2;\n     private volatile java.lang.Object methodName_;\n     /**\n      * <pre>\n-     * The name of the method containing the execution point represented by the\n-     * stack trace element\n+     * The name of the method containing the execution point represented by the\r\n+     * stack trace element\r\n      * </pre>\n      *\n      * <code>string method_name = 2;</code>\n      */\n     public java.lang.String getMethodName() {\n       java.lang.Object ref = methodName_;\n       if (ref instanceof java.lang.String) {\n@@ -255,16 +256,16 @@\n         java.lang.String s = bs.toStringUtf8();\n         methodName_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The name of the method containing the execution point represented by the\n-     * stack trace element\n+     * The name of the method containing the execution point represented by the\r\n+     * stack trace element\r\n      * </pre>\n      *\n      * <code>string method_name = 2;</code>\n      */\n     public com.google.protobuf.ByteString\n         getMethodNameBytes() {\n       java.lang.Object ref = methodName_;\n@@ -279,16 +280,16 @@\n       }\n     }\n \n     public static final int FILE_NAME_FIELD_NUMBER = 3;\n     private volatile java.lang.Object fileName_;\n     /**\n      * <pre>\n-     * The name of the file containing the execution point represented by the\n-     * stack trace element, or null if this information is unavailable.\n+     * The name of the file containing the execution point represented by the\r\n+     * stack trace element, or null if this information is unavailable.\r\n      * </pre>\n      *\n      * <code>string file_name = 3;</code>\n      */\n     public java.lang.String getFileName() {\n       java.lang.Object ref = fileName_;\n       if (ref instanceof java.lang.String) {\n@@ -299,16 +300,16 @@\n         java.lang.String s = bs.toStringUtf8();\n         fileName_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The name of the file containing the execution point represented by the\n-     * stack trace element, or null if this information is unavailable.\n+     * The name of the file containing the execution point represented by the\r\n+     * stack trace element, or null if this information is unavailable.\r\n      * </pre>\n      *\n      * <code>string file_name = 3;</code>\n      */\n     public com.google.protobuf.ByteString\n         getFileNameBytes() {\n       java.lang.Object ref = fileName_;\n@@ -323,17 +324,17 @@\n       }\n     }\n \n     public static final int LINE_NUMBER_FIELD_NUMBER = 4;\n     private int lineNumber_;\n     /**\n      * <pre>\n-     * The line number of the source line containing the execution point represented\n-     * by this stack trace element, or a negative number if this information is\n-     * unavailable.\n+     * The line number of the source line containing the execution point represented\r\n+     * by this stack trace element, or a negative number if this information is\r\n+     * unavailable.\r\n      * </pre>\n      *\n      * <code>int32 line_number = 4;</code>\n      */\n     public int getLineNumber() {\n       return lineNumber_;\n     }\n@@ -521,16 +522,17 @@\n     protected Builder newBuilderForType(\n         com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {\n       Builder builder = new Builder(parent);\n       return builder;\n     }\n     /**\n      * <pre>\n-     * An element in a stack trace, based on the Java type of the same name.\n-     * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\n+     * An element in a stack trace, based on the Java type of the same name.\r\n+     *\r\n+     * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\r\n      * </pre>\n      *\n      * Protobuf type {@code org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto}\n      */\n     public static final class Builder extends\n         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements\n         // @@protoc_insertion_point(builder_implements:org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto)\n@@ -695,16 +697,16 @@\n         }\n         return this;\n       }\n \n       private java.lang.Object className_ = \"\";\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public java.lang.String getClassName() {\n         java.lang.Object ref = className_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -715,16 +717,16 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public com.google.protobuf.ByteString\n           getClassNameBytes() {\n         java.lang.Object ref = className_;\n@@ -736,16 +738,16 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public Builder setClassName(\n           java.lang.String value) {\n         if (value == null) {\n@@ -754,30 +756,30 @@\n   \n         className_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public Builder clearClassName() {\n         \n         className_ = getDefaultInstance().getClassName();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public Builder setClassNameBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -789,16 +791,16 @@\n         onChanged();\n         return this;\n       }\n \n       private java.lang.Object methodName_ = \"\";\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public java.lang.String getMethodName() {\n         java.lang.Object ref = methodName_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -809,16 +811,16 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public com.google.protobuf.ByteString\n           getMethodNameBytes() {\n         java.lang.Object ref = methodName_;\n@@ -830,16 +832,16 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public Builder setMethodName(\n           java.lang.String value) {\n         if (value == null) {\n@@ -848,30 +850,30 @@\n   \n         methodName_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public Builder clearMethodName() {\n         \n         methodName_ = getDefaultInstance().getMethodName();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public Builder setMethodNameBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -883,16 +885,16 @@\n         onChanged();\n         return this;\n       }\n \n       private java.lang.Object fileName_ = \"\";\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public java.lang.String getFileName() {\n         java.lang.Object ref = fileName_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -903,16 +905,16 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public com.google.protobuf.ByteString\n           getFileNameBytes() {\n         java.lang.Object ref = fileName_;\n@@ -924,16 +926,16 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public Builder setFileName(\n           java.lang.String value) {\n         if (value == null) {\n@@ -942,30 +944,30 @@\n   \n         fileName_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public Builder clearFileName() {\n         \n         fileName_ = getDefaultInstance().getFileName();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public Builder setFileNameBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -977,44 +979,44 @@\n         onChanged();\n         return this;\n       }\n \n       private int lineNumber_ ;\n       /**\n        * <pre>\n-       * The line number of the source line containing the execution point represented\n-       * by this stack trace element, or a negative number if this information is\n-       * unavailable.\n+       * The line number of the source line containing the execution point represented\r\n+       * by this stack trace element, or a negative number if this information is\r\n+       * unavailable.\r\n        * </pre>\n        *\n        * <code>int32 line_number = 4;</code>\n        */\n       public int getLineNumber() {\n         return lineNumber_;\n       }\n       /**\n        * <pre>\n-       * The line number of the source line containing the execution point represented\n-       * by this stack trace element, or a negative number if this information is\n-       * unavailable.\n+       * The line number of the source line containing the execution point represented\r\n+       * by this stack trace element, or a negative number if this information is\r\n+       * unavailable.\r\n        * </pre>\n        *\n        * <code>int32 line_number = 4;</code>\n        */\n       public Builder setLineNumber(int value) {\n         \n         lineNumber_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The line number of the source line containing the execution point represented\n-       * by this stack trace element, or a negative number if this information is\n-       * unavailable.\n+       * The line number of the source line containing the execution point represented\r\n+       * by this stack trace element, or a negative number if this information is\r\n+       * unavailable.\r\n        * </pre>\n        *\n        * <code>int32 line_number = 4;</code>\n        */\n       public Builder clearLineNumber() {\n         \n         lineNumber_ = 0;\n@@ -1076,125 +1078,126 @@\n \n   public interface ThrowableProtoOrBuilder extends\n       // @@protoc_insertion_point(interface_extends:org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto)\n       com.google.protobuf.MessageOrBuilder {\n \n     /**\n      * <pre>\n-     * The name of the class of the exception that was actually thrown. Downstream readers\n-     * of this message may or may not have the actual class available to initialize, so\n-     * this is just used to prefix the message of a generic exception type.\n+     * The name of the class of the exception that was actually thrown. Downstream readers\r\n+     * of this message may or may not have the actual class available to initialize, so\r\n+     * this is just used to prefix the message of a generic exception type.\r\n      * </pre>\n      *\n      * <code>string original_class_name = 1;</code>\n      */\n     java.lang.String getOriginalClassName();\n     /**\n      * <pre>\n-     * The name of the class of the exception that was actually thrown. Downstream readers\n-     * of this message may or may not have the actual class available to initialize, so\n-     * this is just used to prefix the message of a generic exception type.\n+     * The name of the class of the exception that was actually thrown. Downstream readers\r\n+     * of this message may or may not have the actual class available to initialize, so\r\n+     * this is just used to prefix the message of a generic exception type.\r\n      * </pre>\n      *\n      * <code>string original_class_name = 1;</code>\n      */\n     com.google.protobuf.ByteString\n         getOriginalClassNameBytes();\n \n     /**\n      * <pre>\n-     * The message of this throwable. Not filled if there is no message.\n+     * The message of this throwable. Not filled if there is no message.\r\n      * </pre>\n      *\n      * <code>string original_message = 2;</code>\n      */\n     java.lang.String getOriginalMessage();\n     /**\n      * <pre>\n-     * The message of this throwable. Not filled if there is no message.\n+     * The message of this throwable. Not filled if there is no message.\r\n      * </pre>\n      *\n      * <code>string original_message = 2;</code>\n      */\n     com.google.protobuf.ByteString\n         getOriginalMessageBytes();\n \n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> \n         getStackTraceList();\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto getStackTrace(int index);\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     int getStackTraceCount();\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     java.util.List<? extends org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder> \n         getStackTraceOrBuilderList();\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder getStackTraceOrBuilder(\n         int index);\n \n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     boolean hasCause();\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto getCause();\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder getCauseOrBuilder();\n   }\n   /**\n    * <pre>\n-   * An exception that was thrown by some code, based on the Java type of the same name.\n-   * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\n+   * An exception that was thrown by some code, based on the Java type of the same name.\r\n+   *\r\n+   * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\r\n    * </pre>\n    *\n    * Protobuf type {@code org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto}\n    */\n   public  static final class ThrowableProto extends\n       com.google.protobuf.GeneratedMessageV3 implements\n       // @@protoc_insertion_point(message_implements:org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto)\n@@ -1304,17 +1307,17 @@\n     }\n \n     private int bitField0_;\n     public static final int ORIGINAL_CLASS_NAME_FIELD_NUMBER = 1;\n     private volatile java.lang.Object originalClassName_;\n     /**\n      * <pre>\n-     * The name of the class of the exception that was actually thrown. Downstream readers\n-     * of this message may or may not have the actual class available to initialize, so\n-     * this is just used to prefix the message of a generic exception type.\n+     * The name of the class of the exception that was actually thrown. Downstream readers\r\n+     * of this message may or may not have the actual class available to initialize, so\r\n+     * this is just used to prefix the message of a generic exception type.\r\n      * </pre>\n      *\n      * <code>string original_class_name = 1;</code>\n      */\n     public java.lang.String getOriginalClassName() {\n       java.lang.Object ref = originalClassName_;\n       if (ref instanceof java.lang.String) {\n@@ -1325,17 +1328,17 @@\n         java.lang.String s = bs.toStringUtf8();\n         originalClassName_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The name of the class of the exception that was actually thrown. Downstream readers\n-     * of this message may or may not have the actual class available to initialize, so\n-     * this is just used to prefix the message of a generic exception type.\n+     * The name of the class of the exception that was actually thrown. Downstream readers\r\n+     * of this message may or may not have the actual class available to initialize, so\r\n+     * this is just used to prefix the message of a generic exception type.\r\n      * </pre>\n      *\n      * <code>string original_class_name = 1;</code>\n      */\n     public com.google.protobuf.ByteString\n         getOriginalClassNameBytes() {\n       java.lang.Object ref = originalClassName_;\n@@ -1350,15 +1353,15 @@\n       }\n     }\n \n     public static final int ORIGINAL_MESSAGE_FIELD_NUMBER = 2;\n     private volatile java.lang.Object originalMessage_;\n     /**\n      * <pre>\n-     * The message of this throwable. Not filled if there is no message.\n+     * The message of this throwable. Not filled if there is no message.\r\n      * </pre>\n      *\n      * <code>string original_message = 2;</code>\n      */\n     public java.lang.String getOriginalMessage() {\n       java.lang.Object ref = originalMessage_;\n       if (ref instanceof java.lang.String) {\n@@ -1369,15 +1372,15 @@\n         java.lang.String s = bs.toStringUtf8();\n         originalMessage_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The message of this throwable. Not filled if there is no message.\n+     * The message of this throwable. Not filled if there is no message.\r\n      * </pre>\n      *\n      * <code>string original_message = 2;</code>\n      */\n     public com.google.protobuf.ByteString\n         getOriginalMessageBytes() {\n       java.lang.Object ref = originalMessage_;\n@@ -1392,90 +1395,90 @@\n       }\n     }\n \n     public static final int STACK_TRACE_FIELD_NUMBER = 3;\n     private java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> stackTrace_;\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> getStackTraceList() {\n       return stackTrace_;\n     }\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public java.util.List<? extends org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder> \n         getStackTraceOrBuilderList() {\n       return stackTrace_;\n     }\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public int getStackTraceCount() {\n       return stackTrace_.size();\n     }\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto getStackTrace(int index) {\n       return stackTrace_.get(index);\n     }\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder getStackTraceOrBuilder(\n         int index) {\n       return stackTrace_.get(index);\n     }\n \n     public static final int CAUSE_FIELD_NUMBER = 4;\n     private org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto cause_;\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     public boolean hasCause() {\n       return cause_ != null;\n     }\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto getCause() {\n       return cause_ == null ? org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.getDefaultInstance() : cause_;\n     }\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder getCauseOrBuilder() {\n       return getCause();\n     }\n@@ -1671,16 +1674,17 @@\n     protected Builder newBuilderForType(\n         com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {\n       Builder builder = new Builder(parent);\n       return builder;\n     }\n     /**\n      * <pre>\n-     * An exception that was thrown by some code, based on the Java type of the same name.\n-     * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\n+     * An exception that was thrown by some code, based on the Java type of the same name.\r\n+     *\r\n+     * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\r\n      * </pre>\n      *\n      * Protobuf type {@code org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto}\n      */\n     public static final class Builder extends\n         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements\n         // @@protoc_insertion_point(builder_implements:org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto)\n@@ -1892,17 +1896,17 @@\n         return this;\n       }\n       private int bitField0_;\n \n       private java.lang.Object originalClassName_ = \"\";\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public java.lang.String getOriginalClassName() {\n         java.lang.Object ref = originalClassName_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -1913,17 +1917,17 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public com.google.protobuf.ByteString\n           getOriginalClassNameBytes() {\n         java.lang.Object ref = originalClassName_;\n@@ -1935,17 +1939,17 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public Builder setOriginalClassName(\n           java.lang.String value) {\n         if (value == null) {\n@@ -1954,32 +1958,32 @@\n   \n         originalClassName_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public Builder clearOriginalClassName() {\n         \n         originalClassName_ = getDefaultInstance().getOriginalClassName();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public Builder setOriginalClassNameBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -1991,15 +1995,15 @@\n         onChanged();\n         return this;\n       }\n \n       private java.lang.Object originalMessage_ = \"\";\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public java.lang.String getOriginalMessage() {\n         java.lang.Object ref = originalMessage_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -2010,15 +2014,15 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public com.google.protobuf.ByteString\n           getOriginalMessageBytes() {\n         java.lang.Object ref = originalMessage_;\n@@ -2030,15 +2034,15 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public Builder setOriginalMessage(\n           java.lang.String value) {\n         if (value == null) {\n@@ -2047,28 +2051,28 @@\n   \n         originalMessage_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public Builder clearOriginalMessage() {\n         \n         originalMessage_ = getDefaultInstance().getOriginalMessage();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public Builder setOriginalMessageBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -2091,57 +2095,57 @@\n       }\n \n       private com.google.protobuf.RepeatedFieldBuilderV3<\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder> stackTraceBuilder_;\n \n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> getStackTraceList() {\n         if (stackTraceBuilder_ == null) {\n           return java.util.Collections.unmodifiableList(stackTrace_);\n         } else {\n           return stackTraceBuilder_.getMessageList();\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public int getStackTraceCount() {\n         if (stackTraceBuilder_ == null) {\n           return stackTrace_.size();\n         } else {\n           return stackTraceBuilder_.getCount();\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto getStackTrace(int index) {\n         if (stackTraceBuilder_ == null) {\n           return stackTrace_.get(index);\n         } else {\n           return stackTraceBuilder_.getMessage(index);\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder setStackTrace(\n           int index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto value) {\n         if (stackTraceBuilder_ == null) {\n@@ -2154,15 +2158,15 @@\n         } else {\n           stackTraceBuilder_.setMessage(index, value);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder setStackTrace(\n           int index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder builderForValue) {\n         if (stackTraceBuilder_ == null) {\n@@ -2172,15 +2176,15 @@\n         } else {\n           stackTraceBuilder_.setMessage(index, builderForValue.build());\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addStackTrace(org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto value) {\n         if (stackTraceBuilder_ == null) {\n           if (value == null) {\n@@ -2192,15 +2196,15 @@\n         } else {\n           stackTraceBuilder_.addMessage(value);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addStackTrace(\n           int index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto value) {\n         if (stackTraceBuilder_ == null) {\n@@ -2213,15 +2217,15 @@\n         } else {\n           stackTraceBuilder_.addMessage(index, value);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addStackTrace(\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder builderForValue) {\n         if (stackTraceBuilder_ == null) {\n@@ -2231,15 +2235,15 @@\n         } else {\n           stackTraceBuilder_.addMessage(builderForValue.build());\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addStackTrace(\n           int index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder builderForValue) {\n         if (stackTraceBuilder_ == null) {\n@@ -2249,15 +2253,15 @@\n         } else {\n           stackTraceBuilder_.addMessage(index, builderForValue.build());\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addAllStackTrace(\n           java.lang.Iterable<? extends org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> values) {\n         if (stackTraceBuilder_ == null) {\n@@ -2268,15 +2272,15 @@\n         } else {\n           stackTraceBuilder_.addAllMessages(values);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder clearStackTrace() {\n         if (stackTraceBuilder_ == null) {\n           stackTrace_ = java.util.Collections.emptyList();\n@@ -2285,15 +2289,15 @@\n         } else {\n           stackTraceBuilder_.clear();\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder removeStackTrace(int index) {\n         if (stackTraceBuilder_ == null) {\n           ensureStackTraceIsMutable();\n@@ -2302,78 +2306,78 @@\n         } else {\n           stackTraceBuilder_.remove(index);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder getStackTraceBuilder(\n           int index) {\n         return getStackTraceFieldBuilder().getBuilder(index);\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder getStackTraceOrBuilder(\n           int index) {\n         if (stackTraceBuilder_ == null) {\n           return stackTrace_.get(index);  } else {\n           return stackTraceBuilder_.getMessageOrBuilder(index);\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public java.util.List<? extends org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder> \n            getStackTraceOrBuilderList() {\n         if (stackTraceBuilder_ != null) {\n           return stackTraceBuilder_.getMessageOrBuilderList();\n         } else {\n           return java.util.Collections.unmodifiableList(stackTrace_);\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder addStackTraceBuilder() {\n         return getStackTraceFieldBuilder().addBuilder(\n             org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.getDefaultInstance());\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder addStackTraceBuilder(\n           int index) {\n         return getStackTraceFieldBuilder().addBuilder(\n             index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.getDefaultInstance());\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder> \n            getStackTraceBuilderList() {\n         return getStackTraceFieldBuilder().getBuilderList();\n@@ -2394,39 +2398,39 @@\n       }\n \n       private org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto cause_;\n       private com.google.protobuf.SingleFieldBuilderV3<\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.Builder, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder> causeBuilder_;\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public boolean hasCause() {\n         return causeBuilder_ != null || cause_ != null;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto getCause() {\n         if (causeBuilder_ == null) {\n           return cause_ == null ? org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.getDefaultInstance() : cause_;\n         } else {\n           return causeBuilder_.getMessage();\n         }\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public Builder setCause(org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto value) {\n         if (causeBuilder_ == null) {\n           if (value == null) {\n@@ -2438,15 +2442,15 @@\n           causeBuilder_.setMessage(value);\n         }\n \n         return this;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public Builder setCause(\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.Builder builderForValue) {\n         if (causeBuilder_ == null) {\n@@ -2456,15 +2460,15 @@\n           causeBuilder_.setMessage(builderForValue.build());\n         }\n \n         return this;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public Builder mergeCause(org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto value) {\n         if (causeBuilder_ == null) {\n           if (cause_ != null) {\n@@ -2478,15 +2482,15 @@\n           causeBuilder_.mergeFrom(value);\n         }\n \n         return this;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public Builder clearCause() {\n         if (causeBuilder_ == null) {\n           cause_ = null;\n@@ -2496,42 +2500,42 @@\n           causeBuilder_ = null;\n         }\n \n         return this;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.Builder getCauseBuilder() {\n         \n         onChanged();\n         return getCauseFieldBuilder().getBuilder();\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder getCauseOrBuilder() {\n         if (causeBuilder_ != null) {\n           return causeBuilder_.getMessageOrBuilder();\n         } else {\n           return cause_ == null ?\n               org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.getDefaultInstance() : cause_;\n         }\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       private com.google.protobuf.SingleFieldBuilderV3<\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.Builder, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder> \n           getCauseFieldBuilder() {\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization", "source2": "META-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,2 +1,2 @@\n-protobuf-json=org.apache.dubbo.common.serialize.protobuf.support.GenericProtobufJsonSerialization\n+protobuf-json=org.apache.dubbo.common.serialize.protobuf.support.GenericProtobufJsonSerialization\r\n protobuf=org.apache.dubbo.common.serialize.protobuf.support.GenericProtobufSerialization\n"}, {"source1": "MapValue.proto", "source2": "MapValue.proto", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,27 +1,27 @@\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-// Messages used for transporting debug information between server and client.\n-\n-syntax = \"proto3\";\n-\n-package org.apache.dubbo.common.serialize.protobuf.support.wrapper;\n-\n-option java_package = \"org.apache.dubbo.common.serialize.protobuf.support.wrapper\";\n-option java_multiple_files = false;\n-\n-message Map{\n-    map<string,string> attachments = 1;\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+// Messages used for transporting debug information between server and client.\r\n+\r\n+syntax = \"proto3\";\r\n+\r\n+package org.apache.dubbo.common.serialize.protobuf.support.wrapper;\r\n+\r\n+option java_package = \"org.apache.dubbo.common.serialize.protobuf.support.wrapper\";\r\n+option java_multiple_files = false;\r\n+\r\n+message Map{\r\n+    map<string,string> attachments = 1;\r\n }\n"}, {"source1": "ThrowablePB.proto", "source2": "ThrowablePB.proto", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\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-// Messages used for transporting debug information between server and client.\n-\n-syntax = \"proto3\";\n-\n-package org.apache.dubbo.common.serialize.protobuf.support.wrapper;\n-\n-option java_package = \"org.apache.dubbo.common.serialize.protobuf.support.wrapper\";\n-option java_multiple_files = false;\n-\n-// An element in a stack trace, based on the Java type of the same name.\n-//\n-// See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\n-message StackTraceElementProto {\n-    // The fully qualified name of the class containing the execution point\n-    // represented by the stack trace element.\n-    string class_name = 1;\n-\n-    // The name of the method containing the execution point represented by the\n-    // stack trace element\n-    string method_name = 2;\n-\n-    // The name of the file containing the execution point represented by the\n-    // stack trace element, or null if this information is unavailable.\n-    string file_name = 3;\n-\n-    // The line number of the source line containing the execution point represented\n-    // by this stack trace element, or a negative number if this information is\n-    // unavailable.\n-    int32 line_number = 4;\n-}\n-\n-// An exception that was thrown by some code, based on the Java type of the same name.\n-//\n-// See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\n-message ThrowableProto {\n-    // The name of the class of the exception that was actually thrown. Downstream readers\n-    // of this message may or may not have the actual class available to initialize, so\n-    // this is just used to prefix the message of a generic exception type.\n-    string original_class_name = 1;\n-\n-    // The message of this throwable. Not filled if there is no message.\n-    string original_message = 2;\n-\n-    // The stack trace of this Throwable.\n-    repeated StackTraceElementProto stack_trace = 3;\n-\n-    // The cause of this Throwable. Not filled if there is no cause.\n-    ThrowableProto cause = 4;\n-}\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+// Messages used for transporting debug information between server and client.\r\n+\r\n+syntax = \"proto3\";\r\n+\r\n+package org.apache.dubbo.common.serialize.protobuf.support.wrapper;\r\n+\r\n+option java_package = \"org.apache.dubbo.common.serialize.protobuf.support.wrapper\";\r\n+option java_multiple_files = false;\r\n+\r\n+// An element in a stack trace, based on the Java type of the same name.\r\n+//\r\n+// See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\r\n+message StackTraceElementProto {\r\n+    // The fully qualified name of the class containing the execution point\r\n+    // represented by the stack trace element.\r\n+    string class_name = 1;\r\n+\r\n+    // The name of the method containing the execution point represented by the\r\n+    // stack trace element\r\n+    string method_name = 2;\r\n+\r\n+    // The name of the file containing the execution point represented by the\r\n+    // stack trace element, or null if this information is unavailable.\r\n+    string file_name = 3;\r\n+\r\n+    // The line number of the source line containing the execution point represented\r\n+    // by this stack trace element, or a negative number if this information is\r\n+    // unavailable.\r\n+    int32 line_number = 4;\r\n+}\r\n+\r\n+// An exception that was thrown by some code, based on the Java type of the same name.\r\n+//\r\n+// See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\r\n+message ThrowableProto {\r\n+    // The name of the class of the exception that was actually thrown. Downstream readers\r\n+    // of this message may or may not have the actual class available to initialize, so\r\n+    // this is just used to prefix the message of a generic exception type.\r\n+    string original_class_name = 1;\r\n+\r\n+    // The message of this throwable. Not filled if there is no message.\r\n+    string original_message = 2;\r\n+\r\n+    // The stack trace of this Throwable.\r\n+    repeated StackTraceElementProto stack_trace = 3;\r\n+\r\n+    // The cause of this Throwable. Not filled if there is no cause.\r\n+    ThrowableProto cause = 4;\r\n+}\r\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/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,241 +1,235 @@\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 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: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d70 726f 746f  ialization-proto\n-00000510: 6275 663c 2f61 7274 6966 6163 7449 643e  buf</artifactId>\n-00000520: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000530: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000540: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000550: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000560: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000570: 696f 6e3e 5468 6520 7072 6f74 6f62 7566  ion>The protobuf\n-00000580: 2073 6572 6961 6c69 7a61 7469 6f6e 206d   serialization m\n-00000590: 6f64 756c 6520 6f66 2064 7562 626f 2070  odule of dubbo p\n-000005a0: 726f 6a65 6374 3c2f 6465 7363 7269 7074  roject</descript\n-000005b0: 696f 6e3e 0d0a 2020 3c6c 6963 656e 7365  ion>..  <license\n-000005c0: 733e 0d0a 2020 2020 3c6c 6963 656e 7365  s>..    <license\n-000005d0: 3e0d 0a20 2020 2020 203c 6e61 6d65 3e41  >..      <name>A\n-000005e0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n-000005f0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n-00000600: 3e0d 0a20 2020 2020 203c 7572 6c3e 6874  >..      <url>ht\n-00000610: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n-00000620: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n-00000630: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0d0a  ENSE-2.0</url>..\n-00000640: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n-00000650: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n-00000660: 6275 7469 6f6e 3e0d 0a20 2020 203c 2f6c  bution>..    </l\n-00000670: 6963 656e 7365 3e0d 0a20 203c 2f6c 6963  icense>..  </lic\n-00000680: 656e 7365 733e 0d0a 2020 3c70 726f 7065  enses>..  <prope\n-00000690: 7274 6965 733e 0d0a 2020 2020 3c73 6b69  rties>..    <ski\n-000006a0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e66  p_maven_deploy>f\n-000006b0: 616c 7365 3c2f 736b 6970 5f6d 6176 656e  alse</skip_maven\n-000006c0: 5f64 6570 6c6f 793e 0d0a 2020 2020 3c64  _deploy>..    <d\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d70 726f 746f 6275 663c 2f61 7274 6966  -protobuf</artif\n+00000500: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000510: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000520: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000530: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000540: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000550: 6970 7469 6f6e 3e54 6865 2070 726f 746f  iption>The proto\n+00000560: 6275 6620 7365 7269 616c 697a 6174 696f  buf serializatio\n+00000570: 6e20 6d6f 6475 6c65 206f 6620 6475 6262  n module of dubb\n+00000580: 6f20 7072 6f6a 6563 743c 2f64 6573 6372  o project</descr\n+00000590: 6970 7469 6f6e 3e0a 2020 3c6c 6963 656e  iption>.  <licen\n+000005a0: 7365 733e 0a20 2020 203c 6c69 6365 6e73  ses>.    <licens\n+000005b0: 653e 0a20 2020 2020 203c 6e61 6d65 3e41  e>.      <name>A\n+000005c0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n+000005d0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n+000005e0: 3e0a 2020 2020 2020 3c75 726c 3e68 7474  >.      <url>htt\n+000005f0: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n+00000600: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n+00000610: 4e53 452d 322e 303c 2f75 726c 3e0a 2020  NSE-2.0</url>.  \n+00000620: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n+00000630: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n+00000640: 7469 6f6e 3e0a 2020 2020 3c2f 6c69 6365  tion>.    </lice\n+00000650: 6e73 653e 0a20 203c 2f6c 6963 656e 7365  nse>.  </license\n+00000660: 733e 0a20 203c 7072 6f70 6572 7469 6573  s>.  <properties\n+00000670: 3e0a 2020 2020 3c73 6b69 705f 6d61 7665  >.    <skip_mave\n+00000680: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n+00000690: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n+000006a0: 793e 0a20 2020 203c 6475 6262 6f2e 636f  y>.    <dubbo.co\n+000006b0: 6d70 696c 6572 2e76 6572 7369 6f6e 3e30  mpiler.version>0\n+000006c0: 2e30 2e31 2d53 4e41 5053 484f 543c 2f64  .0.1-SNAPSHOT</d\n 000006d0: 7562 626f 2e63 6f6d 7069 6c65 722e 7665  ubbo.compiler.ve\n-000006e0: 7273 696f 6e3e 302e 302e 312d 534e 4150  rsion>0.0.1-SNAP\n-000006f0: 5348 4f54 3c2f 6475 6262 6f2e 636f 6d70  SHOT</dubbo.comp\n-00000700: 696c 6572 2e76 6572 7369 6f6e 3e0d 0a20  iler.version>.. \n-00000710: 203c 2f70 726f 7065 7274 6965 733e 0d0a   </properties>..\n-00000720: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n-00000730: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-00000740: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000750: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000760: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000770: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-00000780: 3e64 7562 626f 2d73 6572 6961 6c69 7a61  >dubbo-serializa\n-00000790: 7469 6f6e 2d61 7069 3c2f 6172 7469 6661  tion-api</artifa\n-000007a0: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-000007b0: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-000007c0: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-000007d0: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-000007e0: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-000007f0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000800: 2020 2020 2020 3c67 726f 7570 4964 3e63        <groupId>c\n-00000810: 6f6d 2e67 6f6f 676c 652e 7072 6f74 6f62  om.google.protob\n-00000820: 7566 3c2f 6772 6f75 7049 643e 0d0a 2020  uf</groupId>..  \n-00000830: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000840: 7072 6f74 6f62 7566 2d6a 6176 613c 2f61  protobuf-java</a\n-00000850: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000860: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000870: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000880: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000890: 636f 6d2e 676f 6f67 6c65 2e70 726f 746f  com.google.proto\n-000008a0: 6275 663c 2f67 726f 7570 4964 3e0d 0a20  buf</groupId>.. \n-000008b0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-000008c0: 3e70 726f 746f 6275 662d 6a61 7661 2d75  >protobuf-java-u\n-000008d0: 7469 6c3c 2f61 7274 6966 6163 7449 643e  til</artifactId>\n-000008e0: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-000008f0: 6379 3e0d 0a20 203c 2f64 6570 656e 6465  cy>..  </depende\n-00000900: 6e63 6965 733e 0d0a 2020 3c62 7569 6c64  ncies>..  <build\n-00000910: 3e0d 0a20 2020 203c 6578 7465 6e73 696f  >..    <extensio\n-00000920: 6e73 3e0d 0a20 2020 2020 203c 6578 7465  ns>..      <exte\n-00000930: 6e73 696f 6e3e 0d0a 2020 2020 2020 2020  nsion>..        \n-00000940: 3c67 726f 7570 4964 3e6b 722e 6d6f 7464  <groupId>kr.motd\n-00000950: 2e6d 6176 656e 3c2f 6772 6f75 7049 643e  .maven</groupId>\n-00000960: 0d0a 2020 2020 2020 2020 3c61 7274 6966  ..        <artif\n-00000970: 6163 7449 643e 6f73 2d6d 6176 656e 2d70  actId>os-maven-p\n-00000980: 6c75 6769 6e3c 2f61 7274 6966 6163 7449  lugin</artifactI\n-00000990: 643e 0d0a 2020 2020 2020 2020 3c76 6572  d>..        <ver\n-000009a0: 7369 6f6e 3e31 2e36 2e31 3c2f 7665 7273  sion>1.6.1</vers\n-000009b0: 696f 6e3e 0d0a 2020 2020 2020 3c2f 6578  ion>..      </ex\n-000009c0: 7465 6e73 696f 6e3e 0d0a 2020 2020 3c2f  tension>..    </\n-000009d0: 6578 7465 6e73 696f 6e73 3e0d 0a20 2020  extensions>..   \n-000009e0: 203c 706c 7567 696e 733e 0d0a 2020 2020   <plugins>..    \n-000009f0: 2020 3c70 6c75 6769 6e3e 0d0a 2020 2020    <plugin>..    \n-00000a00: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000a10: 2e78 6f6c 7374 6963 652e 6d61 7665 6e2e  .xolstice.maven.\n-00000a20: 706c 7567 696e 733c 2f67 726f 7570 4964  plugins</groupId\n-00000a30: 3e0d 0a20 2020 2020 2020 203c 6172 7469  >..        <arti\n-00000a40: 6661 6374 4964 3e70 726f 746f 6275 662d  factId>protobuf-\n-00000a50: 6d61 7665 6e2d 706c 7567 696e 3c2f 6172  maven-plugin</ar\n-00000a60: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-00000a70: 2020 203c 7665 7273 696f 6e3e 302e 352e     <version>0.5.\n-00000a80: 313c 2f76 6572 7369 6f6e 3e0d 0a20 2020  1</version>..   \n-00000a90: 2020 2020 203c 6578 7465 6e73 696f 6e73       <extensions\n-00000aa0: 3e74 7275 653c 2f65 7874 656e 7369 6f6e  >true</extension\n-00000ab0: 733e 0d0a 2020 2020 2020 2020 3c65 7865  s>..        <exe\n-00000ac0: 6375 7469 6f6e 733e 0d0a 2020 2020 2020  cutions>..      \n-00000ad0: 2020 2020 3c65 7865 6375 7469 6f6e 3e0d      <execution>.\n-00000ae0: 0a20 2020 2020 2020 2020 2020 203c 676f  .            <go\n-00000af0: 616c 733e 0d0a 2020 2020 2020 2020 2020  als>..          \n-00000b00: 2020 2020 3c67 6f61 6c3e 636f 6d70 696c      <goal>compil\n-00000b10: 653c 2f67 6f61 6c3e 0d0a 2020 2020 2020  e</goal>..      \n-00000b20: 2020 2020 2020 2020 3c67 6f61 6c3e 7465          <goal>te\n-00000b30: 7374 2d63 6f6d 7069 6c65 3c2f 676f 616c  st-compile</goal\n-00000b40: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n-00000b50: 2f67 6f61 6c73 3e0d 0a20 2020 2020 2020  /goals>..       \n-00000b60: 2020 203c 2f65 7865 6375 7469 6f6e 3e0d     </execution>.\n-00000b70: 0a20 2020 2020 2020 203c 2f65 7865 6375  .        </execu\n-00000b80: 7469 6f6e 733e 0d0a 2020 2020 2020 2020  tions>..        \n-00000b90: 3c63 6f6e 6669 6775 7261 7469 6f6e 3e0d  <configuration>.\n-00000ba0: 0a20 2020 2020 2020 2020 203c 7072 6f74  .          <prot\n-00000bb0: 6f63 4172 7469 6661 6374 3e63 6f6d 2e67  ocArtifact>com.g\n-00000bc0: 6f6f 676c 652e 7072 6f74 6f62 7566 3a70  oogle.protobuf:p\n-00000bd0: 726f 746f 633a 332e 372e 313a 6578 653a  rotoc:3.7.1:exe:\n-00000be0: 247b 6f73 2e64 6574 6563 7465 642e 636c  ${os.detected.cl\n-00000bf0: 6173 7369 6669 6572 7d3c 2f70 726f 746f  assifier}</proto\n-00000c00: 6341 7274 6966 6163 743e 0d0a 2020 2020  cArtifact>..    \n-00000c10: 2020 2020 2020 3c6f 7574 7075 7444 6972        <outputDir\n-00000c20: 6563 746f 7279 3e62 7569 6c64 2f67 656e  ectory>build/gen\n-00000c30: 6572 6174 6564 2f73 6f75 7263 652f 7072  erated/source/pr\n-00000c40: 6f74 6f2f 6d61 696e 2f6a 6176 613c 2f6f  oto/main/java</o\n-00000c50: 7574 7075 7444 6972 6563 746f 7279 3e0d  utputDirectory>.\n-00000c60: 0a20 2020 2020 2020 2020 203c 636c 6561  .          <clea\n-00000c70: 724f 7574 7075 7444 6972 6563 746f 7279  rOutputDirectory\n-00000c80: 3e66 616c 7365 3c2f 636c 6561 724f 7574  >false</clearOut\n-00000c90: 7075 7444 6972 6563 746f 7279 3e0d 0a20  putDirectory>.. \n-00000ca0: 2020 2020 2020 203c 2f63 6f6e 6669 6775         </configu\n-00000cb0: 7261 7469 6f6e 3e0d 0a20 2020 2020 203c  ration>..      <\n-00000cc0: 2f70 6c75 6769 6e3e 0d0a 2020 2020 2020  /plugin>..      \n-00000cd0: 3c70 6c75 6769 6e3e 0d0a 2020 2020 2020  <plugin>..      \n-00000ce0: 2020 3c67 726f 7570 4964 3e6f 7267 2e63    <groupId>org.c\n-00000cf0: 6f64 6568 6175 732e 6d6f 6a6f 3c2f 6772  odehaus.mojo</gr\n-00000d00: 6f75 7049 643e 0d0a 2020 2020 2020 2020  oupId>..        \n-00000d10: 3c61 7274 6966 6163 7449 643e 6275 696c  <artifactId>buil\n-00000d20: 642d 6865 6c70 6572 2d6d 6176 656e 2d70  d-helper-maven-p\n-00000d30: 6c75 6769 6e3c 2f61 7274 6966 6163 7449  lugin</artifactI\n-00000d40: 643e 0d0a 2020 2020 2020 2020 3c65 7865  d>..        <exe\n-00000d50: 6375 7469 6f6e 733e 0d0a 2020 2020 2020  cutions>..      \n-00000d60: 2020 2020 3c65 7865 6375 7469 6f6e 3e0d      <execution>.\n-00000d70: 0a20 2020 2020 2020 2020 2020 203c 7068  .            <ph\n-00000d80: 6173 653e 6765 6e65 7261 7465 2d73 6f75  ase>generate-sou\n-00000d90: 7263 6573 3c2f 7068 6173 653e 0d0a 2020  rces</phase>..  \n-00000da0: 2020 2020 2020 2020 2020 3c67 6f61 6c73            <goals\n-00000db0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n-00000dc0: 203c 676f 616c 3e61 6464 2d73 6f75 7263   <goal>add-sourc\n-00000dd0: 653c 2f67 6f61 6c3e 0d0a 2020 2020 2020  e</goal>..      \n-00000de0: 2020 2020 2020 3c2f 676f 616c 733e 0d0a        </goals>..\n-00000df0: 2020 2020 2020 2020 2020 2020 3c63 6f6e              <con\n-00000e00: 6669 6775 7261 7469 6f6e 3e0d 0a20 2020  figuration>..   \n-00000e10: 2020 2020 2020 2020 2020 203c 736f 7572             <sour\n-00000e20: 6365 733e 0d0a 2020 2020 2020 2020 2020  ces>..          \n-00000e30: 2020 2020 2020 3c73 6f75 7263 653e 6275        <source>bu\n-00000e40: 696c 642f 6765 6e65 7261 7465 642f 736f  ild/generated/so\n-00000e50: 7572 6365 2f70 726f 746f 2f6d 6169 6e2f  urce/proto/main/\n-00000e60: 6a61 7661 3c2f 736f 7572 6365 3e0d 0a20  java</source>.. \n-00000e70: 2020 2020 2020 2020 2020 2020 203c 2f73               </s\n-00000e80: 6f75 7263 6573 3e0d 0a20 2020 2020 2020  ources>..       \n-00000e90: 2020 2020 203c 2f63 6f6e 6669 6775 7261       </configura\n-00000ea0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n-00000eb0: 203c 2f65 7865 6375 7469 6f6e 3e0d 0a20   </execution>.. \n-00000ec0: 2020 2020 2020 203c 2f65 7865 6375 7469         </executi\n-00000ed0: 6f6e 733e 0d0a 2020 2020 2020 3c2f 706c  ons>..      </pl\n-00000ee0: 7567 696e 3e0d 0a20 2020 203c 2f70 6c75  ugin>..    </plu\n-00000ef0: 6769 6e73 3e0d 0a20 203c 2f62 7569 6c64  gins>..  </build\n-00000f00: 3e0d 0a3c 2f70 726f 6a65 6374 3e0d 0a    >..</project>..\n+000006e0: 7273 696f 6e3e 0a20 203c 2f70 726f 7065  rsion>.  </prope\n+000006f0: 7274 6965 733e 0a20 203c 6465 7065 6e64  rties>.  <depend\n+00000700: 656e 6369 6573 3e0a 2020 2020 3c64 6570  encies>.    <dep\n+00000710: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000720: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+00000730: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+00000740: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000750: 6374 4964 3e64 7562 626f 2d73 6572 6961  ctId>dubbo-seria\n+00000760: 6c69 7a61 7469 6f6e 2d61 7069 3c2f 6172  lization-api</ar\n+00000770: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000780: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n+00000790: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n+000007a0: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+000007b0: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+000007c0: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+000007d0: 2020 2020 2020 3c67 726f 7570 4964 3e63        <groupId>c\n+000007e0: 6f6d 2e67 6f6f 676c 652e 7072 6f74 6f62  om.google.protob\n+000007f0: 7566 3c2f 6772 6f75 7049 643e 0a20 2020  uf</groupId>.   \n+00000800: 2020 203c 6172 7469 6661 6374 4964 3e70     <artifactId>p\n+00000810: 726f 746f 6275 662d 6a61 7661 3c2f 6172  rotobuf-java</ar\n+00000820: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+00000830: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000840: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000850: 2020 203c 6772 6f75 7049 643e 636f 6d2e     <groupId>com.\n+00000860: 676f 6f67 6c65 2e70 726f 746f 6275 663c  google.protobuf<\n+00000870: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000880: 3c61 7274 6966 6163 7449 643e 7072 6f74  <artifactId>prot\n+00000890: 6f62 7566 2d6a 6176 612d 7574 696c 3c2f  obuf-java-util</\n+000008a0: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+000008b0: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+000008c0: 3c2f 6465 7065 6e64 656e 6369 6573 3e0a  </dependencies>.\n+000008d0: 2020 3c62 7569 6c64 3e0a 2020 2020 3c65    <build>.    <e\n+000008e0: 7874 656e 7369 6f6e 733e 0a20 2020 2020  xtensions>.     \n+000008f0: 203c 6578 7465 6e73 696f 6e3e 0a20 2020   <extension>.   \n+00000900: 2020 2020 203c 6772 6f75 7049 643e 6b72       <groupId>kr\n+00000910: 2e6d 6f74 642e 6d61 7665 6e3c 2f67 726f  .motd.maven</gro\n+00000920: 7570 4964 3e0a 2020 2020 2020 2020 3c61  upId>.        <a\n+00000930: 7274 6966 6163 7449 643e 6f73 2d6d 6176  rtifactId>os-mav\n+00000940: 656e 2d70 6c75 6769 6e3c 2f61 7274 6966  en-plugin</artif\n+00000950: 6163 7449 643e 0a20 2020 2020 2020 203c  actId>.        <\n+00000960: 7665 7273 696f 6e3e 312e 362e 313c 2f76  version>1.6.1</v\n+00000970: 6572 7369 6f6e 3e0a 2020 2020 2020 3c2f  ersion>.      </\n+00000980: 6578 7465 6e73 696f 6e3e 0a20 2020 203c  extension>.    <\n+00000990: 2f65 7874 656e 7369 6f6e 733e 0a20 2020  /extensions>.   \n+000009a0: 203c 706c 7567 696e 733e 0a20 2020 2020   <plugins>.     \n+000009b0: 203c 706c 7567 696e 3e0a 2020 2020 2020   <plugin>.      \n+000009c0: 2020 3c67 726f 7570 4964 3e6f 7267 2e78    <groupId>org.x\n+000009d0: 6f6c 7374 6963 652e 6d61 7665 6e2e 706c  olstice.maven.pl\n+000009e0: 7567 696e 733c 2f67 726f 7570 4964 3e0a  ugins</groupId>.\n+000009f0: 2020 2020 2020 2020 3c61 7274 6966 6163          <artifac\n+00000a00: 7449 643e 7072 6f74 6f62 7566 2d6d 6176  tId>protobuf-mav\n+00000a10: 656e 2d70 6c75 6769 6e3c 2f61 7274 6966  en-plugin</artif\n+00000a20: 6163 7449 643e 0a20 2020 2020 2020 203c  actId>.        <\n+00000a30: 7665 7273 696f 6e3e 302e 352e 313c 2f76  version>0.5.1</v\n+00000a40: 6572 7369 6f6e 3e0a 2020 2020 2020 2020  ersion>.        \n+00000a50: 3c65 7874 656e 7369 6f6e 733e 7472 7565  <extensions>true\n+00000a60: 3c2f 6578 7465 6e73 696f 6e73 3e0a 2020  </extensions>.  \n+00000a70: 2020 2020 2020 3c65 7865 6375 7469 6f6e        <execution\n+00000a80: 733e 0a20 2020 2020 2020 2020 203c 6578  s>.          <ex\n+00000a90: 6563 7574 696f 6e3e 0a20 2020 2020 2020  ecution>.       \n+00000aa0: 2020 2020 203c 676f 616c 733e 0a20 2020       <goals>.   \n+00000ab0: 2020 2020 2020 2020 2020 203c 676f 616c             <goal\n+00000ac0: 3e63 6f6d 7069 6c65 3c2f 676f 616c 3e0a  >compile</goal>.\n+00000ad0: 2020 2020 2020 2020 2020 2020 2020 3c67                <g\n+00000ae0: 6f61 6c3e 7465 7374 2d63 6f6d 7069 6c65  oal>test-compile\n+00000af0: 3c2f 676f 616c 3e0a 2020 2020 2020 2020  </goal>.        \n+00000b00: 2020 2020 3c2f 676f 616c 733e 0a20 2020      </goals>.   \n+00000b10: 2020 2020 2020 203c 2f65 7865 6375 7469         </executi\n+00000b20: 6f6e 3e0a 2020 2020 2020 2020 3c2f 6578  on>.        </ex\n+00000b30: 6563 7574 696f 6e73 3e0a 2020 2020 2020  ecutions>.      \n+00000b40: 2020 3c63 6f6e 6669 6775 7261 7469 6f6e    <configuration\n+00000b50: 3e0a 2020 2020 2020 2020 2020 3c70 726f  >.          <pro\n+00000b60: 746f 6341 7274 6966 6163 743e 636f 6d2e  tocArtifact>com.\n+00000b70: 676f 6f67 6c65 2e70 726f 746f 6275 663a  google.protobuf:\n+00000b80: 7072 6f74 6f63 3a33 2e37 2e31 3a65 7865  protoc:3.7.1:exe\n+00000b90: 3a24 7b6f 732e 6465 7465 6374 6564 2e63  :${os.detected.c\n+00000ba0: 6c61 7373 6966 6965 727d 3c2f 7072 6f74  lassifier}</prot\n+00000bb0: 6f63 4172 7469 6661 6374 3e0a 2020 2020  ocArtifact>.    \n+00000bc0: 2020 2020 2020 3c6f 7574 7075 7444 6972        <outputDir\n+00000bd0: 6563 746f 7279 3e62 7569 6c64 2f67 656e  ectory>build/gen\n+00000be0: 6572 6174 6564 2f73 6f75 7263 652f 7072  erated/source/pr\n+00000bf0: 6f74 6f2f 6d61 696e 2f6a 6176 613c 2f6f  oto/main/java</o\n+00000c00: 7574 7075 7444 6972 6563 746f 7279 3e0a  utputDirectory>.\n+00000c10: 2020 2020 2020 2020 2020 3c63 6c65 6172            <clear\n+00000c20: 4f75 7470 7574 4469 7265 6374 6f72 793e  OutputDirectory>\n+00000c30: 6661 6c73 653c 2f63 6c65 6172 4f75 7470  false</clearOutp\n+00000c40: 7574 4469 7265 6374 6f72 793e 0a20 2020  utDirectory>.   \n+00000c50: 2020 2020 203c 2f63 6f6e 6669 6775 7261       </configura\n+00000c60: 7469 6f6e 3e0a 2020 2020 2020 3c2f 706c  tion>.      </pl\n+00000c70: 7567 696e 3e0a 2020 2020 2020 3c70 6c75  ugin>.      <plu\n+00000c80: 6769 6e3e 0a20 2020 2020 2020 203c 6772  gin>.        <gr\n+00000c90: 6f75 7049 643e 6f72 672e 636f 6465 6861  oupId>org.codeha\n+00000ca0: 7573 2e6d 6f6a 6f3c 2f67 726f 7570 4964  us.mojo</groupId\n+00000cb0: 3e0a 2020 2020 2020 2020 3c61 7274 6966  >.        <artif\n+00000cc0: 6163 7449 643e 6275 696c 642d 6865 6c70  actId>build-help\n+00000cd0: 6572 2d6d 6176 656e 2d70 6c75 6769 6e3c  er-maven-plugin<\n+00000ce0: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000cf0: 2020 2020 203c 6578 6563 7574 696f 6e73       <executions\n+00000d00: 3e0a 2020 2020 2020 2020 2020 3c65 7865  >.          <exe\n+00000d10: 6375 7469 6f6e 3e0a 2020 2020 2020 2020  cution>.        \n+00000d20: 2020 2020 3c70 6861 7365 3e67 656e 6572      <phase>gener\n+00000d30: 6174 652d 736f 7572 6365 733c 2f70 6861  ate-sources</pha\n+00000d40: 7365 3e0a 2020 2020 2020 2020 2020 2020  se>.            \n+00000d50: 3c67 6f61 6c73 3e0a 2020 2020 2020 2020  <goals>.        \n+00000d60: 2020 2020 2020 3c67 6f61 6c3e 6164 642d        <goal>add-\n+00000d70: 736f 7572 6365 3c2f 676f 616c 3e0a 2020  source</goal>.  \n+00000d80: 2020 2020 2020 2020 2020 3c2f 676f 616c            </goal\n+00000d90: 733e 0a20 2020 2020 2020 2020 2020 203c  s>.            <\n+00000da0: 636f 6e66 6967 7572 6174 696f 6e3e 0a20  configuration>. \n+00000db0: 2020 2020 2020 2020 2020 2020 203c 736f               <so\n+00000dc0: 7572 6365 733e 0a20 2020 2020 2020 2020  urces>.         \n+00000dd0: 2020 2020 2020 203c 736f 7572 6365 3e62         <source>b\n+00000de0: 7569 6c64 2f67 656e 6572 6174 6564 2f73  uild/generated/s\n+00000df0: 6f75 7263 652f 7072 6f74 6f2f 6d61 696e  ource/proto/main\n+00000e00: 2f6a 6176 613c 2f73 6f75 7263 653e 0a20  /java</source>. \n+00000e10: 2020 2020 2020 2020 2020 2020 203c 2f73               </s\n+00000e20: 6f75 7263 6573 3e0a 2020 2020 2020 2020  ources>.        \n+00000e30: 2020 2020 3c2f 636f 6e66 6967 7572 6174      </configurat\n+00000e40: 696f 6e3e 0a20 2020 2020 2020 2020 203c  ion>.          <\n+00000e50: 2f65 7865 6375 7469 6f6e 3e0a 2020 2020  /execution>.    \n+00000e60: 2020 2020 3c2f 6578 6563 7574 696f 6e73      </executions\n+00000e70: 3e0a 2020 2020 2020 3c2f 706c 7567 696e  >.      </plugin\n+00000e80: 3e0a 2020 2020 3c2f 706c 7567 696e 733e  >.    </plugins>\n+00000e90: 0a20 203c 2f62 7569 6c64 3e0a 3c2f 7072  .  </build>.</pr\n+00000ea0: 6f6a 6563 743e 0a                        oject>.\n"}]}
