<?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>157299</bug_id>
          
          <creation_ts>2016-05-02 21:21:19 -0700</creation_ts>
          <short_desc>Drop some unnecessary exception checking in the generated bindings</short_desc>
          <delta_ts>2016-05-03 08:44:06 -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>Bindings</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189668</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-02 21:21:19 -0700</bug_when>
    <thetext>Drop some unnecessary exception checking in the generated bindings. Reduces the amount on unnecessary branching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189675</commentid>
    <comment_count>1</comment_count>
      <attachid>277978</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-02 21:52:21 -0700</bug_when>
    <thetext>Created attachment 277978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189677</commentid>
    <comment_count>2</comment_count>
      <attachid>277978</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 21:54:56 -0700</bug_when>
    <thetext>Comment on attachment 277978
Patch

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

I’m not sure that all of those things that are marked &quot;, 1&quot; in JSValueToNative can actually raise exceptions.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4324
&gt; +# returns (convertString, mayThrowException).

If you are going to have a period on this comment, then you should capitalize the first word, &quot;Returns&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189678</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-02 21:57:51 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 277978 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277978&amp;action=review
&gt; 
&gt; I’m not sure that all of those things that are marked &quot;, 1&quot; in
&gt; JSValueToNative can actually raise exceptions.

They all take in a &quot;state&quot; to they may throw (in theory). I did not look further and wanted to be on the safe side. Just avoiding these checks for wrapper types is already nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189679</commentid>
    <comment_count>4</comment_count>
      <attachid>277979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-02 21:58:52 -0700</bug_when>
    <thetext>Created attachment 277979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189749</commentid>
    <comment_count>5</comment_count>
      <attachid>277979</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-03 08:24:36 -0700</bug_when>
    <thetext>Comment on attachment 277979
Patch

Rejecting attachment 277979 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-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 277979, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
 96 lines).
Hunk #31 succeeded at 5455 (offset 96 lines).
Hunk #32 succeeded at 5472 (offset 96 lines).
Hunk #33 succeeded at 5586 (offset 96 lines).
Hunk #34 succeeded at 5611 (offset 96 lines).
Hunk #35 succeeded at 5673 (offset 96 lines).
Hunk #36 succeeded at 5831 (offset 96 lines).
patching file Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/1261270</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189761</commentid>
    <comment_count>6</comment_count>
      <attachid>277999</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-03 08:43:21 -0700</bug_when>
    <thetext>Created attachment 277999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189762</commentid>
    <comment_count>7</comment_count>
      <attachid>277999</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-03 08:43:59 -0700</bug_when>
    <thetext>Comment on attachment 277999
Patch

Clearing flags on attachment: 277999

Committed r200374: &lt;http://trac.webkit.org/changeset/200374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189763</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-03 08:44:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277978</attachid>
            <date>2016-05-02 21:52:21 -0700</date>
            <delta_ts>2016-05-02 21:58:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157299-20160502215300.patch</filename>
            <type>text/plain</type>
            <size>30391</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M5NDhiYTJiMGFjYTUz
Y2FhZGViMDlmZDE5NjkxOGNiMTg1NjA0Zi4uZTg0NDMyYjg5NTk0MDU1MWVlNzdkZTRlNGY2Yzdi
NmIyMWZmOTEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA1LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBzb21lIHVubmVjZXNz
YXJ5IGV4Y2VwdGlvbiBjaGVja2luZyBpbiB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyOTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIHNvbWUgdW5uZWNl
c3NhcnkgZXhjZXB0aW9uIGNoZWNraW5nIGluIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MuCisgICAg
ICAgIE9ubHkgZG8gYSBjaGVjayBmb3Igc3RhdGUtPmhhZEV4Y2VwdGlvbigpIGFmdGVyIGNvbnZl
cnRpbmcgYSBKU1ZhbHVlCisgICAgICAgIHRvIGEgbmF0aXZlIHZhbHVlIHdoZW4gbmVjZXNzYXJ5
LiBVcGRhdGUgSlNWYWx1ZVRvTmF0aXZlKCkgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGNhbGxl
ciBpZiBjb252ZXJ0aW5nIHRvIHRoZSBuYXRpdmUgdmFsdWUgbWF5IHRocm93IGFuCisgICAgICAg
IGV4Y2VwdGlvbi4KKworICAgICAgICBUaGlzIGdldHMgcmlkIG9mIGEgbG90IG9mIHVubmVjZXNz
YXJ5IGJyYW5jaGluZyBpbiB0aGUgYmluZGluZ3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBpbnRlbmRlZCB3ZWItZXhwb3NlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAo
SlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisKIDIwMTYtMDUtMDIgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgcnVuIHRyYW5zaXRp
b25zIHRvL2Zyb20gJ2F1dG8nIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzM2EzOGQwOGY5YzUzNTg1NDM4Mzhh
YWJkMDczMzY0MjAwMDkxMWFmLi5jNjBiNzdjNzBkMzkxODIxMDNhNzFmYTA3NWJkNmVlZmQ4M2Rj
M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQpAQCAtMjg0MCw5ICsyODQwLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH07XG4iKTsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
KSAuICIgbmF0aXZlVmFsdWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uZGl0aW9uYWwifSkgLiAiO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xu
Iik7CisgICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9u
KSA9IEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIsICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBl
RnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIg
LiAkbmF0aXZlVmFsdWUgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRtYXlUaHJvd0V4
Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CisgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Vu
dW1UeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpXG4iKTsKQEAgLTM2ODEsNiArMzY4NCw4
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBBdG9taWNTdHJpbmcgJG5hbWUgPSBzdGF0ZS0+YXJndW1lbnQoJGFy
Z3NJbmRleCkudG9TdHJpbmcoc3RhdGUpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKHN0YXRlKS5n
ZXQoKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
JG5hbWUuaXNOdWxsKCkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG15ICRvdXRlcjsKICAgICAgICAgICAg
ICAgICBteSAkaW5uZXI7CkBAIC0zNzE5LDEzICszNzI0LDE0IEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAiIjsKICAgICAgICAgICAg
ICAgICAgICAgJGlubmVyID0gInN0YXRlLT5hcmd1bWVudCgkYXJnc0luZGV4KSI7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmF0
aXZlVHlwZSAkbmFtZSA9ICRvdXRlciIgLiBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgJGlu
bmVyLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlv
bmFsIn0pIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlU
aHJvd0V4Y2VwdGlvbikgPSBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgJGlubmVyLCAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pOwor
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmF0aXZlVHlwZSAkbmFt
ZSA9ICRvdXRlciIgLiAkbmF0aXZlVmFsdWUgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgaWYg
KCRtYXlUaHJvd0V4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAjIENoZWNrIGlmIHRoZSB0eXBlIGNvbnZlcnNpb24g
c3VjY2VlZGVkLgotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
XG4iKTsKLQogICAgICAgICAgICAgbXkgJGlzVGVhck9mZiA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NW
R1R5cGVOZWVkaW5nVGVhck9mZigkYXJnVHlwZSkgJiYgJGludGVyZmFjZU5hbWUgIX4gL0xpc3Qk
LzsKICAgICAgICAgICAgIG15ICRzaG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3Jh
cHBlckJ5UmVmZXJlbmNlKCRwYXJhbWV0ZXIsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgaWYg
KCRpc1RlYXJPZmYgb3IgJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgewpAQCAtNDMxNSw2ICs0MzIx
LDcgQEAgbXkgJWludGVnZXJDb252ZXJzaW9uRnVuY3Rpb24gPSAoCiAgICAgInVuc2lnbmVkIHNo
b3J0IiA9PiAidG9VSW50MTYiLAogKTsKIAorIyByZXR1cm5zIChjb252ZXJ0U3RyaW5nLCBtYXlU
aHJvd0V4Y2VwdGlvbikuCiBzdWIgSlNWYWx1ZVRvTmF0aXZlCiB7CiAgICAgbXkgJHNpZ25hdHVy
ZSA9IHNoaWZ0OwpAQCAtNDMyOCw1NCArNDMzNSw1NCBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAg
ICAgICAgIG15ICRjb252ZXJzaW9uVHlwZSA9ICJOb3JtYWxDb252ZXJzaW9uIjsKICAgICAgICAg
JGNvbnZlcnNpb25UeXBlID0gIkVuZm9yY2VSYW5nZSIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkVuZm9yY2VSYW5nZSJ9OwogICAgICAgICAkY29udmVyc2lvblR5cGUgPSAi
Q2xhbXAiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFtcCJ9OwotICAg
ICAgICByZXR1cm4gIiRmdW5jdGlvbihzdGF0ZSwgJHZhbHVlLCAkY29udmVyc2lvblR5cGUpIjsK
KyAgICAgICAgcmV0dXJuICgiJGZ1bmN0aW9uKHN0YXRlLCAkdmFsdWUsICRjb252ZXJzaW9uVHlw
ZSkiLCAxKTsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAg
ICAgaWYgKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUcmVhdE51bGxBcyJ9KSB7
Ci0gICAgICAgICAgICByZXR1cm4gInZhbHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKHN0YXRlLCAkdmFsdWUpIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VHJlYXROdWxsQXMifSBlcSAiRW1wdHlTdHJpbmciOwotICAgICAgICAgICAgcmV0dXJuICJ2YWx1
ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhzdGF0ZSwgJHZhbHVlKSIgaWYgJHNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlRyZWF0TnVsbEFzIn0gZXEgIkxlZ2FjeU51bGxTdHJpbmciOwor
ICAgICAgICAgICAgcmV0dXJuICgidmFsdWVUb1N0cmluZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJp
bmcoc3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiVHJlYXROdWxsQXMifSBlcSAiRW1wdHlTdHJpbmciOworICAgICAgICAgICAgcmV0dXJuICgi
dmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkc2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXROdWxsQXMifSBlcSAiTGVnYWN5TnVsbFN0
cmluZyI7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJ2YWx1ZVRvU3RyaW5nV2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKHN0YXRlLCAkdmFsdWUpIiBpZiAkc2lnbmF0dXJlLT5pc051bGxhYmxl
OwotICAgICAgICByZXR1cm4gIiR2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3RyaW5n
KHN0YXRlKSIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkF0b21pY1N0cmlu
ZyJ9OwotICAgICAgICByZXR1cm4gIiR2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSkiOworICAgICAg
ICByZXR1cm4gKCJ2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0YXRlLCAk
dmFsdWUpIiwgMSkgaWYgJHNpZ25hdHVyZS0+aXNOdWxsYWJsZTsKKyAgICAgICAgcmV0dXJuICgi
JHZhbHVlLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpIiwgMSkgaWYgJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkF0b21pY1N0cmluZyJ9OworICAgICAgICBy
ZXR1cm4gKCIkdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpIiwgMSk7CiAgICAgfQogCiAgICAgaWYg
KCR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAg
IHJldHVybiAiU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsICR2YWx1ZSwgMCwg
MCkiOworICAgICAgICByZXR1cm4gKCJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0
ZSwgJHZhbHVlLCAwLCAwKSIsIDEpOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRGljdGlv
bmFyeSIpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRpY3Rpb25hcnkuaCIsICRjb25k
aXRpb25hbCk7Ci0gICAgICAgIHJldHVybiAieyBzdGF0ZSwgJHZhbHVlIH0iOworICAgICAgICBy
ZXR1cm4gKCJ7IHN0YXRlLCAkdmFsdWUgfSIsIDApOwogICAgIH0KIAogICAgIG15ICRhcnJheU9y
U2VxdWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5T3JTZXF1ZW5jZVR5cGUoJHR5
cGUpOwogICAgIGlmICgkYXJyYXlPclNlcXVlbmNlVHlwZSkgewogICAgICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzUmVmUHRyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkpIHsKICAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIpOwotICAg
ICAgICAgICAgcmV0dXJuICIodG9SZWZQdHJOYXRpdmVBcnJheTwke2FycmF5T3JTZXF1ZW5jZVR5
cGV9LCBKUyR7YXJyYXlPclNlcXVlbmNlVHlwZX0+KHN0YXRlLCAkdmFsdWUsICZKUyR7YXJyYXlP
clNlcXVlbmNlVHlwZX06OnRvV3JhcHBlZCkpIjsKKyAgICAgICAgICAgIHJldHVybiAoIih0b1Jl
ZlB0ck5hdGl2ZUFycmF5PCR7YXJyYXlPclNlcXVlbmNlVHlwZX0sIEpTJHthcnJheU9yU2VxdWVu
Y2VUeXBlfT4oc3RhdGUsICR2YWx1ZSwgJkpTJHthcnJheU9yU2VxdWVuY2VUeXBlfTo6dG9XcmFw
cGVkKSkiLCAxKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gInRvTmF0aXZlQXJyYXk8IiAu
IEdldE5hdGl2ZVZlY3RvcklubmVyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkgLiAiPihzdGF0
ZSwgJHZhbHVlKSI7CisgICAgICAgIHJldHVybiAoInRvTmF0aXZlQXJyYXk8IiAuIEdldE5hdGl2
ZVZlY3RvcklubmVyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkgLiAiPihzdGF0ZSwgJHZhbHVl
KSIsIDEpOwogICAgIH0KIAotICAgIHJldHVybiAkdmFsdWUgaWYgJHR5cGUgZXEgImFueSI7Cisg
ICAgcmV0dXJuICgkdmFsdWUsIDApIGlmICR0eXBlIGVxICJhbnkiOwogCi0gICAgcmV0dXJuICIk
dmFsdWUudG9Cb29sZWFuKHN0YXRlKSIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwotICAgIHJldHVy
biAiJHZhbHVlLnRvTnVtYmVyKHN0YXRlKSIgaWYgJHR5cGUgZXEgImRvdWJsZSIgb3IgJHR5cGUg
ZXEgInVucmVzdHJpY3RlZCBkb3VibGUiOwotICAgIHJldHVybiAiJHZhbHVlLnRvRmxvYXQoc3Rh
dGUpIiBpZiAkdHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZmxvYXQi
OwotICAgIHJldHVybiAidmFsdWVUb0RhdGUoc3RhdGUsICR2YWx1ZSkiIGlmICR0eXBlIGVxICJE
YXRlIjsKKyAgICByZXR1cm4gKCIkdmFsdWUudG9Cb29sZWFuKHN0YXRlKSIsIDEpIGlmICR0eXBl
IGVxICJib29sZWFuIjsKKyAgICByZXR1cm4gKCIkdmFsdWUudG9OdW1iZXIoc3RhdGUpIiwgMSkg
aWYgJHR5cGUgZXEgImRvdWJsZSIgb3IgJHR5cGUgZXEgInVucmVzdHJpY3RlZCBkb3VibGUiOwor
ICAgIHJldHVybiAoIiR2YWx1ZS50b0Zsb2F0KHN0YXRlKSIsIDEpIGlmICR0eXBlIGVxICJmbG9h
dCIgb3IgJHR5cGUgZXEgInVucmVzdHJpY3RlZCBmbG9hdCI7CisgICAgcmV0dXJuICgidmFsdWVU
b0RhdGUoc3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkdHlwZSBlcSAiRGF0ZSI7CiAKLSAgICByZXR1
cm4gInRvJHR5cGUoJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUo
JHR5cGUpOwotICAgIHJldHVybiAicGFyc2UiIC4gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJHR5
cGUpIC4gIigqc3RhdGUsICR2YWx1ZSkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0
eXBlKTsKKyAgICByZXR1cm4gKCJ0byR0eXBlKCR2YWx1ZSkiLCAxKSBpZiAkY29kZUdlbmVyYXRv
ci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICgicGFyc2UiIC4gR2V0RW51
bWVyYXRpb25DbGFzc05hbWUoJHR5cGUpIC4gIigqc3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkY29k
ZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSk7CiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
SlMkdHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKIAotICAgIHJldHVybiAidG9ET01TdHJpbmdMaXN0
KHN0YXRlLCAkdmFsdWUpIiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCI7Ci0gICAgcmV0dXJu
ICJKU05vZGVGaWx0ZXI6OnRvV3JhcHBlZChzdGF0ZS0+dm0oKSwgJHZhbHVlKSIgaWYgJHR5cGUg
ZXEgIk5vZGVGaWx0ZXIiOworICAgIHJldHVybiAoInRvRE9NU3RyaW5nTGlzdChzdGF0ZSwgJHZh
bHVlKSIsIDEpIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKKyAgICByZXR1cm4gKCJKU05v
ZGVGaWx0ZXI6OnRvV3JhcHBlZChzdGF0ZS0+dm0oKSwgJHZhbHVlKSIsIDEpIGlmICR0eXBlIGVx
ICJOb2RlRmlsdGVyIjsKIAotICAgIHJldHVybiAiSlMke3R5cGV9Ojp0b1dyYXBwZWQoJHZhbHVl
KSI7CisgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBwZWQoJHZhbHVlKSIsIDApOwogfQog
CiBzdWIgTmF0aXZlVG9KU1ZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmlu
ZGV4IGZmY2NhYzJhZTBiNGQyMDMzNzVkMDIxMDkwYTg5MTA4MTNjNDBiODAuLjkyOTk0ZGU1YzBh
MzBjMjNlYWYyZTMyZTFjOGRjNWY0ZDcwNWYyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuY3BwCkBAIC0yMDQsOCArMjA0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3QKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIE5vZGUqIG5leHRDaGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1
bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFuZXh0Q2hpbGQpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CiAgICAgaW1wbC5leGNpdGluZ0Z1bmN0aW9uKCpuZXh0Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcAppbmRleCBmYTcyM2E3MjlhYzVkNzcwNzRlNDQ5MTlhNjczMzQ2NjRlYWU0NTk0Li5lYjRj
NmIxYTYwNTkxNWUxZmE3MjMzZjMzZWM4M2RjNzNiODBlYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcApAQCAtNjg0LDggKzY4NCw2IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlCiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgTm9kZSogbmF0aXZl
VmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtF
TFkoIW5hdGl2ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzU0LDggKzc1Miw2IEBAIGJvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsCiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODA1LDggKzgwMSw2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25JbXBsZW1lbnRzTWV0aG9kMihFCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50
KDEpKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFko
IW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLmltcGxlbWVudHNNZXRob2QyKCpjb250ZXh0LCBzdHJBcmcsICpvYmpB
cmcsIGVjKSkpOwpAQCAtODczLDggKzg2Nyw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyCiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDEpKTsKLSAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0
U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGltcGwsICpjb250ZXh0LCBzdHJBcmcs
ICpvYmpBcmcsIGVjKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBjY2QxM2JhNmI4NWY4ZmFmYTRhMzRjNTNi
ODJhOTk1MWNmOGU2NDZmLi5jNzhlYWY3MjdjY2Q1OGVkODBiYTY0NTExNTM5Y2UzNDE5ZTlhODJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcApAQCAtMjU4OCw4ICsyNTg4LDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpUZXN0
T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWQKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjA5LDggKzI2MDcsNiBA
QCBib29sIHNldEpTVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0
b1dyYXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRUZXN0TnVsbGFibGVPYmpBdHRy
KG5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI2MjYsOCArMjYyMiw2IEBA
IGJvb2wgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7
CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yNjY0LDggKzI2NTgsNiBAQCBib29sIHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSgogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2
ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVO
TElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwMDcsOCArMjk5OSw2IEBAIGJvb2wgc2V0SlNU
ZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogICAgIFRlc3RPYmoq
IG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMDEsOCArMzA5MSw2IEBAIGJvb2wg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTCiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBl
ZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzEyNSw4ICszMTEzLDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1
ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChVTkxJS0VM
WSghbmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTQ2LDggKzMxMzIsNiBAQCBib29sIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuYwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwot
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNzAsOCArMzE1
NCw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZh
bHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzE5NCw4ICszMTc2LDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGEKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2Jq
KiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMjE4LDggKzMxOTgsNiBAQCBib29s
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlKEV4ZQogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTMyNDIsOCArMzIyMCw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvCiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFs
dWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtF
TFkoIW5hdGl2ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzM2NSw4ICszMzQxLDYgQEAgYm9vbCBzZXRKU1Rlc3RP
YmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGUKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU0M6OkpTVmFsdWUgbmF0aXZlVmFsdWUgPSB2YWx1ZTsKLSAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwu
c2V0QW55QXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMz
ODIsOCArMzM1Niw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlCiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNW
R1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBwZWQodmFsdWUpOwotICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaW1wbC5zZXRNdXRhYmxlUG9pbnQobmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMzM5OSw4ICszMzcxLDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQ
b2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY28KICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9w
ZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpTU1ZHUG9pbnQ6OnRvV3JhcHBl
ZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEltbXV0YWJsZVBvaW50KG5hdGl2ZVZhbHVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM2NzksOCArMzY0OSw2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0
aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9i
aiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBpbXBsLnZvaWRN
ZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsICpvYmpBcmcpOwpAQCAtMzcxNiw4ICszNjg0
LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+
YXJndW1lbnQoMikpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChV
TkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3Mo
Ynl0ZUFyZywgc3RyQXJnLCAqb2JqQXJnKSk7CkBAIC0zNzUzLDggKzM3MTksNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRo
b2RXaXRoQXJncyhFeGVjUwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRl
c3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpB
cmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIHN0
ckFyZywgKm9iakFyZykpOwpAQCAtMzc5MCw4ICszNzU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhF
eGVjU3QKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpB
cmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMikpOwotICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoaW1wbC5sb25nTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCAqb2JqQXJn
KSk7CkBAIC0zODI3LDggKzM3ODksNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YQogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5vYmpNZXRob2RXaXRo
QXJncyhsb25nQXJnLCBzdHJBcmcsICpvYmpBcmcpKSk7CkBAIC0zOTk0LDggKzM5NTQsNiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJncwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVu
dCgxKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGOjpnZXRQdHIoaW1wbC5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKHN0ckFy
ZywgKm9iakFyZywgZWMpKSk7CkBAIC00MDMyLDExICszOTkwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhl
Y1N0YXRlKgogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgRGljdGlvbmFyeSBvbyA9IHsgc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSB9OwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIERpY3Rpb25h
cnkgb29vID0geyBzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpIH07Ci0gICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5vcHRpb25zT2JqZWN0KG9vLCBvb28pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC00NjcyLDggKzQ2MjYs
NiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEV4ZQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNDOjpKU1ZhbHVlIGEgPSBzdGF0ZS0+YXJndW1lbnQo
MCk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRo
T3B0aW9uYWxBbnkoYSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KQEAgLTQ2ODcsOCArNDYzOSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBv
YmogPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVXcmFwcGVyKG9iaik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KQEAgLTQ3MDIsOCArNDY1Miw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsCiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBv
YmogPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFi
bGVXcmFwcGVySXNOdWxsKG9iaik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KQEAgLTQ4OTcsOCArNDg0NSw2IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShFeGVjU3Rh
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0
ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFN0
cmluZyBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDkxNyw4ICs0ODYzLDYgQEAgc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QyKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgT3B0aW9uYWw8aW50PiBsb25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQ+KCkgOiB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtNTAyMiw4ICs0OTY2LDYgQEAgc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KEV4
ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKCpvYmpBcmcpOwpAQCAtNTE0NCwx
MSArNTA4Niw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvCiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2Jq
KiBvYmpBcmcxID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKLSAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcyID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDEpKTsKLSAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJh
bWV0ZXIob2JqQXJnMSwgb2JqQXJnMik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KQEAgLTUxNjQsOCArNTEwMiw2IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9w
dGlvCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChz
dGF0ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IE9wdGlvbmFsPGludD4gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgp
ID8gT3B0aW9uYWw8aW50PigpIDogdG9JbnQzMihzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTU0MjMsOCArNTM1OSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAg
IGltcGwuY29udmVydDEoKnZhbHVlKTsKQEAgLTU0NDIsOCArNTM3Niw2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVj
U3RhdGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0
b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBpbXBsLmNvbnZlcnQyKHZhbHVlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNTU1OCw4ICs1NDkwLDYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9u
V2l0aFNlcXVlbmMKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZE9yTnVsbCgpICYmICFzdGF0ZS0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjpp
bmZvKCkpKSkKICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAw
LCAib2JqQXJnIiwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiLCAiVGVz
dE9iaiIpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRl
LT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhID0gdG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CkBAIC01NTg1LDggKzU1MTUsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rp
b25XaXRoQXJyYXkoRQogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgIXN0YXRlLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6
OmluZm8oKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUs
IDAsICJvYmpBcmciLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJheSIsICJUZXN0
T2JqIik7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUt
PmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAo
VU5MSUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKICAgICBWZWN0b3I8aW50PiBhcnJheSA9IHRvTmF0aXZlQXJyYXk8aW50PihzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDEpKTsKQEAgLTU2NDksOCArNTU3Nyw2IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2Qo
RXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBOb2RlKiBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUt
PmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWhlYWQpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CiAgICAgVmVjdG9yPE5vZGUqPiB0YWlsOwpAQCAtNTgwOSw4ICs1NzM1LDYgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmMKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEZldGNoUmVxdWVzdCogcmVxdWVzdCA9IEpTRmV0
Y2hSZXF1ZXN0Ojp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlcXVlc3QpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgaW1wbC50ZXN0UHJvbWlzZU92ZXJs
b2FkZWRGdW5jdGlvbigqcmVxdWVzdCwgRGVmZXJyZWRXcmFwcGVyKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggOTMyMjllYWY0MTE3OGI0OTdkZjAwZTNl
OGI0ZWIwMmUyYmRmYzUzYi4uODdhMmQxY2U3YjZhODBlYzc3NDc5Njc5Y2ZmOWY3YTE4YjhjZTA0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAt
OTksOCArOTksNiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogcwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgQmxvYiog
YmxvYiA9IEpTQmxvYjo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFibG9iKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0
ZSgqYmxvYik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277979</attachid>
            <date>2016-05-02 21:58:52 -0700</date>
            <delta_ts>2016-05-03 08:43:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157299-20160502215931.patch</filename>
            <type>text/plain</type>
            <size>30388</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M5NDhiYTJiMGFjYTUz
Y2FhZGViMDlmZDE5NjkxOGNiMTg1NjA0Zi4uMjE4NzBkYTA5ZDY2NTJhMzNmODI0YTA2YWQ4OGY0
OWIxYzY5Y2FmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA1LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBzb21lIHVubmVjZXNz
YXJ5IGV4Y2VwdGlvbiBjaGVja2luZyBpbiB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyOTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBEcm9wIHNvbWUgdW5uZWNlc3Nh
cnkgZXhjZXB0aW9uIGNoZWNraW5nIGluIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MuCisgICAgICAg
IE9ubHkgZG8gYSBjaGVjayBmb3Igc3RhdGUtPmhhZEV4Y2VwdGlvbigpIGFmdGVyIGNvbnZlcnRp
bmcgYSBKU1ZhbHVlCisgICAgICAgIHRvIGEgbmF0aXZlIHZhbHVlIHdoZW4gbmVjZXNzYXJ5LiBV
cGRhdGUgSlNWYWx1ZVRvTmF0aXZlKCkgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGNhbGxlciBp
ZiBjb252ZXJ0aW5nIHRvIHRoZSBuYXRpdmUgdmFsdWUgbWF5IHRocm93IGFuCisgICAgICAgIGV4
Y2VwdGlvbi4KKworICAgICAgICBUaGlzIGdldHMgcmlkIG9mIGEgbG90IG9mIHVubmVjZXNzYXJ5
IGJyYW5jaGluZyBpbiB0aGUgYmluZGluZ3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBp
bnRlbmRlZCB3ZWItZXhwb3NlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoSlNW
YWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisKIDIwMTYtMDUtMDIgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgcnVuIHRyYW5zaXRpb25z
IHRvL2Zyb20gJ2F1dG8nIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzM2EzOGQwOGY5YzUzNTg1NDM4MzhhYWJk
MDczMzY0MjAwMDkxMWFmLi5lMTU5ZDhhY2EyYzlmMzkxNjBiYTBhZGJmMTAyNTViZjA3ZWFmMzg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMjg0MCw5ICsyODQwLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH07XG4iKTsKICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKSAu
ICIgbmF0aXZlVmFsdWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uZGl0aW9uYWwifSkgLiAiO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7
CisgICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9
IEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIsICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pOworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJv
bVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIgLiAk
bmF0aXZlVmFsdWUgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRtYXlUaHJvd0V4Y2Vw
dGlvbikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CisgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1U
eXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpXG4iKTsKQEAgLTM2ODEsNiArMzY4NCw4IEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBBdG9taWNTdHJpbmcgJG5hbWUgPSBzdGF0ZS0+YXJndW1lbnQoJGFyZ3NJ
bmRleCkudG9TdHJpbmcoc3RhdGUpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKHN0YXRlKS5nZXQo
KTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoJG5h
bWUuaXNOdWxsKCkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG15ICRvdXRlcjsKICAgICAgICAgICAgICAg
ICBteSAkaW5uZXI7CkBAIC0zNzE5LDEzICszNzI0LDE0IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAiIjsKICAgICAgICAgICAgICAg
ICAgICAgJGlubmVyID0gInN0YXRlLT5hcmd1bWVudCgkYXJnc0luZGV4KSI7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmF0aXZl
VHlwZSAkbmFtZSA9ICRvdXRlciIgLiBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgJGlubmVy
LCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFs
In0pIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJv
d0V4Y2VwdGlvbikgPSBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgJGlubmVyLCAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pOworICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmF0aXZlVHlwZSAkbmFtZSA9
ICRvdXRlciIgLiAkbmF0aXZlVmFsdWUgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRt
YXlUaHJvd0V4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAjIENoZWNrIGlmIHRoZSB0eXBlIGNvbnZlcnNpb24gc3Vj
Y2VlZGVkLgotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4i
KTsKLQogICAgICAgICAgICAgbXkgJGlzVGVhck9mZiA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5
cGVOZWVkaW5nVGVhck9mZigkYXJnVHlwZSkgJiYgJGludGVyZmFjZU5hbWUgIX4gL0xpc3QkLzsK
ICAgICAgICAgICAgIG15ICRzaG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBl
ckJ5UmVmZXJlbmNlKCRwYXJhbWV0ZXIsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgaWYgKCRp
c1RlYXJPZmYgb3IgJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgewpAQCAtNDMxNSw2ICs0MzIxLDcg
QEAgbXkgJWludGVnZXJDb252ZXJzaW9uRnVuY3Rpb24gPSAoCiAgICAgInVuc2lnbmVkIHNob3J0
IiA9PiAidG9VSW50MTYiLAogKTsKIAorIyBSZXR1cm5zIChjb252ZXJ0U3RyaW5nLCBtYXlUaHJv
d0V4Y2VwdGlvbikuCiBzdWIgSlNWYWx1ZVRvTmF0aXZlCiB7CiAgICAgbXkgJHNpZ25hdHVyZSA9
IHNoaWZ0OwpAQCAtNDMyOCw1NCArNDMzNSw1NCBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAg
ICAgIG15ICRjb252ZXJzaW9uVHlwZSA9ICJOb3JtYWxDb252ZXJzaW9uIjsKICAgICAgICAgJGNv
bnZlcnNpb25UeXBlID0gIkVuZm9yY2VSYW5nZSIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkVuZm9yY2VSYW5nZSJ9OwogICAgICAgICAkY29udmVyc2lvblR5cGUgPSAiQ2xh
bXAiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFtcCJ9OwotICAgICAg
ICByZXR1cm4gIiRmdW5jdGlvbihzdGF0ZSwgJHZhbHVlLCAkY29udmVyc2lvblR5cGUpIjsKKyAg
ICAgICAgcmV0dXJuICgiJGZ1bmN0aW9uKHN0YXRlLCAkdmFsdWUsICRjb252ZXJzaW9uVHlwZSki
LCAxKTsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAg
aWYgKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUcmVhdE51bGxBcyJ9KSB7Ci0g
ICAgICAgICAgICByZXR1cm4gInZhbHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KHN0YXRlLCAkdmFsdWUpIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJl
YXROdWxsQXMifSBlcSAiRW1wdHlTdHJpbmciOwotICAgICAgICAgICAgcmV0dXJuICJ2YWx1ZVRv
U3RyaW5nV2l0aE51bGxDaGVjayhzdGF0ZSwgJHZhbHVlKSIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlRyZWF0TnVsbEFzIn0gZXEgIkxlZ2FjeU51bGxTdHJpbmciOworICAg
ICAgICAgICAgcmV0dXJuICgidmFsdWVUb1N0cmluZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
c3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VHJlYXROdWxsQXMifSBlcSAiRW1wdHlTdHJpbmciOworICAgICAgICAgICAgcmV0dXJuICgidmFs
dWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkc2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXROdWxsQXMifSBlcSAiTGVnYWN5TnVsbFN0cmlu
ZyI7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJ2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5l
ZE9yTnVsbENoZWNrKHN0YXRlLCAkdmFsdWUpIiBpZiAkc2lnbmF0dXJlLT5pc051bGxhYmxlOwot
ICAgICAgICByZXR1cm4gIiR2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0
YXRlKSIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkF0b21pY1N0cmluZyJ9
OwotICAgICAgICByZXR1cm4gIiR2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSkiOworICAgICAgICBy
ZXR1cm4gKCJ2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0YXRlLCAkdmFs
dWUpIiwgMSkgaWYgJHNpZ25hdHVyZS0+aXNOdWxsYWJsZTsKKyAgICAgICAgcmV0dXJuICgiJHZh
bHVlLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpIiwgMSkgaWYgJHNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkF0b21pY1N0cmluZyJ9OworICAgICAgICByZXR1
cm4gKCIkdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpIiwgMSk7CiAgICAgfQogCiAgICAgaWYgKCR0
eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIHJl
dHVybiAiU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsICR2YWx1ZSwgMCwgMCki
OworICAgICAgICByZXR1cm4gKCJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwg
JHZhbHVlLCAwLCAwKSIsIDEpOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRGljdGlvbmFy
eSIpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRpY3Rpb25hcnkuaCIsICRjb25kaXRp
b25hbCk7Ci0gICAgICAgIHJldHVybiAieyBzdGF0ZSwgJHZhbHVlIH0iOworICAgICAgICByZXR1
cm4gKCJ7IHN0YXRlLCAkdmFsdWUgfSIsIDApOwogICAgIH0KIAogICAgIG15ICRhcnJheU9yU2Vx
dWVuY2VUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5T3JTZXF1ZW5jZVR5cGUoJHR5cGUp
OwogICAgIGlmICgkYXJyYXlPclNlcXVlbmNlVHlwZSkgewogICAgICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPklzUmVmUHRyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkpIHsKICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR7YXJyYXlPclNlcXVlbmNlVHlwZX0uaCIpOwotICAgICAg
ICAgICAgcmV0dXJuICIodG9SZWZQdHJOYXRpdmVBcnJheTwke2FycmF5T3JTZXF1ZW5jZVR5cGV9
LCBKUyR7YXJyYXlPclNlcXVlbmNlVHlwZX0+KHN0YXRlLCAkdmFsdWUsICZKUyR7YXJyYXlPclNl
cXVlbmNlVHlwZX06OnRvV3JhcHBlZCkpIjsKKyAgICAgICAgICAgIHJldHVybiAoIih0b1JlZlB0
ck5hdGl2ZUFycmF5PCR7YXJyYXlPclNlcXVlbmNlVHlwZX0sIEpTJHthcnJheU9yU2VxdWVuY2VU
eXBlfT4oc3RhdGUsICR2YWx1ZSwgJkpTJHthcnJheU9yU2VxdWVuY2VUeXBlfTo6dG9XcmFwcGVk
KSkiLCAxKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gInRvTmF0aXZlQXJyYXk8IiAuIEdl
dE5hdGl2ZVZlY3RvcklubmVyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkgLiAiPihzdGF0ZSwg
JHZhbHVlKSI7CisgICAgICAgIHJldHVybiAoInRvTmF0aXZlQXJyYXk8IiAuIEdldE5hdGl2ZVZl
Y3RvcklubmVyVHlwZSgkYXJyYXlPclNlcXVlbmNlVHlwZSkgLiAiPihzdGF0ZSwgJHZhbHVlKSIs
IDEpOwogICAgIH0KIAotICAgIHJldHVybiAkdmFsdWUgaWYgJHR5cGUgZXEgImFueSI7CisgICAg
cmV0dXJuICgkdmFsdWUsIDApIGlmICR0eXBlIGVxICJhbnkiOwogCi0gICAgcmV0dXJuICIkdmFs
dWUudG9Cb29sZWFuKHN0YXRlKSIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwotICAgIHJldHVybiAi
JHZhbHVlLnRvTnVtYmVyKHN0YXRlKSIgaWYgJHR5cGUgZXEgImRvdWJsZSIgb3IgJHR5cGUgZXEg
InVucmVzdHJpY3RlZCBkb3VibGUiOwotICAgIHJldHVybiAiJHZhbHVlLnRvRmxvYXQoc3RhdGUp
IiBpZiAkdHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZmxvYXQiOwot
ICAgIHJldHVybiAidmFsdWVUb0RhdGUoc3RhdGUsICR2YWx1ZSkiIGlmICR0eXBlIGVxICJEYXRl
IjsKKyAgICByZXR1cm4gKCIkdmFsdWUudG9Cb29sZWFuKHN0YXRlKSIsIDEpIGlmICR0eXBlIGVx
ICJib29sZWFuIjsKKyAgICByZXR1cm4gKCIkdmFsdWUudG9OdW1iZXIoc3RhdGUpIiwgMSkgaWYg
JHR5cGUgZXEgImRvdWJsZSIgb3IgJHR5cGUgZXEgInVucmVzdHJpY3RlZCBkb3VibGUiOworICAg
IHJldHVybiAoIiR2YWx1ZS50b0Zsb2F0KHN0YXRlKSIsIDEpIGlmICR0eXBlIGVxICJmbG9hdCIg
b3IgJHR5cGUgZXEgInVucmVzdHJpY3RlZCBmbG9hdCI7CisgICAgcmV0dXJuICgidmFsdWVUb0Rh
dGUoc3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkdHlwZSBlcSAiRGF0ZSI7CiAKLSAgICByZXR1cm4g
InRvJHR5cGUoJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5
cGUpOwotICAgIHJldHVybiAicGFyc2UiIC4gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJHR5cGUp
IC4gIigqc3RhdGUsICR2YWx1ZSkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBl
KTsKKyAgICByZXR1cm4gKCJ0byR0eXBlKCR2YWx1ZSkiLCAxKSBpZiAkY29kZUdlbmVyYXRvci0+
SXNUeXBlZEFycmF5VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICgicGFyc2UiIC4gR2V0RW51bWVy
YXRpb25DbGFzc05hbWUoJHR5cGUpIC4gIigqc3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkY29kZUdl
bmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSk7CiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMk
dHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKIAotICAgIHJldHVybiAidG9ET01TdHJpbmdMaXN0KHN0
YXRlLCAkdmFsdWUpIiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCI7Ci0gICAgcmV0dXJuICJK
U05vZGVGaWx0ZXI6OnRvV3JhcHBlZChzdGF0ZS0+dm0oKSwgJHZhbHVlKSIgaWYgJHR5cGUgZXEg
Ik5vZGVGaWx0ZXIiOworICAgIHJldHVybiAoInRvRE9NU3RyaW5nTGlzdChzdGF0ZSwgJHZhbHVl
KSIsIDEpIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKKyAgICByZXR1cm4gKCJKU05vZGVG
aWx0ZXI6OnRvV3JhcHBlZChzdGF0ZS0+dm0oKSwgJHZhbHVlKSIsIDEpIGlmICR0eXBlIGVxICJO
b2RlRmlsdGVyIjsKIAotICAgIHJldHVybiAiSlMke3R5cGV9Ojp0b1dyYXBwZWQoJHZhbHVlKSI7
CisgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBwZWQoJHZhbHVlKSIsIDApOwogfQogCiBz
dWIgTmF0aXZlVG9KU1ZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4
IGZmY2NhYzJhZTBiNGQyMDMzNzVkMDIxMDkwYTg5MTA4MTNjNDBiODAuLjkyOTk0ZGU1YzBhMzBj
MjNlYWYyZTMyZTFjOGRjNWY0ZDcwNWYyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmpl
Y3QuY3BwCkBAIC0yMDQsOCArMjA0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3QKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIE5vZGUqIG5leHRDaGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVu
dCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFuZXh0Q2hpbGQpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAg
ICAgaW1wbC5leGNpdGluZ0Z1bmN0aW9uKCpuZXh0Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cAppbmRleCBmYTcyM2E3MjlhYzVkNzcwNzRlNDQ5MTlhNjczMzQ2NjRlYWU0NTk0Li5lYjRjNmIx
YTYwNTkxNWUxZmE3MjMzZjMzZWM4M2RjNzNiODBlYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cApAQCAtNjg0LDggKzY4NCw2IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05v
ZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlCiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgTm9kZSogbmF0aXZlVmFs
dWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFko
IW5hdGl2ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzU0LDggKzc1Miw2IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJm
YWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsCiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
Tm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODA1LDggKzgwMSw2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aG9kMihFCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
VGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDEp
KTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9i
akFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLmltcGxlbWVudHNNZXRob2QyKCpjb250ZXh0LCBzdHJBcmcsICpvYmpBcmcs
IGVjKSkpOwpAQCAtODczLDggKzg2Nyw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyCiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDEpKTsKLSAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihXZWJDb3JlOjpUZXN0U3Vw
cGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGltcGwsICpjb250ZXh0LCBzdHJBcmcsICpv
YmpBcmcsIGVjKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBjY2QxM2JhNmI4NWY4ZmFmYTRhMzRjNTNiODJh
OTk1MWNmOGU2NDZmLi5jNzhlYWY3MjdjY2Q1OGVkODBiYTY0NTExNTM5Y2UzNDE5ZTlhODJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtMjU4OCw4ICsyNTg4LDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpUZXN0T2Jq
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWQK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0
T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjA5LDggKzI2MDcsNiBAQCBi
b29sIHNldEpTVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRUZXN0TnVsbGFibGVPYmpBdHRyKG5h
dGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI2MjYsOCArMjYyMiw2IEBAIGJv
b2wgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFw
cGVkKHZhbHVlKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CiAg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yNjY0LDggKzI2NTgsNiBAQCBib29sIHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSgogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZh
bHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElL
RUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwMDcsOCArMjk5OSw2IEBAIGJvb2wgc2V0SlNUZXN0
T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9OwogICAgIFRlc3RPYmoqIG5h
dGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMDEsOCArMzA5MSw2IEBAIGJvb2wgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTCiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2
YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewogICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzEy
NSw4ICszMTEzLDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9
IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChVTkxJS0VMWSgh
bmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMTQ2LDggKzMxMzIsNiBAQCBib29sIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuYwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwotICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNzAsOCArMzE1NCw2
IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6
OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVl
KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzE5NCw4ICszMTc2LDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGEKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBu
YXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
IChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMjE4LDggKzMxOTgsNiBAQCBib29sIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlKEV4ZQogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQo
dmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMy
NDIsOCArMzIyMCw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvCiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUg
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFko
IW5hdGl2ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzM2NSw4ICszMzQxLDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpB
bnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGUKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU0M6OkpTVmFsdWUgbmF0aXZlVmFsdWUgPSB2YWx1ZTsKLSAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0
QW55QXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMzODIs
OCArMzM1Niw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlCiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1Bv
aW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBwZWQodmFsdWUpOwotICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaW1wbC5zZXRNdXRhYmxlUG9pbnQobmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtMzM5OSw4ICszMzcxLDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2lu
dChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY28KICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpTU1ZHUG9pbnQ6OnRvV3JhcHBlZCh2
YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEltbXV0YWJsZVBvaW50KG5hdGl2ZVZhbHVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM2NzksOCArMzY0OSw2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFy
Z3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiog
b2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBpbXBsLnZvaWRNZXRo
b2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsICpvYmpBcmcpOwpAQCAtMzcxNiw4ICszNjg0LDYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMikpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJ
S0VMWSghb2JqQXJnKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3MoYnl0
ZUFyZywgc3RyQXJnLCAqb2JqQXJnKSk7CkBAIC0zNzUzLDggKzM3MTksNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RX
aXRoQXJncyhFeGVjUwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RP
YmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIHN0ckFy
ZywgKm9iakFyZykpOwpAQCAtMzc5MCw4ICszNzU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhFeGVj
U3QKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcg
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMikpOwotICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5sb25nTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCAqb2JqQXJnKSk7
CkBAIC0zODI3LDggKzM3ODksNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YQogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5vYmpNZXRob2RXaXRoQXJn
cyhsb25nQXJnLCBzdHJBcmcsICpvYmpBcmcpKSk7CkBAIC0zOTk0LDggKzM5NTQsNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJncwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgx
KSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFv
YmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
OjpnZXRQdHIoaW1wbC5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKHN0ckFyZywg
Km9iakFyZywgZWMpKSk7CkBAIC00MDMyLDExICszOTkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhlY1N0
YXRlKgogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgRGljdGlvbmFyeSBvbyA9IHsgc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSB9OwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIERpY3Rpb25hcnkg
b29vID0geyBzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpIH07Ci0gICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgaW1wbC5vcHRpb25zT2JqZWN0KG9vLCBvb28pOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC00NjcyLDggKzQ2MjYsNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55KEV4ZQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNDOjpKU1ZhbHVlIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCk7
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxBbnkoYSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KQEAgLTQ2ODcsOCArNDYzOSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsCiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBvYmog
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVyKG9iaik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KQEAgLTQ3MDIsOCArNDY1Miw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsCiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBvYmog
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVX
cmFwcGVySXNOdWxsKG9iaik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KQEAgLTQ4OTcsOCArNDg0NSw2IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShFeGVjU3RhCiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+
YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFN0cmlu
ZyBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDkxNyw4ICs0ODYzLDYgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2QyKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgT3B0aW9uYWw8aW50PiBsb25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlz
VW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQ+KCkgOiB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtNTAyMiw4ICs0OTY2LDYgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KEV4ZWNT
dGEKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0
YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKCpvYmpBcmcpOwpAQCAtNTE0NCwxMSAr
NTA4Niw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBv
YmpBcmcxID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKLSAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcyID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDEpKTsKLSAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0
ZXIob2JqQXJnMSwgb2JqQXJnMik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KQEAgLTUxNjQsOCArNTEwMiw2IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlv
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0
ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIE9w
dGlvbmFsPGludD4gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8g
T3B0aW9uYWw8aW50PigpIDogdG9JbnQzMihzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTU0MjMsOCArNTM1OSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRlCiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50
KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIGlt
cGwuY29udmVydDEoKnZhbHVlKTsKQEAgLTU0NDIsOCArNTM3Niw2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVjU3Rh
dGUqIHN0YXRlCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dy
YXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBpbXBsLmNvbnZlcnQyKHZhbHVlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNTU1OCw4ICs1NDkwLDYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0
aFNlcXVlbmMKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZE9yTnVsbCgpICYmICFzdGF0ZS0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZv
KCkpKSkKICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAi
b2JqQXJnIiwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiLCAiVGVzdE9i
aiIpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5h
cmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhID0gdG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgxKSk7CkBAIC01NTg1LDggKzU1MTUsNiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25X
aXRoQXJyYXkoRQogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkgJiYgIXN0YXRlLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6Omlu
Zm8oKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAs
ICJvYmpBcmciLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJheSIsICJUZXN0T2Jq
Iik7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFy
Z3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5M
SUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
ICAgICBWZWN0b3I8aW50PiBhcnJheSA9IHRvTmF0aXZlQXJyYXk8aW50PihzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDEpKTsKQEAgLTU2NDksOCArNTU3Nyw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhl
Y1N0CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBOb2RlKiBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFy
Z3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWhlYWQpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAg
ICAgVmVjdG9yPE5vZGUqPiB0YWlsOwpAQCAtNTgwOSw4ICs1NzM1LDYgQEAgc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zl
cmxvYWRlZEZ1bmMKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEZldGNoUmVxdWVzdCogcmVxdWVzdCA9IEpTRmV0Y2hS
ZXF1ZXN0Ojp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlcXVlc3QpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgaW1wbC50ZXN0UHJvbWlzZU92ZXJsb2Fk
ZWRGdW5jdGlvbigqcmVxdWVzdCwgRGVmZXJyZWRXcmFwcGVyKHN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggOTMyMjllYWY0MTE3OGI0OTdkZjAwZTNlOGI0
ZWIwMmUyYmRmYzUzYi4uODdhMmQxY2U3YjZhODBlYzc3NDc5Njc5Y2ZmOWY3YTE4YjhjZTA0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtOTks
OCArOTksNiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogcwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgQmxvYiogYmxv
YiA9IEpTQmxvYjo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFibG9iKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSgq
YmxvYik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277999</attachid>
            <date>2016-05-03 08:43:21 -0700</date>
            <delta_ts>2016-05-03 08:43:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157299-20160503084359.patch</filename>
            <type>text/plain</type>
            <size>30497</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjU2M2JmOTZiMjJkOGVj
YjQyMGMzYjE0ZWM4NDE0MWNjMmEwYTE1OC4uYzAxYzlkNmE1ZDUwNmE4ZTkyYTk4MjIyNjhkYzFm
MjUxYTQzN2RjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA1LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBzb21lIHVubmVjZXNz
YXJ5IGV4Y2VwdGlvbiBjaGVja2luZyBpbiB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyOTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBEcm9wIHNvbWUgdW5uZWNlc3Nh
cnkgZXhjZXB0aW9uIGNoZWNraW5nIGluIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MuCisgICAgICAg
IE9ubHkgZG8gYSBjaGVjayBmb3Igc3RhdGUtPmhhZEV4Y2VwdGlvbigpIGFmdGVyIGNvbnZlcnRp
bmcgYSBKU1ZhbHVlCisgICAgICAgIHRvIGEgbmF0aXZlIHZhbHVlIHdoZW4gbmVjZXNzYXJ5LiBV
cGRhdGUgSlNWYWx1ZVRvTmF0aXZlKCkgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGNhbGxlciBp
ZiBjb252ZXJ0aW5nIHRvIHRoZSBuYXRpdmUgdmFsdWUgbWF5IHRocm93IGFuCisgICAgICAgIGV4
Y2VwdGlvbi4KKworICAgICAgICBUaGlzIGdldHMgcmlkIG9mIGEgbG90IG9mIHVubmVjZXNzYXJ5
IGJyYW5jaGluZyBpbiB0aGUgYmluZGluZ3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBp
bnRlbmRlZCB3ZWItZXhwb3NlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoSlNW
YWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisKIDIwMTYtMDUtMDMgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZC9yZWZhY3RvciBpc29sYXRlZENvcHkg
bWV0aG9kcyBmb3IgMyBJREIgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMWU2Y2QyYjYxM2M5MmUyN2Y4MTYw
ZjlmYWRkOTNhZGU5NmMxMzcwMy4uZTUxMTAxZTc5MWQzNTYzMjlhMjI3NDNkZTM2ZjRjNzUxY2Q0
YzA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTI4NjMsOSArMjg2MywxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9O1xuIik7
CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSkgLiAiIG5hdGl2ZVZhbHVlID0gIiAuIEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXR0
cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIC4gIjtcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiBmYWxzZTtcbiIpOworICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlU
aHJvd0V4Y2VwdGlvbikgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25kaXRpb25hbCJ9KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlKSAuICIgbmF0aXZlVmFsdWUgPSAkbmF0aXZlVmFsdWU7XG4iKTsKKyAgICAgICAgICAgICAg
ICBpZiAoJG1heVRocm93RXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
ZmFsc2U7XG4iKTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2ggKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSlcbiIpOwpA
QCAtMzY5Myw2ICszNjk2LDggQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEF0b21pY1N0cmluZyAkbmFtZSA9IHN0
YXRlLT5hcmd1bWVudCgkYXJnc0luZGV4KS50b1N0cmluZyhzdGF0ZSktPnRvRXhpc3RpbmdBdG9t
aWNTdHJpbmcoc3RhdGUpLmdldCgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGlmICgkbmFtZS5pc051bGwoKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbXkgJG91
dGVyOwogICAgICAgICAgICAgICAgIG15ICRpbm5lcjsKQEAgLTM3MzEsMTMgKzM3MzYsMTQgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgICAgICRvdXRlciA9
ICIiOwogICAgICAgICAgICAgICAgICAgICAkaW5uZXIgPSAic3RhdGUtPmFyZ3VtZW50KCRhcmdz
SW5kZXgpIjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICRuYXRpdmVUeXBlICRuYW1lID0gJG91dGVyIiAuIEpTVmFsdWVUb05hdGl2
ZSgkaW50ZXJmYWNlLCAkcGFyYW1ldGVyLCAkaW5uZXIsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkgLiAiO1xuIik7CisgICAgICAgICAg
ICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IEpTVmFsdWVUb05h
dGl2ZSgkaW50ZXJmYWNlLCAkcGFyYW1ldGVyLCAkaW5uZXIsICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7CisgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICRuYXRpdmVUeXBlICRuYW1lID0gJHtvdXRlcn0ke25h
dGl2ZVZhbHVlfTtcbiIpOworICAgICAgICAgICAgICAgIGlmICgkbWF5VGhyb3dFeGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTtcbiIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgIyBDaGVjayBpZiB0aGUgdHlwZSBjb252ZXJzaW9uIHN1Y2NlZWRlZC4KLSAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0KICAgICAgICAgICAg
IG15ICRpc1RlYXJPZmYgPSAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYo
JGFyZ1R5cGUpICYmICRpbnRlcmZhY2VOYW1lICF+IC9MaXN0JC87CiAgICAgICAgICAgICBteSAk
c2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFy
YW1ldGVyLCAkaW50ZXJmYWNlKTsKICAgICAgICAgICAgIGlmICgkaXNUZWFyT2ZmIG9yICRzaG91
bGRQYXNzQnlSZWZlcmVuY2UpIHsKQEAgLTQzMjcsNiArNDMzMyw3IEBAIG15ICVpbnRlZ2VyQ29u
dmVyc2lvbkZ1bmN0aW9uID0gKAogICAgICJ1bnNpZ25lZCBzaG9ydCIgPT4gInRvVUludDE2IiwK
ICk7CiAKKyMgUmV0dXJucyAoY29udmVydFN0cmluZywgbWF5VGhyb3dFeGNlcHRpb24pLgogc3Vi
IEpTVmFsdWVUb05hdGl2ZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkc2lnbmF0dXJlLCAkdmFs
dWUsICRjb25kaXRpb25hbCkgPSBAXzsKQEAgLTQzMzgsNTQgKzQzNDUsNTQgQEAgc3ViIEpTVmFs
dWVUb05hdGl2ZQogICAgICAgICBteSAkY29udmVyc2lvblR5cGUgPSAiTm9ybWFsQ29udmVyc2lv
biI7CiAgICAgICAgICRjb252ZXJzaW9uVHlwZSA9ICJFbmZvcmNlUmFuZ2UiIGlmICRzaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmZvcmNlUmFuZ2UifTsKICAgICAgICAgJGNvbnZl
cnNpb25UeXBlID0gIkNsYW1wIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q2xhbXAifTsKLSAgICAgICAgcmV0dXJuICIkZnVuY3Rpb24oc3RhdGUsICR2YWx1ZSwgJGNvbnZl
cnNpb25UeXBlKSI7CisgICAgICAgIHJldHVybiAoIiRmdW5jdGlvbihzdGF0ZSwgJHZhbHVlLCAk
Y29udmVyc2lvblR5cGUpIiwgMSk7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJET01TdHJp
bmciKSB7CiAgICAgICAgIGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJl
YXROdWxsQXMifSkgewotICAgICAgICAgICAgcmV0dXJuICJ2YWx1ZVRvU3RyaW5nVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyhzdGF0ZSwgJHZhbHVlKSIgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlRyZWF0TnVsbEFzIn0gZXEgIkVtcHR5U3RyaW5nIjsKLSAgICAgICAgICAg
IHJldHVybiAidmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soc3RhdGUsICR2YWx1ZSkiIGlmICRz
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUcmVhdE51bGxBcyJ9IGVxICJMZWdhY3lO
dWxsU3RyaW5nIjsKKyAgICAgICAgICAgIHJldHVybiAoInZhbHVlVG9TdHJpbmdUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nKHN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlRyZWF0TnVsbEFzIn0gZXEgIkVtcHR5U3RyaW5nIjsKKyAgICAgICAg
ICAgIHJldHVybiAoInZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKHN0YXRlLCAkdmFsdWUpIiwg
MSkgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlRyZWF0TnVsbEFzIn0gZXEg
IkxlZ2FjeU51bGxTdHJpbmciOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAidmFsdWVUb1N0
cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhzdGF0ZSwgJHZhbHVlKSIgaWYgJHNpZ25hdHVy
ZS0+aXNOdWxsYWJsZTsKLSAgICAgICAgcmV0dXJuICIkdmFsdWUudG9TdHJpbmcoc3RhdGUpLT50
b0F0b21pY1N0cmluZyhzdGF0ZSkiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJBdG9taWNTdHJpbmcifTsKLSAgICAgICAgcmV0dXJuICIkdmFsdWUudG9XVEZTdHJpbmcoc3Rh
dGUpIjsKKyAgICAgICAgcmV0dXJuICgidmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxD
aGVjayhzdGF0ZSwgJHZhbHVlKSIsIDEpIGlmICRzaWduYXR1cmUtPmlzTnVsbGFibGU7CisgICAg
ICAgIHJldHVybiAoIiR2YWx1ZS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0YXRl
KSIsIDEpIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBdG9taWNTdHJpbmci
fTsKKyAgICAgICAgcmV0dXJuICgiJHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKSIsIDEpOwogICAg
IH0KIAogICAgIGlmICgkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIikgewogICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiLCAkY29uZGl0aW9u
YWwpOwotICAgICAgICByZXR1cm4gIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRl
LCAkdmFsdWUsIDAsIDApIjsKKyAgICAgICAgcmV0dXJuICgiU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoc3RhdGUsICR2YWx1ZSwgMCwgMCkiLCAxKTsKICAgICB9CiAKICAgICBpZiAoJHR5
cGUgZXEgIkRpY3Rpb25hcnkiKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJEaWN0aW9u
YXJ5LmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm4gInsgc3RhdGUsICR2YWx1ZSB9
IjsKKyAgICAgICAgcmV0dXJuICgieyBzdGF0ZSwgJHZhbHVlIH0iLCAwKTsKICAgICB9CiAKICAg
ICBteSAkYXJyYXlPclNlcXVlbmNlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheU9yU2Vx
dWVuY2VUeXBlKCR0eXBlKTsKICAgICBpZiAoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIHsKICAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1JlZlB0clR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUp
KSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMke2FycmF5T3JTZXF1ZW5jZVR5
cGV9LmgiKTsKLSAgICAgICAgICAgIHJldHVybiAiKHRvUmVmUHRyTmF0aXZlQXJyYXk8JHthcnJh
eU9yU2VxdWVuY2VUeXBlfSwgSlMke2FycmF5T3JTZXF1ZW5jZVR5cGV9PihzdGF0ZSwgJHZhbHVl
LCAmSlMke2FycmF5T3JTZXF1ZW5jZVR5cGV9Ojp0b1dyYXBwZWQpKSI7CisgICAgICAgICAgICBy
ZXR1cm4gKCIodG9SZWZQdHJOYXRpdmVBcnJheTwke2FycmF5T3JTZXF1ZW5jZVR5cGV9LCBKUyR7
YXJyYXlPclNlcXVlbmNlVHlwZX0+KHN0YXRlLCAkdmFsdWUsICZKUyR7YXJyYXlPclNlcXVlbmNl
VHlwZX06OnRvV3JhcHBlZCkpIiwgMSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJ0b05h
dGl2ZUFycmF5PCIgLiBHZXROYXRpdmVWZWN0b3JJbm5lclR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5
cGUpIC4gIj4oc3RhdGUsICR2YWx1ZSkiOworICAgICAgICByZXR1cm4gKCJ0b05hdGl2ZUFycmF5
PCIgLiBHZXROYXRpdmVWZWN0b3JJbm5lclR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIC4gIj4o
c3RhdGUsICR2YWx1ZSkiLCAxKTsKICAgICB9CiAKLSAgICByZXR1cm4gJHZhbHVlIGlmICR0eXBl
IGVxICJhbnkiOworICAgIHJldHVybiAoJHZhbHVlLCAwKSBpZiAkdHlwZSBlcSAiYW55IjsKIAot
ICAgIHJldHVybiAiJHZhbHVlLnRvQm9vbGVhbihzdGF0ZSkiIGlmICR0eXBlIGVxICJib29sZWFu
IjsKLSAgICByZXR1cm4gIiR2YWx1ZS50b051bWJlcihzdGF0ZSkiIGlmICR0eXBlIGVxICJkb3Vi
bGUiIG9yICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZG91YmxlIjsKLSAgICByZXR1cm4gIiR2YWx1
ZS50b0Zsb2F0KHN0YXRlKSIgaWYgJHR5cGUgZXEgImZsb2F0IiBvciAkdHlwZSBlcSAidW5yZXN0
cmljdGVkIGZsb2F0IjsKLSAgICByZXR1cm4gInZhbHVlVG9EYXRlKHN0YXRlLCAkdmFsdWUpIiBp
ZiAkdHlwZSBlcSAiRGF0ZSI7CisgICAgcmV0dXJuICgiJHZhbHVlLnRvQm9vbGVhbihzdGF0ZSki
LCAxKSBpZiAkdHlwZSBlcSAiYm9vbGVhbiI7CisgICAgcmV0dXJuICgiJHZhbHVlLnRvTnVtYmVy
KHN0YXRlKSIsIDEpIGlmICR0eXBlIGVxICJkb3VibGUiIG9yICR0eXBlIGVxICJ1bnJlc3RyaWN0
ZWQgZG91YmxlIjsKKyAgICByZXR1cm4gKCIkdmFsdWUudG9GbG9hdChzdGF0ZSkiLCAxKSBpZiAk
dHlwZSBlcSAiZmxvYXQiIG9yICR0eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZmxvYXQiOworICAgIHJl
dHVybiAoInZhbHVlVG9EYXRlKHN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJHR5cGUgZXEgIkRhdGUi
OwogCi0gICAgcmV0dXJuICJ0byR0eXBlKCR2YWx1ZSkiIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1R5
cGVkQXJyYXlUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gInBhcnNlIiAuIEdldEVudW1lcmF0aW9u
Q2xhc3NJZGVudGlmaWVyKCRpbnRlcmZhY2UsICR0eXBlKSAuICIoKnN0YXRlLCAkdmFsdWUpIiBp
ZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICgidG8kdHlw
ZSgkdmFsdWUpIiwgMSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUp
OworICAgIHJldHVybiAoInBhcnNlIiAuIEdldEVudW1lcmF0aW9uQ2xhc3NJZGVudGlmaWVyKCRp
bnRlcmZhY2UsICR0eXBlKSAuICIoKnN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJGNvZGVHZW5lcmF0
b3ItPklzRW51bVR5cGUoJHR5cGUpOwogCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUu
aCIsICRjb25kaXRpb25hbCk7CiAKLSAgICByZXR1cm4gInRvRE9NU3RyaW5nTGlzdChzdGF0ZSwg
JHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwotICAgIHJldHVybiAiSlNOb2Rl
RmlsdGVyOjp0b1dyYXBwZWQoc3RhdGUtPnZtKCksICR2YWx1ZSkiIGlmICR0eXBlIGVxICJOb2Rl
RmlsdGVyIjsKKyAgICByZXR1cm4gKCJ0b0RPTVN0cmluZ0xpc3Qoc3RhdGUsICR2YWx1ZSkiLCAx
KSBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCI7CisgICAgcmV0dXJuICgiSlNOb2RlRmlsdGVy
Ojp0b1dyYXBwZWQoc3RhdGUtPnZtKCksICR2YWx1ZSkiLCAxKSBpZiAkdHlwZSBlcSAiTm9kZUZp
bHRlciI7CiAKLSAgICByZXR1cm4gIkpTJHt0eXBlfTo6dG9XcmFwcGVkKCR2YWx1ZSkiOworICAg
IHJldHVybiAoIkpTJHt0eXBlfTo6dG9XcmFwcGVkKCR2YWx1ZSkiLCAwKTsKIH0KIAogc3ViIE5h
dGl2ZVRvSlNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBmZmNj
YWMyYWUwYjRkMjAzMzc1ZDAyMTA5MGE4OTEwODEzYzQwYjgwLi45Mjk5NGRlNWMwYTMwYzIzZWFm
MmUzMmUxYzhkYzVmNGQ3MDVmMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cApAQCAtMjA0LDggKzIwNCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBOb2RlKiBuZXh0Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkp
OwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghbmV4
dENoaWxkKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIGlt
cGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5k
ZXggZmE3MjNhNzI5YWM1ZDc3MDc0ZTQ0OTE5YTY3MzM0NjY0ZWFlNDU5NC4uZWI0YzZiMWE2MDU5
MTVlMWZhNzIzM2YzM2VjODNkYzczYjgwZWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAg
LTY4NCw4ICs2ODQsNiBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZQogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIE5vZGUqIG5hdGl2ZVZhbHVlID0g
SlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRp
dmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTc1NCw4ICs3NTIsNiBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZVN1
cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbAog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIE5vZGUq
IG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgwNSw4ICs4MDEsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVt
ZW50c01ldGhvZDIoRQogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RP
YmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgxKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC5pbXBsZW1lbnRzTWV0aG9kMigqY29udGV4dCwgc3RyQXJnLCAqb2JqQXJnLCBlYykp
KTsKQEAgLTg3Myw4ICs4NjcsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMgogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgxKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoV2ViQ29yZTo6VGVzdFN1cHBsZW1l
bnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMihpbXBsLCAqY29udGV4dCwgc3RyQXJnLCAqb2JqQXJn
LCBlYykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggYjhlMTM1MGJjMTY2MzAyYjhjZDcxNWMwNWFlMDllN2Vh
YjAyMjEyNi4uMmFiMWM1MzdiYmQ4MzQ3NmNiN2E4ZTFhMzAzYWE3YzRmN2VmYjZjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKQEAgLTI2ODQsOCArMjY4NCw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkCiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiog
bmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjcwNSw4ICsyNzAzLDYgQEAgYm9vbCBz
ZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHZhbHVlKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGltcGwuc2V0VGVzdE51bGxhYmxlT2JqQXR0cihuYXRpdmVW
YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNzIyLDggKzI3MTgsNiBAQCBib29sIHNl
dEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsCiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2
YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewogICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2
MCw4ICsyNzU0LDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEoKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9
IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChVTkxJS0VMWSgh
bmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMTAzLDggKzMwOTUsNiBAQCBib29sIHNldEpTVGVzdE9ialN0
cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfTsKICAgICBUZXN0T2JqKiBuYXRpdmVW
YWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChVTkxJ
S0VMWSghbmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTk3LDggKzMxODcsNiBAQCBib29sIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKUwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUp
OwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyMjEsOCAr
MzIwOSw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rl
c3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2
ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzI0Miw4ICszMjI4LDYgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmMK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0
T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMjY2LDggKzMyNTAsNiBAQCBi
b29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdAogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsK
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTMyOTAsOCArMzI3Miw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhCiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogbmF0aXZl
VmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5M
SUtFTFkoIW5hdGl2ZVZhbHVlKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzMxNCw4ICszMjk0LDYgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0
dHJpYnV0ZShFeGUKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVl
KTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CiAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzM4LDgg
KzMzMTYsNiBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jbwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRp
dmVWYWx1ZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTM0NjEsOCArMzQzNyw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqQW55QXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlND
OjpKU1ZhbHVlIG5hdGl2ZVZhbHVlID0gdmFsdWU7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbXBsLnNldEFueUF0
dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zNDc4LDggKzM0
NTIsNiBAQCBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZQogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4q
IG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKLSAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGltcGwuc2V0TXV0YWJsZVBvaW50KG5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTM0OTUsOCArMzQ2Nyw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvCiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFy
T2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBKU1NWR1BvaW50Ojp0b1dyYXBwZWQodmFsdWUp
OwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaW1wbC5zZXRJbW11dGFibGVQb2ludChuYXRpdmVWYWx1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0zNzc1LDggKzM3NDUsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4
ZWNTdAogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFy
ZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7Ci0gICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgaW1wbC52b2lkTWV0aG9kV2l0
aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCAqb2JqQXJnKTsKQEAgLTM4MTIsOCArMzc4MCw2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRl
TWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50
KDIpKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFko
IW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZU1ldGhvZFdpdGhBcmdzKGJ5dGVBcmcs
IHN0ckFyZywgKm9iakFyZykpOwpAQCAtMzg0OSw4ICszODE1LDYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFy
Z3MoRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBv
YmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMikpOwotICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5vY3RldE1ldGhvZFdpdGhBcmdzKG9jdGV0QXJnLCBzdHJBcmcsICpv
YmpBcmcpKTsKQEAgLTM4ODYsOCArMzg1MCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKLSAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KGltcGwubG9uZ01ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgKm9iakFyZykpOwpAQCAt
MzkyMyw4ICszODg1LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3Jh
cHBlZChzdGF0ZS0+YXJndW1lbnQoMikpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwub2JqTWV0aG9kV2l0aEFyZ3MobG9u
Z0FyZywgc3RyQXJnLCAqb2JqQXJnKSkpOwpAQCAtNDA5MCw4ICs0MDUwLDYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3MKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0
T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMSkpOwot
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJn
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcGwubWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhzdHJBcmcsICpvYmpB
cmcsIGVjKSkpOwpAQCAtNDEyOCwxMSArNDA4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSoK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIERpY3Rpb25hcnkgb28gPSB7IHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkg
fTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBEaWN0aW9uYXJ5IG9vbyA9
IHsgc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSB9OwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIGltcGwub3B0aW9uc09iamVjdChvbywgb29vKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNDc2OCw4ICs0NzIyLDYgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEFueShFeGUKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTQzo6SlNWYWx1ZSBhID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
QW55KGEpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBA
IC00NzgzLDggKzQ3MzUsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibAogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogb2JqID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cihvYmopOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBA
IC00Nzk4LDggKzQ3NDgsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibAogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogb2JqID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cklzTnVsbChvYmopOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CkBAIC00OTkzLDggKzQ5NDEsNiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoRXhlY1N0YQogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBTdHJpbmcgc3Ry
QXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTUwMTMsOCArNDk1OSw2IEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
MihFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3Jh
cHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIE9wdGlvbmFsPGludD4gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVm
aW5lZCgpID8gT3B0aW9uYWw8aW50PigpIDogdG9JbnQzMihzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTUxMTgsOCArNTA2Miw2IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOChFeGVjU3RhCiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+
YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChV
TkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZCgqb2JqQXJnKTsKQEAgLTUyNDAsMTEgKzUxODIs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpbwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJn
MSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnMiA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgxKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKG9i
akFyZzEsIG9iakFyZzIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CkBAIC01MjYwLDggKzUxOTgsNiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpbwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFy
Z3VtZW50KDApKTsKLSAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBPcHRpb25h
bDxpbnQ+IGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlv
bmFsPGludD4oKSA6IHRvSW50MzIoc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwg
Tm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01
NTE5LDggKzU0NTUsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29udmVydDEoRXhlY1N0YXRlKiBzdGF0ZQogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVz
dE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7
Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1
ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBpbXBsLmNv
bnZlcnQxKCp2YWx1ZSk7CkBAIC01NTM4LDggKzU0NzIsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBz
dGF0ZQogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVk
KHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgaW1wbC5jb252ZXJ0Mih2YWx1ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KQEAgLTU2NTQsOCArNTU4Niw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1
ZW5jCiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51
bGwoKSAmJiAhc3RhdGUtPmFyZ3VtZW50KDApLmluaGVyaXRzKEpTVGVzdE9iajo6aW5mbygpKSkp
CiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9iakFy
ZyIsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNlIiwgIlRlc3RPYmoiKTsK
ICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1l
bnQoMCkpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VM
WSghb2JqQXJnKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAg
IFZlY3Rvcjx1bnNpZ25lZD4gYSA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMSkpOwpAQCAtNTY4MSw4ICs1NjExLDYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFy
cmF5KEUKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9y
TnVsbCgpICYmICFzdGF0ZS0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZvKCkp
KSkKICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAib2Jq
QXJnIiwgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiLCAiVGVzdE9iaiIpOwog
ICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVu
dCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAg
VmVjdG9yPGludD4gYXJyYXkgPSB0b05hdGl2ZUFycmF5PGludD4oc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgxKSk7CkBAIC01NzQ1LDggKzU2NzMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgTm9kZSogaGVhZCA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVu
dCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFoZWFkKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIFZl
Y3RvcjxOb2RlKj4gdGFpbDsKQEAgLTU5MDUsOCArNTgzMSw2IEBAIHN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2Fk
ZWRGdW5jCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBGZXRjaFJlcXVlc3QqIHJlcXVlc3QgPSBKU0ZldGNoUmVxdWVz
dDo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIGltcGwudGVzdFByb21pc2VPdmVybG9hZGVkRnVu
Y3Rpb24oKnJlcXVlc3QsIERlZmVycmVkV3JhcHBlcihzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDkzMjI5ZWFmNDExNzhiNDk3ZGYwMGUzZThiNGViMDJl
MmJkZmM1M2IuLjg3YTJkMWNlN2I2YTgwZWM3NzQ3OTY3OWNmZjlmN2ExOGI4Y2UwNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTk5LDggKzk5
LDYgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzMyhFeGVjU3RhdGUqIHMKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEJsb2IqIGJsb2IgPSBK
U0Jsb2I6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwotICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghYmxvYikpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoKmJsb2Ip
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>