<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>142575</bug_id>
          
          <creation_ts>2015-03-11 02:25:23 -0700</creation_ts>
          <short_desc>[ARM] REGRESSION(181077): jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js fails on AArch64</short_desc>
          <delta_ts>2015-03-28 01:14:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>142792</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108645</blocked>
    
    <blocked>141351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076278</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-11 02:25:23 -0700</bug_when>
    <thetext>It fails on AArch64 Linux with enabled DFG JIT: (pass in other cases)
FAIL: jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit
FAIL: jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-ftl-eager-no-cjit

jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: DIFF FAILURE!
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: --- ../.tests/jsc-layout-tests.yaml/js/array-length-shortening-expected.txt  2015-03-10 05:27:44.000000000 -0700
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: +++ ../jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit.out 2015-03-11 00:52:59.320000000 -0700
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: @@ -5,21 +5,21 @@
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: +FAIL count should be 1. Was 2.
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: +FAIL count should be 1. Was 2.
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: +FAIL count should be 1. Was 5.
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: +FAIL count should be 1. Was 5.
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: +FAIL count should be 1. Was 2.
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: +FAIL count should be 1. Was 2.
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: -PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: -PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: -PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: -PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: -PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: -PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: -PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit: +FAIL count should be 1. Was 2.
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1
jsc-layout-tests.yaml/js/script-tests/array-length-shortening.js.layout-dfg-eager-no-cjit:  PASS count is 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076279</commentid>
    <comment_count>1</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-11 02:26:18 -0700</bug_when>
    <thetext>It must be a regression, because I haven&apos;t seen this failure 
previously, near ~ 1-2 weeks before. I&apos;m going to do a bisect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076292</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-11 05:02:52 -0700</bug_when>
    <thetext>I finished with the bisecting, http://trac.webkit.org/changeset/181077 
is the culprit. It passed before r181077 and started to fail from r181077.

Didn&apos;t you notice the same failure on iOS AArch64 too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077347</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-15 23:03:54 -0700</bug_when>
    <thetext>Thank you for your notification, I&apos;ve now noticed this.
I&apos;ll investigate it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077361</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-16 01:01:18 -0700</bug_when>
    <thetext>Seeing the result,

1. builtin arrays work fine. pseudo arrays created by Object.create(Array.prototype) fail.
2. They behave like array.length is not shortened.

And major changes introduced by this patch is,

1. Enumeration phase includes pushTry/popTryAndEmitCatch to catch thrown errors &amp; execute iterator.return method.
2. next() is rewritten in JavaScript. So there&apos;s chance to inline it. (previously, this function is written in ASM as intrinsic)

Since there&apos;s no JIT code changes, I think that I missed something in (1), BytecodeGenerator change.

Filip, does it fail on iOS Aarch64 build?
I don&apos;t have any Aarch64 devices, I cannot check it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077379</commentid>
    <comment_count>5</comment_count>
      <attachid>248721</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-16 04:52:20 -0700</bug_when>
    <thetext>Created attachment 248721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077380</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-16 04:57:02 -0700</bug_when>
    <thetext>Seeing the ForOfNode implementation, I found several issues that I missed.
This patch fixes several issues in the existing ForOfNode/BytecodeGenerator.

However, I&apos;m not sure that this patch can solve ARM64 issues originally reported here.

ossy, could you apply this patch in your local ARM64 environment?
This patch includes &quot;attempt to fix&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077382</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-16 05:08:19 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Seeing the ForOfNode implementation, I found several issues that I missed.
&gt; This patch fixes several issues in the existing ForOfNode/BytecodeGenerator.
&gt; 
&gt; However, I&apos;m not sure that this patch can solve ARM64 issues originally
&gt; reported here.
&gt; 
&gt; ossy, could you apply this patch in your local ARM64 environment?
&gt; This patch includes &quot;attempt to fix&quot;.

Sure, will check soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077393</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-16 06:29:09 -0700</bug_when>
    <thetext>Unfortunately it didn&apos;t fix the original issue on AArch64 Linux
and the new stress/pseudo-array-length-shorten.js fails too:

stress/pseudo-array-length-shorten.js.no-llint: Exception: Error: bad value 1
stress/pseudo-array-length-shorten.js.no-llint: testLengthShortening@pseudo-array-length-shorten.js:11:24
stress/pseudo-array-length-shorten.js.no-llint: global code@pseudo-array-length-shorten.js:28:21
stress/pseudo-array-length-shorten.js.no-llint: ERROR: Unexpected exit code: 3

stress/pseudo-array-length-shorten.js.ftl-no-cjit-validate: Exception: Error: bad value 1
stress/pseudo-array-length-shorten.js.ftl-no-cjit-validate: testLengthShortening@pseudo-array-length-shorten.js:11:24
stress/pseudo-array-length-shorten.js.ftl-no-cjit-validate: global code@pseudo-array-length-shorten.js:55:21
stress/pseudo-array-length-shorten.js.ftl-no-cjit-validate: ERROR: Unexpected exit code: 3

stress/pseudo-array-length-shorten.js.no-cjit-validate-phases: Exception: Error: bad value 1
stress/pseudo-array-length-shorten.js.no-cjit-validate-phases: testLengthShortening@pseudo-array-length-shorten.js:11:24
stress/pseudo-array-length-shorten.js.no-cjit-validate-phases: global code@pseudo-array-length-shorten.js:55:21
stress/pseudo-array-length-shorten.js.no-cjit-validate-phases: ERROR: Unexpected exit code: 3

stress/pseudo-array-length-shorten.js.dfg-eager: Exception: Error: bad value 2
stress/pseudo-array-length-shorten.js.dfg-eager: testLengthShortening@pseudo-array-length-shorten.js:9:24
stress/pseudo-array-length-shorten.js.dfg-eager: global code@pseudo-array-length-shorten.js:28:21
stress/pseudo-array-length-shorten.js.dfg-eager: ERROR: Unexpected exit code: 3

stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: Exception: Error: bad value 1
stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: testLengthShortening@pseudo-array-length-shorten.js:11:24
stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: global code@pseudo-array-length-shorten.js:55:21
stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: ERROR: Unexpected exit code: 3

stress/pseudo-array-length-shorten.js.dfg-eager-no-cjit-validate: Exception: Error: bad value 2
stress/pseudo-array-length-shorten.js.dfg-eager-no-cjit-validate: testLengthShortening@pseudo-array-length-shorten.js:9:24
stress/pseudo-array-length-shorten.js.dfg-eager-no-cjit-validate: global code@pseudo-array-length-shorten.js:28:21
stress/pseudo-array-length-shorten.js.dfg-eager-no-cjit-validate: ERROR: Unexpected exit code: 3

stress/pseudo-array-length-shorten.js.ftl-eager: Exception: Error: bad value 2
stress/pseudo-array-length-shorten.js.ftl-eager: testLengthShortening@pseudo-array-length-shorten.js:9:24
stress/pseudo-array-length-shorten.js.ftl-eager: global code@pseudo-array-length-shorten.js:28:21
stress/pseudo-array-length-shorten.js.ftl-eager: ERROR: Unexpected exit code: 3

stress/pseudo-array-length-shorten.js.ftl-eager-no-cjit: Exception: Error: bad value 2
stress/pseudo-array-length-shorten.js.ftl-eager-no-cjit: testLengthShortening@pseudo-array-length-shorten.js:9:24
stress/pseudo-array-length-shorten.js.ftl-eager-no-cjit: global code@pseudo-array-length-shorten.js:28:21
stress/pseudo-array-length-shorten.js.ftl-eager-no-cjit: ERROR: Unexpected exit code: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077396</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-16 06:38:08 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Unfortunately it didn&apos;t fix the original issue on AArch64 Linux
&gt; and the new stress/pseudo-array-length-shorten.js fails too:
&gt; 
&gt; stress/pseudo-array-length-shorten.js.no-llint: Exception: Error: bad value 1
&gt; stress/pseudo-array-length-shorten.js.no-llint:
&gt; testLengthShortening@pseudo-array-length-shorten.js:11:24
&gt; stress/pseudo-array-length-shorten.js.no-llint: global
&gt; code@pseudo-array-length-shorten.js:28:21
&gt; stress/pseudo-array-length-shorten.js.no-llint: ERROR: Unexpected exit code:
&gt; 3
&gt; 
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-validate: Exception:
&gt; Error: bad value 1
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-validate:
&gt; testLengthShortening@pseudo-array-length-shorten.js:11:24
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-validate: global
&gt; code@pseudo-array-length-shorten.js:55:21
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-validate: ERROR:
&gt; Unexpected exit code: 3
&gt; 
&gt; stress/pseudo-array-length-shorten.js.no-cjit-validate-phases: Exception:
&gt; Error: bad value 1
&gt; stress/pseudo-array-length-shorten.js.no-cjit-validate-phases:
&gt; testLengthShortening@pseudo-array-length-shorten.js:11:24
&gt; stress/pseudo-array-length-shorten.js.no-cjit-validate-phases: global
&gt; code@pseudo-array-length-shorten.js:55:21
&gt; stress/pseudo-array-length-shorten.js.no-cjit-validate-phases: ERROR:
&gt; Unexpected exit code: 3
&gt; 
&gt; stress/pseudo-array-length-shorten.js.dfg-eager: Exception: Error: bad value
&gt; 2
&gt; stress/pseudo-array-length-shorten.js.dfg-eager:
&gt; testLengthShortening@pseudo-array-length-shorten.js:9:24
&gt; stress/pseudo-array-length-shorten.js.dfg-eager: global
&gt; code@pseudo-array-length-shorten.js:28:21
&gt; stress/pseudo-array-length-shorten.js.dfg-eager: ERROR: Unexpected exit
&gt; code: 3
&gt; 
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate:
&gt; Exception: Error: bad value 1
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate:
&gt; testLengthShortening@pseudo-array-length-shorten.js:11:24
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: global
&gt; code@pseudo-array-length-shorten.js:55:21
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: ERROR:
&gt; Unexpected exit code: 3
&gt; 
&gt; stress/pseudo-array-length-shorten.js.dfg-eager-no-cjit-validate: Exception:
&gt; Error: bad value 2
&gt; stress/pseudo-array-length-shorten.js.dfg-eager-no-cjit-validate:
&gt; testLengthShortening@pseudo-array-length-shorten.js:9:24
&gt; stress/pseudo-array-length-shorten.js.dfg-eager-no-cjit-validate: global
&gt; code@pseudo-array-length-shorten.js:28:21
&gt; stress/pseudo-array-length-shorten.js.dfg-eager-no-cjit-validate: ERROR:
&gt; Unexpected exit code: 3
&gt; 
&gt; stress/pseudo-array-length-shorten.js.ftl-eager: Exception: Error: bad value
&gt; 2
&gt; stress/pseudo-array-length-shorten.js.ftl-eager:
&gt; testLengthShortening@pseudo-array-length-shorten.js:9:24
&gt; stress/pseudo-array-length-shorten.js.ftl-eager: global
&gt; code@pseudo-array-length-shorten.js:28:21
&gt; stress/pseudo-array-length-shorten.js.ftl-eager: ERROR: Unexpected exit
&gt; code: 3
&gt; 
&gt; stress/pseudo-array-length-shorten.js.ftl-eager-no-cjit: Exception: Error:
&gt; bad value 2
&gt; stress/pseudo-array-length-shorten.js.ftl-eager-no-cjit:
&gt; testLengthShortening@pseudo-array-length-shorten.js:9:24
&gt; stress/pseudo-array-length-shorten.js.ftl-eager-no-cjit: global
&gt; code@pseudo-array-length-shorten.js:28:21
&gt; stress/pseudo-array-length-shorten.js.ftl-eager-no-cjit: ERROR: Unexpected
&gt; exit code: 3

Thank you!
This new stress test is just moved &amp; modified version of originally failed one.
So still reported issue is not fixed by this patch.
I&apos;ll check it more!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077470</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-16 11:05:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Seeing the result,
&gt; 
&gt; 1. builtin arrays work fine. pseudo arrays created by
&gt; Object.create(Array.prototype) fail.
&gt; 2. They behave like array.length is not shortened.
&gt; 
&gt; And major changes introduced by this patch is,
&gt; 
&gt; 1. Enumeration phase includes pushTry/popTryAndEmitCatch to catch thrown
&gt; errors &amp; execute iterator.return method.
&gt; 2. next() is rewritten in JavaScript. So there&apos;s chance to inline it.
&gt; (previously, this function is written in ASM as intrinsic)
&gt; 
&gt; Since there&apos;s no JIT code changes, I think that I missed something in (1),
&gt; BytecodeGenerator change.
&gt; 
&gt; Filip, does it fail on iOS Aarch64 build?
&gt; I don&apos;t have any Aarch64 devices, I cannot check it...

It does fail on iOS AArch64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078499</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-19 02:10:55 -0700</bug_when>
    <thetext>I&apos;ll try it.
http://webkit.sed.hu/blog/20140816/quickndirty-set-aarch64-ubuntu-1404-vm-qemu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078500</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-19 02:17:14 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; It does fail on iOS AArch64.

Thank you for your report!
Seeing the results, especially,

&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate:
&gt; Exception: Error: bad value 1
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate:
&gt; testLengthShortening@pseudo-array-length-shorten.js:11:24
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: global
&gt; code@pseudo-array-length-shorten.js:55:21
&gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: ERROR:
&gt; Unexpected exit code: 3

is quite odd. It checks array.length === 1. Since array.length is set to 1 explicitly, this should be 1.

I&apos;m planning to check it on QEMU aarch64 emurators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078515</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-19 04:00:11 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; It does fail on iOS AArch64.
&gt; 
&gt; Thank you for your report!
&gt; Seeing the results, especially,
&gt; 
&gt; &gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate:
&gt; &gt; Exception: Error: bad value 1
&gt; &gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate:
&gt; &gt; testLengthShortening@pseudo-array-length-shorten.js:11:24
&gt; &gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: global
&gt; &gt; code@pseudo-array-length-shorten.js:55:21
&gt; &gt; stress/pseudo-array-length-shorten.js.ftl-no-cjit-no-inline-validate: ERROR:
&gt; &gt; Unexpected exit code: 3
&gt; 
&gt; is quite odd. It checks array.length === 1. Since array.length is set to 1
&gt; explicitly, this should be 1.
&gt; 
&gt; I&apos;m planning to check it on QEMU aarch64 emurators.

Building and debugging in qemu is extremely slow. Fortunately we have
real hardware now for testing, so if you have a patch with debug infos
and or tell me which command line argument should I pass JSC, I willingly
try patches and send debug infos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078865</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-20 09:18:50 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; 
&gt; Building and debugging in qemu is extremely slow. Fortunately we have
&gt; real hardware now for testing, so if you have a patch with debug infos
&gt; and or tell me which command line argument should I pass JSC, I willingly
&gt; try patches and send debug infos.

Great! Thank you.
I&apos;m now planning to identify the root cause of this. To do that, try and error is required; I need to pass variaous input data (input script) and check the result.
So at first, I&apos;ll set up the environment and perform try and error on QEMU.

After I identified the root cause of this, I need to check it is correct on some actual machines.
At that time, I&apos;d appreciate it if you would help :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080605</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-27 08:45:12 -0700</bug_when>
    <thetext>(In reply to comment #13)

Hi! Could you try the tests with http://trac.webkit.org/changeset/182058 patch?
I think that the above change may fix this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080663</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-27 11:03:12 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; 
&gt; Hi! Could you try the tests with http://trac.webkit.org/changeset/182058
&gt; patch?
&gt; I think that the above change may fix this issue.

I checked it, it passes now and unskipped by https://trac.webkit.org/changeset/182070

If the change/improvement you proposed here is still needed, it would be 
better to do it in another bug report. This title is invalid, r181077 is
innocent, it only revealed this bug.

*** This bug has been marked as a duplicate of bug 142792 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080667</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-27 11:04:58 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I checked it, it passes now and unskipped by
&gt; https://trac.webkit.org/changeset/182070
&gt; 
&gt; If the change/improvement you proposed here is still needed, it would be 
&gt; better to do it in another bug report. This title is invalid, r181077 is
&gt; innocent, it only revealed this bug.
&gt; 
&gt; *** This bug has been marked as a duplicate of bug 142792 ***

Great! I&apos;m happy to hear that :D</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248721</attachid>
            <date>2015-03-16 04:52:20 -0700</date>
            <delta_ts>2015-03-28 01:14:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142575-20150316205150.patch</filename>
            <type>text/plain</type>
            <size>29933</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWIyMDEwMTBhOTU0OTYwYzhjZGU1YTNkNmM3YTc1MzM4MDI3ZGU4Li45MGExYTA5OWUwZTBmNjY3
YjNiN2Q1NzZkYWU0ZjhlMGVjODlmZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxNS0wMy0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBDbGVhbiB1cCBhbmQgZml4IGltcGxpY2l0IHRyeS1jYXRjaC1maW5h
bGx5IGd1YXJkIG9mIEZvck9mTm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyNTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpbmNsdWRlcyBzZXZlcmFsIGZpeGVzLgorCisgICAgICAgIDEu
IFtBUk1dIFJFR1JFU1NJT04oMTgxMDc3KToganNjLWxheW91dC10ZXN0cy55YW1sL2pzL3Njcmlw
dC10ZXN0cy9hcnJheS1sZW5ndGgtc2hvcnRlbmluZy5qcyBmYWlscyBvbiBBQXJjaDY0CisgICAg
ICAgIEF0dGVtcHQgdG8gZml4IEFSTTY0IGl0ZXJhdGlvbiBlcnJvci4KKyAgICAgICAgVGhpcyBw
YXRjaCBzaW1wbGlmeSB0cnktY2F0Y2ggZ3VhcmQgaW4gZm9yLW9mIGxvb3AuCisgICAgICAgIEJl
Zm9yZSB0aGlzIHBhdGNoLCB0aGUgcmFuZ2Ugb2YgdHJ5LWNhdGNoIGd1YXJkIGluIGZvci1vZiBs
b29wIGlzIG5vdCBuYXR1cmFsIGFuZAorICAgICAgICBpdCBtYXkgY2F1c2Ugc29tZSBlcnJvcnMg
aW4gYW5hbHlzaXMgbGF5ZXIgdGhhdCBhc3N1bWVzIHByb2dyYW1zIG9ubHkgY3JlYXRlCisgICAg
ICAgIGJ5dGVjb2RlcyB0aGF0IHJlcHJlc2VudHMgcmVkdWNpYmxlIGdyYXBocy4KKworCisgICAg
ICAgIDIuIFN1cHBvcnQgSXRlcmF0b3JDbG9zZSBiZXlvbmQgbXVsdGlwbGUgbG9vcCBjb250ZXh0
cworICAgICAgICBQcmV2aW91c2x5LCBJdGVyYXRvckNsb3NlIGlzIG9ubHkgZXhlY3V0ZWQgaW4g
Zm9yLW9mJ3MgYnJlYWtUYXJnZXQoKS4KKyAgICAgICAgSG93ZXZlciwgdGhpcyBtaXNzZXMgSXRl
cmF0b3JDbG9zZSBleGVjdXRpb24gd2hlbiBzdGF0ZW1lbnQgcm9sbC11cHMgbXVsdGlwbGUgY29u
dHJvbCBmbG93IGNvbnRleHRzLgorICAgICAgICBGb3IgZXhhbXBsZSwKKyAgICAgICAgb3V0ZXI6
IGZvciAodmFyIGUxIG9mIG91dGVyKSB7CisgICAgICAgICAgICBpbm5lcjogZm9yICh2YXIgZTIg
b2YgaW5uZXIpIHsKKyAgICAgICAgICAgICAgICBicmVhayBvdXRlcjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBJbiB0aGlzIGNhc2UsIHJldHVybiBtZXRob2Qgb2YgaW5uZXIg
c2hvdWxkIGJlIGNhbGxlZC4KKyAgICAgICAgV2UgbGV2ZXJhZ2UgdGhlIGV4aXN0aW5nIHN5c3Rl
bSBmb3IgYGZpbmFsbHlgIHRvIGV4ZWN1dGUgaW5uZXIucmV0dXJuIG1ldGhvZCBjb3JyZWN0bHku
CisKKyAgICAgICAgMy4gSW5jb3JyZWN0IExhYmVsU2NvcGUgY3JlYXRpb24gaXMgZG9uZSBpbiBG
b3JPZk5vZGUKKyAgICAgICAgRm9yT2ZOb2RlIGNyZWF0ZXMgZHVwbGljYXRlZCBMYWJlbFNjb3Bl
LgorICAgICAgICBJdCBjYXVzZXMgaW5maW5pdGUgbG9vcCB3aGVuIGV4ZWN1dGluZyB0aGUgZm9s
bG93aW5nIHByb2dyYW0gdGhhdCBjb250YWlucworICAgICAgICBleHBsaWNpdGx5IGxhYmVsZWQg
Zm9yLW9mIGxvb3AuCisgICAgICAgIEZvciBleGFtcGxlLAorICAgICAgICBpbm5lcjogZm9yICh2
YXIgZWxtIG9mIGFycmF5KSB7CisgICAgICAgICAgICBjb250aW51ZSBpbm5lcjsKKyAgICAgICAg
fQorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hGaW5hbGx5Q29udGV4dCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoSXRlcmF0b3JDbG9zZUNvbnRleHQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cG9wRmluYWxseUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cG9wSXRlcmF0b3JDbG9zZUNvbnRleHQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckNsb3NlKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9pdGVyYXRvci1yZXR1cm4tYmV5b25kLW11bHRpcGxl
LWl0ZXJhdGlvbi1zY29wZXMuanM6IEFkZGVkLgorICAgICAgICAoY3JlYXRlSXRlcmF0b3IuaXRl
cmF0b3IucmV0dXJuKToKKyAgICAgICAgKGNyZWF0ZUl0ZXJhdG9yKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvcHNldWRvLWFycmF5LWxlbmd0aC1zaG9ydGVuLmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3RMZW5ndGhTaG9ydGVuaW5nKToKKyAgICAgICAgKGRlbnNlSW50MzJFbGVtZW50cyk6Cisg
ICAgICAgIChkZW5zZURvdWJsZUVsZW1lbnRzKToKKyAgICAgICAgKGRlbnNlT2JqZWN0RWxlbWVu
dHMpOgorICAgICAgICAoaG9sZXlJbnQzMkVsZW1lbnRzKToKKyAgICAgICAgKGhvbGV5RG91Ymxl
RWxlbWVudHMpOgorICAgICAgICAoaG9sZXlPYmplY3RFbGVtZW50cyk6CisgICAgICAgIChhcnJh
eVN0b3JhZ2VJbnQzMkVsZW1lbnRzKToKKyAgICAgICAgKGFycmF5U3RvcmFnZURvdWJsZUVsZW1l
bnRzKToKKyAgICAgICAgKGFycmF5U3RvcmFnZU9iamVjdEVsZW1lbnRzKToKKyAgICAgICAgKHNw
YXJzZUludDMyRWxlbWVudHMpOgorICAgICAgICAoc3BhcnNlRG91YmxlRWxlbWVudHMpOgorICAg
ICAgICAoc3BhcnNlT2JqZWN0RWxlbWVudHMpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9yYWlz
ZS1lcnJvci1pbi1pdGVyYXRvci1jbG9zZS5qczogQWRkZWQuCisgICAgICAgIChjcmVhdGVJdGVy
YXRvci5pdGVyYXRvci5yZXR1cm4pOgorICAgICAgICAoY3JlYXRlSXRlcmF0b3IpOgorCiAyMDE1
LTAzLTE1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogQmV0dGVyIGhhbmRsZSBkaXNwbGF5aW5nIC0wCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGZhZjVmZDlhMjE0MGNmNDVlZTVjMTkxYmIyNzBjZWIyZDA3YzVlNjQuLjljMjczYTEw
ODU1ODkxMzA1OWE2YTA1NzAxOWRkMGQ1NGFhOTE4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0y
MDc5LDYgKzIwNzksMzMgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEZpbmFsbHlDb250
ZXh0KFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKICAgICBzY29wZS5pc0ZpbmFsbHlCbG9j
ayA9IHRydWU7CiAgICAgRmluYWxseUNvbnRleHQgY29udGV4dCA9IHsKICAgICAgICAgZmluYWxs
eUJsb2NrLAorICAgICAgICBudWxscHRyLAorICAgICAgICBudWxscHRyLAorICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9zY29wZUNvbnRleHRTdGFjay5zaXplKCkpLAorICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zd2l0Y2hDb250ZXh0U3RhY2suc2l6ZSgpKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZm9ySW5Db250ZXh0U3RhY2suc2l6ZSgpKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSksCisg
ICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2xhYmVsU2NvcGVzLnNpemUoKSksCisgICAg
ICAgIG1fZmluYWxseURlcHRoLAorICAgICAgICBtX2xvY2FsU2NvcGVEZXB0aAorICAgIH07Cisg
ICAgc2NvcGUuZmluYWxseUNvbnRleHQgPSBjb250ZXh0OworICAgIG1fc2NvcGVDb250ZXh0U3Rh
Y2suYXBwZW5kKHNjb3BlKTsKKyAgICBtX2ZpbmFsbHlEZXB0aCsrOworfQorCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpwdXNoSXRlcmF0b3JDbG9zZUNvbnRleHQoUmVnaXN0ZXJJRCogaXRlcmF0
b3IsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIC8vIFJlY2xhaW0gZnJl
ZSBsYWJlbCBzY29wZXMuCisgICAgd2hpbGUgKG1fbGFiZWxTY29wZXMuc2l6ZSgpICYmICFtX2xh
YmVsU2NvcGVzLmxhc3QoKS5yZWZDb3VudCgpKQorICAgICAgICBtX2xhYmVsU2NvcGVzLnJlbW92
ZUxhc3QoKTsKKworICAgIENvbnRyb2xGbG93Q29udGV4dCBzY29wZTsKKyAgICBzY29wZS5pc0Zp
bmFsbHlCbG9jayA9IHRydWU7CisgICAgRmluYWxseUNvbnRleHQgY29udGV4dCA9IHsKKyAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgaXRlcmF0b3IsCisgICAgICAgIG5vZGUsCiAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX3Njb3BlQ29udGV4dFN0YWNrLnNpemUoKSksCiAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3N3aXRjaENvbnRleHRTdGFjay5zaXplKCkpLAogICAg
ICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9mb3JJbkNvbnRleHRTdGFjay5zaXplKCkpLApA
QCAtMjA5Niw2ICsyMTIzLDIxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcEZpbmFsbHlD
b250ZXh0KCkKIHsKICAgICBBU1NFUlQobV9zY29wZUNvbnRleHRTdGFjay5zaXplKCkpOwogICAg
IEFTU0VSVChtX3Njb3BlQ29udGV4dFN0YWNrLmxhc3QoKS5pc0ZpbmFsbHlCbG9jayk7CisgICAg
QVNTRVJUKG1fc2NvcGVDb250ZXh0U3RhY2subGFzdCgpLmZpbmFsbHlDb250ZXh0LmZpbmFsbHlC
bG9jayk7CisgICAgQVNTRVJUKCFtX3Njb3BlQ29udGV4dFN0YWNrLmxhc3QoKS5maW5hbGx5Q29u
dGV4dC5pdGVyYXRvcik7CisgICAgQVNTRVJUKCFtX3Njb3BlQ29udGV4dFN0YWNrLmxhc3QoKS5m
aW5hbGx5Q29udGV4dC5lbnVtZXJhdGlvbk5vZGUpOworICAgIEFTU0VSVChtX2ZpbmFsbHlEZXB0
aCA+IDApOworICAgIG1fc2NvcGVDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworICAgIG1fZmlu
YWxseURlcHRoLS07Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcEl0ZXJhdG9yQ2xv
c2VDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV9zY29wZUNvbnRleHRTdGFjay5zaXplKCkpOwor
ICAgIEFTU0VSVChtX3Njb3BlQ29udGV4dFN0YWNrLmxhc3QoKS5pc0ZpbmFsbHlCbG9jayk7Cisg
ICAgQVNTRVJUKCFtX3Njb3BlQ29udGV4dFN0YWNrLmxhc3QoKS5maW5hbGx5Q29udGV4dC5maW5h
bGx5QmxvY2spOworICAgIEFTU0VSVChtX3Njb3BlQ29udGV4dFN0YWNrLmxhc3QoKS5maW5hbGx5
Q29udGV4dC5pdGVyYXRvcik7CisgICAgQVNTRVJUKG1fc2NvcGVDb250ZXh0U3RhY2subGFzdCgp
LmZpbmFsbHlDb250ZXh0LmVudW1lcmF0aW9uTm9kZSk7CiAgICAgQVNTRVJUKG1fZmluYWxseURl
cHRoID4gMCk7CiAgICAgbV9zY29wZUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgbV9m
aW5hbGx5RGVwdGgtLTsKQEAgLTIyNjcsOSArMjMwOSwxNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dD
b250ZQogICAgICAgICAgICAgaW50IHNhdmVkRHluYW1pY1Njb3BlRGVwdGggPSBtX2xvY2FsU2Nv
cGVEZXB0aDsKICAgICAgICAgICAgIG1fbG9jYWxTY29wZURlcHRoID0gZmluYWxseUNvbnRleHQu
ZHluYW1pY1Njb3BlRGVwdGg7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIEVtaXQgdGhl
IGZpbmFsbHkgYmxvY2suCi0gICAgICAgICAgICBlbWl0Tm9kZShmaW5hbGx5Q29udGV4dC5maW5h
bGx5QmxvY2spOwotICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZmluYWxseUNvbnRleHQu
ZmluYWxseUJsb2NrKSB7CisgICAgICAgICAgICAgICAgLy8gRW1pdCB0aGUgZmluYWxseSBibG9j
ay4KKyAgICAgICAgICAgICAgICBlbWl0Tm9kZShmaW5hbGx5Q29udGV4dC5maW5hbGx5QmxvY2sp
OworICAgICAgICAgICAgfSBlbHNlIGlmIChmaW5hbGx5Q29udGV4dC5pdGVyYXRvcikgeworICAg
ICAgICAgICAgICAgIC8vIEVtaXQgdGhlIEl0ZXJhdG9yQ2xvc2UgYmxvY2suCisgICAgICAgICAg
ICAgICAgZW1pdEl0ZXJhdG9yQ2xvc2UoZmluYWxseUNvbnRleHQuaXRlcmF0b3IsIGZpbmFsbHlD
b250ZXh0LmVudW1lcmF0aW9uTm9kZSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIFJl
ZlB0cjxMYWJlbD4gYWZ0ZXJGaW5hbGx5ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBzdGF0ZSBvZiB0aGUgd29y
bGQuCkBAIC0yNTY3LDcgKzI2MTQsNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51
bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IG5ld0xhYmVsU2Nv
cGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1YmplY3QgPSBu
ZXdUZW1wb3JhcnkoKTsKICAgICBlbWl0Tm9kZShzdWJqZWN0LmdldCgpLCBzdWJqZWN0Tm9kZSk7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9y
YXJ5KCksIHN1YmplY3QuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclByaXZhdGVOYW1l
KTsKQEAgLTI1NzYsNzcgKzI2MjIsNzggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVu
dW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KICAgICAg
ICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgc3ViamVjdC5nZXQoKSk7CiAgICAgICAg
IGVtaXRDYWxsKGl0ZXJhdG9yLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBhcmdzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90
RW5kKCkpOwogICAgIH0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBuZXdUZW1wb3Jh
cnkoKTsKLSAgICBlbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgCi0g
ICAgZW1pdEp1bXAoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIAotICAgIFJlZlB0cjxM
YWJlbD4gbG9vcFN0YXJ0ID0gbmV3TGFiZWwoKTsKLSAgICBSZWZQdHI8TGFiZWw+IGl0ZXJhdG9y
RG9uZSA9IG5ld0xhYmVsKCk7Ci0gICAgZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7Ci0gICAg
ZW1pdExvb3BIaW50KCk7Ci0KLSAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBuZXdM
YWJlbCgpOwotICAgIGVtaXRMYWJlbCh0cnlTdGFydExhYmVsLmdldCgpKTsKLSAgICBUcnlEYXRh
KiB0cnlEYXRhID0gcHVzaFRyeSh0cnlTdGFydExhYmVsLmdldCgpKTsKLSAgICBjYWxsQmFjaygq
dGhpcywgdmFsdWUuZ2V0KCkpOwotICAgIFJlZlB0cjxMYWJlbD4gY2F0Y2hIZXJlID0gZW1pdExh
YmVsKG5ld0xhYmVsKCkuZ2V0KCkpOwotCi0gICAgZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRh
cmdldCgpKTsKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4
dCk7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cygqdGhpcywgbnVsbHB0cik7
Ci0gICAgICAgIGVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9y
LmdldCgpKTsKLSAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIG5leHQuZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RT
dGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKLSAgICB9Ci0gICAgewotICAgICAgICBSZWZQdHI8
TGFiZWw+IHR5cGVJc09iamVjdCA9IG5ld0xhYmVsKCk7Ci0gICAgICAgIGVtaXRKdW1wSWZUcnVl
KGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCB0eXBlSXNPYmplY3Qu
Z2V0KCkpOwotICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRv
ciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOwotICAgICAgICBlbWl0TGFi
ZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICB9Ci0gICAgZW1pdEp1bXBJZlRydWUoZW1pdEdl
dEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSks
IGl0ZXJhdG9yRG9uZS5nZXQoKSk7Ci0gICAgZW1pdEdldEJ5SWQodmFsdWUuZ2V0KCksIHZhbHVl
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwotICAgIGVtaXRKdW1wKGxvb3BTdGFydC5n
ZXQoKSk7CiAKLSAgICAvLyBJdGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciB0aHJvdy1lZCBjb250
cm9sIGZsb3cuCisgICAgUmVmUHRyPExhYmVsPiBsb29wRG9uZSA9IG5ld0xhYmVsKCk7CisgICAg
Ly8gUmVmUHRyPFJlZ2lzdGVyPiBpdGVyYXRvcidzIGxpZmV0aW1lIG11c3QgYmUgbG9uZ2VyIHRo
YW4gSXRlcmF0b3JDbG9zZUNvbnRleHQuCisgICAgcHVzaEl0ZXJhdG9yQ2xvc2VDb250ZXh0KGl0
ZXJhdG9yLmdldCgpLCBub2RlKTsKICAgICB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBl
eGNlcHRpb25SZWdpc3RlciA9IHBvcFRyeUFuZEVtaXRDYXRjaCh0cnlEYXRhLCBuZXdUZW1wb3Jh
cnkoKSwgY2F0Y2hIZXJlLmdldCgpKTsKLSAgICAgICAgUmVmUHRyPExhYmVsPiByZXRocm93ID0g
bmV3TGFiZWwoKTsKKyAgICAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IG5ld0xhYmVsU2NvcGUo
TGFiZWxTY29wZTo6TG9vcCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IG5l
d1RlbXBvcmFyeSgpOworICAgICAgICBlbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQo
KSk7CisKKyAgICAgICAgZW1pdEp1bXAoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogCi0gICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5NZXRob2QgPSBlbWl0R2V0QnlJZChuZXdUZW1w
b3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5yZXR1cm5LZXl3b3JkKTsK
LSAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCBy
ZXR1cm5NZXRob2QuZ2V0KCkpLCByZXRocm93LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPExhYmVs
PiBsb29wU3RhcnQgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0TGFiZWwobG9vcFN0YXJ0Lmdl
dCgpKTsKKyAgICAgICAgZW1pdExvb3BIaW50KCk7CisKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0
cnlTdGFydExhYmVsID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdExhYmVsKHRyeVN0YXJ0TGFi
ZWwuZ2V0KCkpOworICAgICAgICBUcnlEYXRhKiB0cnlEYXRhID0gcHVzaFRyeSh0cnlTdGFydExh
YmVsLmdldCgpKTsKKyAgICAgICAgY2FsbEJhY2soKnRoaXMsIHZhbHVlLmdldCgpKTsKKyAgICAg
ICAgZW1pdEp1bXAoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogCi0gICAgICAgIFJlZlB0cjxM
YWJlbD4gcmV0dXJuQ2FsbFRyeVN0YXJ0ID0gbmV3TGFiZWwoKTsKLSAgICAgICAgZW1pdExhYmVs
KHJldHVybkNhbGxUcnlTdGFydC5nZXQoKSk7Ci0gICAgICAgIFRyeURhdGEqIHJldHVybkNhbGxU
cnlEYXRhID0gcHVzaFRyeShyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOworICAgICAgICAvLyBJ
dGVyYXRvckNsb3NlIHNlcXVlbmNlIGZvciB0aHJvdy1lZCBjb250cm9sIGZsb3cuCisgICAgICAg
IHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gY2F0Y2hIZXJlID0gZW1pdExhYmVsKG5ld0xh
YmVsKCkuZ2V0KCkpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlvblJl
Z2lzdGVyID0gcG9wVHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIG5ld1RlbXBvcmFyeSgpLCBjYXRj
aEhlcmUuZ2V0KCkpOworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBjYXRjaERvbmUgPSBuZXdM
YWJlbCgpOwogCi0gICAgICAgIENhbGxBcmd1bWVudHMgcmV0dXJuQXJndW1lbnRzKCp0aGlzLCBu
dWxscHRyKTsKLSAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBpdGVyYXRvci5nZXQoKSk7Ci0gICAgICAgIGVtaXRDYWxsKHZhbHVlLmdldCgpLCByZXR1cm5N
ZXRob2QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgcmV0dXJuQXJndW1lbnRzLCBub2RlLT5k
aXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRpdm90RW5kKCkpOworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwor
ICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgp
LCByZXR1cm5NZXRob2QuZ2V0KCkpLCBjYXRjaERvbmUuZ2V0KCkpOwogCi0gICAgICAgIFJlZlB0
cjxMYWJlbD4gcmV0dXJuQ2FsbENhdGNoSGVyZSA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgp
KTsKLSAgICAgICAgZW1pdEp1bXAocmV0aHJvdy5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8
TGFiZWw+IHJldHVybkNhbGxUcnlTdGFydCA9IG5ld0xhYmVsKCk7CisgICAgICAgICAgICBlbWl0
TGFiZWwocmV0dXJuQ2FsbFRyeVN0YXJ0LmdldCgpKTsKKyAgICAgICAgICAgIFRyeURhdGEqIHJl
dHVybkNhbGxUcnlEYXRhID0gcHVzaFRyeShyZXR1cm5DYWxsVHJ5U3RhcnQuZ2V0KCkpOwogCi0g
ICAgICAgIHBvcFRyeUFuZEVtaXRDYXRjaChyZXR1cm5DYWxsVHJ5RGF0YSwgbmV3VGVtcG9yYXJ5
KCksIHJldHVybkNhbGxDYXRjaEhlcmUuZ2V0KCkpOwotICAgICAgICBlbWl0TGFiZWwocmV0aHJv
dy5nZXQoKSk7Ci0gICAgICAgIGVtaXRUaHJvdyhleGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7Ci0g
ICAgfQorICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51
bGxwdHIpOworICAgICAgICAgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBpdGVyYXRvci5nZXQoKSk7CisgICAgICAgICAgICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwg
cmV0dXJuTWV0aG9kLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIHJldHVybkFyZ3VtZW50cywg
bm9kZS0+ZGl2b3QoKSwgbm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKIAot
ICAgIC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4K
LSAgICBlbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwotICAgIHsKLSAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgp
LCBpdGVyYXRvci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdvcmQpOwotICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHJldHVybk1l
dGhvZC5nZXQoKSksIGl0ZXJhdG9yRG9uZS5nZXQoKSk7Ci0KLSAgICAgICAgQ2FsbEFyZ3VtZW50
cyByZXR1cm5Bcmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOwotICAgICAgICBlbWl0TW92ZShyZXR1
cm5Bcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKLSAgICAgICAgZW1p
dENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1ldGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRpdm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9k
ZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdU
ZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCBpdGVyYXRvckRvbmUuZ2V0KCkpOwotICAgICAgICBl
bWl0VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNl
IGlzIG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoRG9uZS5n
ZXQoKSk7CisgICAgICAgICAgICBlbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOwor
CisgICAgICAgICAgICAvLyBBYnNvcmIgZXhjZXB0aW9uLgorICAgICAgICAgICAgcG9wVHJ5QW5k
RW1pdENhdGNoKHJldHVybkNhbGxUcnlEYXRhLCBuZXdUZW1wb3JhcnkoKSwgY2F0Y2hEb25lLmdl
dCgpKTsKKyAgICAgICAgICAgIGVtaXRUaHJvdyhleGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBlbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwor
ICAgICAgICB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IG5leHQgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3JhcnkoKSwgaXRlcmF0b3IuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS5uZXh0KTsKKyAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRB
cmd1bWVudHMoKnRoaXMsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIGVtaXRNb3ZlKG5leHRB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBlbWl0Q2FsbCh2YWx1ZS5nZXQoKSwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBu
ZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUtPmRp
dm90RW5kKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgICAgICAg
ICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgp
KSwgdHlwZUlzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJy
b3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmpl
Y3QuIikpOworICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0KCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3
VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25l
LmdldCgpKTsKKyAgICAgICAgICAgIGVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQo
KSwgcHJvcGVydHlOYW1lcygpLnZhbHVlKTsKKyAgICAgICAgICAgIGVtaXRKdW1wKGxvb3BTdGFy
dC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFy
Z2V0KCkpOwogICAgIH0KIAotICAgIGVtaXRMYWJlbChpdGVyYXRvckRvbmUuZ2V0KCkpOworICAg
IC8vIEl0ZXJhdG9yQ2xvc2Ugc2VxdWVuY2UgZm9yIGJyZWFrLWVkIGNvbnRyb2wgZmxvdy4KKyAg
ICBwb3BJdGVyYXRvckNsb3NlQ29udGV4dCgpOworICAgIGVtaXRJdGVyYXRvckNsb3NlKGl0ZXJh
dG9yLmdldCgpLCBub2RlKTsKKyAgICBlbWl0TGFiZWwobG9vcERvbmUuZ2V0KCkpOwogfQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEVudW1lcmFibGVMZW5ndGgoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKQpAQCAtMjc0MCw2ICsyNzg3LDIxIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0KIAordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKQoreworICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5l
d0xhYmVsKCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVybk1ldGhvZCA9IGVtaXRHZXRC
eUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLnJldHVybktleXdv
cmQpOworICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRJc1VuZGVmaW5lZChuZXdUZW1wb3JhcnkoKSwg
cmV0dXJuTWV0aG9kLmdldCgpKSwgZG9uZS5nZXQoKSk7CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBDYWxsQXJndW1lbnRzIHJldHVybkFyZ3Vt
ZW50cygqdGhpcywgbnVsbHB0cik7CisgICAgZW1pdE1vdmUocmV0dXJuQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBpdGVyYXRvcik7CisgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIHJldHVybk1l
dGhvZC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCByZXR1cm5Bcmd1bWVudHMsIG5vZGUtPmRp
dm90KCksIG5vZGUtPmRpdm90U3RhcnQoKSwgbm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgZW1pdEp1
bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUu
Z2V0KCkpOworICAgIGVtaXRUaHJvd1R5cGVFcnJvcihBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgZW1pdExhYmVsKGRvbmUu
Z2V0KCkpOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoSW5kZXhlZEZvckluU2Nv
cGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3RlciwgUmVnaXN0ZXJJRCogaW5kZXhSZWdpc3RlcikK
IHsKICAgICBpZiAoIWxvY2FsUmVnaXN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNjI1MmYzMjMxN2Yw
ZTg3ZGIxMjBiNTYxZWU5MzBmNzA1ZTlmZDg0NC4uMmJkZjZkMGFkMDFhZTc0OWVkNTE5ZmMwNmI5
ZjIyYzA1YmRhY2RlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODIsNiArODIsOCBAQAogCiAgICAgc3Ry
dWN0IEZpbmFsbHlDb250ZXh0IHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
OworICAgICAgICBSZWdpc3RlcklEKiBpdGVyYXRvcjsKKyAgICAgICAgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZTsKICAgICAgICAgdW5zaWduZWQgc2NvcGVDb250ZXh0
U3RhY2tTaXplOwogICAgICAgICB1bnNpZ25lZCBzd2l0Y2hDb250ZXh0U3RhY2tTaXplOwogICAg
ICAgICB1bnNpZ25lZCBmb3JJbkNvbnRleHRTdGFja1NpemU7CkBAIC01MzksNiArNTQxLDggQEAK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzVW5kZWZpbmVkKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKIAorICAgICAgICB2b2lkIGVtaXRJdGVyYXRvckNs
b3NlKFJlZ2lzdGVySUQqIGl0ZXJhdG9yLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7
CisKICAgICAgICAgdm9pZCBlbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCgpOwogCiAgICAg
ICAgIC8vIFN0YXJ0IGEgdHJ5IGJsb2NrLiAnc3RhcnQnIG11c3QgaGF2ZSBiZWVuIGVtaXR0ZWQu
CkBAIC01NjksNiArNTczLDggQEAKIAogICAgICAgICB2b2lkIHB1c2hGaW5hbGx5Q29udGV4dChT
dGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOwogICAgICAgICB2b2lkIHBvcEZpbmFsbHlDb250
ZXh0KCk7CisgICAgICAgIHZvaWQgcHVzaEl0ZXJhdG9yQ2xvc2VDb250ZXh0KFJlZ2lzdGVySUQq
IGl0ZXJhdG9yLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlKTsKKyAg
ICAgICAgdm9pZCBwb3BJdGVyYXRvckNsb3NlQ29udGV4dCgpOwogCiAgICAgICAgIHZvaWQgcHVz
aEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsLCBSZWdpc3RlcklEKiBpbmRleCk7
CiAgICAgICAgIHZvaWQgcG9wSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCmluZGV4IDY1ZjNhMTIyMDc0OWMwNTJiNjlhYWRjOWQ5NWUyODEwZTlmZDBiM2YuLmZjZTI5
MmQxNzU0YjcxNWJlYWUyZjY4MDMyZjIwZjUxZWNhMGM3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTIzMjEsOSAr
MjMyMSw3IEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VF
cnJvcihnZW5lcmF0b3IsIEFTQ0lJTGl0ZXJhbCgiTGVmdCBzaWRlIG9mIGZvci1vZiBzdGF0ZW1l
bnQgaXMgbm90IGEgcmVmZXJlbmNlLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAK
LSAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxT
Y29wZTo6TG9vcCk7Ci0gICAgCisKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKICAgICBhdXRvIGV4dHJhY3RvciA9IFt0aGlzLCBkc3RdKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaXRlcmF0b3ItcmV0dXJuLWJleW9uZC1tdWx0
aXBsZS1pdGVyYXRpb24tc2NvcGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9pdGVyYXRvci1yZXR1cm4tYmV5b25kLW11bHRpcGxlLWl0ZXJhdGlvbi1zY29wZXMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDA4NGQ2ZmNkMjY3MTcyY2RlMzY1YjlhMzQ3NWY3OGQwOTg0NmNlZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaXRlcmF0
b3ItcmV0dXJuLWJleW9uZC1tdWx0aXBsZS1pdGVyYXRpb24tc2NvcGVzLmpzCkBAIC0wLDAgKzEs
MTMwIEBACisKK2Z1bmN0aW9uIGNyZWF0ZUl0ZXJhdG9yKGNhbGxiYWNrKSB7CisgICAgdmFyIGFy
cmF5ID0gWzAsMSwyLDMsNCw1XTsKKyAgICB2YXIgaXRlcmF0b3IgPSBhcnJheVtTeW1ib2wuaXRl
cmF0b3JdKCk7CisgICAgaXRlcmF0b3IucmV0dXJuID0gZnVuY3Rpb24gKCkgeworICAgICAgICBp
dGVyYXRvci5yZXR1cm5lZCA9IHRydWU7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAg
ICAgIHJldHVybiBjYWxsYmFjayh0aGlzKTsKKyAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwg
dmFsdWU6IHVuZGVmaW5lZCB9OworICAgIH07CisgICAgaXRlcmF0b3IucmV0dXJuZWQgPSBmYWxz
ZTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9CisKKyhmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZh
ciBvdXRlckl0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3IoKTsKKyAgICB2YXIgaW5uZXJJdGVyYXRv
ciA9IGNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgb3V0ZXI6IGZvciAodmFyIGUxIG9mIG91dGVySXRl
cmF0b3IpIHsKKyAgICAgICAgaW5uZXI6IGZvciAodmFyIGUyIG9mIGlubmVySXRlcmF0b3IpIHsK
KyAgICAgICAgICAgIGJyZWFrIG91dGVyOworICAgICAgICB9CisgICAgfQorICAgIGlmICghaW5u
ZXJJdGVyYXRvci5yZXR1cm5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWU6
ICIgKyBpbm5lckl0ZXJhdG9yLnJldHVybmVkKTsKKyAgICBpZiAoIW91dGVySXRlcmF0b3IucmV0
dXJuZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgb3V0ZXJJdGVy
YXRvci5yZXR1cm5lZCk7Cit9KCkpOworCisoZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgb3V0
ZXJJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgdmFyIGlubmVySXRlcmF0b3IgPSBj
cmVhdGVJdGVyYXRvcigpOworICAgIG91dGVyOiBmb3IgKHZhciBlMSBvZiBvdXRlckl0ZXJhdG9y
KSB7CisgICAgICAgIGlubmVyOiBmb3IgKHZhciBlMiBvZiBpbm5lckl0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBicmVhayBpbm5lcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWlubmVySXRl
cmF0b3IucmV0dXJuZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsg
aW5uZXJJdGVyYXRvci5yZXR1cm5lZCk7CisgICAgaWYgKG91dGVySXRlcmF0b3IucmV0dXJuZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgb3V0ZXJJdGVyYXRvci5y
ZXR1cm5lZCk7Cit9KCkpOworCisoZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgb3V0ZXJJdGVy
YXRvciA9IGNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgdmFyIGlubmVySXRlcmF0b3IgPSBjcmVhdGVJ
dGVyYXRvcigpOworICAgIG91dGVyOiBmb3IgKHZhciBlMSBvZiBvdXRlckl0ZXJhdG9yKSB7Cisg
ICAgICAgIGlubmVyOiBmb3IgKHZhciBlMiBvZiBpbm5lckl0ZXJhdG9yKSB7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWlubmVySXRlcmF0b3IucmV0dXJu
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgaW5uZXJJdGVyYXRv
ci5yZXR1cm5lZCk7CisgICAgaWYgKG91dGVySXRlcmF0b3IucmV0dXJuZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgb3V0ZXJJdGVyYXRvci5yZXR1cm5lZCk7Cit9
KCkpOworCisKKyhmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBvdXRlckl0ZXJhdG9yID0gY3Jl
YXRlSXRlcmF0b3IoKTsKKyAgICB2YXIgaW5uZXJJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yKCk7
CisgICAgb3V0ZXI6IGZvciAodmFyIGUxIG9mIG91dGVySXRlcmF0b3IpIHsKKyAgICAgICAgaW5u
ZXI6IGZvciAodmFyIGUyIG9mIGlubmVySXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgfQorICAgIGlmIChpbm5lckl0ZXJhdG9yLnJldHVybmVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZTogIiArIGlubmVySXRlcmF0b3IucmV0dXJu
ZWQpOworICAgIGlmIChvdXRlckl0ZXJhdG9yLnJldHVybmVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImJhZCB2YWx1ZTogIiArIG91dGVySXRlcmF0b3IucmV0dXJuZWQpOworfSgpKTsKKwor
KGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIG91dGVySXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRv
cigpOworICAgIHZhciBpbm5lckl0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3IoKTsKKyAgICBvdXRl
cjogZm9yICh2YXIgZTEgb2Ygb3V0ZXJJdGVyYXRvcikgeworICAgICAgICBpbm5lcjogZm9yICh2
YXIgZTIgb2YgaW5uZXJJdGVyYXRvcikgeworICAgICAgICAgICAgY29udGludWUgaW5uZXI7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgaWYgKGlubmVySXRlcmF0b3IucmV0dXJuZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgaW5uZXJJdGVyYXRvci5yZXR1cm5lZCk7
CisgICAgaWYgKG91dGVySXRlcmF0b3IucmV0dXJuZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiYmFkIHZhbHVlOiAiICsgb3V0ZXJJdGVyYXRvci5yZXR1cm5lZCk7Cit9KCkpOworCisoZnVu
Y3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgb3V0ZXJJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yKCk7
CisgICAgdmFyIGlubmVySXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvcigpOworICAgIG91dGVyOiBm
b3IgKHZhciBlMSBvZiBvdXRlckl0ZXJhdG9yKSB7CisgICAgICAgIGlubmVyOiBmb3IgKHZhciBl
MiBvZiBpbm5lckl0ZXJhdG9yKSB7CisgICAgICAgICAgICBjb250aW51ZSBvdXRlcjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBpZiAoIWlubmVySXRlcmF0b3IucmV0dXJuZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgaW5uZXJJdGVyYXRvci5yZXR1cm5lZCk7Cisg
ICAgaWYgKG91dGVySXRlcmF0b3IucmV0dXJuZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YmFkIHZhbHVlOiAiICsgb3V0ZXJJdGVyYXRvci5yZXR1cm5lZCk7Cit9KCkpOworCisoZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICB2YXIgb3V0ZXJJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yKCk7Cisg
ICAgdmFyIGlubmVySXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvcigpOworICAgIChmdW5jdGlvbiAo
KSB7CisgICAgICAgIG91dGVyOiBmb3IgKHZhciBlMSBvZiBvdXRlckl0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBpbm5lcjogZm9yICh2YXIgZTIgb2YgaW5uZXJJdGVyYXRvcikgeworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0oKSk7CisgICAg
aWYgKCFpbm5lckl0ZXJhdG9yLnJldHVybmVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJh
ZCB2YWx1ZTogIiArIGlubmVySXRlcmF0b3IucmV0dXJuZWQpOworICAgIGlmICghb3V0ZXJJdGVy
YXRvci5yZXR1cm5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWU6ICIgKyBv
dXRlckl0ZXJhdG9yLnJldHVybmVkKTsKK30oKSk7CisKKyhmdW5jdGlvbiB0ZXN0KCkgeworICAg
IHZhciBvdXRlckl0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3IoKTsKKyAgICB2YXIgaW5uZXJJdGVy
YXRvciA9IGNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgb3V0
ZXI6IGZvciAodmFyIGUxIG9mIG91dGVySXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlubmVyOiBm
b3IgKHZhciBlMiBvZiBpbm5lckl0ZXJhdG9yKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9KCkpOworICAgIGlmIChpbm5lckl0ZXJhdG9yLnJl
dHVybmVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZTogIiArIGlubmVySXRl
cmF0b3IucmV0dXJuZWQpOworICAgIGlmICghb3V0ZXJJdGVyYXRvci5yZXR1cm5lZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWU6ICIgKyBvdXRlckl0ZXJhdG9yLnJldHVybmVk
KTsKK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3BzZXVkby1hcnJheS1sZW5ndGgtc2hvcnRlbi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvcHNldWRvLWFycmF5LWxlbmd0aC1zaG9ydGVuLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYy
NTg0MmYwNWM2M2I3ZDY5NGEwYzJiZjI5ODhmNzM4ODJjYzU1ZmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3BzZXVkby1hcnJheS1sZW5ndGgt
c2hvcnRlbi5qcwpAQCAtMCwwICsxLDEyMSBAQAorCitmdW5jdGlvbiB0ZXN0TGVuZ3RoU2hvcnRl
bmluZyhhcnJheSkgeworICAgIHZhciBjb3VudCA9IDA7CisgICAgYXJyYXkubGVuZ3RoID0gMTsK
KyAgICBmb3IgKHZhciB4IG9mIGFycmF5KSB7CisgICAgICAgIGNvdW50Kys7CisgICAgfQorICAg
IGlmIChjb3VudCAhPT0gMSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUgIiAr
IGNvdW50KTsKKyAgICBpZiAoYXJyYXkubGVuZ3RoICE9PSAxKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImJhZCB2YWx1ZSAiICsgY291bnQpOworfQorCisvLyBUZXN0IE9iamVjdHMgd2l0aCBk
ZW5zZWx5IHBhY2tlZCBpbmRleGVkIHByb3BlcnRpZXM6CitmdW5jdGlvbiBkZW5zZUludDMyRWxl
bWVudHMoYXJyKSB7CisgICAgYXJyWzBdID0gMTsKKyAgICBhcnJbMV0gPSAyOworICAgIHJldHVy
biBhcnI7Cit9Cit0ZXN0TGVuZ3RoU2hvcnRlbmluZyhkZW5zZUludDMyRWxlbWVudHMoT2JqZWN0
LmNyZWF0ZShBcnJheS5wcm90b3R5cGUpKSk7Cit0ZXN0TGVuZ3RoU2hvcnRlbmluZyhkZW5zZUlu
dDMyRWxlbWVudHMoW10pKTsKKworZnVuY3Rpb24gZGVuc2VEb3VibGVFbGVtZW50cyhhcnIpIHsK
KyAgICBhcnJbMF0gPSAxLjU7CisgICAgYXJyWzFdID0gMi41OworICAgIHJldHVybiBhcnI7Cit9
Cit0ZXN0TGVuZ3RoU2hvcnRlbmluZyhkZW5zZURvdWJsZUVsZW1lbnRzKE9iamVjdC5jcmVhdGUo
QXJyYXkucHJvdG90eXBlKSkpOwordGVzdExlbmd0aFNob3J0ZW5pbmcoZGVuc2VEb3VibGVFbGVt
ZW50cyhbXSkpOworCitmdW5jdGlvbiBkZW5zZU9iamVjdEVsZW1lbnRzKGFycikgeworICAgIGFy
clswXSA9IHt9OworICAgIGFyclsxXSA9IHt9OworICAgIHJldHVybiBhcnI7Cit9Cit0ZXN0TGVu
Z3RoU2hvcnRlbmluZyhkZW5zZU9iamVjdEVsZW1lbnRzKE9iamVjdC5jcmVhdGUoQXJyYXkucHJv
dG90eXBlKSkpOwordGVzdExlbmd0aFNob3J0ZW5pbmcoZGVuc2VPYmplY3RFbGVtZW50cyhbXSkp
OworCisvLyBUZXN0IE9iamVjdHMgd2l0aCBob2xlLXkgaW5kZXhlZCBwcm9wZXJ0aWVzOgorZnVu
Y3Rpb24gaG9sZXlJbnQzMkVsZW1lbnRzKGFycikgeworICAgIGFyclswXSA9IDE7CisgICAgYXJy
WzFdID0gMjsKKyAgICBhcnJbNF0gPSA0OworICAgIHJldHVybiBhcnI7Cit9Cit0ZXN0TGVuZ3Ro
U2hvcnRlbmluZyhob2xleUludDMyRWxlbWVudHMoT2JqZWN0LmNyZWF0ZShBcnJheS5wcm90b3R5
cGUpKSk7Cit0ZXN0TGVuZ3RoU2hvcnRlbmluZyhob2xleUludDMyRWxlbWVudHMoW10pKTsKKwor
ZnVuY3Rpb24gaG9sZXlEb3VibGVFbGVtZW50cyhhcnIpIHsKKyAgICBhcnJbMF0gPSAxLjU7Cisg
ICAgYXJyWzFdID0gMi41OworICAgIGFycls0XSA9IDQuNTsKKyAgICByZXR1cm4gYXJyOworfQor
dGVzdExlbmd0aFNob3J0ZW5pbmcoaG9sZXlEb3VibGVFbGVtZW50cyhPYmplY3QuY3JlYXRlKEFy
cmF5LnByb3RvdHlwZSkpKTsKK3Rlc3RMZW5ndGhTaG9ydGVuaW5nKGhvbGV5RG91YmxlRWxlbWVu
dHMoW10pKTsKKworZnVuY3Rpb24gaG9sZXlPYmplY3RFbGVtZW50cyhhcnIpIHsKKyAgICBhcnJb
MF0gPSB7fTsKKyAgICBhcnJbMV0gPSB7fTsKKyAgICBhcnJbNF0gPSB7fTsKKyAgICByZXR1cm4g
YXJyOworfQordGVzdExlbmd0aFNob3J0ZW5pbmcoaG9sZXlPYmplY3RFbGVtZW50cyhPYmplY3Qu
Y3JlYXRlKEFycmF5LnByb3RvdHlwZSkpKTsKK3Rlc3RMZW5ndGhTaG9ydGVuaW5nKGhvbGV5T2Jq
ZWN0RWxlbWVudHMoW10pKTsKKworLy8gVGVzdCBPYmplY3RzIHdpdGggQXJyYXlTdG9yYWdlIGlu
ZGV4ZWQgcHJvcGVydGllczoKK2Z1bmN0aW9uIGFycmF5U3RvcmFnZUludDMyRWxlbWVudHMoYXJy
KSB7CisgICAgYXJyWzBdID0gMTsKKyAgICBhcnJbMV0gPSAyOworICAgIGFyci51bnNoaWZ0KDEw
MCk7IC8vIEZvcmNlIGNvbnZlcnNpb24gdG8gdXNpbmcgQXJyYXlTdG9yYWdlLgorICAgIHJldHVy
biBhcnI7Cit9Cit0ZXN0TGVuZ3RoU2hvcnRlbmluZyhhcnJheVN0b3JhZ2VJbnQzMkVsZW1lbnRz
KE9iamVjdC5jcmVhdGUoQXJyYXkucHJvdG90eXBlKSkpOwordGVzdExlbmd0aFNob3J0ZW5pbmco
YXJyYXlTdG9yYWdlSW50MzJFbGVtZW50cyhbXSkpOworCitmdW5jdGlvbiBhcnJheVN0b3JhZ2VE
b3VibGVFbGVtZW50cyhhcnIpIHsKKyAgICBhcnJbMF0gPSAxLjU7CisgICAgYXJyWzFdID0gMi41
OworICAgIGFyci51bnNoaWZ0KDEwMC41KTsgLy8gRm9yY2UgY29udmVyc2lvbiB0byB1c2luZyBB
cnJheVN0b3JhZ2UuCisgICAgcmV0dXJuIGFycjsKK30KK3Rlc3RMZW5ndGhTaG9ydGVuaW5nKGFy
cmF5U3RvcmFnZURvdWJsZUVsZW1lbnRzKE9iamVjdC5jcmVhdGUoQXJyYXkucHJvdG90eXBlKSkp
OwordGVzdExlbmd0aFNob3J0ZW5pbmcoYXJyYXlTdG9yYWdlRG91YmxlRWxlbWVudHMoW10pKTsK
KworZnVuY3Rpb24gYXJyYXlTdG9yYWdlT2JqZWN0RWxlbWVudHMoYXJyKSB7CisgICAgYXJyWzBd
ID0ge307CisgICAgYXJyWzFdID0ge307CisgICAgYXJyLnVuc2hpZnQoe30pOyAvLyBGb3JjZSBj
b252ZXJzaW9uIHRvIHVzaW5nIEFycmF5U3RvcmFnZS4KKyAgICByZXR1cm4gYXJyOworfQordGVz
dExlbmd0aFNob3J0ZW5pbmcoYXJyYXlTdG9yYWdlT2JqZWN0RWxlbWVudHMoT2JqZWN0LmNyZWF0
ZShBcnJheS5wcm90b3R5cGUpKSk7Cit0ZXN0TGVuZ3RoU2hvcnRlbmluZyhhcnJheVN0b3JhZ2VP
YmplY3RFbGVtZW50cyhbXSkpOworCisvLyBUZXN0IE9iamVjdHMgd2l0aCBzcGFyc2UgaW5kZXhl
ZCBwcm9wZXJ0aWVzOgorZnVuY3Rpb24gc3BhcnNlSW50MzJFbGVtZW50cyhhcnIpIHsKKyAgICBh
cnJbMF0gPSAxOworICAgIGFyclsxXSA9IDI7CisgICAgYXJyWzEwMDAwMF0gPSAxMDA7CisgICAg
cmV0dXJuIGFycjsKK30KK3Rlc3RMZW5ndGhTaG9ydGVuaW5nKHNwYXJzZUludDMyRWxlbWVudHMo
T2JqZWN0LmNyZWF0ZShBcnJheS5wcm90b3R5cGUpKSk7Cit0ZXN0TGVuZ3RoU2hvcnRlbmluZyhz
cGFyc2VJbnQzMkVsZW1lbnRzKFtdKSk7CisKK2Z1bmN0aW9uIHNwYXJzZURvdWJsZUVsZW1lbnRz
KGFycikgeworICAgIGFyclswXSA9IDEuNTsKKyAgICBhcnJbMV0gPSAyLjU7CisgICAgYXJyWzEw
MDAwMF0gPSAxMDAuNTsKKyAgICByZXR1cm4gYXJyOworfQordGVzdExlbmd0aFNob3J0ZW5pbmco
c3BhcnNlRG91YmxlRWxlbWVudHMoT2JqZWN0LmNyZWF0ZShBcnJheS5wcm90b3R5cGUpKSk7Cit0
ZXN0TGVuZ3RoU2hvcnRlbmluZyhzcGFyc2VEb3VibGVFbGVtZW50cyhbXSkpOworCitmdW5jdGlv
biBzcGFyc2VPYmplY3RFbGVtZW50cyhhcnIpIHsKKyAgICBhcnJbMF0gPSB7fTsKKyAgICBhcnJb
MV0gPSB7fTsKKyAgICBhcnJbMTAwMDAwXSA9IHt9OworICAgIHJldHVybiBhcnI7Cit9Cit0ZXN0
TGVuZ3RoU2hvcnRlbmluZyhzcGFyc2VPYmplY3RFbGVtZW50cyhPYmplY3QuY3JlYXRlKEFycmF5
LnByb3RvdHlwZSkpKTsKK3Rlc3RMZW5ndGhTaG9ydGVuaW5nKHNwYXJzZU9iamVjdEVsZW1lbnRz
KFtdKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jh
aXNlLWVycm9yLWluLWl0ZXJhdG9yLWNsb3NlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9yYWlzZS1lcnJvci1pbi1pdGVyYXRvci1jbG9zZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OGY2ZTg2MDRlMWM1ODdiZjIwN2YyZjVlOGI1YTllMTEyZTEyYTgxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yYWlzZS1lcnJvci1pbi1pdGVy
YXRvci1jbG9zZS5qcwpAQCAtMCwwICsxLDExOCBAQAorCitmdW5jdGlvbiBjcmVhdGVJdGVyYXRv
cihjYWxsYmFjaykgeworICAgIHZhciBhcnJheSA9IFswLDEsMiwzLDQsNV07CisgICAgdmFyIGl0
ZXJhdG9yID0gYXJyYXlbU3ltYm9sLml0ZXJhdG9yXSgpOworICAgIGl0ZXJhdG9yLnJldHVybiA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXRlcmF0b3IucmV0dXJuZWQgPSB0cnVlOworICAgICAg
ICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodGhpcyk7CisgICAg
ICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfTsKKyAgICB9OworICAg
IGl0ZXJhdG9yLnJldHVybmVkID0gZmFsc2U7CisgICAgcmV0dXJuIGl0ZXJhdG9yOworfQorCiso
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgb3V0ZXJJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9y
KCk7CisgICAgdmFyIGlubmVySXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvcihmdW5jdGlvbiAoKSB7
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW5uZXIgcmV0dXJuIGNhbGxlZC4iKTsKKyAgICB9
KTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIG91dGVyOiBmb3Ig
KHZhciBlMSBvZiBvdXRlckl0ZXJhdG9yKSB7CisgICAgICAgICAgICBpbm5lcjogZm9yICh2YXIg
ZTIgb2YgaW5uZXJJdGVyYXRvcikgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibm8gZXJyb3Ii
KTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gIkVycm9yOiBJbm5lciByZXR1cm4gY2FsbGVk
LiIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9y
KSk7CisgICAgaWYgKCFpbm5lckl0ZXJhdG9yLnJldHVybmVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImJhZCB2YWx1ZTogIiArIGlubmVySXRlcmF0b3IucmV0dXJuZWQpOworICAgIGlmICgh
b3V0ZXJJdGVyYXRvci5yZXR1cm5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFs
dWU6ICIgKyBvdXRlckl0ZXJhdG9yLnJldHVybmVkKTsKK30oKSk7CisKKyhmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHZhciBvdXRlckl0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3IoZnVuY3Rpb24gKCkg
eworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk91dGVyIHJldHVybiBjYWxsZWQuIik7CisgICAg
fSk7CisgICAgdmFyIGlubmVySXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvcihmdW5jdGlvbiAoKSB7
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW5uZXIgcmV0dXJuIGNhbGxlZC4iKTsKKyAgICB9
KTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIG91dGVyOiBmb3Ig
KHZhciBlMSBvZiBvdXRlckl0ZXJhdG9yKSB7CisgICAgICAgICAgICBpbm5lcjogZm9yICh2YXIg
ZTIgb2YgaW5uZXJJdGVyYXRvcikgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibm8gZXJyb3Ii
KTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gIkVycm9yOiBJbm5lciByZXR1cm4gY2FsbGVk
LiIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9y
KSk7CisgICAgaWYgKCFpbm5lckl0ZXJhdG9yLnJldHVybmVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImJhZCB2YWx1ZTogIiArIGlubmVySXRlcmF0b3IucmV0dXJuZWQpOworICAgIGlmICgh
b3V0ZXJJdGVyYXRvci5yZXR1cm5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFs
dWU6ICIgKyBvdXRlckl0ZXJhdG9yLnJldHVybmVkKTsKK30oKSk7CisKKyhmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHZhciBvdXRlckl0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3IoZnVuY3Rpb24gKCkg
eworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk91dGVyIHJldHVybiBjYWxsZWQuIik7CisgICAg
fSk7CisgICAgdmFyIGlubmVySXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvcigpOworICAgIHZhciBl
cnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgb3V0ZXI6IGZvciAodmFyIGUxIG9mIG91
dGVySXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlubmVyOiBmb3IgKHZhciBlMiBvZiBpbm5lckl0
ZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgYnJlYWsgb3V0ZXI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJubyBlcnJvciIpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSAiRXJyb3I6IE91dGVyIHJldHVybiBjYWxsZWQuIikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKKyAg
ICBpZiAoIWlubmVySXRlcmF0b3IucmV0dXJuZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YmFkIHZhbHVlOiAiICsgaW5uZXJJdGVyYXRvci5yZXR1cm5lZCk7CisgICAgaWYgKCFvdXRlckl0
ZXJhdG9yLnJldHVybmVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZTogIiAr
IG91dGVySXRlcmF0b3IucmV0dXJuZWQpOworfSgpKTsKKworKGZ1bmN0aW9uIHRlc3QoKSB7Cisg
ICAgdmFyIG91dGVySXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvcihmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiT3V0ZXIgcmV0dXJuIGNhbGxlZC4iKTsKKyAgICB9KTsKKyAg
ICB2YXIgaW5uZXJJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJJbm5lciByZXR1cm4gY2FsbGVkLiIpOworICAgIH0pOworICAg
IHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgb3V0ZXI6IGZvciAodmFyIGUx
IG9mIG91dGVySXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGlubmVyOiBmb3IgKHZhciBlMiBvZiBp
bm5lckl0ZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJMb29wIHJh
aXNlcyBlcnJvci4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIm5vIGVycm9yIik7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09ICJF
cnJvcjogTG9vcCByYWlzZXMgZXJyb3IuIikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQg
ZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKKyAgICBpZiAoIWlubmVySXRlcmF0b3IucmV0dXJu
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlOiAiICsgaW5uZXJJdGVyYXRv
ci5yZXR1cm5lZCk7CisgICAgaWYgKCFvdXRlckl0ZXJhdG9yLnJldHVybmVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZTogIiArIG91dGVySXRlcmF0b3IucmV0dXJuZWQpOwor
fSgpKTsKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>