<?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>199251</bug_id>
          
          <creation_ts>2019-06-26 17:41:23 -0700</creation_ts>
          <short_desc>Add b3 macro lowering for CheckMul on arm64</short_desc>
          <delta_ts>2019-07-11 14:08:44 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1548270</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-26 17:41:23 -0700</bug_when>
    <thetext>CheckMul emits quite a few instructions on arm64, so we should try lowering it in b3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548273</commentid>
    <comment_count>1</comment_count>
      <attachid>372977</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-26 17:42:48 -0700</bug_when>
    <thetext>Created attachment 372977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548346</commentid>
    <comment_count>2</comment_count>
      <attachid>372977</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-26 20:17:23 -0700</bug_when>
    <thetext>Comment on attachment 372977
Patch

r=me

Can you please also add some B3 tests for this to ensure we do the right thing? in testb3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548347</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-26 20:17:51 -0700</bug_when>
    <thetext>Also, I doubt this is faster on x86, but let&apos;s just verify that hypothesis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548348</commentid>
    <comment_count>4</comment_count>
      <attachid>372977</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-26 20:18:36 -0700</bug_when>
    <thetext>Comment on attachment 372977
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Add b3 macro lowering for CheckMul on arm

arm =&gt; arm64

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Lower CheckMul for 32-bit arguments on arm into a mul and then an overflow check.

nit: Also say what speedup you got on the microbenchmark

arm =&gt; arm64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548936</commentid>
    <comment_count>5</comment_count>
      <attachid>373149</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-28 14:12:47 -0700</bug_when>
    <thetext>Created attachment 373149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548937</commentid>
    <comment_count>6</comment_count>
      <attachid>373149</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-28 14:14:54 -0700</bug_when>
    <thetext>Comment on attachment 373149
Patch

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

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2616
&gt; +                } else if (m_value-&gt;child(1)-&gt;isRepresentableAs&lt;int32_t&gt;()) {

Is there ever a case where this might be locked?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548938</commentid>
    <comment_count>7</comment_count>
      <attachid>373149</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-06-28 14:21:03 -0700</bug_when>
    <thetext>Comment on attachment 373149
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        - Lower CheckMul for 33-bit arguments on arm64 into a mul and then an overflow check.

Did you mean 32-bit here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548939</commentid>
    <comment_count>8</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-06-28 14:22:30 -0700</bug_when>
    <thetext>(In reply to Justin Michaud from comment #6)
&gt; Comment on attachment 373149 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=373149&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2616
&gt; &gt; +                } else if (m_value-&gt;child(1)-&gt;isRepresentableAs&lt;int32_t&gt;()) {
&gt; 
&gt; Is there ever a case where this might be locked?

Maybe. I&apos;ve not touched the instruction selection yet; it would probably be safer to check that it is not locked. It does not cost much if it never is locked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548964</commentid>
    <comment_count>9</comment_count>
      <attachid>373155</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-06-28 15:25:07 -0700</bug_when>
    <thetext>Created attachment 373155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548965</commentid>
    <comment_count>10</comment_count>
      <attachid>373155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-28 15:27:24 -0700</bug_when>
    <thetext>Comment on attachment 373155
Patch

Rejecting attachment 373155 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 373155, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Robin Morisset found in /Volumes/Data/EWS/WebKit/JSTests/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/EWS/WebKit/JSTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: https://webkit-queues.webkit.org/results/12607016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548983</commentid>
    <comment_count>11</comment_count>
      <attachid>373155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-28 16:19:17 -0700</bug_when>
    <thetext>Comment on attachment 373155
Patch

Clearing flags on attachment: 373155

Committed r246946: &lt;https://trac.webkit.org/changeset/246946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548984</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-28 16:19:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548985</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-28 16:20:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/52359122&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549245</commentid>
    <comment_count>14</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-07-01 09:59:39 -0700</bug_when>
    <thetext>Reverted r246946 for reason:

Caused JSC test crashes on arm64

Committed r247011: &lt;https://trac.webkit.org/changeset/247011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552099</commentid>
    <comment_count>15</comment_count>
      <attachid>373926</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2019-07-11 10:17:56 -0700</bug_when>
    <thetext>Created attachment 373926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552169</commentid>
    <comment_count>16</comment_count>
      <attachid>373926</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-07-11 13:11:01 -0700</bug_when>
    <thetext>Comment on attachment 373926
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552199</commentid>
    <comment_count>17</comment_count>
      <attachid>373926</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-11 14:08:42 -0700</bug_when>
    <thetext>Comment on attachment 373926
Patch

Clearing flags on attachment: 373926

Committed r247363: &lt;https://trac.webkit.org/changeset/247363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552200</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-11 14:08:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372977</attachid>
            <date>2019-06-26 17:42:48 -0700</date>
            <delta_ts>2019-06-28 14:12:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199251-20190626174247.patch</filename>
            <type>text/plain</type>
            <size>4259</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OTc0ZWVkYzE2MDEzMWRiOTRmNDI3YzE4ZGFjNzI5MWZmM2MyOGUyLi4yMGEzY2M2MDMwNWIyMjQz
MGNjNWUxNTM2N2FhMzg2ZDUzY2JkYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOS0wNi0yNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIGIzIG1hY3JvIGxvd2VyaW5nIGZvciBDaGVja011bCBv
biBhcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
OTI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExv
d2VyIENoZWNrTXVsIGZvciAzMi1iaXQgYXJndW1lbnRzIG9uIGFybSBpbnRvIGEgbXVsIGFuZCB0
aGVuIGFuIG92ZXJmbG93IGNoZWNrLgorCisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvcy5jcHA6
CisKIDIwMTktMDYtMjYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgcmVtb3ZlIHVubmVlZGVkIGRpZEJlY29tZVByb3RvdHlwZSgpIGNhbGxzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKaW5kZXggNGM1OTRkMjRiMzNi
YjJlNDFlMjllY2RiZTViNzA1MjcwOTA5NmExMy4uNDM4NDcxNmYxYzcyYTZjYjM5MDYzNmQyYzQw
OTE4YTc0NTk5ODViZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJNYWNyb3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9z
LmNwcApAQCAtMTc3LDYgKzE3NywzNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIENoZWNrTXVsOiB7CisgICAgICAg
ICAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBtX3ZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IElu
dDMyKSB7CisgICAgICAgICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gbV92YWx1
ZS0+YXM8Q2hlY2tWYWx1ZT4oKTsKKworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgU0V4dDMyLCBtX29yaWdpbiwg
bV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBt
X2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFNFeHQzMiwgbV9vcmlnaW4sIG1f
dmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIG11bFJlc3VsdCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTXVsLCBtX29yaWdpbiwgbGVm
dCwgcmlnaHQpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsUmVzdWx0MzIgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFRydW5jLCBtX29yaWdpbiwgbXVsUmVz
dWx0KTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHVwcGVyUmVzdWx0ID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBUcnVuYywgbV9vcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFNTaHIs
IG1fb3JpZ2luLCBtdWxSZXN1bHQsIG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDMyVmFsdWU+
KG1faW5kZXgsIG1fb3JpZ2luLCAzMikpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHNp
Z25CaXQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFNTaHIsIG1fb3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICAgICAgbXVsUmVzdWx0MzIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3QzMlZhbHVlPihtX2luZGV4LCBt
X29yaWdpbiwgMzEpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGhhc092ZXJmbG93ZWQg
PSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIE5vdEVxdWFsLCBtX29yaWdp
biwgdXBwZXJSZXN1bHQsIHNpZ25CaXQpOworCisgICAgICAgICAgICAgICAgICAgIENoZWNrVmFs
dWUqIGNoZWNrID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENoZWNrVmFsdWU+KG1faW5kZXgsIENo
ZWNrLCBtX29yaWdpbiwgaGFzT3ZlcmZsb3dlZCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNr
LT5zZXRHZW5lcmF0b3IoY2hlY2tNdWwtPmdlbmVyYXRvcigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2stPmNsb2JiZXJFYXJseShjaGVja011bC0+ZWFybHlDbG9iYmVyZWQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNrLT5jbG9iYmVyTGF0ZShjaGVja011bC0+bGF0ZUNsb2JiZXJl
ZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2stPmFwcGVuZChjaGVja011bC0+Y29uc3Ry
YWluZWRDaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrLT5hcHBlbmQoY2hlY2tN
dWwtPmNvbnN0cmFpbmVkQ2hpbGQoMSkpOworCisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUt
PnJlcGxhY2VXaXRoSWRlbnRpdHkobXVsUmVzdWx0MzIpOworICAgICAgICAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBTd2l0Y2g6IHsKICAgICAgICAg
ICAgICAgICBTd2l0Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSBtX3ZhbHVlLT5hczxTd2l0Y2hWYWx1
ZT4oKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZT4gY2FzZXM7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFhZjEzZWMz
ZDA4NTU3NzIzMGZlMjc2NzlkNDM0Yjc3ZWM1MDI2NzEuLjFlMTViMTgyMGE4MDY4YWMxZTMxZjA0
YjM4MGI4MGE0ZTIwMDg4ODIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDYtMjYgIEp1c3RpbiBNaWNo
YXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiMyBtYWNybyBs
b3dlcmluZyBmb3IgQ2hlY2tNdWwgb24gYXJtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jaGVjay1tdWwtcG93ZXItb2Yt
dHdvLmpzOiBBZGRlZC4KKyAgICAgICAgKGRvVGVzdCk6CisKIDIwMTktMDYtMjQgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyNDY3MTQuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
aGVjay1tdWwtcG93ZXItb2YtdHdvLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2hlY2st
bXVsLXBvd2VyLW9mLXR3by5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjY1ODgzODg2MDI3NTUxNGJiYmEwZmY3
MjNlNDA3YmM5MzZjYjgxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvY2hlY2stbXVsLXBvd2VyLW9mLXR3by5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBk
b1Rlc3QobWF4KSB7CisgICAgbGV0IHN1bSA9IDAKKyAgICBmb3IgKGxldCBpPTA7IGk8bWF4OyAr
K2kpIHsKKyAgICAgICAgc3VtID0gc3VtICsgaSAqIDY0OworICAgIH0KKyAgICByZXR1cm4gc3Vt
Cit9Citub0lubGluZShkb1Rlc3QpOworCitmb3IgKGxldCBpPTA7IGk8MTAwMDAwOyArK2kpIGRv
VGVzdCgxMDAwMCkKKworaWYgKGRvVGVzdCgxMDAwMCkgIT0gMzE5OTY4MDAwMCkKKyAgICB0aHJv
dyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBkb1Rlc3QoMTAwMDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373149</attachid>
            <date>2019-06-28 14:12:47 -0700</date>
            <delta_ts>2019-06-28 15:25:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199251-20190628141246.patch</filename>
            <type>text/plain</type>
            <size>17569</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Nzc2YmNkYTI0YWI1NjU4YjcwZTY1N2IyOTgzMDI1Mzg4OTVjNWRmLi40MWQxOTgxYWQ3NDZkYzhm
ZjY2MzFkYmU3YjA5Y2I5MWIzZDg3MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOS0wNi0yOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIGIzIG1hY3JvIGxvd2VyaW5nIGZvciBDaGVja011bCBv
biBhcm02NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk5MjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgLSBM
b3dlciBDaGVja011bCBmb3IgMzMtYml0IGFyZ3VtZW50cyBvbiBhcm02NCBpbnRvIGEgbXVsIGFu
ZCB0aGVuIGFuIG92ZXJmbG93IGNoZWNrLgorICAgICAgICAtIEFkZCBhIG5ldyBvcGNvZGUgdG8g
YWlyIG9uIGFybTY0IGZvciBzbXVsbCAobXVsdGlwbHlTaWduRXh0ZW5kMzIpLgorICAgICAgICAt
IEZ1c2Ugc2lnbiBleHRlbmQgMzIgKyBtdWwgaW50byBzbXVsbCAodGFraW5nIHR3byAzMi1iaXQg
YXJndW1lbnRzIGFuZCBwcm9kdWNpbmcgNjQgYml0cykuIAorICAgICAgICAtIDEuMjV4IHNwZWVk
dXAgb24gcG93ZXIgb2YgdHdvIG1pY3JvYmVuY2htYXJrLCAxLjE1eCBzcGVlZHVwIG9uIG5vcm1h
bCBjb25zdGFudCBtaWNyb2JlbmNobWFyaywgCisgICAgICAgICAgYW5kIG5vIGNoYW5nZSBvbiB0
aGUgbm8tY29uc3RhbnQgYmVuY2htYXJrLgorICAgICAgICBBbHNvLCBza2lwIHNvbWUgb2YgdGhl
IGIzIHRlc3RzIHRoYXQgd2VyZSBmYWlsaW5nIGJlZm9yZSB0aGlzIHBhdGNoIHNvIHRoYXQgdGhl
IG5ldyB0ZXN0cyBjYW4gcnVuCisgICAgICAgIHRvIGNvbXBsZXRpb24uCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjptdWx0aXBseVNpZ25FeHRlbmQzMik6CisgICAgICAgICogYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE11bDMyU2lnbkV4dGVuZCk6CisgICAgICAg
IChKU0M6OnJ1bik6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvcy5jcHA6CisgICAgICAgICog
YjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6
CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdz
MzJTaWduRXh0ZW5kKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxJbW0zMlNpZ25FeHRlbmQp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdE1lbW9yeUZlbmNlKToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RTdG9yZUZlbmNlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkRmVuY2UpOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdFBpblJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkIzOjpydW4p
OgorCiAyMDE5LTA2LTI4ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
IAogICAgICAgICBSZW1vdmUgdHJhY2VzIG9mIEVOQUJMRV9JQ09OREFUQUJBU0UgcmVtYWluaW5n
IGFmdGVyIGl0cyByZW1vdmFsIGluIDIxOTczMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCAzZjRjMTZkNjBmODli
MjNmMzJjYzZjYjdiZGQ4ODFmZjAxYmYwYWYwLi4yZWE5MTFlNmM5ZGI1YmE5NTNkZjk2OTQyOTM1
ZGM4ZWMxZjY0Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNTY5LDYgKzU2OSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBBUk02
NFJlZ2lzdGVyczo6enIpOwogICAgIH0KIAorICAgIHZvaWQgbXVsdGlwbHlTaWduRXh0ZW5kMzIo
UmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zbXVsbChkZXN0LCBsZWZ0LCByaWdodCk7CisgICAgfQor
CiAgICAgdm9pZCBkaXYzMihSZWdpc3RlcklEIGRpdmlkZW5kLCBSZWdpc3RlcklEIGRpdmlzb3Is
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNkaXY8MzI+KGRl
c3QsIGRpdmlkZW5kLCBkaXZpc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAKaW5kZXggMTA1MGIzOTk4M2U0ZTY1MDUyODI0YzA0ZjBiYjEyNTRhMzEz
ZTJjOC4uN2M0ZmUzMjU4ZGQzOGMyMDg5NmFkYzgwYmVlNmIzNDc4NGUyZWEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTM1MSw2ICszNTEs
MjUgQEAgdm9pZCB0ZXN0TXVsMzJXaXRoSW1tZWRpYXRlcygpCiAgICAgfQogfQogCisjaWYgQ1BV
KEFSTTY0KQordm9pZCB0ZXN0TXVsMzJTaWduRXh0ZW5kKCkKK3sKKyAgICBmb3IgKGF1dG8gdmFs
dWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgYXV0byBtdWwgPSBjb21waWxlKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1
ZSgpOworCisgICAgICAgICAgICBqaXQubXVsdGlwbHlTaWduRXh0ZW5kMzIoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BS
KTsKKworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAg
ICBqaXQucmV0KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGZvciAoYXV0byB2YWx1ZTIgOiBp
bnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8bG9uZyBpbnQ+KG11
bCwgdmFsdWUsIHZhbHVlMiksICgobG9uZyBpbnQpIHZhbHVlKSAqICgobG9uZyBpbnQpIHZhbHVl
MikpOworICAgIH0KK30KKyNlbmRpZgorCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KQogdm9pZCB0ZXN0Q29tcGFyZUZsb2F0KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVD
b25kaXRpb24gY29uZGl0aW9uKQogewpAQCAtMTExMCw2ICsxMTI5LDEwIEBAIHZvaWQgcnVuKGNv
bnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdENvbXBhcmVEb3VibGUoTWFjcm9Bc3NlbWJs
ZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKSk7CiAgICAgUlVOKHRlc3RNdWwz
MldpdGhJbW1lZGlhdGVzKCkpOwogCisjaWYgQ1BVKEFSTTY0KQorICAgIFJVTih0ZXN0TXVsMzJT
aWduRXh0ZW5kKCkpOworI2VuZGlmCisKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNNjQpCiAgICAgUlVOKHRlc3RDb21wYXJlRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZUVxdWFsKSk7CiAgICAgUlVOKHRlc3RDb21wYXJlRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJs
ZU5vdEVxdWFsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAK
aW5kZXggNGM1OTRkMjRiMzNiYjJlNDFlMjllY2RiZTViNzA1MjcwOTA5NmExMy4uNDM4NDcxNmYx
YzcyYTZjYjM5MDYzNmQyYzQwOTE4YTc0NTk5ODViZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyTWFjcm9zLmNwcApAQCAtMTc3LDYgKzE3NywzNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIENo
ZWNrTXVsOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBtX3ZhbHVlLT5jaGls
ZCgwKS0+dHlwZSgpID09IEludDMyKSB7CisgICAgICAgICAgICAgICAgICAgIENoZWNrVmFsdWUq
IGNoZWNrTXVsID0gbV92YWx1ZS0+YXM8Q2hlY2tWYWx1ZT4oKTsKKworICAgICAgICAgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwg
U0V4dDMyLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgICAg
ICBWYWx1ZSogcmlnaHQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFNF
eHQzMiwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIG11bFJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwg
TXVsLCBtX29yaWdpbiwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
bXVsUmVzdWx0MzIgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFRydW5j
LCBtX29yaWdpbiwgbXVsUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHVwcGVy
UmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBUcnVuYywgbV9v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFs
dWU+KG1faW5kZXgsIFNTaHIsIG1fb3JpZ2luLCBtdWxSZXN1bHQsIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxDb25zdDMyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCAzMikpKTsKKyAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIHNpZ25CaXQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1f
aW5kZXgsIFNTaHIsIG1fb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgbXVsUmVzdWx0
MzIsCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Qz
MlZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgMzEpKTsKKyAgICAgICAgICAgICAgICAgICAgVmFs
dWUqIGhhc092ZXJmbG93ZWQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgs
IE5vdEVxdWFsLCBtX29yaWdpbiwgdXBwZXJSZXN1bHQsIHNpZ25CaXQpOworCisgICAgICAgICAg
ICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENoZWNr
VmFsdWU+KG1faW5kZXgsIENoZWNrLCBtX29yaWdpbiwgaGFzT3ZlcmZsb3dlZCk7CisgICAgICAg
ICAgICAgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoY2hlY2tNdWwtPmdlbmVyYXRvcigpKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hlY2stPmNsb2JiZXJFYXJseShjaGVja011bC0+ZWFybHlD
bG9iYmVyZWQoKSk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrLT5jbG9iYmVyTGF0ZShjaGVj
a011bC0+bGF0ZUNsb2JiZXJlZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2stPmFwcGVu
ZChjaGVja011bC0+Y29uc3RyYWluZWRDaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIGNo
ZWNrLT5hcHBlbmQoY2hlY2tNdWwtPmNvbnN0cmFpbmVkQ2hpbGQoMSkpOworCisgICAgICAgICAg
ICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobXVsUmVzdWx0MzIpOworICAg
ICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBT
d2l0Y2g6IHsKICAgICAgICAgICAgICAgICBTd2l0Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSBtX3Zh
bHVlLT5hczxTd2l0Y2hWYWx1ZT4oKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8U3dpdGNoQ2Fz
ZT4gY2FzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4
IGI0MDk4YmNkZDE5Nzk2YTNmYjIxMzE5NmQ4YTAzZWE5MmM2NGNmMjEuLjFiOTJlNWFkNDQwMDZh
NjUyZTlmYjE1ZGI2M2VhZDBiYTY0Y2Q2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCkBAIC0yNjAyLDYgKzI2MDIsMjcgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgTXVsOiB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgp
ID09IEludDY0CisgICAgICAgICAgICAgICAgJiYgaXNWYWxpZEZvcm0oTXVsdGlwbHlTaWduRXh0
ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApCisgICAgICAgICAgICAgICAgJiYg
bV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IFNFeHQzMgorICAgICAgICAgICAgICAgICYm
ICFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAg
ICBWYWx1ZSogb3BMZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFs
dWUqIGxlZnQgPSBvcExlZnQtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBvcFJp
Z2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0g
bnVsbHB0cjsKKworICAgICAgICAgICAgICAgIGlmIChvcFJpZ2h0LT5vcGNvZGUoKSA9PSBTRXh0
MzIgJiYgIW1fbG9ja2VkLmNvbnRhaW5zKG9wUmlnaHQtPmNoaWxkKDApKSkgeworICAgICAgICAg
ICAgICAgICAgICByaWdodCA9IG9wUmlnaHQtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzUmVwcmVzZW50YWJsZUFzPGludDMyX3Q+KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UganVzdCB1c2UgdGhlIDY0LWJpdCBjb25zdCBp
bnQgYXMgYSAzMiBiaXQgY29uc3QgaW50IGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgIHJp
Z2h0ID0gb3BSaWdodDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
cmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5U2lnbkV4dGVuZDMy
LCB0bXAobGVmdCksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBhcHBlbmRCaW5PcDxNdWwzMiwgTXVsNjQsIE11bERvdWJsZSwgTXVsRmxvYXQsIENvbW11dGF0
aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQo
MSkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMTFhZGE0MTFkNjQzODA1OTIxMzNiYjI0ZjM2YmFh
ZTU3ZDJlZmI3NC4uY2I3ZDYzNzk3YjRkMWEwNzBhMmY4MzMyYmE4MDg2YzE5OTkzNDA4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0y
NjEsNiArMjYxLDkgQEAgYXJtNjQ6IE11bHRpcGx5TmVnMzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKIGFybTY0OiBNdWx0aXBseU5lZzY0IFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjY0CiAgICAgVG1w
LCBUbXAsIFRtcAogCithcm02NDogTXVsdGlwbHlTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIs
IFpEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wCisKIGFybTY0OiBEaXYzMiBVOkc6MzIsIFU6Rzoz
MiwgWkQ6RzozMgogICAgIFRtcCwgVG1wLCBUbXAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAppbmRleCA3ZjMxNjc5YjQxM2ZjYzRkNDdiNTYxNWUxOTA0YTMzZGQ4OTE3ODU1Li5jOWZk
MThlOWJhZjIxNDBjNWMwMzYyNmZiZTYxZjY5NDk3M2E2YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmNwcApAQCAtMTE4OSw2ICsxMTg5LDQ3IEBAIHZvaWQgdGVzdE11bEFyZ3MzMihp
bnQgYSwgaW50IGIpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09
IGEgKiBiKTsKIH0KIAordm9pZCB0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZChpbnQgYSwgaW50IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisg
ICAgICAgIHJldHVybjsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBh
cmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBhcmcxNjQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGFyZzEpOworICAgIFZh
bHVlKiBhcmcyNjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2lu
KCksIGFyZzIpOworICAgIFZhbHVlKiBtdWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE11bCwgT3JpZ2luKCksIGFyZzE2NCwgYXJnMjY0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgbXVsKTsKKworICAgIGF1dG8gY29kZSA9
IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGxvbmcgaW50PigqY29kZSwg
YSwgYikgPT0gKChsb25nIGludCkgYSkgKiAoKGxvbmcgaW50KSBiKSk7Cit9CisKK3ZvaWQgdGVz
dE11bEltbTMyU2lnbkV4dGVuZChjb25zdCBpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgaWYgKHByb2Mub3B0TGV2ZWwoKSA8IDEpCisgICAgICAgIHJldHVybjsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmcxID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZh
bHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBhcmcyNjQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGFyZzIpOwor
ICAgIFZhbHVlKiBtdWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2lu
KCksIGFyZzEsIGFyZzI2NCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIG11bCk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKworICAgIENIRUNLKGludm9rZTxsb25nIGludD4oKmNvZGUsIGIpID09ICgobG9uZyBp
bnQpIGEpICogKChsb25nIGludCkgYikpOworfQorCiB2b2lkIHRlc3RNdWxMb2FkVHdpY2UoKQog
ewogICAgIGF1dG8gdGVzdCA9IFsmXSAoKSB7CkBAIC0xNDYzNSw1NSArMTQ2NzYsNTUgQEAgdm9p
ZCB0ZXN0UGF0Y2hwb2ludFRlcm1pbmFsUmV0dXJuVmFsdWUoYm9vbCBzdWNjZXNzSXNSYXJlKQog
dm9pZCB0ZXN0TWVtb3J5RmVuY2UoKQogewogICAgIFByb2NlZHVyZSBwcm9jOwotICAgIAorCiAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAKKwogICAgIHJvb3Qt
PmFwcGVuZE5ldzxGZW5jZVZhbHVlPihwcm9jLCBPcmlnaW4oKSk7CiAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmRJbnRDb25zdGFu
dChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIDQyKSk7Ci0gICAgCisKICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKICAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSksIDQyKTsK
ICAgICBpZiAoaXNYODYoKSkKICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJs
b2NrIG9yICQweDAsICglcnNwKSIpOwogICAgIGlmIChpc0FSTTY0KCkpCi0gICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAiZG1iICAgIGlzaCIpOworICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbigqY29kZSwgImRtYiAgICAgaXNoIik7CiAgICAgY2hlY2tEb2VzTm90VXNlSW5z
dHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKLSAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlv
bigqY29kZSwgImRtYiAgICBpc2hzdCIpOworICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9u
KCpjb2RlLCAiZG1iICAgICBpc2hzdCIpOwogfQogCiB2b2lkIHRlc3RTdG9yZUZlbmNlKCkKIHsK
ICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAKKwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7Ci0gICAgCisKICAgICByb290LT5hcHBlbmROZXc8RmVuY2VWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSgpKTsKICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZEludENv
bnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgNDIpKTsKLSAgICAKKwogICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOwogICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlKSwg
NDIpOwogICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibG9jayIpOwogICAg
IGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAibWZlbmNlIik7CiAgICAgaWYgKGlz
QVJNNjQoKSkKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgaXNo
c3QiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaHN0
Iik7CiB9CiAKIHZvaWQgdGVzdExvYWRGZW5jZSgpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7Ci0g
ICAgCisKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIAorCiAg
ICAgcm9vdC0+YXBwZW5kTmV3PEZlbmNlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBIZWFwUmFuZ2Uo
KSwgSGVhcFJhbmdlOjp0b3AoKSk7CiAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmRJbnRDb25zdGFudChwcm9jLCBPcmlnaW4oKSwg
SW50MzIsIDQyKSk7Ci0gICAgCisKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSksIDQyKTsKICAgICBjaGVja0RvZXNOb3RV
c2VJbnN0cnVjdGlvbigqY29kZSwgImxvY2siKTsKICAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVj
dGlvbigqY29kZSwgIm1mZW5jZSIpOwogICAgIGlmIChpc0FSTTY0KCkpCi0gICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAiZG1iICAgIGlzaCIpOwotICAgIGNoZWNrRG9lc05vdFVz
ZUluc3RydWN0aW9uKCpjb2RlLCAiZG1iICAgIGlzaHN0Iik7CisgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCAiZG1iICAgICBpc2giKTsKKyAgICBjaGVja0RvZXNOb3RVc2VJbnN0
cnVjdGlvbigqY29kZSwgImRtYiAgICAgaXNoc3QiKTsKIH0KIAogdm9pZCB0ZXN0VHJhcHBpbmdM
b2FkKCkKQEAgLTE0OTYxLDcgKzE1MDAyLDcgQEAgdm9pZCB0ZXN0UGluUmVnaXN0ZXJzKCkKICAg
ICAgICAgICAgIHVzZXNDU1JzIHw9IGNzcnMuZ2V0KHJlZ0F0T2Zmc2V0LnJlZygpKTsKICAgICAg
ICAgQ0hFQ0tfRVEodXNlc0NTUnMsICFwaW4pOwogICAgIH07Ci0gICAgCisKICAgICBnbyh0cnVl
KTsKICAgICBnbyhmYWxzZSk7CiB9CkBAIC0xNzE1Nyw2ICsxNzE5OCwyOSBAQCB2b2lkIHJ1bihj
b25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+
IHRhc2tzOwogCiAgICAgYXV0byBzaG91bGRSdW4gPSBbJl0gKGNvbnN0IGNoYXIqIHRlc3ROYW1l
KSAtPiBib29sIHsKKyAgICAgICAgLy8gRklYTUU6IFRoZXNlIHRlc3RzIGZhaWwgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkzMzA+LgorICAgICAgICBpZiAoIWZp
bHRlciAmJiBpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZmFpbGluZ1Rlc3Qg
OiB7CisgICAgICAgICAgICAgICAgInRlc3RSZXBvcnRVc2VkUmVnaXN0ZXJzTGF0ZVVzZUZvbGxv
d2VkQnlFYXJseURlZkRvZXNOb3RNYXJrVXNlQXNEZWFkIiwKKyAgICAgICAgICAgICAgICAidGVz
dE5lZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uIiwKKyAgICAgICAgICAgICAgICAi
dGVzdFBpblJlZ2lzdGVycyIsCisgICAgICAgICAgICB9KSB7CisgICAgICAgICAgICAgICAgaWYg
KFdURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aCh0ZXN0TmFtZSwgZmFpbGlu
Z1Rlc3QpICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
KCIqKiogV2FybmluZzogU2tpcHBpbmcga25vd24tYmFkIHRlc3Q6ICIsIHRlc3ROYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWZpbHRlciAmJiBpc1g4NigpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIGZhaWxpbmdUZXN0IDogeworICAgICAgICAgICAgICAgICJ0
ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dlZEJ5RWFybHlEZWZEb2VzTm90TWFy
a1VzZUFzRGVhZCIsCisgICAgICAgICAgICB9KSB7CisgICAgICAgICAgICAgICAgaWYgKFdURjo6
ZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0aG91dExlbmd0aCh0ZXN0TmFtZSwgZmFpbGluZ1Rlc3Qp
ICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCIqKiog
V2FybmluZzogU2tpcHBpbmcga25vd24tYmFkIHRlc3Q6ICIsIHRlc3ROYW1lKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQogICAgICAgICByZXR1cm4gIWZpbHRlciB8fCBXVEY6OmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZVdpdGhvdXRMZW5ndGgodGVzdE5hbWUsIGZpbHRlcikgIT0gV1RGOjpub3RGb3Vu
ZDsKICAgICB9OwogCkBAIC0xNzI3Nyw4ICsxNzM0MSwyMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFy
KiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RNdWxJbW1BcmcoMCwgMikpOwogICAgIFJVTih0ZXN0TXVs
SW1tQXJnKDEsIDApKTsKICAgICBSVU4odGVzdE11bEltbUFyZygzLCAzKSk7CisgICAgUlVOKHRl
c3RNdWxJbW0zMlNpZ25FeHRlbmQoMSwgMikpOworICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0
ZW5kKDAsIDIpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVuZCgxLCAwKSk7CisgICAg
UlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMywgMykpOworICAgIFJVTih0ZXN0TXVsSW1tMzJT
aWduRXh0ZW5kKDB4RkZGRkZGRkYsIDB4RkZGRkZGRkYpKTsKKyAgICBSVU4odGVzdE11bEltbTMy
U2lnbkV4dGVuZCgweEZGRkZGRkZFLCAweEZGRkZGRkZGKSk7CisgICAgUlVOKHRlc3RNdWxJbW0z
MlNpZ25FeHRlbmQoMHhGRkZGRkZGRiwgMHhGRkZGRkZGRSkpOwogICAgIFJVTih0ZXN0TXVsQXJn
czMyKDEsIDEpKTsKICAgICBSVU4odGVzdE11bEFyZ3MzMigxLCAyKSk7CisgICAgUlVOKHRlc3RN
dWxBcmdzMzIoMHhGRkZGRkZGRiwgMHhGRkZGRkZGRikpOworICAgIFJVTih0ZXN0TXVsQXJnczMy
KDB4RkZGRkZGRkUsIDB4RkZGRkZGRkYpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MzMlNpZ25FeHRl
bmQoMSwgMSkpOworICAgIFJVTih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgxLCAyKSk7CisgICAg
UlVOKHRlc3RNdWxBcmdzMzJTaWduRXh0ZW5kKDB4RkZGRkZGRkYsIDB4RkZGRkZGRkYpKTsKKyAg
ICBSVU4odGVzdE11bEFyZ3MzMlNpZ25FeHRlbmQoMHhGRkZGRkZGRSwgMHhGRkZGRkZGRikpOwog
ICAgIFJVTih0ZXN0TXVsTG9hZFR3aWNlKCkpOwogICAgIFJVTih0ZXN0TXVsQWRkQXJnc0xlZnQo
KSk7CiAgICAgUlVOKHRlc3RNdWxBZGRBcmdzUmlnaHQoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU4ZjI4Mzg3NGY4OGZhMzFkMGNh
MWE2ZjFjOTBmNmUzZjllMDZlNGMuLjRmZDk2ZmRkMWMwNTMwYThkZWU5YjUyMDAxMjhmZTQ3ZGQw
OGVkM2IgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDYtMjggIEp1c3RpbiBNaWNoYXVkICA8anVzdGlu
X21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBiMyBtYWNybyBsb3dlcmluZyBmb3Ig
Q2hlY2tNdWwgb24gYXJtNjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5OTI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisg
ICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11bC1jb25zdGFudC5qczogQWRkZWQuCisg
ICAgICAgIChkb1Rlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jaGVjay1tdWwtbm8t
Y29uc3RhbnQuanM6IEFkZGVkLgorICAgICAgICAoZG9UZXN0KToKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvY2hlY2stbXVsLXBvd2VyLW9mLXR3by5qczogQWRkZWQuCisgICAgICAgIChkb1Rl
c3QpOgorCiAyMDE5LTA2LTI2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIHNwZWNpZXNDb25zdHJ1Y3QgbmVlZHMgdG8gdGhyb3cgaWYgdGhlIHJlc3Vs
dCBpcyBhIERhdGFWaWV3CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jaGVj
ay1tdWwtY29uc3RhbnQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jaGVjay1tdWwtY29u
c3RhbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ0NTJlYTQwNTNkMzZiODEzOGU0OGRiMGUwNTRlYjUzZGQ5
MDE3NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11
bC1jb25zdGFudC5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBkb1Rlc3QobWF4KSB7Cisg
ICAgbGV0IHN1bSA9IDAKKyAgICBmb3IgKGxldCBpPTA7IGk8bWF4OyArK2kpIHsKKyAgICAgICAg
c3VtID0gc3VtICsgaSAqIDMwNDsKKyAgICB9CisgICAgcmV0dXJuIHN1bQorfQorbm9JbmxpbmUo
ZG9UZXN0KTsKKworZm9yIChsZXQgaT0wOyBpPDEwMDAwMDsgKytpKSBkb1Rlc3QoMTAwMDApCisK
K2lmIChkb1Rlc3QoMTAwMDApICE9IDE1MTk4NDgwMDAwKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHJlc3VsdDogIiArIGRvVGVzdCgxMDAwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jaGVjay1tdWwtbm8tY29uc3RhbnQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9jaGVjay1tdWwtbm8tY29uc3RhbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyYzJhMDUzMTA2MWI2M2Jm
MWFjYmZhZDNlNGNhNTNlNGE1MDgxNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NoZWNrLW11bC1uby1jb25zdGFudC5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5j
dGlvbiBkb1Rlc3QobWF4KSB7CisgICAgbGV0IHN1bSA9IDAKKyAgICBmb3IgKGxldCBpPTA7IGk8
bWF4OyArK2kpIHsKKyAgICAgICAgc3VtID0gc3VtICsgaSAqIGk7CisgICAgfQorICAgIHJldHVy
biBzdW0KK30KK25vSW5saW5lKGRvVGVzdCk7CisKK2ZvciAobGV0IGk9MDsgaTwxMDAwMDA7ICsr
aSkgZG9UZXN0KDEwMDAwKQorCitpZiAoZG9UZXN0KDEwMDAwKSAhPSAzMzMyODMzMzUwMDApCisg
ICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgZG9UZXN0KDEwMDAwKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11bC1wb3dlci1vZi10d28uanMgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jaGVjay1tdWwtcG93ZXItb2YtdHdvLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkyNjU4ODM4ODYwMjc1NTE0YmJiYTBmZjcyM2U0MDdiYzkzNmNiODEKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jaGVjay1tdWwtcG93ZXItb2YtdHdvLmpz
CkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIGRvVGVzdChtYXgpIHsKKyAgICBsZXQgc3VtID0g
MAorICAgIGZvciAobGV0IGk9MDsgaTxtYXg7ICsraSkgeworICAgICAgICBzdW0gPSBzdW0gKyBp
ICogNjQ7CisgICAgfQorICAgIHJldHVybiBzdW0KK30KK25vSW5saW5lKGRvVGVzdCk7CisKK2Zv
ciAobGV0IGk9MDsgaTwxMDAwMDA7ICsraSkgZG9UZXN0KDEwMDAwKQorCitpZiAoZG9UZXN0KDEw
MDAwKSAhPSAzMTk5NjgwMDAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIGRv
VGVzdCgxMDAwMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373155</attachid>
            <date>2019-06-28 15:25:07 -0700</date>
            <delta_ts>2019-07-11 10:17:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199251-20190628152507.patch</filename>
            <type>text/plain</type>
            <size>17616</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2OTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Nzc2YmNkYTI0YWI1NjU4YjcwZTY1N2IyOTgzMDI1Mzg4OTVjNWRmLi45NGRlZDkyMzdkZTFlMjMw
MTMzYzI2YjE0MTkxMWNjZTkwN2YxMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOS0wNi0yOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIGIzIG1hY3JvIGxvd2VyaW5nIGZvciBDaGVja011bCBv
biBhcm02NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk5MjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9iaW4gTW9yaXNzZXQuCisKKyAgICAgICAg
LSBMb3dlciBDaGVja011bCBmb3IgMzItYml0IGFyZ3VtZW50cyBvbiBhcm02NCBpbnRvIGEgbXVs
IGFuZCB0aGVuIGFuIG92ZXJmbG93IGNoZWNrLgorICAgICAgICAtIEFkZCBhIG5ldyBvcGNvZGUg
dG8gYWlyIG9uIGFybTY0IGZvciBzbXVsbCAobXVsdGlwbHlTaWduRXh0ZW5kMzIpLgorICAgICAg
ICAtIEZ1c2Ugc2lnbiBleHRlbmQgMzIgKyBtdWwgaW50byBzbXVsbCAodGFraW5nIHR3byAzMi1i
aXQgYXJndW1lbnRzIGFuZCBwcm9kdWNpbmcgNjQgYml0cykuIAorICAgICAgICAtIDEuMjV4IHNw
ZWVkdXAgb24gcG93ZXIgb2YgdHdvIG1pY3JvYmVuY2htYXJrLCAxLjE1eCBzcGVlZHVwIG9uIG5v
cm1hbCBjb25zdGFudCBtaWNyb2JlbmNobWFyaywgCisgICAgICAgICAgYW5kIG5vIGNoYW5nZSBv
biB0aGUgbm8tY29uc3RhbnQgYmVuY2htYXJrLgorICAgICAgICBBbHNvLCBza2lwIHNvbWUgb2Yg
dGhlIGIzIHRlc3RzIHRoYXQgd2VyZSBmYWlsaW5nIGJlZm9yZSB0aGlzIHBhdGNoIHNvIHRoYXQg
dGhlIG5ldyB0ZXN0cyBjYW4gcnVuCisgICAgICAgIHRvIGNvbXBsZXRpb24uCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjptdWx0aXBseVNpZ25FeHRlbmQzMik6CisgICAgICAgICogYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE11bDMyU2lnbkV4dGVuZCk6CisgICAg
ICAgIChKU0M6OnJ1bik6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvcy5jcHA6CisgICAgICAg
ICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXM6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxB
cmdzMzJTaWduRXh0ZW5kKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxJbW0zMlNpZ25FeHRl
bmQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE1lbW9yeUZlbmNlKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdG9yZUZlbmNlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkRmVuY2UpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdFBpblJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkIzOjpy
dW4pOgorCiAyMDE5LTA2LTI4ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5y
dT4KIAogICAgICAgICBSZW1vdmUgdHJhY2VzIG9mIEVOQUJMRV9JQ09OREFUQUJBU0UgcmVtYWlu
aW5nIGFmdGVyIGl0cyByZW1vdmFsIGluIDIxOTczMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCAzZjRjMTZkNjBm
ODliMjNmMzJjYzZjYjdiZGQ4ODFmZjAxYmYwYWYwLi4yZWE5MTFlNmM5ZGI1YmE5NTNkZjk2OTQy
OTM1ZGM4ZWMxZjY0Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNTY5LDYgKzU2OSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLm1zdWI8NjQ+KGRlc3QsIG11bExlZnQsIG11bFJpZ2h0LCBB
Uk02NFJlZ2lzdGVyczo6enIpOwogICAgIH0KIAorICAgIHZvaWQgbXVsdGlwbHlTaWduRXh0ZW5k
MzIoUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zbXVsbChkZXN0LCBsZWZ0LCByaWdodCk7CisgICAg
fQorCiAgICAgdm9pZCBkaXYzMihSZWdpc3RlcklEIGRpdmlkZW5kLCBSZWdpc3RlcklEIGRpdmlz
b3IsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNkaXY8MzI+
KGRlc3QsIGRpdmlkZW5kLCBkaXZpc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci90ZXN0bWFzbS5jcHAKaW5kZXggMTA1MGIzOTk4M2U0ZTY1MDUyODI0YzA0ZjBiYjEyNTRh
MzEzZTJjOC4uN2M0ZmUzMjU4ZGQzOGMyMDg5NmFkYzgwYmVlNmIzNDc4NGUyZWEwZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTM1MSw2ICsz
NTEsMjUgQEAgdm9pZCB0ZXN0TXVsMzJXaXRoSW1tZWRpYXRlcygpCiAgICAgfQogfQogCisjaWYg
Q1BVKEFSTTY0KQordm9pZCB0ZXN0TXVsMzJTaWduRXh0ZW5kKCkKK3sKKyAgICBmb3IgKGF1dG8g
dmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgYXV0byBtdWwgPSBjb21waWxlKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9s
b2d1ZSgpOworCisgICAgICAgICAgICBqaXQubXVsdGlwbHlTaWduRXh0ZW5kMzIoR1BSSW5mbzo6
YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAg
ICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGZvciAoYXV0byB2YWx1ZTIg
OiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8bG9uZyBpbnQ+
KG11bCwgdmFsdWUsIHZhbHVlMiksICgobG9uZyBpbnQpIHZhbHVlKSAqICgobG9uZyBpbnQpIHZh
bHVlMikpOworICAgIH0KK30KKyNlbmRpZgorCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkg
fHwgQ1BVKEFSTTY0KQogdm9pZCB0ZXN0Q29tcGFyZUZsb2F0KE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVDb25kaXRpb24gY29uZGl0aW9uKQogewpAQCAtMTExMCw2ICsxMTI5LDEwIEBAIHZvaWQgcnVu
KGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdENvbXBhcmVEb3VibGUoTWFjcm9Bc3Nl
bWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKSk7CiAgICAgUlVOKHRlc3RN
dWwzMldpdGhJbW1lZGlhdGVzKCkpOwogCisjaWYgQ1BVKEFSTTY0KQorICAgIFJVTih0ZXN0TXVs
MzJTaWduRXh0ZW5kKCkpOworI2VuZGlmCisKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpCiAgICAgUlVOKHRlc3RDb21wYXJlRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkRv
dWJsZUVxdWFsKSk7CiAgICAgUlVOKHRlc3RDb21wYXJlRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkRv
dWJsZU5vdEVxdWFsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlck1hY3Jvcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5j
cHAKaW5kZXggNGM1OTRkMjRiMzNiYjJlNDFlMjllY2RiZTViNzA1MjcwOTA5NmExMy4uNDM4NDcx
NmYxYzcyYTZjYjM5MDYzNmQyYzQwOTE4YTc0NTk5ODViZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcApAQCAtMTc3LDYgKzE3NywzNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNl
IENoZWNrTXVsOiB7CisgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBtX3ZhbHVlLT5j
aGlsZCgwKS0+dHlwZSgpID09IEludDMyKSB7CisgICAgICAgICAgICAgICAgICAgIENoZWNrVmFs
dWUqIGNoZWNrTXVsID0gbV92YWx1ZS0+YXM8Q2hlY2tWYWx1ZT4oKTsKKworICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogbGVmdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRl
eCwgU0V4dDMyLCBtX29yaWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
ICAgICBWYWx1ZSogcmlnaHQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgs
IFNFeHQzMiwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgVmFsdWUqIG11bFJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRl
eCwgTXVsLCBtX29yaWdpbiwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgICAgICAgICBWYWx1
ZSogbXVsUmVzdWx0MzIgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFRy
dW5jLCBtX29yaWdpbiwgbXVsUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHVw
cGVyUmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBUcnVuYywg
bV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8
VmFsdWU+KG1faW5kZXgsIFNTaHIsIG1fb3JpZ2luLCBtdWxSZXN1bHQsIG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxDb25zdDMyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCAzMikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgVmFsdWUqIHNpZ25CaXQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+
KG1faW5kZXgsIFNTaHIsIG1fb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgbXVsUmVz
dWx0MzIsCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29u
c3QzMlZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgMzEpKTsKKyAgICAgICAgICAgICAgICAgICAg
VmFsdWUqIGhhc092ZXJmbG93ZWQgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5k
ZXgsIE5vdEVxdWFsLCBtX29yaWdpbiwgdXBwZXJSZXN1bHQsIHNpZ25CaXQpOworCisgICAgICAg
ICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENo
ZWNrVmFsdWU+KG1faW5kZXgsIENoZWNrLCBtX29yaWdpbiwgaGFzT3ZlcmZsb3dlZCk7CisgICAg
ICAgICAgICAgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoY2hlY2tNdWwtPmdlbmVyYXRvcigp
KTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2stPmNsb2JiZXJFYXJseShjaGVja011bC0+ZWFy
bHlDbG9iYmVyZWQoKSk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrLT5jbG9iYmVyTGF0ZShj
aGVja011bC0+bGF0ZUNsb2JiZXJlZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2stPmFw
cGVuZChjaGVja011bC0+Y29uc3RyYWluZWRDaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAg
IGNoZWNrLT5hcHBlbmQoY2hlY2tNdWwtPmNvbnN0cmFpbmVkQ2hpbGQoMSkpOworCisgICAgICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobXVsUmVzdWx0MzIpOwor
ICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2Fz
ZSBTd2l0Y2g6IHsKICAgICAgICAgICAgICAgICBTd2l0Y2hWYWx1ZSogc3dpdGNoVmFsdWUgPSBt
X3ZhbHVlLT5hczxTd2l0Y2hWYWx1ZT4oKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8U3dpdGNo
Q2FzZT4gY2FzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmlu
ZGV4IGI0MDk4YmNkZDE5Nzk2YTNmYjIxMzE5NmQ4YTAzZWE5MmM2NGNmMjEuLjU4YzAyNDBmODRl
MWFmMWQ3Mjg1MTI5OGIxMmUzNTZiMWRiZGZmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNjAyLDYgKzI2MDIsMjcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgTXVsOiB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlw
ZSgpID09IEludDY0CisgICAgICAgICAgICAgICAgJiYgaXNWYWxpZEZvcm0oTXVsdGlwbHlTaWdu
RXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApCisgICAgICAgICAgICAgICAg
JiYgbV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IFNFeHQzMgorICAgICAgICAgICAgICAg
ICYmICFtX2xvY2tlZC5jb250YWlucyhtX3ZhbHVlLT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAg
ICAgICBWYWx1ZSogb3BMZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAg
VmFsdWUqIGxlZnQgPSBvcExlZnQtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBv
cFJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIHJpZ2h0
ID0gbnVsbHB0cjsKKworICAgICAgICAgICAgICAgIGlmIChvcFJpZ2h0LT5vcGNvZGUoKSA9PSBT
RXh0MzIgJiYgIW1fbG9ja2VkLmNvbnRhaW5zKG9wUmlnaHQtPmNoaWxkKDApKSkgeworICAgICAg
ICAgICAgICAgICAgICByaWdodCA9IG9wUmlnaHQtPmNoaWxkKDApOworICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzUmVwcmVzZW50YWJsZUFzPGludDMyX3Q+
KCkgJiYgIW1fbG9ja2VkLmNvbnRhaW5zKG1fdmFsdWUtPmNoaWxkKDEpKSkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBqdXN0IHVzZSB0aGUgNjQtYml0IGNvbnN0IGludCBhcyBhIDMyIGJp
dCBjb25zdCBpbnQgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBvcFJpZ2h0
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChyaWdodCkgeworICAg
ICAgICAgICAgICAgICAgICBhcHBlbmQoTXVsdGlwbHlTaWduRXh0ZW5kMzIsIHRtcChsZWZ0KSwg
dG1wKHJpZ2h0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGFwcGVuZEJpbk9w
PE11bDMyLCBNdWw2NCwgTXVsRG91YmxlLCBNdWxGbG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAg
ICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcwppbmRleCAxMWFkYTQxMWQ2NDM4MDU5MjEzM2JiMjRmMzZiYWFlNTdkMmVmYjc0Li5j
YjdkNjM3OTdiNGQxYTA3MGEyZjgzMzJiYTgwODZjMTk5OTM0MDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTI2MSw2ICsyNjEsOSBA
QCBhcm02NDogTXVsdGlwbHlOZWczMiBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogYXJtNjQ6IE11
bHRpcGx5TmVnNjQgVTpHOjY0LCBVOkc6NjQsIFpEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAK
K2FybTY0OiBNdWx0aXBseVNpZ25FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwgWkQ6Rzo2NAorICAg
IFRtcCwgVG1wLCBUbXAKKwogYXJtNjQ6IERpdjMyIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAg
ICAgVG1wLCBUbXAsIFRtcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IDdm
MzE2NzliNDEzZmNjNGQ0N2I1NjE1ZTE5MDRhMzNkZDg5MTc4NTUuLmM5ZmQxOGU5YmFmMjE0MGM1
YzAzNjI2ZmJlNjFmNjk0OTczYTZhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CkBAIC0xMTg5LDYgKzExODksNDcgQEAgdm9pZCB0ZXN0TXVsQXJnczMyKGludCBhLCBpbnQgYikK
ICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gYSAqIGIpOwogfQog
Cit2b2lkIHRlc3RNdWxBcmdzMzJTaWduRXh0ZW5kKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBpZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
ZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzE2NCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgU0V4dDMyLCBPcmlnaW4oKSwgYXJnMSk7CisgICAgVmFsdWUqIGFyZzI2NCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU0V4dDMyLCBPcmlnaW4oKSwgYXJnMik7Cisg
ICAgVmFsdWUqIG11bCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4o
KSwgYXJnMTY0LCBhcmcyNjQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBtdWwpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisKKyAgICBDSEVDSyhpbnZva2U8bG9uZyBpbnQ+KCpjb2RlLCBhLCBiKSA9PSAoKGxv
bmcgaW50KSBhKSAqICgobG9uZyBpbnQpIGIpKTsKK30KKwordm9pZCB0ZXN0TXVsSW1tMzJTaWdu
RXh0ZW5kKGNvbnN0IGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBp
ZiAocHJvYy5vcHRMZXZlbCgpIDwgMSkKKyAgICAgICAgcmV0dXJuOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZzI2NCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgU0V4dDMyLCBPcmlnaW4oKSwgYXJnMik7CisgICAgVmFsdWUqIG11
bCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJn
MjY0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgbXVsKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworCisgICAg
Q0hFQ0soaW52b2tlPGxvbmcgaW50PigqY29kZSwgYikgPT0gKChsb25nIGludCkgYSkgKiAoKGxv
bmcgaW50KSBiKSk7Cit9CisKIHZvaWQgdGVzdE11bExvYWRUd2ljZSgpCiB7CiAgICAgYXV0byB0
ZXN0ID0gWyZdICgpIHsKQEAgLTE0NjM1LDU1ICsxNDY3Niw1NSBAQCB2b2lkIHRlc3RQYXRjaHBv
aW50VGVybWluYWxSZXR1cm5WYWx1ZShib29sIHN1Y2Nlc3NJc1JhcmUpCiB2b2lkIHRlc3RNZW1v
cnlGZW5jZSgpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgCisKICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIAorCiAgICAgcm9vdC0+YXBwZW5kTmV3PEZl
bmNlVmFsdWU+KHByb2MsIE9yaWdpbigpKTsKICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdp
bigpLCBJbnQzMiwgNDIpKTsKLSAgICAKKwogICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHBy
b2MpOwogICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpjb2RlKSwgNDIpOwogICAgIGlmIChpc1g4
NigpKQogICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImxvY2sgb3IgJDB4MCwg
KCVyc3ApIik7CiAgICAgaWYgKGlzQVJNNjQoKSkKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJkbWIgICAgaXNoIik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpj
b2RlLCAiZG1iICAgICBpc2giKTsKICAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29k
ZSwgIm1mZW5jZSIpOwotICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAiZG1i
ICAgIGlzaHN0Iik7CisgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJkbWIg
ICAgIGlzaHN0Iik7CiB9CiAKIHZvaWQgdGVzdFN0b3JlRmVuY2UoKQogewogICAgIFByb2NlZHVy
ZSBwcm9jOwotICAgIAorCiAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
LSAgICAKKwogICAgIHJvb3QtPmFwcGVuZE5ldzxGZW5jZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
SGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlKCkpOwogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywg
T3JpZ2luKCksIEludDMyLCA0MikpOwotICAgIAorCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CiAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCA0Mik7CiAgICAgY2hl
Y2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7CiAgICAgY2hlY2tEb2VzTm90
VXNlSW5zdHJ1Y3Rpb24oKmNvZGUsICJtZmVuY2UiKTsKICAgICBpZiAoaXNBUk02NCgpKQotICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImRtYiAgICBpc2hzdCIpOworICAgICAg
ICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgImRtYiAgICAgaXNoc3QiKTsKIH0KIAogdm9p
ZCB0ZXN0TG9hZEZlbmNlKCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAKKwogICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgCisKICAgICByb290LT5hcHBl
bmROZXc8RmVuY2VWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEhlYXBSYW5nZSgpLCBIZWFwUmFuZ2U6
OnRvcCgpKTsKICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2MsIE9yaWdpbigpLCBJbnQzMiwgNDIpKTsK
LSAgICAKKwogICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwogICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpjb2RlKSwgNDIpOwogICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9u
KCpjb2RlLCAibG9jayIpOwogICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2RlLCAi
bWZlbmNlIik7CiAgICAgaWYgKGlzQVJNNjQoKSkKLSAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJkbWIgICAgaXNoIik7Ci0gICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24o
KmNvZGUsICJkbWIgICAgaXNoc3QiKTsKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsICJkbWIgICAgIGlzaCIpOworICAgIGNoZWNrRG9lc05vdFVzZUluc3RydWN0aW9uKCpjb2Rl
LCAiZG1iICAgICBpc2hzdCIpOwogfQogCiB2b2lkIHRlc3RUcmFwcGluZ0xvYWQoKQpAQCAtMTQ5
NjEsNyArMTUwMDIsNyBAQCB2b2lkIHRlc3RQaW5SZWdpc3RlcnMoKQogICAgICAgICAgICAgdXNl
c0NTUnMgfD0gY3Nycy5nZXQocmVnQXRPZmZzZXQucmVnKCkpOwogICAgICAgICBDSEVDS19FUSh1
c2VzQ1NScywgIXBpbik7CiAgICAgfTsKLSAgICAKKwogICAgIGdvKHRydWUpOwogICAgIGdvKGZh
bHNlKTsKIH0KQEAgLTE3MTU3LDYgKzE3MTk4LDI5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZp
bHRlcikKICAgICBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4gdGFza3M7CiAKICAg
ICBhdXRvIHNob3VsZFJ1biA9IFsmXSAoY29uc3QgY2hhciogdGVzdE5hbWUpIC0+IGJvb2wgewor
ICAgICAgICAvLyBGSVhNRTogVGhlc2UgdGVzdHMgZmFpbCA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5OTMzMD4uCisgICAgICAgIGlmICghZmlsdGVyICYmIGlzQVJN
NjQoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBmYWlsaW5nVGVzdCA6IHsKKyAgICAgICAg
ICAgICAgICAidGVzdFJlcG9ydFVzZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93ZWRCeUVhcmx5RGVm
RG9lc05vdE1hcmtVc2VBc0RlYWQiLAorICAgICAgICAgICAgICAgICJ0ZXN0TmVnRmxvYXRXaXRo
VXNlbGVzc0RvdWJsZUNvbnZlcnNpb24iLAorICAgICAgICAgICAgICAgICJ0ZXN0UGluUmVnaXN0
ZXJzIiwKKyAgICAgICAgICAgIH0pIHsKKyAgICAgICAgICAgICAgICBpZiAoV1RGOjpmaW5kSWdu
b3JpbmdBU0NJSUNhc2VXaXRob3V0TGVuZ3RoKHRlc3ROYW1lLCBmYWlsaW5nVGVzdCkgIT0gV1RG
Ojpub3RGb3VuZCkgeworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIioqKiBXYXJuaW5n
OiBTa2lwcGluZyBrbm93bi1iYWQgdGVzdDogIiwgdGVzdE5hbWUpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGlmICghZmlsdGVyICYmIGlzWDg2KCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgZmFpbGluZ1Rlc3QgOiB7CisgICAgICAgICAgICAgICAgInRlc3RSZXBvcnRVc2Vk
UmVnaXN0ZXJzTGF0ZVVzZUZvbGxvd2VkQnlFYXJseURlZkRvZXNOb3RNYXJrVXNlQXNEZWFkIiwK
KyAgICAgICAgICAgIH0pIHsKKyAgICAgICAgICAgICAgICBpZiAoV1RGOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2VXaXRob3V0TGVuZ3RoKHRlc3ROYW1lLCBmYWlsaW5nVGVzdCkgIT0gV1RGOjpub3RG
b3VuZCkgeworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIioqKiBXYXJuaW5nOiBTa2lw
cGluZyBrbm93bi1iYWQgdGVzdDogIiwgdGVzdE5hbWUpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CiAgICAgICAgIHJldHVybiAhZmlsdGVyIHx8IFdURjo6ZmluZElnbm9yaW5nQVNDSUlDYXNlV2l0
aG91dExlbmd0aCh0ZXN0TmFtZSwgZmlsdGVyKSAhPSBXVEY6Om5vdEZvdW5kOwogICAgIH07CiAK
QEAgLTE3Mjc3LDggKzE3MzQxLDIxIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAg
ICBSVU4odGVzdE11bEltbUFyZygwLCAyKSk7CiAgICAgUlVOKHRlc3RNdWxJbW1BcmcoMSwgMCkp
OwogICAgIFJVTih0ZXN0TXVsSW1tQXJnKDMsIDMpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2ln
bkV4dGVuZCgxLCAyKSk7CisgICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMCwgMikpOwor
ICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKDEsIDApKTsKKyAgICBSVU4odGVzdE11bElt
bTMyU2lnbkV4dGVuZCgzLCAzKSk7CisgICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMHhG
RkZGRkZGRiwgMHhGRkZGRkZGRikpOworICAgIFJVTih0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKDB4
RkZGRkZGRkUsIDB4RkZGRkZGRkYpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVuZCgw
eEZGRkZGRkZGLCAweEZGRkZGRkZFKSk7CiAgICAgUlVOKHRlc3RNdWxBcmdzMzIoMSwgMSkpOwog
ICAgIFJVTih0ZXN0TXVsQXJnczMyKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MzMigweEZG
RkZGRkZGLCAweEZGRkZGRkZGKSk7CisgICAgUlVOKHRlc3RNdWxBcmdzMzIoMHhGRkZGRkZGRSwg
MHhGRkZGRkZGRikpOworICAgIFJVTih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgxLCAxKSk7Cisg
ICAgUlVOKHRlc3RNdWxBcmdzMzJTaWduRXh0ZW5kKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEFy
Z3MzMlNpZ25FeHRlbmQoMHhGRkZGRkZGRiwgMHhGRkZGRkZGRikpOworICAgIFJVTih0ZXN0TXVs
QXJnczMyU2lnbkV4dGVuZCgweEZGRkZGRkZFLCAweEZGRkZGRkZGKSk7CiAgICAgUlVOKHRlc3RN
dWxMb2FkVHdpY2UoKSk7CiAgICAgUlVOKHRlc3RNdWxBZGRBcmdzTGVmdCgpKTsKICAgICBSVU4o
dGVzdE11bEFkZEFyZ3NSaWdodCgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZThmMjgzODc0Zjg4ZmEzMWQwY2ExYTZmMWM5MGY2ZTNm
OWUwNmU0Yy4uMWMzNWY0MjRmNDcyOGZkZGQ1MDU1OWY1ZDVjM2I4ZTBhNmU3Zjk2NCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxOS0wNi0yOCAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGIzIG1hY3JvIGxvd2VyaW5nIGZvciBDaGVja011bCBvbiBh
cm02NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5
MjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9iaW4gTW9yaXNzZXQuCisKKyAgICAgICAgKiBt
aWNyb2JlbmNobWFya3MvY2hlY2stbXVsLWNvbnN0YW50LmpzOiBBZGRlZC4KKyAgICAgICAgKGRv
VGVzdCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11bC1uby1jb25zdGFudC5q
czogQWRkZWQuCisgICAgICAgIChkb1Rlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9j
aGVjay1tdWwtcG93ZXItb2YtdHdvLmpzOiBBZGRlZC4KKyAgICAgICAgKGRvVGVzdCk6CisKIDIw
MTktMDYtMjYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgc3BlY2llc0NvbnN0cnVjdCBuZWVkcyB0byB0aHJvdyBpZiB0aGUgcmVzdWx0IGlzIGEgRGF0
YVZpZXcKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11bC1jb25z
dGFudC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11bC1jb25zdGFudC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNDQ1MmVhNDA1M2QzNmI4MTM4ZTQ4ZGIwZTA1NGViNTNkZDkwMTc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2hlY2stbXVsLWNvbnN0YW50
LmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIGRvVGVzdChtYXgpIHsKKyAgICBsZXQgc3Vt
ID0gMAorICAgIGZvciAobGV0IGk9MDsgaTxtYXg7ICsraSkgeworICAgICAgICBzdW0gPSBzdW0g
KyBpICogMzA0OworICAgIH0KKyAgICByZXR1cm4gc3VtCit9Citub0lubGluZShkb1Rlc3QpOwor
Citmb3IgKGxldCBpPTA7IGk8MTAwMDAwOyArK2kpIGRvVGVzdCgxMDAwMCkKKworaWYgKGRvVGVz
dCgxMDAwMCkgIT0gMTUxOTg0ODAwMDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgZG9UZXN0KDEwMDAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2No
ZWNrLW11bC1uby1jb25zdGFudC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11
bC1uby1jb25zdGFudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjJjMmEwNTMxMDYxYjYzYmYxYWNiZmFkM2U0
Y2E1M2U0YTUwODE0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2hlY2stbXVsLW5vLWNvbnN0YW50LmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIGRvVGVz
dChtYXgpIHsKKyAgICBsZXQgc3VtID0gMAorICAgIGZvciAobGV0IGk9MDsgaTxtYXg7ICsraSkg
eworICAgICAgICBzdW0gPSBzdW0gKyBpICogaTsKKyAgICB9CisgICAgcmV0dXJuIHN1bQorfQor
bm9JbmxpbmUoZG9UZXN0KTsKKworZm9yIChsZXQgaT0wOyBpPDEwMDAwMDsgKytpKSBkb1Rlc3Qo
MTAwMDApCisKK2lmIChkb1Rlc3QoMTAwMDApICE9IDMzMzI4MzMzNTAwMCkKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBkb1Rlc3QoMTAwMDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2hlY2stbXVsLXBvd2VyLW9mLXR3by5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2NoZWNrLW11bC1wb3dlci1vZi10d28uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI2NTg4
Mzg4NjAyNzU1MTRiYmJhMGZmNzIzZTQwN2JjOTM2Y2I4MQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11bC1wb3dlci1vZi10d28uanMKQEAgLTAsMCAr
MSwxMyBAQAorZnVuY3Rpb24gZG9UZXN0KG1heCkgeworICAgIGxldCBzdW0gPSAwCisgICAgZm9y
IChsZXQgaT0wOyBpPG1heDsgKytpKSB7CisgICAgICAgIHN1bSA9IHN1bSArIGkgKiA2NDsKKyAg
ICB9CisgICAgcmV0dXJuIHN1bQorfQorbm9JbmxpbmUoZG9UZXN0KTsKKworZm9yIChsZXQgaT0w
OyBpPDEwMDAwMDsgKytpKSBkb1Rlc3QoMTAwMDApCisKK2lmIChkb1Rlc3QoMTAwMDApICE9IDMx
OTk2ODAwMDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgZG9UZXN0KDEwMDAw
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373926</attachid>
            <date>2019-07-11 10:17:56 -0700</date>
            <delta_ts>2019-07-11 14:08:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17819</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YzAxMjZiMzY1NjMuLjczODhmYTQ2NmFkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA2LTI4ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYjMg
bWFjcm8gbG93ZXJpbmcgZm9yIENoZWNrTXVsIG9uIGFybTY0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkyNTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBSb2JpbiBNb3Jpc3NldC4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jaGVjay1tdWwt
Y29uc3RhbnQuanM6IEFkZGVkLgorICAgICAgICAoZG9UZXN0KToKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvY2hlY2stbXVsLW5vLWNvbnN0YW50LmpzOiBBZGRlZC4KKyAgICAgICAgKGRvVGVz
dCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11bC1wb3dlci1vZi10d28uanM6
IEFkZGVkLgorICAgICAgICAoZG9UZXN0KToKKwogMjAxOS0wNy0wMSAgUnlhbiBIYWRkYWQgIDxy
eWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjQ2OTQ2LgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2hlY2stbXVsLWNv
bnN0YW50LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2hlY2stbXVsLWNvbnN0YW50Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNDQ1MmVhNDA1MwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NoZWNrLW11bC1jb25zdGFu
dC5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBkb1Rlc3QobWF4KSB7CisgICAgbGV0IHN1
bSA9IDAKKyAgICBmb3IgKGxldCBpPTA7IGk8bWF4OyArK2kpIHsKKyAgICAgICAgc3VtID0gc3Vt
ICsgaSAqIDMwNDsKKyAgICB9CisgICAgcmV0dXJuIHN1bQorfQorbm9JbmxpbmUoZG9UZXN0KTsK
KworZm9yIChsZXQgaT0wOyBpPDEwMDAwMDsgKytpKSBkb1Rlc3QoMTAwMDApCisKK2lmIChkb1Rl
c3QoMTAwMDApICE9IDE1MTk4NDgwMDAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIGRvVGVzdCgxMDAwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
aGVjay1tdWwtbm8tY29uc3RhbnQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jaGVjay1t
dWwtbm8tY29uc3RhbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
Ljk2MmMyYTA1MzEwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
Y2hlY2stbXVsLW5vLWNvbnN0YW50LmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIGRvVGVz
dChtYXgpIHsKKyAgICBsZXQgc3VtID0gMAorICAgIGZvciAobGV0IGk9MDsgaTxtYXg7ICsraSkg
eworICAgICAgICBzdW0gPSBzdW0gKyBpICogaTsKKyAgICB9CisgICAgcmV0dXJuIHN1bQorfQor
bm9JbmxpbmUoZG9UZXN0KTsKKworZm9yIChsZXQgaT0wOyBpPDEwMDAwMDsgKytpKSBkb1Rlc3Qo
MTAwMDApCisKK2lmIChkb1Rlc3QoMTAwMDApICE9IDMzMzI4MzMzNTAwMCkKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBkb1Rlc3QoMTAwMDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2hlY2stbXVsLXBvd2VyLW9mLXR3by5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2NoZWNrLW11bC1wb3dlci1vZi10d28uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjkyNjU4ODM4ODYwCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2hlY2stbXVsLXBvd2VyLW9mLXR3by5qcwpAQCAtMCwwICsx
LDEzIEBACitmdW5jdGlvbiBkb1Rlc3QobWF4KSB7CisgICAgbGV0IHN1bSA9IDAKKyAgICBmb3Ig
KGxldCBpPTA7IGk8bWF4OyArK2kpIHsKKyAgICAgICAgc3VtID0gc3VtICsgaSAqIDY0OworICAg
IH0KKyAgICByZXR1cm4gc3VtCit9Citub0lubGluZShkb1Rlc3QpOworCitmb3IgKGxldCBpPTA7
IGk8MTAwMDAwOyArK2kpIGRvVGVzdCgxMDAwMCkKKworaWYgKGRvVGVzdCgxMDAwMCkgIT0gMzE5
OTY4MDAwMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBkb1Rlc3QoMTAwMDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDFmYjA3NGMyNWIuLjE4ODA1YjkxZDc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOS0wNi0yOCAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGIz
IG1hY3JvIGxvd2VyaW5nIGZvciBDaGVja011bCBvbiBhcm02NAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MjUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgUm9iaW4gTW9yaXNzZXQuCisKKyAgICAgICAgLSBMb3dlciBDaGVja011bCBmb3IgMzItYml0
IGFyZ3VtZW50cyBvbiBhcm02NCBpbnRvIGEgbXVsIGFuZCB0aGVuIGFuIG92ZXJmbG93IGNoZWNr
LgorICAgICAgICAtIEFkZCBhIG5ldyBvcGNvZGUgdG8gYWlyIG9uIGFybTY0IGZvciBzbXVsbCAo
bXVsdGlwbHlTaWduRXh0ZW5kMzIpLgorICAgICAgICAtIEZ1c2Ugc2lnbiBleHRlbmQgMzIgKyBt
dWwgaW50byBzbXVsbCAodGFraW5nIHR3byAzMi1iaXQgYXJndW1lbnRzIGFuZCBwcm9kdWNpbmcg
NjQgYml0cykuIAorICAgICAgICAtIDEuMjV4IHNwZWVkdXAgb24gcG93ZXIgb2YgdHdvIG1pY3Jv
YmVuY2htYXJrLCAxLjE1eCBzcGVlZHVwIG9uIG5vcm1hbCBjb25zdGFudCBtaWNyb2JlbmNobWFy
aywgCisgICAgICAgICAgYW5kIG5vIGNoYW5nZSBvbiB0aGUgbm8tY29uc3RhbnQgYmVuY2htYXJr
LgorICAgICAgICBBbHNvLCBza2lwIHNvbWUgb2YgdGhlIGIzIHRlc3RzIHRoYXQgd2VyZSBmYWls
aW5nIGJlZm9yZSB0aGlzIHBhdGNoIHNvIHRoYXQgdGhlIG5ldyB0ZXN0cyBjYW4gcnVuCisgICAg
ICAgIHRvIGNvbXBsZXRpb24uCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjptdWx0aXBseVNpZ25F
eHRlbmQzMik6CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpT
Qzo6dGVzdE11bDMyU2lnbkV4dGVuZCk6CisgICAgICAgIChKU0M6OnJ1bik6CisgICAgICAgICog
YjMvQjNMb3dlck1hY3Jvcy5jcHA6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAg
ICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAgICogYjMvdGVzdGIzLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdzMzJTaWduRXh0ZW5kKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RNdWxJbW0zMlNpZ25FeHRlbmQpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dE1lbW9yeUZlbmNlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZUZlbmNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RMb2FkRmVuY2UpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFBpblJl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAyMDE5LTA3LTAxICBSeWFuIEhh
ZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIyNDY5NDYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDNmNGMxNmQ2MGY4Li4yZWE5MTFlNmM5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmgKQEAgLTU2OSw2ICs1NjksMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5tc3ViPDY0PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgQVJNNjRSZWdpc3RlcnM6Onpy
KTsKICAgICB9CiAKKyAgICB2b2lkIG11bHRpcGx5U2lnbkV4dGVuZDMyKFJlZ2lzdGVySUQgbGVm
dCwgUmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIuc211bGwoZGVzdCwgbGVmdCwgcmlnaHQpOworICAgIH0KKwogICAgIHZvaWQgZGl2
MzIoUmVnaXN0ZXJJRCBkaXZpZGVuZCwgUmVnaXN0ZXJJRCBkaXZpc29yLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zZGl2PDMyPihkZXN0LCBkaXZpZGVuZCwg
ZGl2aXNvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CmluZGV4IDEwNTBiMzk5ODNlLi43YzRmZTMyNThkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTM1MSw2ICszNTEsMjUgQEAgdm9pZCB0ZXN0
TXVsMzJXaXRoSW1tZWRpYXRlcygpCiAgICAgfQogfQogCisjaWYgQ1BVKEFSTTY0KQordm9pZCB0
ZXN0TXVsMzJTaWduRXh0ZW5kKCkKK3sKKyAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgYXV0byBtdWwgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworCisgICAgICAg
ICAgICBqaXQubXVsdGlwbHlTaWduRXh0ZW5kMzIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAg
ICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGZvciAoYXV0byB2YWx1ZTIgOiBpbnQzMk9wZXJhbmRzKCkp
CisgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8bG9uZyBpbnQ+KG11bCwgdmFsdWUsIHZhbHVl
MiksICgobG9uZyBpbnQpIHZhbHVlKSAqICgobG9uZyBpbnQpIHZhbHVlMikpOworICAgIH0KK30K
KyNlbmRpZgorCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogdm9p
ZCB0ZXN0Q29tcGFyZUZsb2F0KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0
aW9uKQogewpAQCAtMTExMCw2ICsxMTI5LDEwIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICBSVU4odGVzdENvbXBhcmVEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NU
aGFuT3JFcXVhbE9yVW5vcmRlcmVkKSk7CiAgICAgUlVOKHRlc3RNdWwzMldpdGhJbW1lZGlhdGVz
KCkpOwogCisjaWYgQ1BVKEFSTTY0KQorICAgIFJVTih0ZXN0TXVsMzJTaWduRXh0ZW5kKCkpOwor
I2VuZGlmCisKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCiAgICAg
UlVOKHRlc3RDb21wYXJlRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsKSk7CiAgICAg
UlVOKHRlc3RDb21wYXJlRmxvYXQoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKaW5kZXggNGM1OTRkMjRi
MzMuLjRkNGViMTc3OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlck1hY3Jvcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNy
b3MuY3BwCkBAIC0xNzcsNiArMTc3LDM2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tNdWw6IHsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNBUk02NCgpICYmIG1fdmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0g
SW50MzIpIHsKKyAgICAgICAgICAgICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwgPSBtX3Zh
bHVlLT5hczxDaGVja1ZhbHVlPigpOworCisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBsZWZ0
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBTRXh0MzIsIG1fb3JpZ2lu
LCBtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgU0V4dDMyLCBtX29yaWdpbiwg
bV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsUmVzdWx0
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBNdWwsIG1fb3JpZ2luLCBs
ZWZ0LCByaWdodCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWxSZXN1bHQzMiA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgVHJ1bmMsIG1fb3JpZ2luLCBtdWxS
ZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogdXBwZXJSZXN1bHQgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIFRydW5jLCBtX29yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgU1No
ciwgbV9vcmlnaW4sIG11bFJlc3VsdCwgbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0MzJWYWx1
ZT4obV9pbmRleCwgbV9vcmlnaW4sIDMyKSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSog
c2lnbkJpdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgU1NociwgbV9v
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBtdWxSZXN1bHQzMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDMyVmFsdWU+KG1faW5kZXgs
IG1fb3JpZ2luLCAzMSkpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogaGFzT3ZlcmZsb3dl
ZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgTm90RXF1YWwsIG1fb3Jp
Z2luLCB1cHBlclJlc3VsdCwgc2lnbkJpdCk7CisKKyAgICAgICAgICAgICAgICAgICAgQ2hlY2tW
YWx1ZSogY2hlY2sgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q2hlY2tWYWx1ZT4obV9pbmRleCwg
Q2hlY2ssIG1fb3JpZ2luLCBoYXNPdmVyZmxvd2VkKTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2stPnNldEdlbmVyYXRvcihjaGVja011bC0+Z2VuZXJhdG9yKCkpOworICAgICAgICAgICAgICAg
ICAgICBjaGVjay0+Y2xvYmJlckVhcmx5KGNoZWNrTXVsLT5lYXJseUNsb2JiZXJlZCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2stPmNsb2JiZXJMYXRlKGNoZWNrTXVsLT5sYXRlQ2xvYmJl
cmVkKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGNoaWxkcmVuID0gY2hlY2tNdWwtPmNv
bnN0cmFpbmVkQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdCA9IGNoaWxk
cmVuLmJlZ2luKCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc3RkOjphZHZhbmNlKGl0LCAy
KTsgaXQgIT0gY2hpbGRyZW4uZW5kKCk7ICsraXQpCisgICAgICAgICAgICAgICAgICAgICAgICBj
aGVjay0+YXBwZW5kKCppdCk7CisKKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhJZGVudGl0eShtdWxSZXN1bHQzMik7CisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICBjYXNlIFN3aXRjaDogewogICAgICAgICAgICAgICAg
IFN3aXRjaFZhbHVlKiBzd2l0Y2hWYWx1ZSA9IG1fdmFsdWUtPmFzPFN3aXRjaFZhbHVlPigpOwog
ICAgICAgICAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiBjYXNlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggYjQwOThiY2RkMTkuLjU4YzAyNDBmODRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMjYwMiw2
ICsyNjAyLDI3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIE11bDogewor
ICAgICAgICAgICAgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQ2NAorICAgICAgICAgICAgICAg
ICYmIGlzVmFsaWRGb3JtKE11bHRpcGx5U2lnbkV4dGVuZDMyLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6VG1wKQorICAgICAgICAgICAgICAgICYmIG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBTRXh0MzIKKyAgICAgICAgICAgICAgICAmJiAhbV9sb2NrZWQuY29udGFpbnMobV92YWx1
ZS0+Y2hpbGQoMCkpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIG9wTGVmdCA9IG1fdmFsdWUt
PmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gb3BMZWZ0LT5jaGlsZCgw
KTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogb3BSaWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOwor
ICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgICAg
ICBpZiAob3BSaWdodC0+b3Bjb2RlKCkgPT0gU0V4dDMyICYmICFtX2xvY2tlZC5jb250YWlucyhv
cFJpZ2h0LT5jaGlsZCgwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBvcFJpZ2h0
LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fdmFsdWUtPmNoaWxkKDEp
LT5pc1JlcHJlc2VudGFibGVBczxpbnQzMl90PigpICYmICFtX2xvY2tlZC5jb250YWlucyhtX3Zh
bHVlLT5jaGlsZCgxKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UganVzdCB1c2UgdGhl
IDY0LWJpdCBjb25zdCBpbnQgYXMgYSAzMiBiaXQgY29uc3QgaW50IGRpcmVjdGx5CisgICAgICAg
ICAgICAgICAgICAgIHJpZ2h0ID0gb3BSaWdodDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBpZiAocmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE11bHRp
cGx5U2lnbkV4dGVuZDMyLCB0bXAobGVmdCksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBhcHBlbmRCaW5PcDxNdWwzMiwgTXVsNjQsIE11bERvdWJsZSwgTXVs
RmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwg
bV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCmluZGV4IGJlOTlkOGM1M2YyLi4xODI4ZTUwYjgy
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaApAQCAtMjIw
LDYgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIENvbnN0cmFpbmVkVmFsdWVDb2xsZWN0
aW9uIHsKICAgICBwdWJsaWM6CisKICAgICAgICAgQ29uc3RyYWluZWRWYWx1ZUNvbGxlY3Rpb24o
Y29uc3QgU3RhY2ttYXBWYWx1ZSYgdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUp
CiAgICAgICAgIHsKQEAgLTIzMyw2ICsyMzQsMTIgQEAgcHVibGljOgogCiAgICAgICAgIGNsYXNz
IGl0ZXJhdG9yIHsKICAgICAgICAgcHVibGljOgorICAgICAgICAgICAgdXNpbmcgaXRlcmF0b3Jf
Y2F0ZWdvcnkgPSBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnOworICAgICAgICAgICAgdXNpbmcg
dmFsdWVfdHlwZSA9IENvbnN0cmFpbmVkVmFsdWU7CisgICAgICAgICAgICB1c2luZyBkaWZmZXJl
bmNlX3R5cGUgPSBpbnQ7CisgICAgICAgICAgICB1c2luZyBwb2ludGVyID0gdm9pZDsKKyAgICAg
ICAgICAgIHVzaW5nIHJlZmVyZW5jZSA9IENvbnN0cmFpbmVkVmFsdWU7CisKICAgICAgICAgICAg
IGl0ZXJhdG9yKCkKICAgICAgICAgICAgICAgICA6IG1fY29sbGVjdGlvbihudWxscHRyKQogICAg
ICAgICAgICAgICAgICwgbV9pbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMTFhZGE0MTFkNjQuLmNiN2Q2Mzc5N2I0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTI2
MSw2ICsyNjEsOSBAQCBhcm02NDogTXVsdGlwbHlOZWczMiBVOkc6MzIsIFU6RzozMiwgWkQ6Rzoz
MgogYXJtNjQ6IE11bHRpcGx5TmVnNjQgVTpHOjY0LCBVOkc6NjQsIFpEOkc6NjQKICAgICBUbXAs
IFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0aXBseVNpZ25FeHRlbmQzMiBVOkc6MzIsIFU6RzozMiwg
WkQ6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAKKwogYXJtNjQ6IERpdjMyIFU6RzozMiwgVTpHOjMy
LCBaRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRtcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwCmluZGV4IDdmMzE2NzliNDEzLi5jOWZkMThlOWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKQEAgLTExODksNiArMTE4OSw0NyBAQCB2b2lkIHRlc3RNdWxBcmdzMzIoaW50
IGEsIGludCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSBh
ICogYik7CiB9CiAKK3ZvaWQgdGVzdE11bEFyZ3MzMlNpZ25FeHRlbmQoaW50IGEsIGludCBiKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAg
ICAgICByZXR1cm47CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJnMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJn
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogYXJnMTY0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTRXh0MzIsIE9yaWdpbigpLCBhcmcxKTsKKyAgICBWYWx1
ZSogYXJnMjY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTRXh0MzIsIE9yaWdpbigp
LCBhcmcyKTsKKyAgICBWYWx1ZSogbXVsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBN
dWwsIE9yaWdpbigpLCBhcmcxNjQsIGFyZzI2NCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIG11bCk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKworICAgIENIRUNLKGludm9rZTxsb25nIGludD4oKmNvZGUsIGEs
IGIpID09ICgobG9uZyBpbnQpIGEpICogKChsb25nIGludCkgYikpOworfQorCit2b2lkIHRlc3RN
dWxJbW0zMlNpZ25FeHRlbmQoY29uc3QgaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIGlmIChwcm9jLm9wdExldmVsKCkgPCAxKQorICAgICAgICByZXR1cm47CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1
ZSogYXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogYXJnMjY0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTRXh0MzIsIE9yaWdpbigpLCBhcmcyKTsKKyAg
ICBWYWx1ZSogbXVsID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigp
LCBhcmcxLCBhcmcyNjQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBtdWwpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisKKyAgICBDSEVDSyhpbnZva2U8bG9uZyBpbnQ+KCpjb2RlLCBiKSA9PSAoKGxvbmcgaW50
KSBhKSAqICgobG9uZyBpbnQpIGIpKTsKK30KKwogdm9pZCB0ZXN0TXVsTG9hZFR3aWNlKCkKIHsK
ICAgICBhdXRvIHRlc3QgPSBbJl0gKCkgewpAQCAtMTQ2MzUsNTUgKzE0Njc2LDU1IEBAIHZvaWQg
dGVzdFBhdGNocG9pbnRUZXJtaW5hbFJldHVyblZhbHVlKGJvb2wgc3VjY2Vzc0lzUmFyZSkKIHZv
aWQgdGVzdE1lbW9yeUZlbmNlKCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKLSAgICAKKwogICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgCisKICAgICByb290LT5h
cHBlbmROZXc8RmVuY2VWYWx1ZT4ocHJvYywgT3JpZ2luKCkpOwogICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQo
cHJvYywgT3JpZ2luKCksIEludDMyLCA0MikpOwotICAgIAorCiAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CiAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCA0Mik7CiAg
ICAgaWYgKGlzWDg2KCkpCiAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibG9j
ayBvciAkMHgwLCAoJXJzcCkiKTsKICAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgImRtYiAgICBpc2giKTsKKyAgICAgICAgY2hlY2tVc2VzSW5z
dHJ1Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaCIpOwogICAgIGNoZWNrRG9lc05vdFVzZUluc3Ry
dWN0aW9uKCpjb2RlLCAibWZlbmNlIik7Ci0gICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rpb24o
KmNvZGUsICJkbWIgICAgaXNoc3QiKTsKKyAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigq
Y29kZSwgImRtYiAgICAgaXNoc3QiKTsKIH0KIAogdm9pZCB0ZXN0U3RvcmVGZW5jZSgpCiB7CiAg
ICAgUHJvY2VkdXJlIHByb2M7Ci0gICAgCisKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIAorCiAgICAgcm9vdC0+YXBwZW5kTmV3PEZlbmNlVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UoKSk7CiAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmRJbnRDb25z
dGFudChwcm9jLCBPcmlnaW4oKSwgSW50MzIsIDQyKSk7Ci0gICAgCisKICAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKICAgICBDSEVDS19FUShpbnZva2U8aW50PigqY29kZSksIDQy
KTsKICAgICBjaGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwgImxvY2siKTsKICAgICBj
aGVja0RvZXNOb3RVc2VJbnN0cnVjdGlvbigqY29kZSwgIm1mZW5jZSIpOwogICAgIGlmIChpc0FS
TTY0KCkpCi0gICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiZG1iICAgIGlzaHN0
Iik7CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAiZG1iICAgICBpc2hzdCIp
OwogfQogCiB2b2lkIHRlc3RMb2FkRmVuY2UoKQogewogICAgIFByb2NlZHVyZSBwcm9jOwotICAg
IAorCiAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICAKKwogICAg
IHJvb3QtPmFwcGVuZE5ldzxGZW5jZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgSGVhcFJhbmdlKCks
IEhlYXBSYW5nZTo6dG9wKCkpOwogICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2luKCksIElu
dDMyLCA0MikpOwotICAgIAorCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CiAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKmNvZGUpLCA0Mik7CiAgICAgY2hlY2tEb2VzTm90VXNl
SW5zdHJ1Y3Rpb24oKmNvZGUsICJsb2NrIik7CiAgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1Y3Rp
b24oKmNvZGUsICJtZmVuY2UiKTsKICAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgImRtYiAgICBpc2giKTsKLSAgICBjaGVja0RvZXNOb3RVc2VJ
bnN0cnVjdGlvbigqY29kZSwgImRtYiAgICBpc2hzdCIpOworICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgImRtYiAgICAgaXNoIik7CisgICAgY2hlY2tEb2VzTm90VXNlSW5zdHJ1
Y3Rpb24oKmNvZGUsICJkbWIgICAgIGlzaHN0Iik7CiB9CiAKIHZvaWQgdGVzdFRyYXBwaW5nTG9h
ZCgpCkBAIC0xNDk2MSw3ICsxNTAwMiw3IEBAIHZvaWQgdGVzdFBpblJlZ2lzdGVycygpCiAgICAg
ICAgICAgICB1c2VzQ1NScyB8PSBjc3JzLmdldChyZWdBdE9mZnNldC5yZWcoKSk7CiAgICAgICAg
IENIRUNLX0VRKHVzZXNDU1JzLCAhcGluKTsKICAgICB9OwotICAgIAorCiAgICAgZ28odHJ1ZSk7
CiAgICAgZ28oZmFsc2UpOwogfQpAQCAtMTcxNTcsNiArMTcxOTgsMjkgQEAgdm9pZCBydW4oY29u
c3QgY2hhciogZmlsdGVyKQogICAgIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiB0
YXNrczsKIAogICAgIGF1dG8gc2hvdWxkUnVuID0gWyZdIChjb25zdCBjaGFyKiB0ZXN0TmFtZSkg
LT4gYm9vbCB7CisgICAgICAgIC8vIEZJWE1FOiBUaGVzZSB0ZXN0cyBmYWlsIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5MzMwPi4KKyAgICAgICAgaWYgKCFmaWx0
ZXIgJiYgaXNBUk02NCgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGZhaWxpbmdUZXN0IDog
eworICAgICAgICAgICAgICAgICJ0ZXN0UmVwb3J0VXNlZFJlZ2lzdGVyc0xhdGVVc2VGb2xsb3dl
ZEJ5RWFybHlEZWZEb2VzTm90TWFya1VzZUFzRGVhZCIsCisgICAgICAgICAgICAgICAgInRlc3RO
ZWdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiIsCisgICAgICAgICAgICAgICAgInRl
c3RQaW5SZWdpc3RlcnMiLAorICAgICAgICAgICAgfSkgeworICAgICAgICAgICAgICAgIGlmIChX
VEY6OmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhvdXRMZW5ndGgodGVzdE5hbWUsIGZhaWxpbmdU
ZXN0KSAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigi
KioqIFdhcm5pbmc6IFNraXBwaW5nIGtub3duLWJhZCB0ZXN0OiAiLCB0ZXN0TmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmaWx0ZXIgJiYgaXNYODYoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvJiBmYWlsaW5nVGVzdCA6IHsKKyAgICAgICAgICAgICAgICAidGVz
dFJlcG9ydFVzZWRSZWdpc3RlcnNMYXRlVXNlRm9sbG93ZWRCeUVhcmx5RGVmRG9lc05vdE1hcmtV
c2VBc0RlYWQiLAorICAgICAgICAgICAgfSkgeworICAgICAgICAgICAgICAgIGlmIChXVEY6OmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhvdXRMZW5ndGgodGVzdE5hbWUsIGZhaWxpbmdUZXN0KSAh
PSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiKioqIFdh
cm5pbmc6IFNraXBwaW5nIGtub3duLWJhZCB0ZXN0OiAiLCB0ZXN0TmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuICFmaWx0ZXIgfHwgV1RGOjpmaW5kSWdub3JpbmdB
U0NJSUNhc2VXaXRob3V0TGVuZ3RoKHRlc3ROYW1lLCBmaWx0ZXIpICE9IFdURjo6bm90Rm91bmQ7
CiAgICAgfTsKIApAQCAtMTcyNzcsOCArMTczNDEsMjEgQEAgdm9pZCBydW4oY29uc3QgY2hhciog
ZmlsdGVyKQogICAgIFJVTih0ZXN0TXVsSW1tQXJnKDAsIDIpKTsKICAgICBSVU4odGVzdE11bElt
bUFyZygxLCAwKSk7CiAgICAgUlVOKHRlc3RNdWxJbW1BcmcoMywgMykpOworICAgIFJVTih0ZXN0
TXVsSW1tMzJTaWduRXh0ZW5kKDEsIDIpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2lnbkV4dGVu
ZCgwLCAyKSk7CisgICAgUlVOKHRlc3RNdWxJbW0zMlNpZ25FeHRlbmQoMSwgMCkpOworICAgIFJV
Tih0ZXN0TXVsSW1tMzJTaWduRXh0ZW5kKDMsIDMpKTsKKyAgICBSVU4odGVzdE11bEltbTMyU2ln
bkV4dGVuZCgweEZGRkZGRkZGLCAweEZGRkZGRkZGKSk7CisgICAgUlVOKHRlc3RNdWxJbW0zMlNp
Z25FeHRlbmQoMHhGRkZGRkZGRSwgMHhGRkZGRkZGRikpOworICAgIFJVTih0ZXN0TXVsSW1tMzJT
aWduRXh0ZW5kKDB4RkZGRkZGRkYsIDB4RkZGRkZGRkUpKTsKICAgICBSVU4odGVzdE11bEFyZ3Mz
MigxLCAxKSk7CiAgICAgUlVOKHRlc3RNdWxBcmdzMzIoMSwgMikpOworICAgIFJVTih0ZXN0TXVs
QXJnczMyKDB4RkZGRkZGRkYsIDB4RkZGRkZGRkYpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MzMigw
eEZGRkZGRkZFLCAweEZGRkZGRkZGKSk7CisgICAgUlVOKHRlc3RNdWxBcmdzMzJTaWduRXh0ZW5k
KDEsIDEpKTsKKyAgICBSVU4odGVzdE11bEFyZ3MzMlNpZ25FeHRlbmQoMSwgMikpOworICAgIFJV
Tih0ZXN0TXVsQXJnczMyU2lnbkV4dGVuZCgweEZGRkZGRkZGLCAweEZGRkZGRkZGKSk7CisgICAg
UlVOKHRlc3RNdWxBcmdzMzJTaWduRXh0ZW5kKDB4RkZGRkZGRkUsIDB4RkZGRkZGRkYpKTsKICAg
ICBSVU4odGVzdE11bExvYWRUd2ljZSgpKTsKICAgICBSVU4odGVzdE11bEFkZEFyZ3NMZWZ0KCkp
OwogICAgIFJVTih0ZXN0TXVsQWRkQXJnc1JpZ2h0KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>