<?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>188641</bug_id>
          
          <creation_ts>2018-08-15 23:00:14 -0700</creation_ts>
          <short_desc>[WHLSL] Inlining should be optional</short_desc>
          <delta_ts>2018-10-13 15:32:38 -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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>189484</dependson>
          <blocked>176199</blocked>
    
    <blocked>188402</blocked>
    
    <blocked>189202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Thomas Denney">tdenney</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>tdenney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1450612</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-15 23:00:14 -0700</bug_when>
    <thetext>We should&apos;t require inlining. It should be a step that can be selectively applied, or not, and have no affect on correctness. Different code generation backends may or may not wish to invoke inlining in certain cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457127</commentid>
    <comment_count>1</comment_count>
      <attachid>349039</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-06 10:17:31 -0700</bug_when>
    <thetext>Created attachment 349039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457154</commentid>
    <comment_count>2</comment_count>
      <attachid>349039</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-06 11:09:13 -0700</bug_when>
    <thetext>Comment on attachment 349039
Patch

Can we add a test that enables inlining for a couple functions to make sure it doesn&apos;t break?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457195</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-06 12:54:07 -0700</bug_when>
    <thetext>visitCallExpression(node) in Evaluator has a comment:

        // We evaluate inlined ASTs, so this can only be a native call.

This seems to be false now.

Also callFunction() still calls resolveInlinedFunction(), which seems either wrong or poorly named.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457196</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-06 12:54:48 -0700</bug_when>
    <thetext>Why does resolveInlinedFunction() call _inlineFunction()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458300</commentid>
    <comment_count>5</comment_count>
      <attachid>349352</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-10 16:19:37 -0700</bug_when>
    <thetext>Created attachment 349352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458302</commentid>
    <comment_count>6</comment_count>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-10 16:22:43 -0700</bug_when>
    <thetext>*** Bug 189326 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458310</commentid>
    <comment_count>7</comment_count>
      <attachid>349352</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-10 16:35:47 -0700</bug_when>
    <thetext>Comment on attachment 349352
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=349352&amp;action=review

&gt; Tools/WebGPUShadingLanguageRI/CallFunction.js:31
&gt; +    let overload = program.globalNameContext.resolveFuncOverload(name, argumentTypes, null, true);

Cool.

&gt; Tools/WebGPUShadingLanguageRI/Evaluator.js:40
&gt; +        // This only occurs when a function returns void.

Comments should state &quot;why,&quot; not &quot;what.&quot; I recommend deleting this.

&gt; Tools/WebGPUShadingLanguageRI/Inline.js:39
&gt;      func.rewrite(new Inliner(program, func, visiting));

We should make sure we never inline entry points. Do we have a test for that?

&gt; Tools/WebGPUShadingLanguageRI/Test.js:7646
&gt; +tests.evaluationOrderForArguments = () =&gt; {

Can we add some tests that do some inlining?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458320</commentid>
    <comment_count>8</comment_count>
      <attachid>349357</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-10 17:01:34 -0700</bug_when>
    <thetext>Created attachment 349357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458353</commentid>
    <comment_count>9</comment_count>
      <attachid>349357</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-10 18:25:20 -0700</bug_when>
    <thetext>Comment on attachment 349357
Patch

Clearing flags on attachment: 349357

Committed r235879: &lt;https://trac.webkit.org/changeset/235879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458354</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-10 18:25:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458355</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-10 18:26:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/44326053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462215</commentid>
    <comment_count>12</comment_count>
      <attachid>349357</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-21 18:33:22 -0700</bug_when>
    <thetext>Comment on attachment 349357
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=349357&amp;action=review

&gt; Tools/WebGPUShadingLanguageRI/LateCheckAndLayoutBuffers.js:36
&gt; +    for (let funcList of program.functions.values()) {
&gt; +        for (let func of funcList) {
&gt; +            if (func.isNative)
&gt; +                continue;
&gt; +            func.visit(new LateChecker());
&gt; +            func.visit(new EBufferBuilder());
&gt; +        }
&gt; +    }

Why do we have to alternate between LateChecker() and EBufferBuilder()? Why can&apos;t we separate these out into two separate calls in Prepare()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468897</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 15:32:38 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/98</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349039</attachid>
            <date>2018-09-06 10:17:31 -0700</date>
            <delta_ts>2018-09-10 16:19:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188641-20180906101730.patch</filename>
            <type>text/plain</type>
            <size>7563</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWExZTIxNjQ0OTQ1MWJiNDM2ZDFkNzMzMDBmMmRmOWUx
MTYxNjc2YS4uMDdlMWUyMmU1NTQ4MmViNGQwMTlmNTZhYjcwODNkZjc5ZWZkMjAyMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE4LTA5LTA2ICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dITFNMXSBJbmxpbmluZyBzaG91bGQgYmUgb3B0aW9uYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElubGluaW5nIGNhbiBub3cgYmUgY29u
ZmlndXJlZCB2aWEgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRvIHByZXBhcmUuCisgICAgICAgIElu
bGluaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGJ1dCBzb21lIGxhdGUgY2hlY2tzIHRoYXQg
cHJldmlvdXNseQorICAgICAgICBoYXBwZW5lZCBhcyBwYXJ0IGlubGluaW5nIGFyZSBhbHdheXMg
cGVyZm9ybWVkLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOiBB
ZGQgTGF0ZUNoZWNrZXJBbmRMYXlvdXRCdWZmZXIuanMKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9JbmxpbmUuanM6CisgICAgICAgIChfaW5saW5lRnVuY3Rpb24pOiBGYWN0b3Jl
ZCBvdXQgY29tcHVsc29yeSBzdGFnZXMsIHJlbW92ZWQKKyAgICAgICAgU3RydWN0TGF5b3V0QnVp
bGRlciBiZWNhdXNlIHRoaXMgaXMgYWxyZWFkeSBkb25lIGluIHByZXBhcmUuCisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qczogRGl0
dG8uCisgICAgICAgIChsYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJzKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzOgorICAgICAgICAobGV0LnByZXBhcmUpOiBB
ZGQgb3B0aW9uYWwgcGFyYW1ldGVyIGZvciBpbmxpbmluZywgZGlzYWJsZWQgYnkgZGVmYXVsdC4K
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sOiBBZGQgTGF0ZUNo
ZWNrZXJBbmRMYXlvdXRCdWZmZXIuanMKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0Lmh0bWw6IERpdHRvLgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2lu
ZGV4Lmh0bWw6IERpdHRvLgorCiAyMDE4LTA5LTA2ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBUaGUgcGFyc2VyIGlzIHRvbyBzbG93
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggMGE1ODg1MTYxYTQwM2QwOWFl
YWExZmU1ZTEwNDNhZGZlNjEyNTY1Zi4uM2MyYzQ4NzQyMDAxMTE1YTE3MTM0ODNhMWYyM2NlMjg2
NjhiYjljNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtMTAyLDYgKzEw
Miw3IEBAIGxvYWQoIklubGluZXIuanMiKTsKIGxvYWQoIkludExpdGVyYWwuanMiKTsKIGxvYWQo
IkludExpdGVyYWxUeXBlLmpzIik7CiBsb2FkKCJJbnRyaW5zaWNzLmpzIik7Citsb2FkKCJMYXRl
Q2hlY2tBbmRMYXlvdXRCdWZmZXJzLmpzIik7CiBsb2FkKCJMYXRlQ2hlY2tlci5qcyIpOwogbG9h
ZCgiTGV4ZXIuanMiKTsKIGxvYWQoIkxleGVyVG9rZW4uanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0lubGluZS5qcwppbmRleCA4YmE5YWQ3NGU3YzJhNzAzNjcyMjUyMTQ3MTlhNjFm
YjdmYmZhM2M1Li41ZTlmODFkZDFiNTE4NzFmZDdjNzE1NTM1NThjOWNiNzZkZTBiMDFiIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5lLmpzCkBAIC0zNiwxNiArMzYsNyBAQCBm
dW5jdGlvbiBfaW5saW5lRnVuY3Rpb24ocHJvZ3JhbSwgZnVuYywgdmlzaXRpbmcpCiB7CiAgICAg
aWYgKGZ1bmMuaW5saW5lZCB8fCBmdW5jLmlzTmF0aXZlKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgZnVuYy52aXNpdChuZXcgTGF0ZUNoZWNrZXIoKSk7Ci0gICAgCi0gICAgLy8gVGhpcyBp
cyB0aGUgcHJlY2lzZSB0aW1lIHdoZW4gd2UgY2FuIGJ1aWxkIEVCdWZmZXJzIGluIG9yZGVyIHRv
IGdldCB0aGVtIHRvIGJlIHVuaXF1ZWQgYnkKLSAgICAvLyB0eXBlIGluc3RhbnRpYXRpb24gYnV0
IG5vdGhpbmcgZWxzZS4KLSAgICBmdW5jLnZpc2l0KG5ldyBTdHJ1Y3RMYXlvdXRCdWlsZGVyKCkp
OwotICAgIGZ1bmMudmlzaXQobmV3IEVCdWZmZXJCdWlsZGVyKHByb2dyYW0pKTsKLSAgICAKICAg
ICBmdW5jLnJld3JpdGUobmV3IElubGluZXIocHJvZ3JhbSwgZnVuYywgdmlzaXRpbmcpKTsKLQog
ICAgIGZ1bmMuaW5saW5lZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja0FuZExheW91dEJ1ZmZlcnMuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY1YjM1YmI4MGUxNGQxNmUyNjAzMWE3MGFmMWM5YzM4NmIwNWM2NDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tBbmRMYXlvdXRC
dWZmZXJzLmpzCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBsYXRlQ2hlY2tBbmRMYXlv
dXRCdWZmZXJzKHByb2dyYW0pCit7CisgICAgZm9yIChsZXQgZnVuY0xpc3Qgb2YgcHJvZ3JhbS5m
dW5jdGlvbnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jTGlzdCkg
eworICAgICAgICAgICAgaWYgKGZ1bmMuaXNOYXRpdmUpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBmdW5jLnZpc2l0KG5ldyBMYXRlQ2hlY2tlcigpKTsKKyAgICAgICAg
ICAgIGZ1bmMudmlzaXQobmV3IEVCdWZmZXJCdWlsZGVyKCkpOworICAgICAgICB9CisgICAgfQor
fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9QcmVwYXJlLmpzCmluZGV4IDgzNDU5MmQzNmYzNDU3ZGZhODZiNTc1MWJiNzI2MjQ3MmEzZjBh
MmQuLjY2NDRlMmNmNWViYWIyYWRmNDlkZWY4MTg5MGI0Mzc2ZGFiYmEzMzQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwpAQCAtMjYsNyArMjYsNyBAQAogCiBsZXQg
cHJlcGFyZSA9ICgoKSA9PiB7CiAgICAgbGV0IHN0YW5kYXJkUHJvZ3JhbTsKLSAgICByZXR1cm4g
ZnVuY3Rpb24ob3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KSB7CisgICAgcmV0dXJuIGZ1
bmN0aW9uKG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCwgc2hvdWxkSW5saW5lID0gZmFs
c2UpIHsKICAgICAgICAgaWYgKCFzdGFuZGFyZFByb2dyYW0pIHsKICAgICAgICAgICAgIHN0YW5k
YXJkUHJvZ3JhbSA9IG5ldyBQcm9ncmFtKCk7CiAgICAgICAgICAgICBsZXQgZmlyc3RMaW5lT2ZT
dGFuZGFyZExpYnJhcnkgPSAyODsgLy8gU2VlIFN0YW5kYXJkTGlicmFyeS5qcy4KQEAgLTY4LDcg
KzY4LDkgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgICAgICBjaGVja1R5cGVzV2l0aEFy
Z3VtZW50cyhwcm9ncmFtKTsKICAgICAgICAgZmluZEhpZ2hab21iaWVzKHByb2dyYW0pOwogICAg
ICAgICBwcm9ncmFtLnZpc2l0KG5ldyBTdHJ1Y3RMYXlvdXRCdWlsZGVyKCkpOwotICAgICAgICBp
bmxpbmUocHJvZ3JhbSk7CisgICAgICAgIGxhdGVDaGVja0FuZExheW91dEJ1ZmZlcnMocHJvZ3Jh
bSk7CisgICAgICAgIGlmIChzaG91bGRJbmxpbmUpCisgICAgICAgICAgICBpbmxpbmUocHJvZ3Jh
bSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcHJvZ3JhbTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggODA0Y2Q5YWJkYTZkNWMzYmVjMDNi
ZTI1ODJhYTNmMjNmMDA3YTE4OC4uMGQyMzcxMDA1ZTcxMGNkYzYwZjAzM2RhNWE1MTFjNDlhZTAw
NWMzNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRt
bAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBAIC04NSw2
ICs4NSw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iSW50TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iSW50cmluc2ljcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkxhdGVD
aGVja0FuZExheW91dEJ1ZmZlcnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMYXRl
Q2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkxleGVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTGV4ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggZjVlYTNkOTAxOThkY2RiODcxMzFmOTJj
MjUwYzc0MzMwNGI2NmFjMC4uYzEyZTVkOTlkYzc0YTZmMTkwMWM5NWRmOTFkMzRhMDVhZTg1NWUx
YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbApAQCAtODAsNiArODAs
NyBAQAogPHNjcmlwdCBzcmM9IkludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJJbnRyaW5zaWNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMYXRlQ2hlY2tlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGV4ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tl
ci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApp
bmRleCBkZmM5MGM0YzIzOTQzOTU0NTg4NjVjNGE4ZDY1NDg2ODcwYzI2MjM0Li4yNDQxNWYzM2Ex
NzA5YjJlMGU2ZDViZWNlNjdhYTg5NTMwNmI4OWJlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL2luZGV4Lmh0bWwKQEAgLTc5LDYgKzc5LDcgQEAKIDxzY3JpcHQgc3JjPSJJbnRMaXRl
cmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJJbnRMaXRlcmFsVHlwZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iSW50cmluc2ljcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
TGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGF0
ZUNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJMZXhlclRva2VuLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349352</attachid>
            <date>2018-09-10 16:19:37 -0700</date>
            <delta_ts>2018-09-10 17:01:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188641-20180910161936.patch</filename>
            <type>text/plain</type>
            <size>15341</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzUzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2RmYzE1NzRjMjUyZjRjZTQ4ODUyYmNlNThkYjdkZmZm
OWVlMzBmOS4uYTk4NGE4N2MxOWU3NzQ5NzAzM2RhZTY1MWU3NzI1NmQxYzM0ZDQyMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDE4LTA5LTEwICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dITFNMXSBJbmxpbmluZyBzaG91bGQgYmUgb3B0aW9uYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElubGluaW5nIGZ1bmN0aW9ucyBpcyBu
b3cgb3B0aW9uYWwsIGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0LiBUaGlzIHBhdGNoCisgICAgICAg
IGFkZGl0aW9uYWxseSByZXNvbHZlcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5MzI2IGFzCisgICAgICAgIHRoZSBjb2RlIGZvciBjYWxsaW5nIGZ1bmN0aW9ucyB3
YXMgY29tcGxldGVseSByZXdyaXR0ZW4uCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9BbGwuanM6IEFkZCBMYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJzLmpzCisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzOgorICAgICAgICAoY2FsbEZ1
bmN0aW9uKTogUmVtb3ZlIGRlcGVuZGVuY3kgb24gaW5saW5pbmcuCisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzOgorICAgICAgICAoRXZhbHVhdG9yLnByb3Rv
dHlwZS5fc25hcHNob3QpOiBBbGxvdyBudWxsIHNyY1B0ciBpbiB0aGUgY2FzZSBvZiB2b2lkCisg
ICAgICAgIHJldHVybnMgZnJvbSBmdW5jdGlvbnMuCisgICAgICAgIChFdmFsdWF0b3IucHJvdG90
eXBlLl9ldmFsdWF0ZUFyZ3VtZW50cyk6IEFic3RyYWN0IG91dCBhcmd1bWVudAorICAgICAgICBl
dmFsdWF0aW9uLCBlbnN1cmluZyB0aGF0IHRoZSBvcmRlciBpcyByaWdodC10by1sZWZ0IGZvcgor
ICAgICAgICBGdW5jdGlvbkxpa2VCbG9ja3MgKGkuZS4gaW5saW5lZCBmdW5jdGlvbnMpIGFuZCBy
ZWd1bGFyIGNhbGxzLgorICAgICAgICAoRXZhbHVhdG9yLnByb3RvdHlwZS5fZXZhbHVhdGVGdW5j
dGlvbik6IEFic3RyYWN0ZWQgb3V0IGZ1bmN0aW9uIGJvZHkKKyAgICAgICAgZXZhbHVhdGlvbiBm
b3IgaW5saW5lZCBhbmQgbm9uLWlubGluZWQgZnVuY3Rpb25zLgorICAgICAgICAoRXZhbHVhdG9y
LnByb3RvdHlwZS52aXNpdEZ1bmN0aW9uTGlrZUJsb2NrKTogRGl0dG8uCisgICAgICAgIChFdmFs
dWF0b3IucHJvdG90eXBlLnZpc2l0Q2FsbEV4cHJlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanM6CisgICAgICAgIChfaW5saW5lRnVuY3Rp
b24pOiBNb3ZlZCBsb2dpYyB0aGF0IGlzIG5lZWRlZCByZWdhcmRsZXNzIG9mIGlubGluaW5nCisg
ICAgICAgIGludG8gTGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qcworICAgICAgICAocmVzb2x2
ZUlubGluZWRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qczogTW92ZWQgbG9naWMgZm9yCisgICAg
ICAgIGxhdGUgY2hlY2tpbmcuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJl
cGFyZS5qczogTWFrZSBpbmxpbmluZyBvcHRpb25hbCBhbmQgb2ZmIGJ5CisgICAgICAgIGRlZmF1
bHQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbDogVXBkYXRl
IGluY2x1ZGUuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sOiBE
aXR0by4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOiBSaWdodC10
by1sZWZ0IGV2YWx1YXRpb24gb3JkZXIgdGVzdC4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9pbmRleC5odG1sOiBVcGRhdGUgaW5jbHVkZS4KKwogMjAxOC0wOS0xMCAgRG9uIE9s
bXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIENCT1IgY29kZXJzIHNo
b3VsZCBvbmx5IGJlIGNvbXBpbGVkIGlmIFdlYkF1dGhOIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0FsbC5qcwppbmRleCAwYTU4ODUxNjFhNDAzZDA5YWVhYTFmZTVlMTA0M2Fk
ZmU2MTI1NjVmLi4zYzJjNDg3NDIwMDExMTVhMTcxMzQ4M2ExZjIzY2UyODY2OGJiOWM2IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCkBAIC0xMDIsNiArMTAyLDcgQEAgbG9hZCgi
SW5saW5lci5qcyIpOwogbG9hZCgiSW50TGl0ZXJhbC5qcyIpOwogbG9hZCgiSW50TGl0ZXJhbFR5
cGUuanMiKTsKIGxvYWQoIkludHJpbnNpY3MuanMiKTsKK2xvYWQoIkxhdGVDaGVja0FuZExheW91
dEJ1ZmZlcnMuanMiKTsKIGxvYWQoIkxhdGVDaGVja2VyLmpzIik7CiBsb2FkKCJMZXhlci5qcyIp
OwogbG9hZCgiTGV4ZXJUb2tlbi5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2FsbEZ1bmN0aW9uLmpzCmluZGV4IDdhYWYwYmEyMjQ5ZmYyN2VkODE3YzhkYzhlNzcyYzI1
ZGExYmI1ZGMuLjcyZjY3NGU3OTgwZmE4NTUwNzQ5MjU4MmFhZWQ5M2ZmYTYzMDE4Y2MgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NhbGxGdW5jdGlvbi5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DYWxsRnVuY3Rpb24uanMKQEAgLTI4LDEy
ICsyOCwxMSBAQAogZnVuY3Rpb24gY2FsbEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIGFyZ3VtZW50
TGlzdCkKIHsKICAgICBsZXQgYXJndW1lbnRUeXBlcyA9IGFyZ3VtZW50TGlzdC5tYXAoYXJndW1l
bnQgPT4gYXJndW1lbnQudHlwZSk7Ci0gICAgbGV0IGZ1bmNPckZhaWx1cmVzID0gcmVzb2x2ZUlu
bGluZWRGdW5jdGlvbihwcm9ncmFtLCBuYW1lLCBhcmd1bWVudFR5cGVzLCB0cnVlKTsKLSAgICBp
ZiAoIShmdW5jT3JGYWlsdXJlcyBpbnN0YW5jZW9mIEZ1bmMpKSB7Ci0gICAgICAgIGxldCBmYWls
dXJlcyA9IGZ1bmNPckZhaWx1cmVzOwotICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiPGNh
bGxGdW5jdGlvbj4iLCAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gY2FsbCAiICsgbmFtZSArICIo
IiArIGFyZ3VtZW50TGlzdCArICIpIiArIChmYWlsdXJlcy5sZW5ndGggPyAiOyB0cmllZDpcbiIg
KyBmYWlsdXJlcy5qb2luKCJcbiIpIDogIiIpKTsKLSAgICB9Ci0gICAgbGV0IGZ1bmMgPSBmdW5j
T3JGYWlsdXJlczsKKyAgICBsZXQgb3ZlcmxvYWQgPSBwcm9ncmFtLmdsb2JhbE5hbWVDb250ZXh0
LnJlc29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgYXJndW1lbnRUeXBlcywgbnVsbCwgdHJ1ZSk7Cisg
ICAgaWYgKCFvdmVybG9hZC5mdW5jKQorICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiPGNh
bGxGdW5jdGlvbj4iLCAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gY2FsbCAiICsgbmFtZSArICIo
IiArIGFyZ3VtZW50TGlzdCArICIpIiArIChvdmVybG9hZC5mYWlsdXJlcy5sZW5ndGggPyAiOyB0
cmllZDpcbiIgKyBvdmVybG9hZC5mYWlsdXJlcy5qb2luKCJcbiIpIDogIiIpKTsKKworICAgIGNv
bnN0IGZ1bmMgPSBvdmVybG9hZC5mdW5jOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnVuYy5w
YXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgIGxldCB0eXBlID0gYXJndW1lbnRUeXBl
c1tpXTsKICAgICAgICAgdHlwZS52aXNpdChuZXcgU3RydWN0TGF5b3V0QnVpbGRlcigpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcwppbmRleCA5MjA5ODdhZWFj
NDk0ZGU1YzM5OWQwMjBkNDYxZGNkOTIyMGI3MjZmLi5hZWM3ODk5ZGNiMGQ4N2UzYTgxZDA2MTNk
OTA2YTc5YzRiZjU0MDAwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9FdmFsdWF0b3IuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVh
dG9yLmpzCkBAIC0zNyw2ICszNyw5IEBAIGNsYXNzIEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3Ig
ewogICAgIC8vIHBvc3NpYmxlIGZvciBhIHBvaW50ZXIgcmV0dXJuZWQgZnJvbSBhIHZpc2l0IG1l
dGhvZCBpbiBydmFsdWUgY29udGV4dCB0byBsaXZlIGFjcm9zcyBhbnkgZWZmZWN0cy4KICAgICBf
c25hcHNob3QodHlwZSwgZHN0UHRyLCBzcmNQdHIpCiAgICAgeworICAgICAgICAvLyBUaGlzIG9u
bHkgb2NjdXJzIHdoZW4gYSBmdW5jdGlvbiByZXR1cm5zIHZvaWQuCisgICAgICAgIGlmICghc3Jj
UHRyKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIGxldCBzaXplID0gdHlwZS5z
aXplOwogICAgICAgICBpZiAoc2l6ZSA9PSBudWxsKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJDYW5ub3QgZ2V0IHNpemUgb2YgdHlwZTogIiArIHR5cGUgKyAiIChzaXplID0gIiArIHNp
emUgKyAiLCBjb25zdHJ1Y3RvciA9ICIgKyB0eXBlLmNvbnN0cnVjdG9yLm5hbWUgKyAiKSIpOwpA
QCAtNzEsMTYgKzc0LDM0IEBAIGNsYXNzIEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3IgewogICAg
ICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICB2aXNpdEZ1bmN0
aW9uTGlrZUJsb2NrKG5vZGUpCisKKyAgICBfZXZhbHVhdGVBcmd1bWVudHMoYXJndW1lbnRMaXN0
LCBwYXJhbWV0ZXJMaXN0KQogICAgIHsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rl
LmFyZ3VtZW50TGlzdC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbm9kZS5wYXJhbWV0ZXJz
W2ldLmVQdHIuY29weUZyb20oCi0gICAgICAgICAgICAgICAgbm9kZS5hcmd1bWVudExpc3RbaV0u
dmlzaXQodGhpcyksCi0gICAgICAgICAgICAgICAgbm9kZS5wYXJhbWV0ZXJzW2ldLnR5cGUuc2l6
ZSk7CisgICAgICAgIGNvbnN0IGNhbGxBcmd1bWVudHMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQg
aSA9IGFyZ3VtZW50TGlzdC5sZW5ndGg7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IGFyZ3Vt
ZW50ID0gYXJndW1lbnRMaXN0W2ldOworICAgICAgICAgICAgY29uc3QgdHlwZSA9IHBhcmFtZXRl
ckxpc3RbaV0udHlwZTsKKyAgICAgICAgICAgIGlmICghdHlwZSB8fCAhYXJndW1lbnQpCisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZ2V0IHR5cGUgb3IgYXJndW1lbnQ7
IGkgPSAiICsgaSArICIsIGFyZ3VtZW50ID0gIiArIGFyZ3VtZW50ICsgIiwgdHlwZSA9ICIgKyB0
eXBlKTsKKyAgICAgICAgICAgIGxldCBhcmd1bWVudFZhbHVlID0gYXJndW1lbnQudmlzaXQodGhp
cyk7CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50VmFsdWUpCisgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJOdWxsIGFyZ3VtZW50IHZhbHVlLCBpID0gIiArIGkgKyAiLCBub2RlID0g
IiArIG5vZGUpOworICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy51bnNoaWZ0KEVCdWZmZXIuYWxs
b3dBbGxvY2F0aW9uKCgpID0+IHRoaXMuX3NuYXBzaG90KHR5cGUsIG51bGwsIGFyZ3VtZW50VmFs
dWUpKSk7CiAgICAgICAgIH0KLSAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuX3J1bkJvZHkobm9k
ZS5yZXR1cm5UeXBlLCBub2RlLnJldHVybkVQdHIsIG5vZGUuYm9keSk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIHJldHVybiBjYWxsQXJndW1lbnRzOworICAgIH0KKworICAgIF9l
dmFsdWF0ZUZ1bmN0aW9uKG5vZGUsIGFyZ3VtZW50TGlzdCwgcGFyYW1ldGVyTGlzdCwgZnVuY0Jv
ZHksIHJldHVyblR5cGUsIHJldHVybkVQdHIpCisgICAgeworICAgICAgICBjb25zdCBhcmd1bWVu
dFZhbHVlcyA9IHRoaXMuX2V2YWx1YXRlQXJndW1lbnRzKGFyZ3VtZW50TGlzdCwgcGFyYW1ldGVy
TGlzdCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5hcmd1bWVudExpc3QubGVu
Z3RoOyArK2kpCisgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0W2ldLmVQdHIuY29weUZyb20oYXJn
dW1lbnRWYWx1ZXNbaV0sIHBhcmFtZXRlckxpc3RbaV0udHlwZS5zaXplKTsKKyAgICAgICAgcmV0
dXJuIEVCdWZmZXIuYWxsb3dBbGxvY2F0aW9uKCgpID0+IHRoaXMuX3J1bkJvZHkocmV0dXJuVHlw
ZSwgcmV0dXJuRVB0ciwgZnVuY0JvZHkpKTsKKyAgICB9CisKKyAgICB2aXNpdEZ1bmN0aW9uTGlr
ZUJsb2NrKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZXZhbHVhdGVGdW5jdGlv
bihub2RlLCBub2RlLmFyZ3VtZW50TGlzdCwgbm9kZS5wYXJhbWV0ZXJzLCBub2RlLmJvZHksIG5v
ZGUucmV0dXJuVHlwZSwgbm9kZS5yZXR1cm5FUHRyKTsKICAgICB9CiAgICAgCiAgICAgdmlzaXRS
ZXR1cm4obm9kZSkKQEAgLTMxMCwyMSArMzMxLDExIEBAIGNsYXNzIEV2YWx1YXRvciBleHRlbmRz
IFZpc2l0b3IgewogICAgIAogICAgIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSkKICAgICB7Ci0g
ICAgICAgIC8vIFdlIGV2YWx1YXRlIGlubGluZWQgQVNUcywgc28gdGhpcyBjYW4gb25seSBiZSBh
IG5hdGl2ZSBjYWxsLgotICAgICAgICBsZXQgY2FsbEFyZ3VtZW50cyA9IFtdOwotICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYXJndW1lbnRMaXN0Lmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBsZXQgYXJndW1lbnQgPSBub2RlLmFyZ3VtZW50TGlzdFtpXTsKLSAgICAgICAgICAg
IGxldCB0eXBlID0gbm9kZS5mdW5jLnBhcmFtZXRlclR5cGVzW2ldOwotICAgICAgICAgICAgaWYg
KCF0eXBlIHx8ICFhcmd1bWVudCkKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNh
bm5vdCBnZXQgdHlwZSBvciBhcmd1bWVudDsgaSA9ICIgKyBpICsgIiwgYXJndW1lbnQgPSAiICsg
YXJndW1lbnQgKyAiLCB0eXBlID0gIiArIHR5cGUgKyAiOyBpbiAiICsgbm9kZSk7Ci0gICAgICAg
ICAgICBsZXQgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50LnZpc2l0KHRoaXMpOwotICAgICAgICAg
ICAgaWYgKCFhcmd1bWVudFZhbHVlKQotICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
TnVsbCBhcmd1bWVudCB2YWx1ZSwgaSA9ICIgKyBpICsgIiwgbm9kZSA9ICIgKyBub2RlKTsKLSAg
ICAgICAgICAgIGNhbGxBcmd1bWVudHMucHVzaChFQnVmZmVyLmFsbG93QWxsb2NhdGlvbigoKSA9
PiB0aGlzLl9zbmFwc2hvdCh0eXBlLCBudWxsLCBhcmd1bWVudFZhbHVlKSkpOwotICAgICAgICB9
Ci0gICAgICAgIGxldCByZXN1bHQgPSBFQnVmZmVyLmFsbG93QWxsb2NhdGlvbigoKSA9PiBub2Rl
LmZ1bmMuaW1wbGVtZW50YXRpb24oY2FsbEFyZ3VtZW50cywgbm9kZSkpOwotICAgICAgICByZXN1
bHQgPSB0aGlzLl9zbmFwc2hvdChub2RlLmZ1bmMucmV0dXJuVHlwZSwgbm9kZS5yZXN1bHRFUHRy
LCByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAobm9kZS5mdW5j
IGluc3RhbmNlb2YgTmF0aXZlRnVuYykgeworICAgICAgICAgICAgY29uc3QgY2FsbEFyZ3VtZW50
cyA9IHRoaXMuX2V2YWx1YXRlQXJndW1lbnRzKG5vZGUuYXJndW1lbnRMaXN0LCBub2RlLmZ1bmMu
cGFyYW1ldGVycyk7CisgICAgICAgICAgICByZXR1cm4gRUJ1ZmZlci5hbGxvd0FsbG9jYXRpb24o
KCkgPT4gdGhpcy5fc25hcHNob3Qobm9kZS5mdW5jLnJldHVyblR5cGUsIG5vZGUucmVzdWx0RVB0
ciwgbm9kZS5mdW5jLmltcGxlbWVudGF0aW9uKGNhbGxBcmd1bWVudHMsIG5vZGUpKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V2YWx1YXRlRnVuY3Rpb24obm9k
ZSwgbm9kZS5hcmd1bWVudExpc3QsIG5vZGUuZnVuYy5wYXJhbWV0ZXJzLCBub2RlLmZ1bmMuYm9k
eSwgbm9kZS5mdW5jLnJldHVyblR5cGUsIG5vZGUucmVzdWx0RVB0cik7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanMKaW5kZXggOGJhOWFkNzRlN2MyYTcw
MzY3MjI1MjE0NzE5YTYxZmI3ZmJmYTNjNS4uZDM1ODgxYzFiZDAzODgwMTkzZmEwZmNjMzIwMWUw
ZDg4OGYyZmRkZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5s
aW5lLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZS5qcwpAQCAt
MzYsMjYgKzM2LDYgQEAgZnVuY3Rpb24gX2lubGluZUZ1bmN0aW9uKHByb2dyYW0sIGZ1bmMsIHZp
c2l0aW5nKQogewogICAgIGlmIChmdW5jLmlubGluZWQgfHwgZnVuYy5pc05hdGl2ZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGZ1bmMudmlzaXQobmV3IExhdGVDaGVja2VyKCkpOwotICAg
IAotICAgIC8vIFRoaXMgaXMgdGhlIHByZWNpc2UgdGltZSB3aGVuIHdlIGNhbiBidWlsZCBFQnVm
ZmVycyBpbiBvcmRlciB0byBnZXQgdGhlbSB0byBiZSB1bmlxdWVkIGJ5Ci0gICAgLy8gdHlwZSBp
bnN0YW50aWF0aW9uIGJ1dCBub3RoaW5nIGVsc2UuCi0gICAgZnVuYy52aXNpdChuZXcgU3RydWN0
TGF5b3V0QnVpbGRlcigpKTsKLSAgICBmdW5jLnZpc2l0KG5ldyBFQnVmZmVyQnVpbGRlcihwcm9n
cmFtKSk7Ci0gICAgCiAgICAgZnVuYy5yZXdyaXRlKG5ldyBJbmxpbmVyKHByb2dyYW0sIGZ1bmMs
IHZpc2l0aW5nKSk7Ci0KICAgICBmdW5jLmlubGluZWQgPSB0cnVlOwogfQotCi1mdW5jdGlvbiBy
ZXNvbHZlSW5saW5lZEZ1bmN0aW9uKHByb2dyYW0sIG5hbWUsIGFyZ3VtZW50VHlwZXMsIGFsbG93
RW50cnlQb2ludCA9IGZhbHNlKQotewotICAgIGxldCBvdmVybG9hZCA9IHByb2dyYW0uZ2xvYmFs
TmFtZUNvbnRleHQucmVzb2x2ZUZ1bmNPdmVybG9hZChuYW1lLCBhcmd1bWVudFR5cGVzLCB1bmRl
ZmluZWQsIGFsbG93RW50cnlQb2ludCk7Ci0gICAgaWYgKCFvdmVybG9hZC5mdW5jKQotICAgICAg
ICByZXR1cm4gb3ZlcmxvYWQuZmFpbHVyZXM7Ci0KLSAgICBsZXQgZnVuYyA9IG92ZXJsb2FkLmZ1
bmM7Ci0gICAgX2lubGluZUZ1bmN0aW9uKHByb2dyYW0sIGZ1bmMsIG5ldyBWaXNpdGluZ1NldChm
dW5jKSk7Ci0gICAgcmV0dXJuIGZ1bmM7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9MYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJzLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNWIzNWJiODBlMTRkMTZlMjYwMzFhNzBhZjFjOWMzODZiMDVjNjQxCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrQW5kTGF5b3V0QnVm
ZmVycy5qcwpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gbGF0ZUNoZWNrQW5kTGF5b3V0
QnVmZmVycyhwcm9ncmFtKQoreworICAgIGZvciAobGV0IGZ1bmNMaXN0IG9mIHByb2dyYW0uZnVu
Y3Rpb25zLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY0xpc3QpIHsK
KyAgICAgICAgICAgIGlmIChmdW5jLmlzTmF0aXZlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgZnVuYy52aXNpdChuZXcgTGF0ZUNoZWNrZXIoKSk7CisgICAgICAgICAg
ICBmdW5jLnZpc2l0KG5ldyBFQnVmZmVyQnVpbGRlcigpKTsKKyAgICAgICAgfQorICAgIH0KK30K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UHJlcGFyZS5qcwppbmRleCA4MzQ1OTJkMzZmMzQ1N2RmYTg2YjU3NTFiYjcyNjI0NzJhM2YwYTJk
Li4xM2ViZGU4MGJkOTFjY2I2NTQ2ODY4MTI5MjUyNjMzNGRkMzg4N2U4IDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKQEAgLTI2LDcgKzI2LDcgQEAKIAogbGV0IHBy
ZXBhcmUgPSAoKCkgPT4gewogICAgIGxldCBzdGFuZGFyZFByb2dyYW07Ci0gICAgcmV0dXJuIGZ1
bmN0aW9uKG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkgeworICAgIHJldHVybiBmdW5j
dGlvbihvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQsIHNob3VsZElubGluZSA9IGZhbHNl
KSB7CiAgICAgICAgIGlmICghc3RhbmRhcmRQcm9ncmFtKSB7CiAgICAgICAgICAgICBzdGFuZGFy
ZFByb2dyYW0gPSBuZXcgUHJvZ3JhbSgpOwogICAgICAgICAgICAgbGV0IGZpcnN0TGluZU9mU3Rh
bmRhcmRMaWJyYXJ5ID0gMjg7IC8vIFNlZSBTdGFuZGFyZExpYnJhcnkuanMuCkBAIC02OCw4ICs2
OCw5IEBAIGxldCBwcmVwYXJlID0gKCgpID0+IHsKICAgICAgICAgY2hlY2tUeXBlc1dpdGhBcmd1
bWVudHMocHJvZ3JhbSk7CiAgICAgICAgIGZpbmRIaWdoWm9tYmllcyhwcm9ncmFtKTsKICAgICAg
ICAgcHJvZ3JhbS52aXNpdChuZXcgU3RydWN0TGF5b3V0QnVpbGRlcigpKTsKLSAgICAgICAgaW5s
aW5lKHByb2dyYW0pOwotICAgICAgICAKKyAgICAgICAgbGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVy
cyhwcm9ncmFtKTsKKyAgICAgICAgaWYgKHNob3VsZElubGluZSkKKyAgICAgICAgICAgIGlubGlu
ZShwcm9ncmFtKTsKICAgICAgICAgcmV0dXJuIHByb2dyYW07CiAgICAgfTsKIH0pKCk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAppbmRleCA4MDRjZDlhYmRhNmQ1YzNi
ZWMwM2JlMjU4MmFhM2YyM2YwMDdhMTg4Li4wZDIzNzEwMDVlNzEwY2RjNjBmMDMzZGE1YTUxMWM0
OWFlMDA1YzM2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElS
Vi5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKQEAg
LTg1LDYgKzg1LDcgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJJbnRMaXRlcmFsLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iSW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJJbnRyaW5zaWNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
TGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkxhdGVDaGVja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTGV4ZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMZXhlclRva2VuLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAppbmRleCBmNWVhM2Q5MDE5OGRjZGI4NzEz
MWY5MmMyNTBjNzQzMzA0YjY2YWMwLi5jMTJlNWQ5OWRjNzRhNmYxOTAxYzk1ZGY5MWQzNGEwNWFl
ODU1ZTFjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0
bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC04MCw2
ICs4MCw3IEBACiA8c2NyaXB0IHNyYz0iSW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IkludHJpbnNpY3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxhdGVDaGVj
a2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJMYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMZXhlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iTGV4ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGl0ZXJhbFR5cGVD
aGVja2VyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCmlu
ZGV4IDFkYTlhZGZkZGZmMTZmODliOTI1NjkwNDg3ZDg3NzFmOWEyOGJiNjUuLmU3YjE4M2MwMGM0
N2U0YjI1NzY5NTNhY2E0ZDcyNWRlYTM4NDdjZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVGVzdC5qcwpAQCAtNzY0Myw2ICs3NjQzLDI3IEBAIHRlc3RzLmNhbGxBcmd1bWVudHNBcmVD
b3BpZWRJbW1lZGlhdGVseUFmdGVyRXZhbHVhdGlvbiA9ICgpID0+IHsKICAgICBjaGVja0ludChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMTIpOwogfTsKIAordGVz
dHMuZXZhbHVhdGlvbk9yZGVyRm9yQXJndW1lbnRzID0gKCkgPT4geworICAgIGNvbnN0IHByb2dy
YW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IGludCBmb28oKSB7IHJldHVybiAqYmFyKDEwKSAr
ICpiYXIoMjApOyB9CisKKyAgICAgICAgdGhyZWFkIGludCogYmFyKGludCB2YWx1ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaW50IHggPSB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiAmeDsK
KyAgICAgICAgfQorCisgICAgICAgIHRlc3QgaW50IGJheigpIHsgcmV0dXJuIHBsdXMoYmFyKDEw
KSwgYmFyKDIwKSk7IH0KKworICAgICAgICBpbnQgcGx1cyh0aHJlYWQgaW50KiB4LCB0aHJlYWQg
aW50KiB5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKnggKyAqeTsKKyAgICAgICAg
fQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10pLCAzMCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJiYXoiLCBbXSksIDIwKTsKK30KKwogb2tUb1Rlc3QgPSB0cnVlOwogCiBsZXQgdGVzdEZp
bHRlciA9IC8uKi87IC8vIHJ1biBldmVyeXRoaW5nIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCmluZGV4IGRmYzkwYzRjMjM5NDM5NTQ1ODg2NWM0YThk
NjU0ODY4NzBjMjYyMzQuLjI0NDE1ZjMzYTE3MDliMmUwZTZkNWJlY2U2N2FhODk1MzA2Yjg5YmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtNzksNiArNzks
NyBAQAogPHNjcmlwdCBzcmM9IkludExpdGVyYWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IkludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJJbnRyaW5zaWNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJMYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJzLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMYXRlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iTGV4ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyVG9rZW4uanMiPjwv
c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349357</attachid>
            <date>2018-09-10 17:01:34 -0700</date>
            <delta_ts>2018-09-10 18:25:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188641-20180910170133.patch</filename>
            <type>text/plain</type>
            <size>16583</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzUzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2RmYzE1NzRjMjUyZjRjZTQ4ODUyYmNlNThkYjdkZmZm
OWVlMzBmOS4uYjMwYmNmNmQyMmNmZjI2NWNjNWE3MzMwZDM4OTg1N2IxYjlmMWIwNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDE4LTA5LTEwICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dITFNMXSBJbmxpbmluZyBzaG91bGQgYmUgb3B0aW9uYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElubGluaW5nIGZ1bmN0aW9ucyBpcyBu
b3cgb3B0aW9uYWwsIGFuZCBkaXNhYmxlZCBieSBkZWZhdWx0LiBUaGlzIHBhdGNoCisgICAgICAg
IGFkZGl0aW9uYWxseSByZXNvbHZlcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5MzI2IGFzCisgICAgICAgIHRoZSBjb2RlIGZvciBjYWxsaW5nIGZ1bmN0aW9ucyB3
YXMgY29tcGxldGVseSByZXdyaXR0ZW4uCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9BbGwuanM6IEFkZCBMYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJzLmpzCisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzOgorICAgICAgICAoY2FsbEZ1
bmN0aW9uKTogUmVtb3ZlIGRlcGVuZGVuY3kgb24gaW5saW5pbmcuCisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzOgorICAgICAgICAoRXZhbHVhdG9yLnByb3Rv
dHlwZS5fc25hcHNob3QpOiBBbGxvdyBudWxsIHNyY1B0ciBpbiB0aGUgY2FzZSBvZiB2b2lkCisg
ICAgICAgIHJldHVybnMgZnJvbSBmdW5jdGlvbnMuCisgICAgICAgIChFdmFsdWF0b3IucHJvdG90
eXBlLl9ldmFsdWF0ZUFyZ3VtZW50cyk6IEFic3RyYWN0IG91dCBhcmd1bWVudAorICAgICAgICBl
dmFsdWF0aW9uLCBlbnN1cmluZyB0aGF0IHRoZSBvcmRlciBpcyByaWdodC10by1sZWZ0IGZvcgor
ICAgICAgICBGdW5jdGlvbkxpa2VCbG9ja3MgKGkuZS4gaW5saW5lZCBmdW5jdGlvbnMpIGFuZCBy
ZWd1bGFyIGNhbGxzLgorICAgICAgICAoRXZhbHVhdG9yLnByb3RvdHlwZS5fZXZhbHVhdGVGdW5j
dGlvbik6IEFic3RyYWN0ZWQgb3V0IGZ1bmN0aW9uIGJvZHkKKyAgICAgICAgZXZhbHVhdGlvbiBm
b3IgaW5saW5lZCBhbmQgbm9uLWlubGluZWQgZnVuY3Rpb25zLgorICAgICAgICAoRXZhbHVhdG9y
LnByb3RvdHlwZS52aXNpdEZ1bmN0aW9uTGlrZUJsb2NrKTogRGl0dG8uCisgICAgICAgIChFdmFs
dWF0b3IucHJvdG90eXBlLnZpc2l0Q2FsbEV4cHJlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmxpbmUuanM6CisgICAgICAgIChfaW5saW5lRnVuY3Rp
b24pOiBNb3ZlZCBsb2dpYyB0aGF0IGlzIG5lZWRlZCByZWdhcmRsZXNzIG9mIGlubGluaW5nCisg
ICAgICAgIGludG8gTGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qcworICAgICAgICAocmVzb2x2
ZUlubGluZWRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qczogTW92ZWQgbG9naWMgZm9yCisgICAg
ICAgIGxhdGUgY2hlY2tpbmcuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJl
cGFyZS5qczogTWFrZSBpbmxpbmluZyBvcHRpb25hbCBhbmQgb2ZmIGJ5CisgICAgICAgIGRlZmF1
bHQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbDogVXBkYXRl
IGluY2x1ZGUuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sOiBE
aXR0by4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOiBSaWdodC10
by1sZWZ0IGFyZ3VtZW50IGV2YWx1YXRpb24sCisgICAgICAgIGFuZCBpbmxpbmluZyB0ZXN0cy4K
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sOiBVcGRhdGUgaW5j
bHVkZS4KKwogMjAxOC0wOS0xMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIENCT1IgY29kZXJzIHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIGlmIFdlYkF1
dGhOIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRleCAwYTU4
ODUxNjFhNDAzZDA5YWVhYTFmZTVlMTA0M2FkZmU2MTI1NjVmLi4zYzJjNDg3NDIwMDExMTVhMTcx
MzQ4M2ExZjIzY2UyODY2OGJiOWM2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpz
CkBAIC0xMDIsNiArMTAyLDcgQEAgbG9hZCgiSW5saW5lci5qcyIpOwogbG9hZCgiSW50TGl0ZXJh
bC5qcyIpOwogbG9hZCgiSW50TGl0ZXJhbFR5cGUuanMiKTsKIGxvYWQoIkludHJpbnNpY3MuanMi
KTsKK2xvYWQoIkxhdGVDaGVja0FuZExheW91dEJ1ZmZlcnMuanMiKTsKIGxvYWQoIkxhdGVDaGVj
a2VyLmpzIik7CiBsb2FkKCJMZXhlci5qcyIpOwogbG9hZCgiTGV4ZXJUb2tlbi5qcyIpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2FsbEZ1bmN0aW9uLmpzCmluZGV4IDdhYWYw
YmEyMjQ5ZmYyN2VkODE3YzhkYzhlNzcyYzI1ZGExYmI1ZGMuLjcyZjY3NGU3OTgwZmE4NTUwNzQ5
MjU4MmFhZWQ5M2ZmYTYzMDE4Y2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0NhbGxGdW5jdGlvbi5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9DYWxsRnVuY3Rpb24uanMKQEAgLTI4LDEyICsyOCwxMSBAQAogZnVuY3Rpb24gY2FsbEZ1bmN0
aW9uKHByb2dyYW0sIG5hbWUsIGFyZ3VtZW50TGlzdCkKIHsKICAgICBsZXQgYXJndW1lbnRUeXBl
cyA9IGFyZ3VtZW50TGlzdC5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudHlwZSk7Ci0gICAgbGV0
IGZ1bmNPckZhaWx1cmVzID0gcmVzb2x2ZUlubGluZWRGdW5jdGlvbihwcm9ncmFtLCBuYW1lLCBh
cmd1bWVudFR5cGVzLCB0cnVlKTsKLSAgICBpZiAoIShmdW5jT3JGYWlsdXJlcyBpbnN0YW5jZW9m
IEZ1bmMpKSB7Ci0gICAgICAgIGxldCBmYWlsdXJlcyA9IGZ1bmNPckZhaWx1cmVzOwotICAgICAg
ICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiPGNhbGxGdW5jdGlvbj4iLCAiQ2Fubm90IHJlc29sdmUg
ZnVuY3Rpb24gY2FsbCAiICsgbmFtZSArICIoIiArIGFyZ3VtZW50TGlzdCArICIpIiArIChmYWls
dXJlcy5sZW5ndGggPyAiOyB0cmllZDpcbiIgKyBmYWlsdXJlcy5qb2luKCJcbiIpIDogIiIpKTsK
LSAgICB9Ci0gICAgbGV0IGZ1bmMgPSBmdW5jT3JGYWlsdXJlczsKKyAgICBsZXQgb3ZlcmxvYWQg
PSBwcm9ncmFtLmdsb2JhbE5hbWVDb250ZXh0LnJlc29sdmVGdW5jT3ZlcmxvYWQobmFtZSwgYXJn
dW1lbnRUeXBlcywgbnVsbCwgdHJ1ZSk7CisgICAgaWYgKCFvdmVybG9hZC5mdW5jKQorICAgICAg
ICB0aHJvdyBuZXcgV1R5cGVFcnJvcigiPGNhbGxGdW5jdGlvbj4iLCAiQ2Fubm90IHJlc29sdmUg
ZnVuY3Rpb24gY2FsbCAiICsgbmFtZSArICIoIiArIGFyZ3VtZW50TGlzdCArICIpIiArIChvdmVy
bG9hZC5mYWlsdXJlcy5sZW5ndGggPyAiOyB0cmllZDpcbiIgKyBvdmVybG9hZC5mYWlsdXJlcy5q
b2luKCJcbiIpIDogIiIpKTsKKworICAgIGNvbnN0IGZ1bmMgPSBvdmVybG9hZC5mdW5jOwogICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7CiAgICAg
ICAgIGxldCB0eXBlID0gYXJndW1lbnRUeXBlc1tpXTsKICAgICAgICAgdHlwZS52aXNpdChuZXcg
U3RydWN0TGF5b3V0QnVpbGRlcigpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0V2YWx1YXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2
YWx1YXRvci5qcwppbmRleCA5MjA5ODdhZWFjNDk0ZGU1YzM5OWQwMjBkNDYxZGNkOTIyMGI3MjZm
Li4zYjgwOTQyNjhmODI0ZmFiNGQ0M2I5ZWVhYTUwMDY3ODFjYzU1OTU2IDEwMDY0NAotLS0gYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCkBAIC0zNyw2ICszNyw4IEBAIGNsYXNz
IEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3IgewogICAgIC8vIHBvc3NpYmxlIGZvciBhIHBvaW50
ZXIgcmV0dXJuZWQgZnJvbSBhIHZpc2l0IG1ldGhvZCBpbiBydmFsdWUgY29udGV4dCB0byBsaXZl
IGFjcm9zcyBhbnkgZWZmZWN0cy4KICAgICBfc25hcHNob3QodHlwZSwgZHN0UHRyLCBzcmNQdHIp
CiAgICAgeworICAgICAgICBpZiAoIXNyY1B0cikKKyAgICAgICAgICAgIHJldHVybiBudWxsOwog
ICAgICAgICBsZXQgc2l6ZSA9IHR5cGUuc2l6ZTsKICAgICAgICAgaWYgKHNpemUgPT0gbnVsbCkK
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGdldCBzaXplIG9mIHR5cGU6ICIg
KyB0eXBlICsgIiAoc2l6ZSA9ICIgKyBzaXplICsgIiwgY29uc3RydWN0b3IgPSAiICsgdHlwZS5j
b25zdHJ1Y3Rvci5uYW1lICsgIikiKTsKQEAgLTcxLDE2ICs3MywzNCBAQCBjbGFzcyBFdmFsdWF0
b3IgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCi0gICAgdmlzaXRGdW5jdGlvbkxpa2VCbG9jayhub2RlKQorCisgICAgX2V2YWx1
YXRlQXJndW1lbnRzKGFyZ3VtZW50TGlzdCwgcGFyYW1ldGVyTGlzdCkKICAgICB7Ci0gICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5hcmd1bWVudExpc3QubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIG5vZGUucGFyYW1ldGVyc1tpXS5lUHRyLmNvcHlGcm9tKAotICAgICAgICAgICAg
ICAgIG5vZGUuYXJndW1lbnRMaXN0W2ldLnZpc2l0KHRoaXMpLAotICAgICAgICAgICAgICAgIG5v
ZGUucGFyYW1ldGVyc1tpXS50eXBlLnNpemUpOworICAgICAgICBjb25zdCBjYWxsQXJndW1lbnRz
ID0gW107CisgICAgICAgIGZvciAobGV0IGkgPSBhcmd1bWVudExpc3QubGVuZ3RoOyBpLS07KSB7
CisgICAgICAgICAgICBjb25zdCBhcmd1bWVudCA9IGFyZ3VtZW50TGlzdFtpXTsKKyAgICAgICAg
ICAgIGNvbnN0IHR5cGUgPSBwYXJhbWV0ZXJMaXN0W2ldLnR5cGU7CisgICAgICAgICAgICBpZiAo
IXR5cGUgfHwgIWFyZ3VtZW50KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2Fu
bm90IGdldCB0eXBlIG9yIGFyZ3VtZW50OyBpID0gIiArIGkgKyAiLCBhcmd1bWVudCA9ICIgKyBh
cmd1bWVudCArICIsIHR5cGUgPSAiICsgdHlwZSk7CisgICAgICAgICAgICBsZXQgYXJndW1lbnRW
YWx1ZSA9IGFyZ3VtZW50LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgaWYgKCFhcmd1bWVudFZh
bHVlKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTnVsbCBhcmd1bWVudCB2YWx1
ZSwgaSA9ICIgKyBpICsgIiwgbm9kZSA9ICIgKyBub2RlKTsKKyAgICAgICAgICAgIGNhbGxBcmd1
bWVudHMudW5zaGlmdChFQnVmZmVyLmFsbG93QWxsb2NhdGlvbigoKSA9PiB0aGlzLl9zbmFwc2hv
dCh0eXBlLCBudWxsLCBhcmd1bWVudFZhbHVlKSkpOwogICAgICAgICB9Ci0gICAgICAgIGxldCBy
ZXN1bHQgPSB0aGlzLl9ydW5Cb2R5KG5vZGUucmV0dXJuVHlwZSwgbm9kZS5yZXR1cm5FUHRyLCBu
b2RlLmJvZHkpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gY2FsbEFy
Z3VtZW50czsKKyAgICB9CisKKyAgICBfZXZhbHVhdGVGdW5jdGlvbihub2RlLCBhcmd1bWVudExp
c3QsIHBhcmFtZXRlckxpc3QsIGZ1bmNCb2R5LCByZXR1cm5UeXBlLCByZXR1cm5FUHRyKQorICAg
IHsKKyAgICAgICAgY29uc3QgYXJndW1lbnRWYWx1ZXMgPSB0aGlzLl9ldmFsdWF0ZUFyZ3VtZW50
cyhhcmd1bWVudExpc3QsIHBhcmFtZXRlckxpc3QpOworICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IG5vZGUuYXJndW1lbnRMaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcGFyYW1ldGVy
TGlzdFtpXS5lUHRyLmNvcHlGcm9tKGFyZ3VtZW50VmFsdWVzW2ldLCBwYXJhbWV0ZXJMaXN0W2ld
LnR5cGUuc2l6ZSk7CisgICAgICAgIHJldHVybiBFQnVmZmVyLmFsbG93QWxsb2NhdGlvbigoKSA9
PiB0aGlzLl9ydW5Cb2R5KHJldHVyblR5cGUsIHJldHVybkVQdHIsIGZ1bmNCb2R5KSk7CisgICAg
fQorCisgICAgdmlzaXRGdW5jdGlvbkxpa2VCbG9jayhub2RlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2V2YWx1YXRlRnVuY3Rpb24obm9kZSwgbm9kZS5hcmd1bWVudExpc3QsIG5vZGUu
cGFyYW1ldGVycywgbm9kZS5ib2R5LCBub2RlLnJldHVyblR5cGUsIG5vZGUucmV0dXJuRVB0cik7
CiAgICAgfQogICAgIAogICAgIHZpc2l0UmV0dXJuKG5vZGUpCkBAIC0zMTAsMjEgKzMzMCwxMSBA
QCBjbGFzcyBFdmFsdWF0b3IgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAKICAgICB2aXNpdENhbGxF
eHByZXNzaW9uKG5vZGUpCiAgICAgewotICAgICAgICAvLyBXZSBldmFsdWF0ZSBpbmxpbmVkIEFT
VHMsIHNvIHRoaXMgY2FuIG9ubHkgYmUgYSBuYXRpdmUgY2FsbC4KLSAgICAgICAgbGV0IGNhbGxB
cmd1bWVudHMgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmFyZ3VtZW50
TGlzdC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbGV0IGFyZ3VtZW50ID0gbm9kZS5hcmd1
bWVudExpc3RbaV07Ci0gICAgICAgICAgICBsZXQgdHlwZSA9IG5vZGUuZnVuYy5wYXJhbWV0ZXJU
eXBlc1tpXTsKLSAgICAgICAgICAgIGlmICghdHlwZSB8fCAhYXJndW1lbnQpCi0gICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZ2V0IHR5cGUgb3IgYXJndW1lbnQ7IGkgPSAi
ICsgaSArICIsIGFyZ3VtZW50ID0gIiArIGFyZ3VtZW50ICsgIiwgdHlwZSA9ICIgKyB0eXBlICsg
IjsgaW4gIiArIG5vZGUpOwotICAgICAgICAgICAgbGV0IGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVu
dC52aXNpdCh0aGlzKTsKLSAgICAgICAgICAgIGlmICghYXJndW1lbnRWYWx1ZSkKLSAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk51bGwgYXJndW1lbnQgdmFsdWUsIGkgPSAiICsgaSAr
ICIsIG5vZGUgPSAiICsgbm9kZSk7Ci0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLnB1c2goRUJ1
ZmZlci5hbGxvd0FsbG9jYXRpb24oKCkgPT4gdGhpcy5fc25hcHNob3QodHlwZSwgbnVsbCwgYXJn
dW1lbnRWYWx1ZSkpKTsKLSAgICAgICAgfQotICAgICAgICBsZXQgcmVzdWx0ID0gRUJ1ZmZlci5h
bGxvd0FsbG9jYXRpb24oKCkgPT4gbm9kZS5mdW5jLmltcGxlbWVudGF0aW9uKGNhbGxBcmd1bWVu
dHMsIG5vZGUpKTsKLSAgICAgICAgcmVzdWx0ID0gdGhpcy5fc25hcHNob3Qobm9kZS5mdW5jLnJl
dHVyblR5cGUsIG5vZGUucmVzdWx0RVB0ciwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgaWYgKG5vZGUuZnVuYyBpbnN0YW5jZW9mIE5hdGl2ZUZ1bmMpIHsKKyAgICAg
ICAgICAgIGNvbnN0IGNhbGxBcmd1bWVudHMgPSB0aGlzLl9ldmFsdWF0ZUFyZ3VtZW50cyhub2Rl
LmFyZ3VtZW50TGlzdCwgbm9kZS5mdW5jLnBhcmFtZXRlcnMpOworICAgICAgICAgICAgcmV0dXJu
IEVCdWZmZXIuYWxsb3dBbGxvY2F0aW9uKCgpID0+IHRoaXMuX3NuYXBzaG90KG5vZGUuZnVuYy5y
ZXR1cm5UeXBlLCBub2RlLnJlc3VsdEVQdHIsIG5vZGUuZnVuYy5pbXBsZW1lbnRhdGlvbihjYWxs
QXJndW1lbnRzLCBub2RlKSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9ldmFsdWF0ZUZ1bmN0aW9uKG5vZGUsIG5vZGUuYXJndW1lbnRMaXN0LCBub2RlLmZ1bmMu
cGFyYW1ldGVycywgbm9kZS5mdW5jLmJvZHksIG5vZGUuZnVuYy5yZXR1cm5UeXBlLCBub2RlLnJl
c3VsdEVQdHIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvSW5saW5lLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW5saW5l
LmpzCmluZGV4IDhiYTlhZDc0ZTdjMmE3MDM2NzIyNTIxNDcxOWE2MWZiN2ZiZmEzYzUuLmQzNTg4
MWMxYmQwMzg4MDE5M2ZhMGZjYzMyMDFlMGQ4ODhmMmZkZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lubGluZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9JbmxpbmUuanMKQEAgLTM2LDI2ICszNiw2IEBAIGZ1bmN0aW9uIF9pbmxpbmVG
dW5jdGlvbihwcm9ncmFtLCBmdW5jLCB2aXNpdGluZykKIHsKICAgICBpZiAoZnVuYy5pbmxpbmVk
IHx8IGZ1bmMuaXNOYXRpdmUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmdW5jLnZpc2l0
KG5ldyBMYXRlQ2hlY2tlcigpKTsKLSAgICAKLSAgICAvLyBUaGlzIGlzIHRoZSBwcmVjaXNlIHRp
bWUgd2hlbiB3ZSBjYW4gYnVpbGQgRUJ1ZmZlcnMgaW4gb3JkZXIgdG8gZ2V0IHRoZW0gdG8gYmUg
dW5pcXVlZCBieQotICAgIC8vIHR5cGUgaW5zdGFudGlhdGlvbiBidXQgbm90aGluZyBlbHNlLgot
ICAgIGZ1bmMudmlzaXQobmV3IFN0cnVjdExheW91dEJ1aWxkZXIoKSk7Ci0gICAgZnVuYy52aXNp
dChuZXcgRUJ1ZmZlckJ1aWxkZXIocHJvZ3JhbSkpOwotICAgIAogICAgIGZ1bmMucmV3cml0ZShu
ZXcgSW5saW5lcihwcm9ncmFtLCBmdW5jLCB2aXNpdGluZykpOwotCiAgICAgZnVuYy5pbmxpbmVk
ID0gdHJ1ZTsKIH0KLQotZnVuY3Rpb24gcmVzb2x2ZUlubGluZWRGdW5jdGlvbihwcm9ncmFtLCBu
YW1lLCBhcmd1bWVudFR5cGVzLCBhbGxvd0VudHJ5UG9pbnQgPSBmYWxzZSkKLXsKLSAgICBsZXQg
b3ZlcmxvYWQgPSBwcm9ncmFtLmdsb2JhbE5hbWVDb250ZXh0LnJlc29sdmVGdW5jT3ZlcmxvYWQo
bmFtZSwgYXJndW1lbnRUeXBlcywgdW5kZWZpbmVkLCBhbGxvd0VudHJ5UG9pbnQpOwotICAgIGlm
ICghb3ZlcmxvYWQuZnVuYykKLSAgICAgICAgcmV0dXJuIG92ZXJsb2FkLmZhaWx1cmVzOwotCi0g
ICAgbGV0IGZ1bmMgPSBvdmVybG9hZC5mdW5jOwotICAgIF9pbmxpbmVGdW5jdGlvbihwcm9ncmFt
LCBmdW5jLCBuZXcgVmlzaXRpbmdTZXQoZnVuYykpOwotICAgIHJldHVybiBmdW5jOwotfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGF0ZUNoZWNrQW5kTGF5b3V0
QnVmZmVycy5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xhdGVDaGVja0FuZExh
eW91dEJ1ZmZlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjViMzViYjgwZTE0ZDE2ZTI2MDMxYTcwYWYxYzlj
Mzg2YjA1YzY0MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0xhdGVDaGVja0FuZExheW91dEJ1ZmZlcnMuanMKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisidXNlIHN0cmljdCI7CisKK2Z1
bmN0aW9uIGxhdGVDaGVja0FuZExheW91dEJ1ZmZlcnMocHJvZ3JhbSkKK3sKKyAgICBmb3IgKGxl
dCBmdW5jTGlzdCBvZiBwcm9ncmFtLmZ1bmN0aW9ucy52YWx1ZXMoKSkgeworICAgICAgICBmb3Ig
KGxldCBmdW5jIG9mIGZ1bmNMaXN0KSB7CisgICAgICAgICAgICBpZiAoZnVuYy5pc05hdGl2ZSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZ1bmMudmlzaXQobmV3IExh
dGVDaGVja2VyKCkpOworICAgICAgICAgICAgZnVuYy52aXNpdChuZXcgRUJ1ZmZlckJ1aWxkZXIo
KSk7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcyBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKaW5kZXggODM0NTkyZDM2ZjM0NTdk
ZmE4NmI1NzUxYmI3MjYyNDcyYTNmMGEyZC4uMTNlYmRlODBiZDkxY2NiNjU0Njg2ODEyOTI1MjYz
MzRkZDM4ODdlOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJl
cGFyZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCkBA
IC0yNiw3ICsyNiw3IEBACiAKIGxldCBwcmVwYXJlID0gKCgpID0+IHsKICAgICBsZXQgc3RhbmRh
cmRQcm9ncmFtOwotICAgIHJldHVybiBmdW5jdGlvbihvcmlnaW4sIGxpbmVOdW1iZXJPZmZzZXQs
IHRleHQpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24ob3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0LCB0
ZXh0LCBzaG91bGRJbmxpbmUgPSBmYWxzZSkgewogICAgICAgICBpZiAoIXN0YW5kYXJkUHJvZ3Jh
bSkgewogICAgICAgICAgICAgc3RhbmRhcmRQcm9ncmFtID0gbmV3IFByb2dyYW0oKTsKICAgICAg
ICAgICAgIGxldCBmaXJzdExpbmVPZlN0YW5kYXJkTGlicmFyeSA9IDI4OyAvLyBTZWUgU3RhbmRh
cmRMaWJyYXJ5LmpzLgpAQCAtNjgsOCArNjgsOSBAQCBsZXQgcHJlcGFyZSA9ICgoKSA9PiB7CiAg
ICAgICAgIGNoZWNrVHlwZXNXaXRoQXJndW1lbnRzKHByb2dyYW0pOwogICAgICAgICBmaW5kSGln
aFpvbWJpZXMocHJvZ3JhbSk7CiAgICAgICAgIHByb2dyYW0udmlzaXQobmV3IFN0cnVjdExheW91
dEJ1aWxkZXIoKSk7Ci0gICAgICAgIGlubGluZShwcm9ncmFtKTsKLSAgICAgICAgCisgICAgICAg
IGxhdGVDaGVja0FuZExheW91dEJ1ZmZlcnMocHJvZ3JhbSk7CisgICAgICAgIGlmIChzaG91bGRJ
bmxpbmUpCisgICAgICAgICAgICBpbmxpbmUocHJvZ3JhbSk7CiAgICAgICAgIHJldHVybiBwcm9n
cmFtOwogICAgIH07CiB9KSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0
bWwKaW5kZXggODA0Y2Q5YWJkYTZkNWMzYmVjMDNiZTI1ODJhYTNmMjNmMDA3YTE4OC4uMGQyMzcx
MDA1ZTcxMGNkYzYwZjAzM2RhNWE1MTFjNDlhZTAwNWMzNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBAIC04NSw2ICs4NSw3IEBAIHRkIHsKICAgICA8c2NyaXB0
IHNyYz0iSW50TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkludExpdGVy
YWxUeXBlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iSW50cmluc2ljcy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkxhdGVDaGVja0FuZExheW91dEJ1ZmZlcnMuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMYXRlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkxleGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTGV4ZXJU
b2tlbi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwK
aW5kZXggZjVlYTNkOTAxOThkY2RiODcxMzFmOTJjMjUwYzc0MzMwNGI2NmFjMC4uYzEyZTVkOTlk
Yzc0YTZmMTkwMWM5NWRmOTFkMzRhMDVhZTg1NWUxYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Rlc3QuaHRtbApAQCAtODAsNiArODAsNyBAQAogPHNjcmlwdCBzcmM9IkludExpdGVy
YWxUeXBlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJJbnRyaW5zaWNzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJMYXRlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
TGF0ZUNoZWNrQW5kTGF5b3V0QnVmZmVycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGV4
ZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCAxZGE5YWRmZGRmZjE2Zjg5YjkyNTY5MDQ4N2Q4
NzcxZjlhMjhiYjY1Li4yMTU5M2JiYTllYTJkZTdiYTc5OGNiNTBmN2ZhZWUxNjViOGRjN2E4IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTc2NDMsNiArNzY0Myw4MiBA
QCB0ZXN0cy5jYWxsQXJndW1lbnRzQXJlQ29waWVkSW1tZWRpYXRlbHlBZnRlckV2YWx1YXRpb24g
PSAoKSA9PiB7CiAgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbXSksIDEyKTsKIH07CiAKK3Rlc3RzLmV2YWx1YXRpb25PcmRlckZvckFyZ3VtZW50cyA9
ICgpID0+IHsKKyAgICBjb25zdCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBpbnQg
Zm9vKCkgeyByZXR1cm4gKmJhcigxMCkgKyAqYmFyKDIwKTsgfQorCisgICAgICAgIHRocmVhZCBp
bnQqIGJhcihpbnQgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCB4ID0gdmFsdWU7
CisgICAgICAgICAgICByZXR1cm4gJng7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0IGludCBi
YXooKSB7IHJldHVybiBwbHVzKGJhcigxMCksIGJhcigyMCkpOyB9CisKKyAgICAgICAgaW50IHBs
dXModGhyZWFkIGludCogeCwgdGhyZWFkIGludCogeSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuICp4ICsgKnk7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMzApOworICAgIGNoZWNrSW50KHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiYmF6IiwgW10pLCAyMCk7Cit9CisKK3Rlc3Rz
LmNhbm5vdENhbGxBbm90aGVyRW50cnlQb2ludCA9ICgpID0+IHsKKyAgICBjaGVja0ZhaWwoKCkg
PT4gZG9QcmVwKGAKKyAgICAgICAgc3RydWN0IEZvbyB7IGludCB4OyB9CisgICAgICAgIHZlcnRl
eCBGb28gZm9vKCkgeyByZXR1cm4gYmFyKCk7IH0KKyAgICAgICAgdmVydGV4IEZvbyBiYXIoKSB7
IHJldHVybiBGb28oKTsgfQorICAgIGApLCBlID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yICYm
IGUubWVzc2FnZS5pbmRleE9mKCJpdCBjYW5ub3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGFuIGV4
aXN0aW5nIHNoYWRlciIpICE9PSAtMSk7Cit9CisKK3Rlc3RzLmlubGluaW5nRG9lc05vdEFmZmVj
dE5lc3RlZENhbGxzID0gKCkgPT4geworICAgIGNvbnN0IHByb2dyYW0gPSBwcmVwYXJlKCIvaW50
ZXJuYWwvdGVzdCIsIDAsIGAKKyAgICAgICAgdGVzdCBpbnQgZm9vKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHBsdXMoYmFyKCksIGJheigpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGludCBwbHVzKGludCBhLCBpbnQgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEg
KyBiOworICAgICAgICB9CisKKyAgICAgICAgaW50IGJhcigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiAxNzsKKyAgICAgICAgfQorCisgICAgICAgIGludCBiYXooKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgfQorICAgIGAsIHRydWUpOworICAgIGNo
ZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCAyMCkKK30K
KwordGVzdHMuaW5saW5pbmdEb2VzbnRQcm9kdWNlQWxpYXNpbmdJc3N1ZXMgPSAoKSA9PiB7Cisg
ICAgY29uc3QgcHJvZ3JhbSA9IHByZXBhcmUoIi9pbnRlcm5hbC90ZXN0IiwgMCwgYAorICAgICAg
ICB0ZXN0IGludCBmb28oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYmFyKDIpOwor
ICAgICAgICB9CisKKyAgICAgICAgaW50IGJhcihpbnQgeCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaW50IHkgPSB4ICogeDsKKyAgICAgICAgICAgIHJldHVybiBiYXooeSk7CisgICAgICAgIH0K
KworICAgICAgICBpbnQgYmF6KGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeSA9
IDQgKiB4OworICAgICAgICAgICAgcmV0dXJuIHggKyB5OworICAgICAgICB9CisgICAgYCwgdHJ1
ZSk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
XSksIDIwKTsKK30KKwogb2tUb1Rlc3QgPSB0cnVlOwogCiBsZXQgdGVzdEZpbHRlciA9IC8uKi87
IC8vIHJ1biBldmVyeXRoaW5nIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9pbmRleC5odG1sCmluZGV4IGRmYzkwYzRjMjM5NDM5NTQ1ODg2NWM0YThkNjU0ODY4NzBjMjYy
MzQuLjI0NDE1ZjMzYTE3MDliMmUwZTZkNWJlY2U2N2FhODk1MzA2Yjg5YmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtNzksNiArNzksNyBAQAogPHNjcmlw
dCBzcmM9IkludExpdGVyYWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkludExpdGVyYWxU
eXBlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJJbnRyaW5zaWNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJMYXRlQ2hlY2tBbmRMYXlvdXRCdWZmZXJzLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJMYXRlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGV4ZXIu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>