<?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>104069</bug_id>
          
          <creation_ts>2012-12-04 17:25:24 -0800</creation_ts>
          <short_desc>[V8] Rename V8DOMWrapper member functions to be more descriptive</short_desc>
          <delta_ts>2012-12-04 17:41:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>haraken</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>783149</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 17:25:24 -0800</bug_when>
    <thetext>[V8] Rename V8DOMWrapper member functions to be more descriptive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783150</commentid>
    <comment_count>1</comment_count>
      <attachid>177617</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 17:26:37 -0800</bug_when>
    <thetext>Created attachment 177617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783156</commentid>
    <comment_count>2</comment_count>
      <attachid>177617</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-04 17:31:19 -0800</bug_when>
    <thetext>Comment on attachment 177617
Patch

You mentioned flipping the name from associateWrapper to associateObjectWithWrapper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783158</commentid>
    <comment_count>3</comment_count>
      <attachid>177617</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 17:32:00 -0800</bug_when>
    <thetext>Comment on attachment 177617
Patch

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

&gt; Source/WebCore/bindings/v8/V8DOMWrapper.h:61
&gt; +        static v8::Local&lt;v8::Object&gt; create(v8::Handle&lt;v8::Object&gt; creationContext, WrapperTypeInfo*, void*);

V8DOMWrapper::create() sounds like a factory method for a V8DOMWrapper object. I might prefer V8DOMWrapper::createWrapper().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783160</commentid>
    <comment_count>4</comment_count>
      <attachid>177619</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 17:32:42 -0800</bug_when>
    <thetext>Created attachment 177619
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783162</commentid>
    <comment_count>5</comment_count>
      <attachid>177619</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 17:33:16 -0800</bug_when>
    <thetext>Comment on attachment 177619
Patch for landing

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783166</commentid>
    <comment_count>6</comment_count>
      <attachid>177622</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 17:35:19 -0800</bug_when>
    <thetext>Created attachment 177622
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783172</commentid>
    <comment_count>7</comment_count>
      <attachid>177625</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 17:37:40 -0800</bug_when>
    <thetext>Created attachment 177625
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783177</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 17:41:40 -0800</bug_when>
    <thetext>Committed r136605: &lt;http://trac.webkit.org/changeset/136605&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177617</attachid>
            <date>2012-12-04 17:26:37 -0800</date>
            <delta_ts>2012-12-04 17:32:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104069-20121204172403.patch</filename>
            <type>text/plain</type>
            <size>68773</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQzZWU5MzhkNjljZDNi
OGFmNTRlZGZkMDlhOTQ1ZGFlM2RiZjM5My4uZDNkOTZlZTE3YmI5MTliOThlMDJlNTdhYTg3NWQw
NjhlM2EzNjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk2IEBACiAyMDEyLTEyLTA0ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgW1Y4XSBSZW5hbWUgVjhET01X
cmFwcGVyIG1lbWJlciBmdW5jdGlvbnMgdG8gYmUgbW9yZSBkZXNjcmlwdGl2ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MDY5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhl
IHJlbmFtZXMsIHRoaXMgcGF0Y2ggYWxzbyBpbmxpbmUgbG9va3VwRE9NV3JhcHBlcgorICAgICAg
ICBpbnRvIGl0cyBjYWxsZXJzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcik6
CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvblNldHRlcik6CisgICAgICAgIChH
ZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVTaW5nbGVDb25zdHJ1
Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNr
KToKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAg
KEdlbmVyYXRlVG9WOENvbnZlcnRlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlRnJhbWVX
aXRoR2xvYmFsT2JqZWN0Q2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0RPTVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjp0
b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6Y2xlYXJG
b3JOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Omluc3Rh
bGxET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmg6CisgICAgICAgIChWOERPTVdyYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NV3JhcHBlcjo6Y2xlYXJOYXRpdmVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEZyYW1lKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVY4T2JqZWN0Rm9yTlBPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Zm9yZ2V0VjhPYmpl
Y3RGb3JOUE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0
aWFsaXplQ29udGV4dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFycmF5
QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6Ondy
YXBBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0V2ViR0xBcnJh
eSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckNhbGxi
YWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmV2ZW50QWNjZXNzb3JHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmV2ZW50QWNjZXNzb3JTZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnRvU3RyaW5nQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjayk6CisgICAgICAg
IChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAo
V2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6Y29uc3RydWN0b3JDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFk
b3dPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5qZWN0ZWRT
Y3JpcHRIb3N0VjhXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFu
YWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhJbnRlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJbnRlbnQ6OmNv
bnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlbG9h
ZEFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlcGxhY2VB
Y2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25BY2Nl
c3NvckdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5u
ZWxDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlQ2hhbm5lbDo6Y29uc3Ry
dWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojpp
bml0TWVzc2FnZUV2ZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlv
bk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2Rl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
V2ViS2l0UG9pbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorCisyMDEy
LTEyLTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgW1Y4XSBD
bGVhbnVwIHN0eWxlIGluIFY4RE9NV3JhcHBlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MDYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMzQzN2E5YTIwZWJiZGQ1YmYy
MDc5ODEyYjgxZTEzNDdlMzQ1ZDU3OS4uMDZlOWZmMmMzNjJlYjI1YWVjMDlhM2EyZjdjNTc3OWYz
MWM1N2Y3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KQEAgLTgwNCw3ICs4MDQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+ICR7ZnVuY05hbWV9QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
YwogewogICAgIElOQ19TVEFUUyhcIkRPTS4kaW50ZXJmYWNlTmFtZS4kZnVuY05hbWUuX2dldFwi
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZh
dGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KCRu
ZXdUZW1wbGF0ZVN0cmluZyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBW
OERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1w
bGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNl
TmFtZX06OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFu
ZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJl
YWR5CkBAIC04MzUsNyArODM1LDcgQEAgc3ViIEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uU2V0
dGVyCiBzdGF0aWMgdm9pZCAke2ludGVyZmFjZU5hbWV9RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS4kaW50
ZXJmYWNlTmFtZS5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBW
OERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1w
bGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNl
TmFtZX06OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgJHtpbnRlcmZhY2VOYW1lfSogaW1wID0gJHt2OEludGVyZmFjZU5hbWV9
Ojp0b05hdGl2ZShob2xkZXIpOwpAQCAtOTMxLDcgKzkzMSw3IEBAIEVORAogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgIyBwZXJmb3JtIGxvb2t1cCBmaXJzdAogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKCR7djhJbnRlcmZhY2VOYW1l
fTo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oJHt2
OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiBFTkQKQEAgLTE5NzEsNyArMTk3MSw3
IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAotICAgIFY4RE9NV3Jh
cHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRo
T2JqZWN0KGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIHJldHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTIwNDgsNyArMjA0OCw3IEBAIEVORAog
ICAgIFJlZlB0cjwke2ludGVyZmFjZU5hbWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNy
ZWF0ZSh0eXBlLCBldmVudEluaXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIo
ZXZlbnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmplY3QoZXZlbnQucmVsZWFzZSgp
LCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB3cmFwcGVy
OwogfQogCkBAIC0yMTg2LDcgKzIxODYsNyBAQCBFTkQKIAogICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxl
YXNlKCksICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhP
YmplY3QoaW1wbC5yZWxlYXNlKCksICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB3cmFwcGVyOwogRU5E
CiAKQEAgLTM1MDIsMTIgKzM1MDIsMTIgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFw
cGVyOjppbnN0YW50aWF0ZURPTVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5n
ZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVy
OjpjcmVhdGUoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVO
TElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAg
ICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6
Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlV3JhcHBlcldpdGhPYmplY3QoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwog
ICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFy
a0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApp
bmRleCBmZjNmMTU5MGM4YzA4NTYzNjJjZDNlNWQ3NjJkMDliN2E5YzNiZmY0Li5kMTYyODJjMDY5
MDdjMjBkOGVhOWMxNjBjYjI5MzgyYzg3NDc0NGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAg
LTE1MSwxMiArMTUxLDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhGbG9hdDY0QXJyYXk6
OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGltCiAgICAgQVNTRVJUKERP
TURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7
CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxBcnJheUJ1ZmZlclZp
ZXcqPihpbXBsLmdldCgpKSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KGltcGwuZ2V0KCkpKTsKIAot
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFu
dGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZShjcmVh
dGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBl
ci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFw
cGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVXcmFwcGVy
V2l0aE9iamVjdChpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNE
ZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQo
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAK
aW5kZXggOTlhZDQxZjhkODEzOTRjZTU3ODMzNjM0ZDRmY2YxY2NmNTRmY2MxMC4uMDNmMzU4YWJi
NGMzM2RhYThhZmM3YTQ0MmJkNDhlZDRhNGI1MWMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBwb3N0TWVzc2FnZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0QWN0aXZlRE9NT2JqZWN0LnBvc3RNZXNzYWdlLl9nZXQi
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZh
dGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBv
c3RNZXNzYWdlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFRl
c3RBY3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBsYXRlKCkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhUZXN0
QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90
b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKCkpOwogICAgIGlm
IChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkg
J29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8v
IGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjCiBzdGF0aWMgdm9pZCBUZXN0QWN0aXZlRE9NT2JqZWN0RG9tYWluU2Fm
ZUZ1bmN0aW9uU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0QWN0aXZlRE9NT2JqZWN0Ll9zZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOFRlc3RB
Y3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYg
KGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBUZXN0QWN0aXZlRE9NT2Jq
ZWN0KiBpbXAgPSBWOFRlc3RBY3RpdmVET01PYmplY3Q6OnRvTmF0aXZlKGhvbGRlcik7CkBAIC0x
ODAsMTIgKzE4MCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEFjdGl2ZURPTU9i
amVjdDo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RBY3RpdgogICAgIEFTU0VSVChpbXBs
LmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQo
aW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQs
ICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBWOERPTVdyYXBwZXI6OmNyZWF0ZShjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgp
KTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBs
LmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
VjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29s
YXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVXcmFwcGVyV2l0aE9iamVjdChpbXBsLCAmaW5mbywgd3JhcHBl
ciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3Jh
cHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IGQyNjcxMDk3NTI2OGY1YzZiMGU1
NjFiNWE5MzQyZGNhNmYwZWJlMmIuLjQyYzgzYTA2ZGQ0MGIxNDVhNzQ4NjVhYzkyZWUyYWI4OTE2
OTYxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTE0LDEy
ICsxMTQsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RDdXN0b21OYW1lZEdldHRl
cjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RDdXMKICAgICBBU1NFUlQoaW1wbC5nZXQo
KSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwu
Z2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5m
bywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhE
T01XcmFwcGVyOjpjcmVhdGUoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQo
KSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9N
V3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmplY3QoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlz
b2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJI
YW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggN2Q2ODczMDdlYjg0YzAxMzkxZmQ3ZTZkNGQx
MTI0MDZiNjYyMTYwNC4uNDkzMzg4NzNmODliM2U2MmFlNjFiYzNkNDAxNmE5NDE4MTcyYjMzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtODMsNyArODMsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndQogICAgIFJlZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4g
ZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAg
IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVX
cmFwcGVyV2l0aE9iamVjdChldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTE0OCwxMiArMTQ4LDEy
IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
V3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVuCiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAg
IEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5J
c0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01X
cmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwu
Z2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBl
cjo6Y3JlYXRlKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChV
TkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAg
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsK
ICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1h
cmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdl
dC5jcHAKaW5kZXggNGNlYjI1ZTcxZWFkMjFkNGY0MDJhNmNkOTU2OGE2NTM0NzM3MTU0NC4uODhh
NDRiZjAyOGJkYzNjMzdmYTllM2NjZDRiMTg3MTljNWE4ZjgwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwCkBAIC0xNzcsMTIgKzE3NywxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
VGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdEV2ZW50VGFyZwog
ICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50
KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChj
cmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZShjcmVhdGlvbkNvbnRleHQsICZp
bmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGll
cyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZv
LCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVXcmFwcGVyV2l0aE9iamVjdChpbXBs
LCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGlt
ZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4g
d3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggYmJiOWZlY2VjODkwMGU2ZWYyZWQz
NTFiZDBhODA0MGM2OTNlODIxMi4uYzM2OGVkNGQ1N2M2MTcyYjdjOGYwZWY5ZWUyNDJlYjJmOTA3
YTNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTEwNSwxMiArMTA1LDEyIEBAIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXhjZXB0aW9uOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQ
dHI8VGVzdEV4Y2VwdGlvbj4KICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7CiAgICAgQVNTRVJUKERP
TURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7
CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omlu
c3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGUo
Y3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdy
YXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxs
UGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9N
V3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3Jh
cHBlcldpdGhPYmplY3QoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICgh
aGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5k
ZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDdi
ZTNkNDE5MzRiNjUzOTgyOWJkMTQ3MThmMWI5M2FkNDNjZDViMTIuLjU2Yzg3ZDNmMTllMjFmZjQx
M2ZmZjYzMDZmOWU5YTk5NzZhYWIxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNjIs
NyArMjYyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIGlmIChlYykKICAgICAgICAg
Z290byBmYWlsOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmplY3QoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiAgIGZhaWw6
CiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAt
MzQzLDEyICszNDMsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RJbnRlcmZhY2U6
OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPgogICAgIEFTU0VSVChpbXBs
LmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQo
aW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQs
ICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBWOERPTVdyYXBwZXI6OmNyZWF0ZShjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgp
KTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBs
LmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
VjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29s
YXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVXcmFwcGVyV2l0aE9iamVjdChpbXBsLCAmaW5mbywgd3JhcHBl
ciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3Jh
cHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAwMjkxZGU3NmIz
MjM3ZWYwNTM1OWU0NjEzYmIwOGFkZDZhMzVkYzc1Li43ODc5NmE5YjMwNWM2YjlhMjhlZjhkZGMx
NzVhNGIxM2IwMDJkNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCkBAIC0xMTQsMTIgKzExNCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZQog
ICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50
KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChj
cmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZShjcmVhdGlvbkNvbnRleHQsICZp
bmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGll
cyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZv
LCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVXcmFwcGVyV2l0aE9iamVjdChpbXBs
LCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGlt
ZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4g
d3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA5NTRjY2E3
Y2M0NzVmNDhhMzkyMWE3NzY5NjBkYTU0OWMxYmM5ZjViLi4wYzk3OTc0NDRkN2QxMWY1NWE0OGYz
ZDFiODgzMzM2MzQxNzAwZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6CiAgICAgaWYgKGVjKQog
ICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICZWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZVdyYXBwZXJXaXRoT2JqZWN0KGltcGwucmVsZWFzZSgpLCAmVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0
dXJuIHdyYXBwZXI7CiAgIGZhaWw6CiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJn
cy5HZXRJc29sYXRlKCkpOwpAQCAtMTUyLDEyICsxNTIsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVz
dE5hbWUKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6
Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhP
YmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGUoY3JlYXRpb25Db250
ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0
eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFBy
b3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBs
LCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmpl
Y3QoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50
TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZjljNTdhYTNlM2JkMjdjMTQ1ZmRiMzE5
MTcyMDc0OTkxNjcwYWQyYy4uNDdiOWNjZDY2NmJhM2UwOGMwNjQ2OWY2ZTdhNDZkNTc2NzA1NTk4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogICAgIFJlZlB0cjxUZXN0Tm9kZT4gaW1wbCA9IFRlc3ROb2RlOjpjcmVhdGUoKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBl
cldpdGhPYmplY3QoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTExMywxMiArMTEzLDEyIEBAIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Tm9kZTo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRy
PFRlc3ROb2RlPiBpbXBsLCB2ODo6CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0Tm9kZShp
bXBsLmdldCgpLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8Tm9kZSo+KGltcGwuZ2V0KCkpKSA9PSBzdGF0aWNfY2FzdDx2b2lk
Kj4oaW1wbC5nZXQoKSkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
VjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8s
IGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9N
V3JhcHBlcjo6Y3JlYXRlKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAg
IGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVy
OwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkp
OwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdy
YXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwor
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29s
YXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFu
ZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRl
eCAxYWQzNWQwMzM3NWMwY2EzYjcyZjRhM2IwYzYxODIxZGQwYTUxYmE5Li43Y2RmZWUwYzI5N2Fl
MmNiZDRlODc3ZmE4MzFhZjZlMWNiZjkxMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjIyMiw3ICsyMjIy
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxUZXN0T2JqPiBpbXBsID0g
VGVzdE9iajo6Y3JlYXRlKHRlc3RDYWxsYmFjayk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9N
V3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KGltcGwucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB3
cmFwcGVyOwogfQogCkBAIC0yNDAwLDEyICsyNDAwLDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gVjhUZXN0T2JqOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCwgdjg6
OkhhCiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1
cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2Jq
ZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlKGNyZWF0aW9uQ29udGV4
dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHko
KSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9w
ZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwg
JmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0
KGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExp
ZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJl
dHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCmluZGV4IDBjNzhmNzcyZjYyZmVkMDAyYWI1ZmU1MDVmMGY5OGM2NjY1MjRmMTAuLmYxNGE1
MGI2ZDVhMmUzNDU3Y2MxNDM0ZmNiOGI5MDhkYTA4N2QyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMUNh
bGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGlt
cGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyKTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAg
VjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3Jh
cHBlcldpdGhPYmplY3QoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTY3LDcgKzY3LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVj
dG9yMkNhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVy
Vmlldyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwg
JmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwg
YXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC04MCw3ICs4
MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Ojpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2CiAgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShi
bG9iKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlV3JhcHBlcldpdGhPYmplY3QoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTkzLDcgKzkz
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmNvbnN0cnVjdG9yNENhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKHN0
cmluZyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwg
JmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwg
YXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0xNzMsMTIg
KzE3MywxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZQogICAgIEFTU0VSVChpbXBsLmdldCgp
KTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5n
ZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZv
LCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERP
TVdyYXBwZXI6OmNyZWF0ZShjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAg
ICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgp
KTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01X
cmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsK
KyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFw
cGVyOjphc3NvY2lhdGVXcmFwcGVyV2l0aE9iamVjdChpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNv
bGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhh
bmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXgg
YjgxNDQxZmIxZDk5MGYwNzcxYmQwZTEwOGZlNDk5NTVhNGM2M2IxMC4uYmE4ODJlMzlkYWQzYmRl
YzIzYjEyYTE2OTBlOGY2MDBiNDAwODlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKAogICAgIFJlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlPiBpbXBsID0gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
Y3JlYXRlKGhlbGxvLCBkYXRhLCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0KTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBl
cldpdGhPYmplY3QoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTI5NiwxMiArMjk2LDEyIEBAIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
OjpjcmVhdGVXcmFwcGVyKFBhc3NSCiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAgIEFTU0VS
VChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5Jc0VtcHR5
KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVy
OjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3Jl
YXRlKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VM
WSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0
ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZVdyYXBwZXJXaXRoT2JqZWN0KGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBp
ZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRl
cGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9EaWN0aW9uYXJ5LmNwcAppbmRleCAwYThjYzQyNDNkM2ViNWZjOWQ2MGJlOGFmMWQ0MjAwNjEy
YzU3NzJkLi5lNWNkNGQyMTE1NTcxMGNkYWI3NDFhY2FlN2U5NTEyNzk0OTRiZTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBA
IGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8RE9NV2luZG93
PiYgdmFsdWUpIGNvbnN0CiAgICAgRE9NV2luZG93KiBzb3VyY2UgPSAwOwogICAgIGlmICh2OFZh
bHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSk7Ci0gICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVy
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCB3cmFwcGVyKTsKKyAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICAgICAgaWYgKCF3aW5kb3cuSXNF
bXB0eSgpKQogICAgICAgICAgICAgc291cmNlID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRv
dyk7CiAgICAgfQpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0
IFN0cmluZyYga2V5LCBSZWZQdHI8U3RvcmFnZT4mIHZhbHVlKSBjb25zdAogICAgIFN0b3JhZ2Uq
IHNvdXJjZSA9IDA7CiAgICAgaWYgKHY4VmFsdWUtPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2OFZhbHVlKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzdG9yYWdlID0gVjhE
T01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4U3RvcmFnZTo6R2V0VGVtcGxhdGUoKSwgd3Jh
cHBlcik7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc3RvcmFnZSA9IHdyYXBwZXIt
PkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhTdG9yYWdlOjpHZXRUZW1wbGF0ZSgpKTsK
ICAgICAgICAgaWYgKCFzdG9yYWdlLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4
U3RvcmFnZTo6dG9OYXRpdmUoc3RvcmFnZSk7CiAgICAgfQpAQCAtMzI3LDggKzMyNyw3IEBAIGJv
b2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8VWludDhBcnJheT4m
IHZhbHVlKSBjb25zdAogICAgIFVpbnQ4QXJyYXkqIHNvdXJjZSA9IDA7CiAgICAgaWYgKHY4VmFs
dWUtPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKTsKLQotICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGFycmF5ID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVy
KFY4VWludDhBcnJheTo6R2V0VGVtcGxhdGUoKSwgd3JhcHBlcik7CisgICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gYXJyYXkgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4VWludDhBcnJheTo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICghYXJyYXkuSXNF
bXB0eSgpKQogICAgICAgICAgICAgc291cmNlID0gVjhVaW50OEFycmF5Ojp0b05hdGl2ZShhcnJh
eSk7CiAgICAgfQpAQCAtMzQ2LDggKzM0NSw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0
IFN0cmluZyYga2V5LCBSZWZQdHI8TWVkaWFLZXlFcnJvcj4mIHZhbHVlKSBjb25zdAogICAgIE1l
ZGlhS2V5RXJyb3IqIHNvdXJjZSA9IDA7CiAgICAgaWYgKHY4VmFsdWUtPklzT2JqZWN0KCkpIHsK
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKTsKLQotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGVycm9yID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4TWVkaWFLZXlFcnJvcjo6
R2V0VGVtcGxhdGUoKSwgd3JhcHBlcik7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
ZXJyb3IgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TWVkaWFLZXlF
cnJvcjo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICghZXJyb3IuSXNFbXB0eSgpKQogICAg
ICAgICAgICAgc291cmNlID0gVjhNZWRpYUtleUVycm9yOjp0b05hdGl2ZShlcnJvcik7CiAgICAg
fQpAQCAtMzY5LDcgKzM2Nyw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYg
a2V5LCBSZWZQdHI8VHJhY2tCYXNlPiYgdmFsdWUpIGNvbnN0CiAKICAgICAgICAgLy8gRklYTUU6
IHRoaXMgd2lsbCBuZWVkIHRvIGJlIGNoYW5nZWQgc28gaXQgY2FuIGFsc28gcmV0dXJuIGFuIEF1
ZGlvVHJhY2sgb3IgYSBWaWRlb1RyYWNrIG9uY2UKICAgICAgICAgLy8gd2UgYWRkIHRoZW0uCi0g
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdHJhY2sgPSBWOERPTVdyYXBwZXI6Omxvb2t1
cERPTVdyYXBwZXIoVjhUZXh0VHJhY2s6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRyYWNrID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbihWOFRleHRUcmFjazo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICgh
dHJhY2suSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlID0gVjhUZXh0VHJhY2s6OnRvTmF0
aXZlKHRyYWNrKTsKICAgICB9CkBAIC0zODgsNyArMzg2LDcgQEAgYm9vbCBEaWN0aW9uYXJ5Ojpn
ZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYgdmFs
dWUpIGMKICAgICBTcGVlY2hSZWNvZ25pdGlvbkVycm9yKiBzb3VyY2UgPSAwOwogICAgIGlmICh2
OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSk7Ci0gICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gc3BlZWNoUmVjb2duaXRpb25FcnJvciA9IFY4RE9NV3JhcHBl
cjo6bG9va3VwRE9NV3JhcHBlcihWOFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OkdldFRlbXBsYXRl
KCksIHdyYXBwZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNwZWVjaFJlY29n
bml0aW9uRXJyb3IgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4U3Bl
ZWNoUmVjb2duaXRpb25FcnJvcjo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICghc3BlZWNo
UmVjb2duaXRpb25FcnJvci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2UgPSBWOFNwZWVj
aFJlY29nbml0aW9uRXJyb3I6OnRvTmF0aXZlKHNwZWVjaFJlY29nbml0aW9uRXJyb3IpOwogICAg
IH0KQEAgLTQwNSw3ICs0MDMsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcm
IGtleSwgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgdmFsdWUpCiAgICAgU3BlZWNo
UmVjb2duaXRpb25SZXN1bHQqIHNvdXJjZSA9IDA7CiAgICAgaWYgKHY4VmFsdWUtPklzT2JqZWN0
KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBzcGVlY2hSZWNvZ25pdGlvblJlc3VsdCA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcihWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0OjpHZXRUZW1wbGF0ZSgpLCB3cmFwcGVyKTsK
KyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzcGVlY2hSZWNvZ25pdGlvblJlc3VsdCA9
IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdDo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICghc3BlZWNoUmVjb2duaXRpb25S
ZXN1bHQuSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlID0gVjhTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdDo6dG9OYXRpdmUoc3BlZWNoUmVjb2duaXRpb25SZXN1bHQpOwogICAgIH0KQEAgLTQy
Miw3ICs0MjAsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4mIHZhbAogICAgIFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0TGlzdCogc291cmNlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkg
ewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcihWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDo6R2V0VGVtcGxhdGUoKSwgd3JhcHBl
cik7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc3BlZWNoUmVjb2duaXRpb25SZXN1
bHRMaXN0ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0TGlzdDo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICghc3BlZWNo
UmVjb2duaXRpb25SZXN1bHRMaXN0LklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4
U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0Ojp0b05hdGl2ZShzcGVlY2hSZWNvZ25pdGlvblJl
c3VsdExpc3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDY1ZTQ4MzdkNDUwZDc3N2M3NTQ2ZjQ3ZTVj
MzA1N2ZiOTc5NTQ3MTIuLjQ0NTA4MDUzOTJiZjY3ODJhM2NiYjcyNWE5Y2JjYWRhMTIzZjFmMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgRnJhbWUqIHJldHJpZXZlRnJhbWVX
aXRoR2xvYmFsT2JqZWN0Q2hlY2sodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dAogICAg
IGlmIChnbG9iYWwuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGdsb2JhbCA9
IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUo
KSwgZ2xvYmFsKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChnbG9iYWwuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5jcHAKaW5kZXggZjk4MDQ0M2RlZjA2MmQ3ODBkNWMyM2EwYzNlYzI5MmEyNzNmMDQxZC4u
NWRiZTIxNWNkMWE4MTExZmViZTdlOTU5MmU3MWU2OTZiNDZjOTliMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgRE9NV2luZG93
KiB0b0RPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgQVNT
RVJUKCFnbG9iYWwuSXNFbXB0eSgpKTsKLSAgICBnbG9iYWwgPSBWOERPTVdyYXBwZXI6Omxvb2t1
cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7CisgICAgZ2xv
YmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpH
ZXRUZW1wbGF0ZSgpKTsKICAgICBBU1NFUlQoIWdsb2JhbC5Jc0VtcHR5KCkpOwogICAgIHJldHVy
biBWOERPTVdpbmRvdzo6dG9OYXRpdmUoZ2xvYmFsKTsKIH0KQEAgLTI4NywxMSArMjg3LDExIEBA
IERPTVdpbmRvdyogdG9ET01XaW5kb3codjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkK
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHRvU2NyaXB0RXhlY3V0aW9uQ29udGV4dCh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Z2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
aW5kb3dXcmFwcGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93
OjpHZXRUZW1wbGF0ZSgpLCBnbG9iYWwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2lu
ZG93V3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3b3JrZXJXcmFwcGVyID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKCF3
b3JrZXJXcmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFY4V29ya2VyQ29udGV4dDo6
dG9OYXRpdmUod29ya2VyV3JhcHBlciktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApp
bmRleCA0MjY4NzQwMjc5MDgwNzk5MGZhNDNkZDUzYzNkZTkwNjAwZjY1N2JjLi44MzRiNjMzOGJj
NGViY2I0YmJlODJiODI3YTMxZTRiM2IzZGM1ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
VjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JOYXZpZ2F0aW9uKCkKICAgICAvLyB3aWxsIGJlIHBy
b3RlY3RlZCBieSB0aGUgc2VjdXJpdHkgY2hlY2tzIG9uIHRoZSBET01XaW5kb3cgd3JhcHBlci4K
ICAgICBjbGVhckRvY3VtZW50UHJvcGVydHkoKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd2luZG93V3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoKSwgbV9nbG9iYWwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlw
ZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBBU1NFUlQoIXdpbmRvd1dy
YXBwZXIuSXNFbXB0eSgpKTsKICAgICB3aW5kb3dXcmFwcGVyLT5UdXJuT25BY2Nlc3NDaGVjaygp
OwogICAgIG1fY29udGV4dC0+RGV0YWNoR2xvYmFsKCk7CkBAIC0zMTYsNyArMzE2LDcgQEAgYm9v
bCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KCkKIAogICAgIFY4RE9NV2luZG93
OjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod2luZG93V3JhcHBlciwgd2luZG93KTsKIAot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KHdpbmRvd1dyYXBwZXItPkdldFByb3RvdHlwZSgpKSwgJlY4RE9NV2luZG93OjppbmZvLCB3
aW5kb3cpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KHdpbmRvd1dyYXBwZXItPkdldFByb3RvdHlwZSgpKSwgJlY4RE9NV2luZG93
OjppbmZvLCB3aW5kb3cpOwogCiAgICAgLy8gSW5zdGFsbCB0aGUgd2luZG93V3JhcHBlciBhcyB0
aGUgcHJvdG90eXBlIG9mIHRoZSBpbm5lckdsb2JhbE9iamVjdC4KICAgICAvLyBUaGUgZnVsbCBz
dHJ1Y3R1cmUgb2YgdGhlIGdsb2JhbCBvYmplY3QgaXMgYXMgZm9sbG93czoKQEAgLTMzMiw5ICsz
MzIsOSBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3coKQogICAgIC8v
ICAgICAgIEphdmFTY3JpcHQgb2JqZWN0LgogICAgIC8vCiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBpbm5lckdsb2JhbE9iamVjdCA9IHRvSW5uZXJHbG9iYWxPYmplY3QobV9jb250ZXh0Lmdl
dCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoaW5uZXJHbG9iYWxPYmplY3Qs
ICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93KTsKKyAgICBWOERPTVdyYXBwZXI6OnNldE5hdGl2
ZUluZm8oaW5uZXJHbG9iYWxPYmplY3QsICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93KTsKICAg
ICBpbm5lckdsb2JhbE9iamVjdC0+U2V0UHJvdG90eXBlKHdpbmRvd1dyYXBwZXIpOwotICAgIFY4
RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihQYXNzUmVmUHRyPERPTVdpbmRvdz4od2luZG93
KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6
OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KFBhc3NSZWZQdHI8RE9NV2luZG93Pih3aW5kb3cp
LCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dyYXBwZXIpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCBi
MWM5NDdlZWU1Mzg4YzZhZjg2NjFlNGRmMjBjNzViY2IwZTliOWFlLi5hMTFhNDcxMzU2YWRhMzJm
ZTg3Zjc5Y2QwOGQ4NmJkNTQxZTMzZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFY4RE9NV3JhcHBlcjo6
c2V0TmFtZWRIaWRkZW5SZWZlcmVuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwYXJlbnQsIGNv
bnN0CiAgICAgcGFyZW50LT5TZXRIaWRkZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6aGlk
ZGVuUmVmZXJlbmNlTmFtZShuYW1lLCBzdHJsZW4obmFtZSkpLCBjaGlsZCk7CiB9CiAKLXY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlRE9NV3JhcHBlcih2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgV3JhcHBlclR5cGVJbmZvKiB0eXBl
LCB2b2lkKiBpbXBsKQordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6Y3JlYXRl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCBXcmFwcGVyVHlwZUluZm8q
IHR5cGUsIHZvaWQqIGltcGwpCiB7CiAgICAgVjhXcmFwcGVySW5zdGFudGlhdGlvblNjb3BlIHNj
b3BlKGNyZWF0aW9uQ29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmgKaW5kZXggMTBiYzYxZjc0Mzk1NzVlYjJiZjBmZjg2YmZlMzE4MzMxM2ZkOGFkYS4u
MTY4NGZhNjJhZTdiOWE0Yzc0MThkZmVkZTcwMjc3ZjRiZDBiZmE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKQEAgLTU4LDE0ICs1OCwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBib29sIG1heWJlRE9NV3JhcHBlcih2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4pOwogI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBpbnN0YW50aWF0ZURPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IGNyZWF0ZURPTVdyYXBwZXIoUGFzc1JlZlB0cjxUPiwgV3JhcHBlclR5cGVJbmZvKiwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBzZXRET01XcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFdyYXBwZXJU
eXBlSW5mbyosIHZvaWQqKTsKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFyRE9NV3Jh
cHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlwZUluZm8qKTsKLQotICAgICAg
ICBzdGF0aWMgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gbG9va3VwRE9NV3JhcHBlcih2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7
CisgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gYXNzb2Np
YXRlV3JhcHBlcldpdGhPYmplY3QoUGFzc1JlZlB0cjxUPiwgV3JhcHBlclR5cGVJbmZvKiwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBzZXROYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFdyYXBwZXJU
eXBlSW5mbyosIHZvaWQqKTsKKyAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFyTmF0aXZl
SW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlwZUluZm8qKTsKIAogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgcHJvYmFibHkgbW92ZSB0byBWOEV2ZW50
TGlzdGVuZXJMaXN0LmgKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
Z2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiwgYm9vbCBpc0F0dHJpYnV0ZSwg
TGlzdGVuZXJMb29rdXBUeXBlKTsKQEAgLTgwLDcgKzc4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyQ2xhc3MoTm9kZSosIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpIHsgd3JhcHBlci5TZXRXcmFwcGVyQ2xhc3NJZCh2OERP
TU5vZGVDbGFzc0lkKTsgfQogICAgIH07CiAKLSAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBXcmFwcGVyVHlw
ZUluZm8qIHR5cGUsIHZvaWQqIG9iamVjdCkKKyAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6
OnNldE5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBXcmFwcGVyVHlw
ZUluZm8qIHR5cGUsIHZvaWQqIG9iamVjdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCh3cmFwcGVy
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSAyKTsKICAgICAgICAgQVNTRVJUKG9iamVjdCk7CkBA
IC04OSw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgd3JhcHBlci0+U2V0
QWxpZ25lZFBvaW50ZXJJbkludGVybmFsRmllbGQodjhET01XcmFwcGVyVHlwZUluZGV4LCB0eXBl
KTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6OmNsZWFyRE9NV3JhcHBl
cih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSkK
KyAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6OmNsZWFyTmF0aXZlSW5mbyh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVCh3cmFwcGVyLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSAyKTsKICAgICAgICAg
QVNTRVJUKHR5cGUpOwpAQCAtOTcsMTcgKzk1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgd3JhcHBlci0+U2V0QWxpZ25lZFBvaW50ZXJJbkludGVybmFsRmllbGQodjhET01XcmFw
cGVyT2JqZWN0SW5kZXgsIDApOwogICAgIH0KIAotICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIpCi0gICAgewotICAgICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKLSAgICAgICAgcmV0dXJuIHdyYXBwZXItPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oZnVuY3Rpb25UZW1wbGF0ZSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gVjhET01X
cmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBXcmFwcGVyVHlw
ZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCisgICAgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmplY3QoUGFzc1JlZlB0cjxUPiBvYmplY3QsIFdy
YXBwZXJUeXBlSW5mbyogdHlwZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7Ci0gICAgICAgIHNldERPTVdyYXBwZXIod3JhcHBlciwg
dHlwZSwgb2JqZWN0LmdldCgpKTsKKyAgICAgICAgc2V0TmF0aXZlSW5mbyh3cmFwcGVyLCB0eXBl
LCBvYmplY3QuZ2V0KCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKICAg
ICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7CiAgICAgICAgIHNl
dFdyYXBwZXJDbGFzcyhvYmplY3QuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxpemVyLmNwcAppbmRleCBmODNkNTMzYThiNDRiOTk4
ZDZhMjM2OTYwYTc3ZDQ4MGE2NTdhNjg1Li5mYTU5YTQyNjFjY2Y4Y2I4NWNlYzZmYTk0ZjU5MWEx
OTZlYThhYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRp
YWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxpemVy
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgRnJhbWUqIGZpbmRGcmFtZSh2ODo6TG9jYWw8
djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSkKICAgICBXcmFwcGVy
VHlwZUluZm8qIHR5cGUgPSBXcmFwcGVyVHlwZUluZm86OnVud3JhcChkYXRhKTsKIAogICAgIGlm
IChWOERPTVdpbmRvdzo6aW5mby5lcXVhbHModHlwZSkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVy
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBob3N0KTsKKyAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICh3aW5kb3dXcmFw
cGVyLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gVjhE
T01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpLT5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCBiNWEyMWMwZThjOTJkODc2Njg4NmZj
MTJkMzE1NTY2MmJjYTNjMTc5Li45YTBmMjZmZDI1YzBlYzAwNjIwMTVjOGYwN2IyYjFhNzQzN2Nk
YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcApAQCAtNDM4
LDcgKzQzOCw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVWOE9iamVjdEZvck5QT2Jq
ZWN0KE5QT2JqZWN0KiBvYmplY3QsIE5QT2JqZWN0KiByb290CiAgICAgaWYgKHZhbHVlLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgVjhET01XcmFwcGVyOjpzZXRET01X
cmFwcGVyKHZhbHVlLCBucE9iamVjdFR5cGVJbmZvKCksIG9iamVjdCk7CisgICAgVjhET01XcmFw
cGVyOjpzZXROYXRpdmVJbmZvKHZhbHVlLCBucE9iamVjdFR5cGVJbmZvKCksIG9iamVjdCk7CiAK
ICAgICAvLyBLSlMgcmV0YWlucyB0aGUgb2JqZWN0IGFzIHBhcnQgb2YgaXRzIHdyYXBwZXIgKHNl
ZSBCaW5kaW5nczo6Q0luc3RhbmNlKS4KICAgICBfTlBOX1JldGFpbk9iamVjdChvYmplY3QpOwpA
QCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgZm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdChOUE9iamVj
dCogb2JqZWN0KQogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBzdGF0
aWNOUE9iamVjdE1hcCgpLmdldChvYmplY3QpOwogICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
IHsKICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgICAgICBWOERPTVdyYXBwZXI6
OmNsZWFyRE9NV3JhcHBlcih3cmFwcGVyLCBucE9iamVjdFR5cGVJbmZvKCkpOworICAgICAgICBW
OERPTVdyYXBwZXI6OmNsZWFyTmF0aXZlSW5mbyh3cmFwcGVyLCBucE9iamVjdFR5cGVJbmZvKCkp
OwogICAgICAgICBzdGF0aWNOUE9iamVjdE1hcCgpLnJlbW92ZShvYmplY3QsIHdyYXBwZXIpOwog
ICAgICAgICB3cmFwcGVyLkRpc3Bvc2UoKTsKICAgICAgICAgd3JhcHBlci5DbGVhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCBlZTUzYjIwNTYwMmZjM2Q2ZGIwNGVlNWVhODQ1MWFiYTVkYmU4NTcyLi4yZmQ0
YThjYmNmNGQ4Yjk5NmI4MGQyZDgwNDUwYTJkNDUxZTI3YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTI3
LDcgKzEyNyw3IEBAIGJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUNvbnRl
eHRJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBWOERPTVdy
YXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PihtX3dvcmtl
ckNvbnRleHQpLCBjb250ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0KTsKKyAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4o
bV93b3JrZXJDb250ZXh0KSwgY29udGV4dFR5cGUsIGpzV29ya2VyQ29udGV4dCk7CiAKICAgICAv
LyBJbnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJvdG90eXBlIG9mIHRoZSBzaGFk
b3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkdsb2JhbCgpLT5HZXRQcm90b3R5
cGUoKSk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKQogICAgICAgICByZXR1cm4g
MDsKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6Okdl
dEN1cnJlbnQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQt
Pkdsb2JhbCgpOwotICAgIGdsb2JhbCA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihW
OFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7CisgICAgZ2xvYmFsID0gZ2xv
YmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4V29ya2VyQ29udGV4dDo6R2V0VGVt
cGxhdGUoKSk7CiAgICAgLy8gUmV0dXJuIDAgaWYgdGhlIGN1cnJlbnQgZXhlY3V0aW5nIGNvbnRl
eHQgaXMgbm90IHRoZSB3b3JrZXIgY29udGV4dC4KICAgICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKaW5kZXggZmJkNmY3NjkzNzJiZDhi
ZWI3MGNmYzNmNzQ3NmU3MGJiYmEyYzAyNC4uNTkyZjg0N2MxYTk0ZmQ4ZTYzMzM5YzAzYmFmNDcw
NDUxNjdmMzJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbgogICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFsbG9j
YXRlZE1lbW9yeShidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgLy8gVHJhbnNmb3JtIHRoZSBo
b2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgYXJyYXkuCiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIoYnVmZmVyLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOworICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmplY3QoYnVmZmVyLnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0
b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmll
d0N1c3RvbS5oCmluZGV4IGY5YmViMzllNGUzZTlmY2Y5OTEzOGE3ZTczNzBjMGE5MzZmYjhkMDcu
LjkxM2E1ZmM1ZjNmOTBmYzZmNmJlZGNmMGYxZTAzNjhlYWFmNmVlOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmll
d0N1c3RvbS5oCkBAIC01NSw3ICs1NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwQXJy
YXlCdWZmZXJWaWV3KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAg
aWYgKGhhc0luZGV4ZXIpCiAgICAgICAgIGFyZ3MuSG9sZGVyKCktPlNldEluZGV4ZWRQcm9wZXJ0
aWVzVG9FeHRlcm5hbEFycmF5RGF0YShhcnJheS5nZXQoKS0+YmFzZUFkZHJlc3MoKSwgYXJyYXlU
eXBlLCBhcnJheS5nZXQoKS0+bGVuZ3RoKCkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihhcnJheS5yZWxl
YXNlKCksIHR5cGUsIHdyYXBwZXIpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdy
YXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KGFy
cmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlcik7CiAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5k
ZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KQEAgLTIxNCw3ICsyMTQsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJheShjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzLCBXcmFwcGVyVHlwZQogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihhcnJheS5y
ZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0
KGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlcik7CiAgICAgd3JhcHBlckhhbmRsZS5NYXJr
SW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3Bw
CmluZGV4IDZmNGZlMjhhNjdjMmFjZGE4YWU0ZWZlMzY0N2VkNmE0OTE2ZTA0OWQuLmYzNGVkODEy
ODQxMzA2YjIwZGZjYTkxNTk0ODlkMjVkYjkwY2Y4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcApA
QCAtODQsNyArODQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6OmNv
bnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZQogICAgIAogICAgIC8vIFRy
YW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGF1ZGlvIGNv
bnRleHQuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoYXVkaW9Db250ZXh0LnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBl
cldpdGhPYmplY3QoYXVkaW9Db250ZXh0LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAg
IAogICAgIHJldHVybiB3cmFwcGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IGU5YTBhYWQ5
NjEzNmYxZTc2OTk4MjNmMzNhNGJlYzBjZjUzNDdhNDQuLmE2YjMwOGUyZDYxNTE5MDdhNzc5OTc0
OWJlNjQzODA4NDEyN2E2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmNvbnN0cnVjdG9yQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1E
YXRhID0gRE9NRm9ybURhdGE6OmNyZWF0ZShmb3JtKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVE
T01XcmFwcGVyKGRvbUZvcm1EYXRhLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmplY3QoZG9tRm9ybURhdGEucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IDg0YzY2ODUzMmJmODhmMjVjODg1MjNjNTc2OTcyMDA4ZjJlNjdjZWMuLjBiYTkz
NGE1OWJjMDZjODZiYTY2OGNlNzU1Y2Q1NzI3YjM5OTAzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1w
bChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihW
OERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0xNjcsNyArMTY3LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIAogdm9pZCBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nl
c3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhE
T01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjIsNyArMzYyLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJpbmdDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRP
TVdpbmRvdy50b1N0cmluZygpIik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21XcmFw
cGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1w
bGF0ZSgpLCBhcmdzLlRoaXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21XcmFw
cGVyID0gYXJncy5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5k
b3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChkb21XcmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGFyZ3MuVGhpcygpLT5PYmplY3RQcm90b1RvU3RyaW5nKCk7CiAgICAgcmV0dXJu
IGRvbVdyYXBwZXItPk9iamVjdFByb3RvVG9TdHJpbmcoKTsKQEAgLTUzNSw3ICs1MzUsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNldEludGVydmFsQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiBib29sIFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5
Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGtl
eSwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4pCiB7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBw
ZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGhvc3QpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERP
TVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKHdpbmRvdy5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsgIC8vIHRoZSBmcmFtZSBpcyBnb25lLgogCkBAIC01NjgsNyArNTY4
LDcgQEAgYm9vbCBWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlYKIAogYm9vbCBWOERPTVdpbmRvdzo6aW5kZXhl
ZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVpbnQzMl90IGluZGV4
LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPikKIHsKLSAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBl
cihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgaG9zdCk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9N
V2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC02MTAsNyArNjEwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoRE9NV2luZG93KiB3aW5kb3csIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db24KICAgICAvLyBuZWNlc3NhcmlseSB0aGUgZmlyc3QgZ2xvYmFsIG9iamVjdCBhc3NvY2lh
dGVkIHdpdGggdGhhdCBET01XaW5kb3cuCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3Vy
cmVudENvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOwogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3VycmVudEdsb2JhbCA9IGN1cnJlbnRDb250ZXh0LT5HbG9iYWwoKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omxv
b2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGN1cnJlbnRHbG9iYWwp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGN1cnJlbnRHbG9i
YWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRl
KCkpOwogICAgIGlmICghd2luZG93V3JhcHBlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKFY4
RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKSA9PSB3aW5kb3cpCiAgICAgICAgICAg
ICByZXR1cm4gY3VycmVudEdsb2JhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAppbmRleCBiMTA4MGEzNGNkOWFlOWJk
ZTNkMzM5M2M1MTU1ZDgzYzQzZGJhM2MwLi5hZWRmYWFhYjNkZTcwYjQxYTMzYmFkOWY1NWE0ZjJl
YjNjNWQ3OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmCiAgICAgICAgIC8vICduZXcgRGF0YVZpZXcoKScgYW5kIHRoZSBjYWxsIHVzZWQg
dG8gY29uc3RydWN0IHRoZSBjYWNoZWQgRGF0YVZpZXcgb2JqZWN0LgogICAgICAgICBSZWZQdHI8
RGF0YVZpZXc+IGRhdGFWaWV3ID0gRGF0YVZpZXc6OmNyZWF0ZSgwKTsKICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICAgICAgVjhET01X
cmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBw
ZXIpOworICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KGRh
dGFWaWV3LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKICAgICB9CiAgICAgaWYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8ICFWOEFycmF5QnVmZmVyOjpI
YXNJbnN0YW5jZShhcmdzWzBdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDhlZGU3MDczOGNi
ODc0NjJhYjk2MTg1NjEwN2JkOTIzOWJhODFhYjcuLmYxZTM2ZDY4YjNkZDQ4ZjZhOTIxZDQxMTRi
MTg1MzQyOTA3MTk5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OndyYXBJblNoYWRvd09iamVjdCh2
ODo6TG9jYWw8djg6Ok9iamVjdD4gdwogICAgIGlmIChzaGFkb3cuSXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgc2hhZG93LT5TZXRQcm90b3R5
cGUod3JhcHBlcik7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZW
OEhUTUxEb2N1bWVudDo6aW5mbywgaW1wbCk7CisgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJ
bmZvKHdyYXBwZXIsICZWOEhUTUxEb2N1bWVudDo6aW5mbywgaW1wbCk7CiAgICAgcmV0dXJuIHNo
YWRvdzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggY2Zi
OTc2ZmQ3NzY4M2NhZTlmZDAxMGNiNTMzYTk5MTJjOGNjNDAyMS4uYzM1ZmQzYTViZDQxZTQ2ZTAy
MjQ4OGM1N2IxNzcyYTYyNDY1MGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3IuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAKICAgICBS
ZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVG
b3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBvcHRpb25hbFdpZHRoLCBvcHRpb25hbEhlaWdodCk7
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAg
ICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1hZ2UucmVsZWFzZSgpLCAmVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIpOworICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlV3JhcHBlcldpdGhPYmplY3QoaW1hZ2UucmVsZWFzZSgpLCAmVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCAzYTBiMjliNTFmNzFhMzJkMTA4
NWFjZTI5YmYyN2FhYjg4YzkwNjhlLi4xZjE4MmU3Mzk2N2E1NGMzZjQyMmM0NTQyOWRiYWRlODA4
ODYxYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3Rh
dGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVJbmplY3RlZFNjcmlwdEhvc3RWOFdyYXBw
ZXIoSW5qZWN0ZWRTY3JpcHRIb3MKICAgICAgICAgLy8gQXZvaWQgc2V0dGluZyB0aGUgd3JhcHBl
ciBpZiBhbGxvY2F0aW9uIGZhaWxlZC4KICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PigpOwogICAgIH0KLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoaW5zdGFuY2Us
ICZWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5mbywgaG9zdCk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXROYXRpdmVJbmZvKGluc3RhbmNlLCAmVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmluZm8sIGhvc3Qp
OwogICAgIC8vIENyZWF0ZSBhIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSB2OCB3cmFwcGVyIG9mIElu
c3BlY3RvckJhY2tlbmQgdG8gZGVyZWYKICAgICAvLyBJbnNwZWN0b3JCYWNrZW5kIHdoZW4gdGhl
IHdyYXBwZXIgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuCiAgICAgaG9zdC0+cmVmKCk7CkBAIC0xMTcs
NyArMTE3LDcgQEAgYm9vbCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3BlY3Rl
ZFdpbmRvdyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiAgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwogICAgIGlmIChnbG9iYWwuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBs
YXRlKCksIGdsb2JhbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBnbG9i
YWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRl
KCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgRnJhbWUqIGZyYW1lID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGhvbGRlciktPmZyYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3Vz
dG9tLmNwcAppbmRleCBmNTJkNzdjMzM3M2Q4NzBlYjczM2FiOWEyZjNjYzFmZDkxZTA2MDQxLi42
NWY0MGE2NmY1OWZiOTdjNjk0OGU2N2IyNjQ0OTVjNjU1MWM1ZGE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgICAgIHJldHVybiBz
ZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERPTVdy
YXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsK
KyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVXcmFwcGVyV2l0aE9iamVjdChpbXBsLnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9
CiAKQEAgLTc4LDcgKzc4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBw
ZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KGltcGwucmVsZWFzZSgp
LCAmaW5mbywgd3JhcHBlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCA3ODMzZWE0YmM3YjIwYWQzZGE0NTVjY2MzYzkwZjlhMjdmOWY2ZjE2Li45N2FmODRkNWU0
Nzg2YmEwY2M3YjRkNjY0YzI1YWJiNzU1MDA5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIHsKICAgICBJTkNfU1RBVFMoIkRPTS5M
b2NhdGlvbi5yZWxvYWQuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpy
ZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRp
b246OkdldFJhd1RlbXBsYXRlKCkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlvbjo6R2V0VGVtcGxh
dGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
aW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0
VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8gY2Fu
IG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNob3Vs
ZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKQEAgLTE2
Niw3ICsxNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogewogICAgIElOQ19TVEFUUygi
RE9NLkxvY2F0aW9uLnJlcGxhY2UuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0
aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhW
OExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4TG9jYXRpb246Okdl
dFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRp
b246OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBp
dCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5
CkBAIC0xODUsNyArMTg1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFz
c2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICBJTkNfU1RB
VFMoIkRPTS5Mb2NhdGlvbi5hc3NpZ24uX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KICAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25h
dHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhM
b2NhdGlvbjo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
IHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5m
dW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNo
ZWNrIGFscmVhZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAppbmRleCA4YjExZDM4ZTA3ZmNkZjVk
NTRjZGUwYmJiMmM0ZDU3NGRhMjFlNmZiLi4xMjAxMzgxZWYwNWRlYzBhNTlkOTEwMWQxZGViNzEx
Y2JjNTM4NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlblJl
ZmVyZW5jZSh3cmFwcGVyLCAicG9ydDEiLCB0b1Y4KG9iai0+cG9ydDEoKSwgYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVu
UmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdzLkhvbGRl
cigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01X
cmFwcGVyKG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6
OmFzc29jaWF0ZVdyYXBwZXJXaXRoT2JqZWN0KG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXggNmU1
YmM1NjdjMmZiNzg2OGQ3YWE2OGI1ZWZiMmQwYmRlNDJkN2ViZS4uNDEzYzZlMmVhMDA3ZGY0NmNj
MzNhN2EyZDc5OGRlZGY5OTAzY2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2Fn
ZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBET01XaW5kb3cqIHNvdXJjZUFy
ZyA9IDA7CiAgICAgaWYgKGFyZ3NbNl0tPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdz
WzZdKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdyYXBw
ZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIp
OworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJ
bnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAg
ICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2VBcmcgPSBWOERP
TVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20u
Y3BwCmluZGV4IDViMDlhZWQ5M2Y3ZGE2MWQzNTI3YzU2MTFhYmY4MmVhZjM5Y2VlM2EuLmY0YzQ2
OWJlNzAzZjhjM2RhZDJmNjllNGZiN2Q2YmQwZDMzYWU2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE11dGF0
aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyCiAgICAg
UmVmUHRyPE11dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gVjhNdXRhdGlvbkNhbGxiYWNrOjpj
cmVhdGUoYXJnLCBjb250ZXh0LCB3cmFwcGVyKTsKICAgICBSZWZQdHI8TXV0YXRpb25PYnNlcnZl
cj4gb2JzZXJ2ZXIgPSBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFzZSgp
KTsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihvYnNlcnZlci5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZVdyYXBwZXJX
aXRoT2JqZWN0KG9ic2VydmVyLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgIHJldHVy
biB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4IGYyZmE3MjdjZjhjODNi
YzdmNjAwNTUwNzc2NjczMzgxODNkMTQwOWUuLjFmYzgxNDFhODkxOGFkMDAzMjk3OGE0MDk4ZDVj
ZWEyMWY4NTE3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNjcmlwdFByb2ZpbGUqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25DCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAg
IH0KICAgICBpbXBsLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoaW5z
dGFuY2UsICZWOFNjcmlwdFByb2ZpbGU6OmluZm8sIGltcGwpOworICAgIFY4RE9NV3JhcHBlcjo6
c2V0TmF0aXZlSW5mbyhpbnN0YW5jZSwgJlY4U2NyaXB0UHJvZmlsZTo6aW5mbywgaW1wbCk7CiAg
ICAgcmV0dXJuIGluc3RhbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKaW5k
ZXggMjA5NmNiMjUyODYyNmNkMTA5OTFiNmRjZDFiNmM4NWE3YmUxZmQxNi4uN2U4NDA1NWI3MDQ1
NjY1NjljMWM4YTY2OGVjYTBiNzhkMjY5YmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9t
LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTY3JpcHRQ
cm9maWxlTm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdAogICAgICAgICBy
ZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgfQogICAgIGltcGwtPnJlZigpOwot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihpbnN0YW5jZSwgJlY4U2NyaXB0UHJvZmls
ZU5vZGU6OmluZm8sIGltcGwpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyhpbnN0
YW5jZSwgJlY4U2NyaXB0UHJvZmlsZU5vZGU6OmluZm8sIGltcGwpOwogICAgIHJldHVybiBpbnN0
YW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCmluZGV4IDc5MjI1YjQyOTE1NzJkNGVlOGE2OWRm
NDA3NDQyZjljMDc0ZWZmZmUuLmM5OTE2YzIwMGUwNjgzNjYyZjFlODY4ODM0OTBhM2I2YTlkZjg4
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktp
dFBvaW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4V2ViS2l0UG9pbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW4KICAgICB9CiAgICAgUmVmUHRyPFdlYktpdFBvaW50PiBwb2ludCA9IFdlYktpdFBv
aW50OjpjcmVhdGUoeCwgeSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
YXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIocG9pbnQu
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVX
cmFwcGVyV2l0aE9iamVjdChwb2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGY4MjA2Nzgz
MGE5ZDRhZWFiN2Y2MjE3ZWM5ZDdhOGE5YmM1ZGU3MzIuLmJlNjFmM2M3YTI4MWY1NDg2ZGUyMjJl
NjgwNTIwMDg5NWQ1NDBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9y
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3UKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+
IHhtbEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzZWN1cml0
eU9yaWdpbik7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcih4bWxIdHRwUmVxdWVz
dC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZVdyYXBwZXJXaXRoT2JqZWN0KHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBw
ZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177619</attachid>
            <date>2012-12-04 17:32:42 -0800</date>
            <delta_ts>2012-12-04 17:35:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-104069-20121204173008.patch</filename>
            <type>text/plain</type>
            <size>82699</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM4ODQ3NWIyNjhhODNi
Yjc2MGJiZGVhNWU0MDVmYjQzNGI2ZTlhYi4uZjMxYzIwM2VhNTk3OGFiYWJmMTg4Zjk5NThhZjUx
Yzg5OTFmZDFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxMi0xMi0wNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtWOF0gUmVuYW1lIFY4RE9N
V3JhcHBlciBtZW1iZXIgZnVuY3Rpb25zIHRvIGJlIG1vcmUgZGVzY3JpcHRpdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDA2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBy
ZW5hbWVzLCB0aGlzIHBhdGNoIGFsc28gaW5saW5lIGxvb2t1cERPTVdyYXBwZXIKKyAgICAgICAg
aW50byBpdHMgY2FsbGVycy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIpOgor
ICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0
b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6
CisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChH
ZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUZyYW1lV2l0
aEdsb2JhbE9iamVjdENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9ET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6dG9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmNsZWFyRm9y
TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxs
RE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoVjhET01XcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdyYXBwZXI6OmNsZWFyTmF0aXZlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEluaXRpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGcmFtZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVWOE9iamVjdEZvck5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldFY4T2JqZWN0
Rm9yTlBPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZUNvbnRleHRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1
ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjp3cmFw
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJyYXkp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFja0N1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yU2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6d3JhcEluU2hhZG93
T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluamVjdGVkU2Ny
aXB0SG9zdFY4V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW50ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZW50Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhM
b2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRB
Y2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQWNj
ZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQWNjZXNz
b3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVj
dG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25P
YnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdl
YktpdFBvaW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKworMjAxMi0x
Mi0wNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtWOF0gQ2xl
YW51cCBzdHlsZSBpbiBWOERPTVdyYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNDA2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgYSBudW1iZXIgb2YgZnVuY3Rpb25zIGZy
b20gaW5zaWRlIHRoZSBjbGFzcworICAgICAgICBkZWNsYXJhdGlvbiB0byBiZWxvdyB0aGUgY2xh
c3MgZGVjbGFyYXRpb24uIEkndmUgYWxzbyBpbmxpbmVkCisgICAgICAgIGRvbVdyYXBwZXJUeXBl
IGludG8gZWFjaCBvZiBpdHMgY2FsbGVycyBhbmQgcmVuYW1lZCBhIGZldyBmdW5jdGlvbnMuCisg
ICAgICAgIEEgc3Vic2VxdWVudCBwYXRjaCB3aWxsIGltcHJvdmUgdGhlIG5hbWVzIG9mIHRoZSBy
ZW1haW5pbmcgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEFycmF5cyk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZFByb3BlcnR5T2ZDb2xs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEluZGV4ZWRQcm9wZXJ0eU9mQ29sbGVjdGlv
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVET01XcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuaDoKKyAgICAgICAgKFY4RE9NV3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdyYXBwZXI6OnNldFdyYXBwZXJDbGFzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNsZWFyRE9NV3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5z
cGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnVDYWxsYmFjayk6CisKKzIwMTItMTItMDQg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBbVjhdIFY4RE9NV3Jh
cHBlciBzaG91bGRuJ3Qga25vdyBhYm91dCBOb2RlRmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQwNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBUaGlzIHBhdGNoIGp1c3QgbW92ZXMgdGhpcyBjb2Rl
IGludG8gVjhCaW5kaW5ncy5oLCB3aGljaCBpcyB3aGVyZSB3ZQorICAgICAgICBoYXZlIG91ciBv
dGhlciB0eXBlIGNvbnZlcnNpb24gZnVuY3Rpb25zLiBJdCdzIHRvbyBiYWQgdGhhdCB3ZSBzdGls
bAorICAgICAgICBuZWVkIHRvIHNwZWNpYWwgY2FzZSBOb2RlRmlsdGVyLCBidXQgZml4aW5nIHRo
YXQgaXMgZ29pbmcgdG8gYmUgYSBiaXQKKyAgICAgICAgbW9yZSB3b3JrLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChKU1ZhbHVlVG9O
YXRpdmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b05vZGVGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERPTVdyYXBwZXIpOgorCiAy
MDEyLTEyLTA0ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIHBhcnNlciogbWV0aG9kcyBpbiBDb250YWluZXJOb2RlIHNob3VsZCBub3Qgc3VwcG9ydCBE
b2N1bWVudEZyYWdtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZkN2VhN2VjN2Nk
YjA4YzYyOTYwNWI5MTMwM2FjYTM0NzI1NjI1Y2QuLjIzMWRjYTU5ZWI3OTcxZDMzM2M4ZjdhYThl
ZmI0ZDg0MDdmMTRiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTItMTItMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBbVjhdIENsZWFudXAgc3R5bGUgaW4gVjhET01XcmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQwNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIHNyYy9XZWJCaW5kaW5ncy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmdldFJhbmdlSW1wbCk6CisKIDIwMTItMTItMDQgIFN0ZXBoZW4gV2hpdGUgIDxz
ZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBE
RVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCA3ZGMyMjMwM2I3ZGJhZTM1YTM5OGZlODI2ZTVjOTQ2ODI2ODBkN2I4Li43
NGUzYWY3YzU5MDU5MWU4ZjQyMTcxZGY2ZjY1ZWFhMzVjZWZjOTk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtODA0LDcg
KzgwNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjCiB7CiAgICAgSU5DX1NUQVRTKFwiRE9N
LiRpbnRlcmZhY2VOYW1lLiRmdW5jTmFtZS5fZ2V0XCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoJG5ld1RlbXBsYXRlU3RyaW5nKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CiAg
ICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVy
ZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAg
ICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKQEAgLTgzNSw3ICs4MzUsNyBAQCBz
dWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIKIHN0YXRpYyB2b2lkICR7aW50ZXJm
YWNlTmFtZX1Eb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLiRpbnRlcmZhY2VOYW1lLl9zZXQiKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CiAg
ICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAke2ludGVyZmFj
ZU5hbWV9KiBpbXAgPSAke3Y4SW50ZXJmYWNlTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CkBAIC05
MzEsNyArOTMxLDcgQEAgRU5ECiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAjIHBlcmZv
cm0gbG9va3VwIGZpcnN0CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVO
RCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxv
b2t1cERPTVdyYXBwZXIoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRo
aXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBs
YXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIEVORApAQCAtMTk3MSw3ICsxOTcxLDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBF
TkQKIApAQCAtMjA0OCw3ICsyMDQ4LDcgQEAgRU5ECiAgICAgUmVmUHRyPCR7aW50ZXJmYWNlTmFt
ZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAg
IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTIxODYsNyArMjE4Niw3
IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAotICAgIFY4RE9NV3Jh
cHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJiR7djhJbnRlcmZhY2VOYW1l
fUNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJiR7
djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIApAQCAtMzUwMiwxMiArMzUwMiwxMiBA
QCBFTkQKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3Qo
Y3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGUoY3JlYXRpb25Db250ZXh0LCAm
aW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkK
ICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRp
ZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5m
bywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1w
bCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRp
bWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJu
IHdyYXBwZXI7CkBAIC0zODEyLDcgKzM4MTIsNyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAg
fQogCiAgICAgaWYgKCR0eXBlIGVxICJOb2RlRmlsdGVyIikgewotICAgICAgICByZXR1cm4gIlY4
RE9NV3JhcHBlcjo6d3JhcE5hdGl2ZU5vZGVGaWx0ZXIoJHZhbHVlKSI7CisgICAgICAgIHJldHVy
biAidG9Ob2RlRmlsdGVyKCR2YWx1ZSkiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiTWVk
aWFRdWVyeUxpc3RMaXN0ZW5lciIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGZmM2YxNTkw
YzhjMDg1NjM2MmNkM2U1ZDc2MmQwOWI3YTljM2JmZjQuLjNlOGZkM2U0NjE5MGFmYjI2MGI2NDhm
ZjI4MTQ3OGI3YjRmZTdkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTUxLDEyICsxNTEs
MTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEZsb2F0NjRBcnJheTo6Y3JlYXRlV3JhcHBl
cihQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gaW0KICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpj
dXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PEFycmF5QnVmZmVyVmlldyo+KGltcGwuZ2V0
KCkpKSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oaW1wbC5nZXQoKSkpOwogCi0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0
KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlKGNyZWF0aW9uQ29udGV4dCwg
JmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkp
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdy
YXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGlt
cGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0
aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVy
biB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA5OWFkNDFm
OGQ4MTM5NGNlNTc4MzM2MzRkNGZjZjFjY2Y1NGZjYzEwLi4zMTAzNmE2NGIxYmY2NWYzMjQ3NjFh
ZDBiMDc5ZjdjYzUxMzdmODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApA
QCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdl
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogewogICAgIElOQ19TVEFU
UygiRE9NLlRlc3RBY3RpdmVET01PYmplY3QucG9zdE1lc3NhZ2UuX2dldCIpOwogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0g
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4VGVzdEFjdGl2ZURPTU9i
amVjdDo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOFRlc3RBY3RpdmVET01PYmpl
Y3Q6OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJv
dG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3Vy
aXR5IGNoZWNrIGFscmVhZHkKQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBwb3N0TWVzc2FnZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGMKIHN0YXRpYyB2b2lkIFRlc3RBY3RpdmVET01PYmplY3REb21haW5TYWZlRnVuY3Rpb25TZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlRl
c3RBY3RpdmVET01PYmplY3QuX3NldCIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4VGVzdEFjdGl2ZURPTU9iamVj
dDo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIFRlc3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4
VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoaG9sZGVyKTsKQEAgLTE4MCwxMiArMTgwLDEy
IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVX
cmFwcGVyKFBhc3NSZWZQdHI8VGVzdEFjdGl2CiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAg
IEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5J
c0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01X
cmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwu
Z2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBl
cjo6Y3JlYXRlKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChV
TkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAg
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsK
ICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1h
cmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAKaW5kZXggZDI2NzEwOTc1MjY4ZjVjNmIwZTU2MWI1YTkzNDJkY2E2
ZjBlYmUyYi4uMjAwNWY5YzM0ZjBkODQzMTI4Y2Q1ODk5MWIwN2IxNjBiMTNjOTgwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xMTQsMTIgKzExNCwxMiBAQCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpjcmVhdGVXcmFw
cGVyKFBhc3NSZWZQdHI8VGVzdEN1cwogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NF
UlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0
eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBl
cjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgp
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNy
ZWF0ZShjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtF
TFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVh
dGVET01XcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAg
aWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5k
ZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAppbmRleCA3ZDY4NzMwN2ViODRjMDEzOTFmZDdlNmQ0ZDExMjQwNmI2NjIxNjA0
Li42Nzk5ZGY1N2FiMzA3YjQzZWNiMTQ2ZDlmYzdiMDIyYjkwN2JlMzE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1CiAgICAgUmVmUHRyPFRlc3RFdmVudENvbnN0cnVjdG9yPiBldmVudCA9IFRlc3RF
dmVudENvbnN0cnVjdG9yOjpjcmVhdGUodHlwZSwgZXZlbnRJbml0KTsKIAogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVy
OjpjcmVhdGVET01XcmFwcGVyKGV2ZW50LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGV2ZW50LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTQ4LDEyICsxNDgsMTIgQEAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGVXcmFwcGVyKFBhc3NS
ZWZQdHI8VGVzdEV2ZW4KICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7CiAgICAgQVNTRVJUKERPTURh
dGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3Rh
bnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGUoY3Jl
YXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBw
ZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3Jh
cHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFz
RGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50
KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA0
Y2ViMjVlNzFlYWQyMWQ0ZjQwMmE2Y2Q5NTY4YTY1MzQ3MzcxNTQ0Li5lMmQ5NTMxNTBhNzJhOGY0
Y2VkOTlhMDM0YWZjZjg0NjUyZTkyMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKQEAg
LTE3NywxMiArMTc3LDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRUYXJn
ZXQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXZlbnRUYXJnCiAgICAgQVNTRVJUKGlt
cGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdl
dChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4
dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0
KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGlt
cGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUg
PSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlz
b2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFw
cGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3
cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXhjZXB0aW9uLmNwcAppbmRleCBiYmI5ZmVjZWM4OTAwZTZlZjJlZDM1MWJkMGE4MDQwYzY5
M2U4MjEyLi5jZWEzMzllZWRiNzdjYjYxNWM0NzFiZTdiNWZiODI3MGMyMmU1Yzg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXhjZXB0aW9uLmNwcApAQCAtMTA1LDEyICsxMDUsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBWOFRlc3RFeGNlcHRpb246OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhjZXB0
aW9uPgogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpj
dXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9i
amVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZShjcmVhdGlvbkNvbnRl
eHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5
KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGws
ICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBl
cihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRM
aWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggN2JlM2Q0MTkzNGI2NTM5
ODI5YmQxNDcxOGYxYjkzYWQ0M2NkNWIxMi4uNmMxM2I0NTdlMWVlODQyMDg3MDhlNWU0ZDVjMDI4
NzdjZjA4NDZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgaWYgKGVjKQogICAgICAgICBnb3RvIGZhaWw7CiAK
LSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZv
LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsKICAgZmFpbDoKICAgICByZXR1cm4g
c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0zNDMsMTIgKzM0Mywx
MiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEludGVyZmFjZTo6Y3JlYXRlV3JhcHBl
cihQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+CiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAg
IEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5J
c0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01X
cmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwu
Z2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBl
cjo6Y3JlYXRlKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChV
TkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAg
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsK
ICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1h
cmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDAyOTFkZTc2YjMyMzdlZjA1MzU5ZTQ2
MTNiYjA4YWRkNmEzNWRjNzUuLjFkNjYyNDVjYWMyOGIyNmRhYjJiZTE3N2QyMmUzZjY0ODg1ZjM0
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAg
LTExNCwxMiArMTE0LDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlCiAgICAgQVNTRVJUKGlt
cGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdl
dChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4
dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0
KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGlt
cGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUg
PSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlz
b2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFw
cGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3
cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDk1NGNjYTdjYzQ3NWY0OGEzOTIx
YTc3Njk2MGRhNTQ5YzFiYzlmNWIuLjc4OGIwZTUxYzc4YmQxNzJlYWZhYmIwNTllODNhMTZlYmY2
YzMzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODoKICAgICBpZiAoZWMpCiAgICAgICAgIGdvdG8g
ZmFpbDsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJlbGVhc2Uo
KSwgJlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoaW1wbC5yZWxlYXNlKCksICZWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsK
ICAgZmFpbDoKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUo
KSk7CkBAIC0xNTIsMTIgKzE1MiwxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE5h
bWVkQ29uc3RydWN0b3I6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0TmFtZQogICAgIEFT
U0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xh
dGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlv
bkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZShjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBp
bXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFw
cGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
SGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZvLCB3cmFw
cGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFu
ZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5m
bywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAg
ICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROb2RlLmNwcAppbmRleCBmOWM1N2FhM2UzYmQyN2MxNDVmZGIzMTkxNzIwNzQ5OTE2NzBh
ZDJjLi44ZjlkMDVhNGVhMTYyZjU1YWJjNzM2NWY3NTk2ZmUzZjEzZmE4NzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROb2RlOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgUmVmUHRy
PFRlc3ROb2RlPiBpbXBsID0gVGVzdE5vZGU6OmNyZWF0ZSgpOwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNy
ZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTEzLDEyICsxMTMsMTIgQEAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOFRlc3ROb2RlOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdE5vZGU+IGlt
cGwsIHY4OjoKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXROb2RlKGltcGwuZ2V0KCksIGlz
b2xhdGUpLklzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDxOb2RlKj4oaW1wbC5nZXQoKSkpID09IHN0YXRpY19jYXN0PHZvaWQqPihpbXBsLmdldCgp
KSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVh
dGUoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRl
RE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlm
ICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVw
ZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDFhZDM1ZDAzMzc1
YzBjYTNiNzJmNGEzYjBjNjE4MjFkZDBhNTFiYTkuLjYwMGYxZjk4MGFiYTU1OGZlOTM2MmRlNjYz
YjM2MzYwNGRkNmE1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0yMjIyLDcgKzIyMjIsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T2JqOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgUmVmUHRyPFRlc3RPYmo+IGltcGwgPSBUZXN0T2JqOjpjcmVh
dGUodGVzdENhbGxiYWNrKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBh
cmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwu
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZv
LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAK
QEAgLTI0MDAsMTIgKzI0MDAsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPYmo6
OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0T2JqPiBpbXBsLCB2ODo6SGEKICAgICBBU1NF
UlQoaW1wbC5nZXQoKSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRl
KS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25D
b250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGUoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1w
bC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBl
ciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhh
bmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBl
ciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRs
ZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8s
IHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAg
ICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMGM3
OGY3NzJmNjJmZWQwMDJhYjVmZTUwNWYwZjk4YzY2NjUyNGYxMC4uMDhkYTIxZDEwMzgzYzI3YmJm
ZTA3MjJhYmE5MGU0ODg1MDRjYTkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3Qg
dgogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOwogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBl
cihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAg
ICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJhY2so
Y29uc3QgdgogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3KTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTgwLDcgKzgwLDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9y
M0NhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGJsb2IpOwogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERP
TVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtOTMsNyArOTMsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3I0
Q2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4g
aW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoc3RyaW5nKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTE3MywxMiArMTczLDEyIEBAIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRl
V3JhcHBlcihQYXNzUmVmUHRyPFRlCiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAgIEFTU0VS
VChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5Jc0VtcHR5
KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVy
OjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3Jl
YXRlKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VM
WSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0
ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBp
ZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRl
cGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCBiODE0NDFmYjFkOTkw
ZjA3NzFiZDBlMTA4ZmU0OTk1NWE0YzYzYjEwLi42MTVlNzg5YmU2MDhhMWVhOGUyM2M4YzJmYzQ0
NTc1MTg1MjIwOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soCiAgICAgUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+
IGltcGwgPSBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGUoaGVsbG8s
IGRhdGEsIG1lc3NhZ2VQb3J0QXJyYXlUcmFuc2Zlckxpc3QpOwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNy
ZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjk2LDEyICsyOTYsMTIgQEAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZVdyYXBw
ZXIoUGFzc1IKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9y
ZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRl
VjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGUoY3JlYXRpb25D
b250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNF
bXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4
dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihp
bXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5k
ZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAg
ICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnku
Y3BwCmluZGV4IDBhOGNjNDI0M2QzZWI1ZmM5ZDYwYmU4YWYxZDQyMDA2MTJjNTc3MmQuLmU1Y2Q0
ZDIxMTU1NzEwY2RhYjc0MWFjYWU3ZTk1MTI3OTQ5NGJlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBEaWN0aW9u
YXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxET01XaW5kb3c+JiB2YWx1ZSkgY29u
c3QKICAgICBET01XaW5kb3cqIHNvdXJjZSA9IDA7CiAgICAgaWYgKHY4VmFsdWUtPklzT2JqZWN0
KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdpbmRvdyA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5k
b3c6OkdldFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzb3VyY2UgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9CkBA
IC0yNjYsNyArMjY2LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXks
IFJlZlB0cjxTdG9yYWdlPiYgdmFsdWUpIGNvbnN0CiAgICAgU3RvcmFnZSogc291cmNlID0gMDsK
ICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwot
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHN0b3JhZ2UgPSBWOERPTVdyYXBwZXI6Omxv
b2t1cERPTVdyYXBwZXIoVjhTdG9yYWdlOjpHZXRUZW1wbGF0ZSgpLCB3cmFwcGVyKTsKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzdG9yYWdlID0gd3JhcHBlci0+RmluZEluc3RhbmNl
SW5Qcm90b3R5cGVDaGFpbihWOFN0b3JhZ2U6OkdldFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAo
IXN0b3JhZ2UuSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlID0gVjhTdG9yYWdlOjp0b05h
dGl2ZShzdG9yYWdlKTsKICAgICB9CkBAIC0zMjcsOCArMzI3LDcgQEAgYm9vbCBEaWN0aW9uYXJ5
OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgdmFsdWUpIGNvbnN0
CiAgICAgVWludDhBcnJheSogc291cmNlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3Qo
KSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotCi0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gYXJyYXkgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhVaW50OEFycmF5
OjpHZXRUZW1wbGF0ZSgpLCB3cmFwcGVyKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBhcnJheSA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhVaW50OEFy
cmF5OjpHZXRUZW1wbGF0ZSgpKTsKICAgICAgICAgaWYgKCFhcnJheS5Jc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzb3VyY2UgPSBWOFVpbnQ4QXJyYXk6OnRvTmF0aXZlKGFycmF5KTsKICAgICB9CkBA
IC0zNDYsOCArMzQ1LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXks
IFJlZlB0cjxNZWRpYUtleUVycm9yPiYgdmFsdWUpIGNvbnN0CiAgICAgTWVkaWFLZXlFcnJvciog
c291cmNlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KHY4VmFsdWUpOwotCi0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXJyb3IgPSBWOERP
TVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhNZWRpYUtleUVycm9yOjpHZXRUZW1wbGF0ZSgp
LCB3cmFwcGVyKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBlcnJvciA9IHdyYXBw
ZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhNZWRpYUtleUVycm9yOjpHZXRUZW1w
bGF0ZSgpKTsKICAgICAgICAgaWYgKCFlcnJvci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3Vy
Y2UgPSBWOE1lZGlhS2V5RXJyb3I6OnRvTmF0aXZlKGVycm9yKTsKICAgICB9CkBAIC0zNjksNyAr
MzY3LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxU
cmFja0Jhc2U+JiB2YWx1ZSkgY29uc3QKIAogICAgICAgICAvLyBGSVhNRTogdGhpcyB3aWxsIG5l
ZWQgdG8gYmUgY2hhbmdlZCBzbyBpdCBjYW4gYWxzbyByZXR1cm4gYW4gQXVkaW9UcmFjayBvciBh
IFZpZGVvVHJhY2sgb25jZQogICAgICAgICAvLyB3ZSBhZGQgdGhlbS4KLSAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB0cmFjayA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihW
OFRleHRUcmFjazo6R2V0VGVtcGxhdGUoKSwgd3JhcHBlcik7CisgICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gdHJhY2sgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4VGV4dFRyYWNrOjpHZXRUZW1wbGF0ZSgpKTsKICAgICAgICAgaWYgKCF0cmFjay5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICBzb3VyY2UgPSBWOFRleHRUcmFjazo6dG9OYXRpdmUodHJhY2spOwog
ICAgIH0KQEAgLTM4OCw3ICszODYsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJp
bmcmIGtleSwgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiB2YWx1ZSkgYwogICAgIFNw
ZWVjaFJlY29nbml0aW9uRXJyb3IqIHNvdXJjZSA9IDA7CiAgICAgaWYgKHY4VmFsdWUtPklzT2Jq
ZWN0KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBzcGVlY2hSZWNvZ25pdGlvbkVycm9yID0gVjhET01XcmFwcGVyOjpsb29rdXBET01X
cmFwcGVyKFY4U3BlZWNoUmVjb2duaXRpb25FcnJvcjo6R2V0VGVtcGxhdGUoKSwgd3JhcHBlcik7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc3BlZWNoUmVjb2duaXRpb25FcnJvciA9
IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhTcGVlY2hSZWNvZ25pdGlv
bkVycm9yOjpHZXRUZW1wbGF0ZSgpKTsKICAgICAgICAgaWYgKCFzcGVlY2hSZWNvZ25pdGlvbkVy
cm9yLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4U3BlZWNoUmVjb2duaXRpb25F
cnJvcjo6dG9OYXRpdmUoc3BlZWNoUmVjb2duaXRpb25FcnJvcik7CiAgICAgfQpAQCAtNDA1LDcg
KzQwMyw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ+JiB2YWx1ZSkKICAgICBTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdCogc291cmNlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0ID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4U3BlZWNo
UmVjb2duaXRpb25SZXN1bHQ6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHNwZWVjaFJlY29nbml0aW9uUmVzdWx0ID0gd3JhcHBlci0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0OjpHZXRU
ZW1wbGF0ZSgpKTsKICAgICAgICAgaWYgKCFzcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICBzb3VyY2UgPSBWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Ojp0b05h
dGl2ZShzcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CiAgICAgfQpAQCAtNDIyLDcgKzQyMCw3IEBA
IGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8U3BlZWNoUmVj
b2duaXRpb25SZXN1bHRMaXN0PiYgdmFsCiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0
KiBzb3VyY2UgPSAwOwogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QodjhWYWx1ZSk7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc3BlZWNoUmVjb2du
aXRpb25SZXN1bHRMaXN0ID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4U3BlZWNo
UmVjb2duaXRpb25SZXN1bHRMaXN0OjpHZXRUZW1wbGF0ZSgpLCB3cmFwcGVyKTsKKyAgICAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3QgPSB3cmFw
cGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1
bHRMaXN0OjpHZXRUZW1wbGF0ZSgpKTsKICAgICAgICAgaWYgKCFzcGVlY2hSZWNvZ25pdGlvblJl
c3VsdExpc3QuSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlID0gVjhTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdExpc3Q6OnRvTmF0aXZlKHNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKaW5kZXggNjVlNDgzN2Q0NTBkNzc3Yzc1NDZmNDdlNWMzMDU3ZmI5Nzk1NDcx
Mi4uNDQ1MDgwNTM5MmJmNjc4MmEzY2JiNzI1YTljYmNhZGExMjNmMWYwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIHN0YXRpYyBGcmFtZSogcmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmpl
Y3RDaGVjayh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0CiAgICAgaWYgKGdsb2JhbC5J
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZ2xvYmFsID0gVjhET01XcmFwcGVy
Ojpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBnbG9iYWwpOwor
ICAgIGdsb2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRQcm9maWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxl
ci5jcHAKaW5kZXggOTU5Zjk4MjFiYjVjYmU4NjU2MTU0ODA3Mzc2ZTliNjgzZjg1MmNmMC4uMzk1
NjI0NDg2MDhkNTZiNDBiYTdkZjM0OTIyZDI2NGRmYzdmNDdmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZv
aWQgU2NyaXB0UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxBcnJheXMoRXh0ZXJuYWxBcnJheVZpc2l0
b3IqIHZpc2l0b3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQVNTRVJU
KHZhbHVlLT5Jc09iamVjdCgpKTsKICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7Ci0g
ICAgICAgICAgICBpZiAoIVY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlciktPmlz
U3ViY2xhc3MoJlY4QXJyYXlCdWZmZXJWaWV3OjppbmZvKSkKKyAgICAgICAgICAgIGlmICghdG9X
cmFwcGVyVHlwZUluZm8od3JhcHBlciktPmlzU3ViY2xhc3MoJlY4QXJyYXlCdWZmZXJWaWV3Ojpp
bmZvKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX3Zpc2l0b3ItPnZp
c2l0SlNFeHRlcm5hbEFycmF5KFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh3cmFwcGVyKSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4
IGYxOTkyZjliZjRjZGY0MTY3OTI2YmY1NDU4MzY0Y2FhZGFiMGZhYTguLjVkYmUyMTVjZDFhODEx
MWZlYmU3ZTk1OTJlNzFlNjk2YjQ2Yzk5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlY4RE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhFbGVtZW50LmgiCisj
aW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAjaW5jbHVkZSAiVjhPYmplY3RDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4WFBh
dGhOU1Jlc29sdmVyLmgiCkBAIC0xNDksNiArMTUwLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2OEFycmF5KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3RyaW5nTGlzdCwgdjg6Oklzb2xh
dGUqCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiB0b05v
ZGVGaWx0ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhbGxiYWNrKQoreworICAgIHJldHVybiBO
b2RlRmlsdGVyOjpjcmVhdGUoVjhOb2RlRmlsdGVyQ29uZGl0aW9uOjpjcmVhdGUoY2FsbGJhY2sp
KTsKK30KKwogaW50IHRvSW50MzIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBv
aykKIHsKICAgICBvayA9IHRydWU7CkBAIC0yNzMsNyArMjc5LDcgQEAgRE9NV2luZG93KiB0b0RP
TVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgQVNTRVJUKCFn
bG9iYWwuSXNFbXB0eSgpKTsKLSAgICBnbG9iYWwgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdy
YXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7CisgICAgZ2xvYmFsID0g
Z2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1w
bGF0ZSgpKTsKICAgICBBU1NFUlQoIWdsb2JhbC5Jc0VtcHR5KCkpOwogICAgIHJldHVybiBWOERP
TVdpbmRvdzo6dG9OYXRpdmUoZ2xvYmFsKTsKIH0KQEAgLTI4MSwxMSArMjg3LDExIEBAIERPTVdp
bmRvdyogdG9ET01XaW5kb3codjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHRvU2NyaXB0RXhlY3V0aW9uQ29udGV4dCh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFs
ID0gY29udGV4dC0+R2xvYmFsKCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dX
cmFwcGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRU
ZW1wbGF0ZSgpLCBnbG9iYWwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3Jh
cHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6
R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd29ya2VyV3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihW
OFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3b3JrZXJXcmFwcGVyID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlw
ZUNoYWluKFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKCF3b3JrZXJX
cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFY4V29ya2VyQ29udGV4dDo6dG9OYXRp
dmUod29ya2VyV3JhcHBlciktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA2OTBmYjA3NDMxOTViMGVmOWRj
ZGExOWU4NjQ2MDE4Zjk0MGEzMDMyLi40MmQ0MTI3MDFmODcwODliMmE4YzM3ZDNkNzBiMjBjZWZj
MGE2Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIkRPTVdyYXBw
ZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTm9kZUZpbHRlci5o
IgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4RE9NQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgpAQCAtMjY3LDcgKzI2OCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLQogICAg
IC8vIFZhbGlkYXRlcyB0aGF0IHRoZSBwYXNzZWQgb2JqZWN0IGlzIGEgc2VxdWVuY2UgdHlwZSBw
ZXIgV2ViSURMIHNwZWMKICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEyL1dELVdlYklE
TC0yMDEyMDIwNy8jZXMtc2VxdWVuY2UKICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhTZXF1ZW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHVpbnQzMl90JiBsZW5n
dGgpCkBAIC0yOTMsNiArMjkzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1
cm4gdjhWYWx1ZTsKICAgICB9CiAKKyAgICBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZp
bHRlcih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOworCiAgICAgLy8gQ29udmVydCBhIHZhbHVlIHRv
IGEgMzItYml0IGludGVnZXIuICBUaGUgY29udmVyc2lvbiBmYWlscyBpZiB0aGUKICAgICAvLyB2
YWx1ZSBjYW5ub3QgYmUgY29udmVydGVkIHRvIGFuIGludGVnZXIgb3IgY29udmVydHMgdG8gbmFu
IG9yIHRvIGFuIGluZmluaXR5LgogICAgIGludCB0b0ludDMyKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgYm9vbCYgb2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rp
b24uaAppbmRleCBmNzM5ZjUwYmM2MmFmYWI4NjZkN2JmMmZmNTFlMTNjNGZlM2QyMDgyLi41Mzk4
ODAxZTQyNzEyNWQ2Y2M1YWEyMGY1OTM1NTFhNTNjNWFhMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaApAQCAtNjMsNyArNjMsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBDb2xsZWN0aW9uLCBjbGFzcyBJdGVtVHlwZT4gc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBnZXROYW1lZAogewogICAgIC8vIEZJWE1FOiBhc3NlcnQgb2JqZWN0IGlzIGEgY29sbGVjdGlv
biB0eXBlCiAgICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVyKG9iamVjdCkp
OwotICAgIEFTU0VSVChWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKG9iamVjdCkgIT0gJlY4
Tm9kZTo6aW5mbyk7CisgICAgQVNTRVJUKHRvV3JhcHBlclR5cGVJbmZvKG9iamVjdCkgIT0gJlY4
Tm9kZTo6aW5mbyk7CiAgICAgQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IHRvTmF0aXZlQ29sbGVj
dGlvbjxDb2xsZWN0aW9uPihvYmplY3QpOwogICAgIEF0b21pY1N0cmluZyBwcm9wZXJ0eU5hbWUg
PSB0b1dlYkNvcmVBdG9taWNTdHJpbmdXaXRoTnVsbENoZWNrKG5hbWUpOwogICAgIHJldHVybiBn
ZXRWOE9iamVjdDxJdGVtVHlwZT4oY29sbGVjdGlvbi0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZSks
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CkBAIC04NSw3ICs4NSw3IEBAIHRlbXBsYXRlPGNs
YXNzIENvbGxlY3Rpb24sIGNsYXNzIEl0ZW1UeXBlPiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGdldEluZGV4CiB7CiAgICAgLy8gRklYTUU6IEFzc2VydCB0aGF0IG9iamVjdCBtdXN0IGJl
IGEgY29sbGVjdGlvbiB0eXBlLgogICAgIEFTU0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9NV3Jh
cHBlcihvYmplY3QpKTsKLSAgICBBU1NFUlQoVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZShv
YmplY3QpICE9ICZWOE5vZGU6OmluZm8pOworICAgIEFTU0VSVCh0b1dyYXBwZXJUeXBlSW5mbyhv
YmplY3QpICE9ICZWOE5vZGU6OmluZm8pOwogICAgIENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSB0
b05hdGl2ZUNvbGxlY3Rpb248Q29sbGVjdGlvbj4ob2JqZWN0KTsKICAgICByZXR1cm4gZ2V0VjhP
YmplY3Q8SXRlbVR5cGU+KGNvbGxlY3Rpb24tPml0ZW0oaW5kZXgpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcAppbmRleCA0MjY4NzQwMjc5MDgwNzk5MGZhNDNkZDUzYzNkZTkwNjAwZjY1N2Jj
Li4zMTdmZDdjYzk5NjkzYmQwZTI1MTdjNmY2Y2I5OWJhMGIxZmFkYTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTUyLDcgKzE1
Miw3IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6Y2xlYXJGb3JOYXZpZ2F0aW9uKCkKICAgICAv
LyB3aWxsIGJlIHByb3RlY3RlZCBieSB0aGUgc2VjdXJpdHkgY2hlY2tzIG9uIHRoZSBET01XaW5k
b3cgd3JhcHBlci4KICAgICBjbGVhckRvY3VtZW50UHJvcGVydHkoKTsKIAotICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgbV9nbG9iYWwuZ2V0KCkpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IG1fZ2xvYmFsLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBBU1NF
UlQoIXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKTsKICAgICB3aW5kb3dXcmFwcGVyLT5UdXJuT25B
Y2Nlc3NDaGVjaygpOwogICAgIG1fY29udGV4dC0+RGV0YWNoR2xvYmFsKCk7CkBAIC0zMTYsNyAr
MzE2LDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KCkKIAogICAg
IFY4RE9NV2luZG93OjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod2luZG93V3JhcHBlciwg
d2luZG93KTsKIAotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KHdpbmRvd1dyYXBwZXItPkdldFByb3RvdHlwZSgpKSwgJlY4RE9NV2lu
ZG93OjppbmZvLCB3aW5kb3cpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdpbmRvd1dyYXBwZXItPkdldFByb3RvdHlwZSgpKSwg
JlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3cpOwogCiAgICAgLy8gSW5zdGFsbCB0aGUgd2luZG93
V3JhcHBlciBhcyB0aGUgcHJvdG90eXBlIG9mIHRoZSBpbm5lckdsb2JhbE9iamVjdC4KICAgICAv
LyBUaGUgZnVsbCBzdHJ1Y3R1cmUgb2YgdGhlIGdsb2JhbCBvYmplY3QgaXMgYXMgZm9sbG93czoK
QEAgLTMzMiw5ICszMzIsOSBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5k
b3coKQogICAgIC8vICAgICAgIEphdmFTY3JpcHQgb2JqZWN0LgogICAgIC8vCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbE9iamVjdCA9IHRvSW5uZXJHbG9iYWxPYmplY3Qo
bV9jb250ZXh0LmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoaW5uZXJH
bG9iYWxPYmplY3QsICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93KTsKKyAgICBWOERPTVdyYXBw
ZXI6OnNldE5hdGl2ZUluZm8oaW5uZXJHbG9iYWxPYmplY3QsICZWOERPTVdpbmRvdzo6aW5mbywg
d2luZG93KTsKICAgICBpbm5lckdsb2JhbE9iamVjdC0+U2V0UHJvdG90eXBlKHdpbmRvd1dyYXBw
ZXIpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihQYXNzUmVmUHRyPERPTVdp
bmRvdz4od2luZG93KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyKTsKKyAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8RE9NV2lu
ZG93Pih3aW5kb3cpLCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dyYXBwZXIpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcAppbmRleCA4NmNmYjUzY2U2ZTlhMGJjN2E5ZjE2ZTg0ZDJkNTFkMjA0MDBhZjcxLi5hMTFh
NDcxMzU2YWRhMzJmZTg3Zjc5Y2QwOGQ4NmJkNTQxZTMzZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTEwNCwzOSArMTA0LDE3IEBAIHZvaWQg
VjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlblJlZmVyZW5jZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHBhcmVudCwgY29uc3QKICAgICBwYXJlbnQtPlNldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJv
cGVydHlOYW1lOjpoaWRkZW5SZWZlcmVuY2VOYW1lKG5hbWUsIHN0cmxlbihuYW1lKSksIGNoaWxk
KTsKIH0KIAotV3JhcHBlclR5cGVJbmZvKiBWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQotewotICAgIEFTU0VSVChWOERPTVdyYXBwZXI6
Om1heWJlRE9NV3JhcHBlcihvYmplY3QpKTsKLSAgICByZXR1cm4gdG9XcmFwcGVyVHlwZUluZm8o
b2JqZWN0KTsKLX0KLQotUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBWOERPTVdyYXBwZXI6OndyYXBO
YXRpdmVOb2RlRmlsdGVyKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmaWx0ZXIpCi17Ci0gICAgLy8g
QSBOb2RlRmlsdGVyIGlzIHVzZWQgd2hlbiB3YWxraW5nIHRocm91Z2ggYSBET00gdHJlZSBvciBp
dGVyYXRpbmcgdHJlZQotICAgIC8vIG5vZGVzLgotICAgIC8vIEZJWE1FOiB3ZSBtYXkgd2FudCB0
byBjYWNoZSBOb2RlRmlsdGVyQ29uZGl0aW9uIGFuZCBOb2RlRmlsdGVyCi0gICAgLy8gb2JqZWN0
LCBidXQgaXQgaXMgbWlub3IuCi0gICAgLy8gTm9kZUZpbHRlciBpcyBwYXNzZWQgdG8gTm9kZUl0
ZXJhdG9yIHRoYXQgaGFzIGEgcmVmIGNvdW50ZWQgcG9pbnRlcgotICAgIC8vIHRvIE5vZGVGaWx0
ZXIuIE5vZGVGaWx0ZXIgaGFzIGEgcmVmIGNvdW50ZWQgcG9pbnRlciB0byBOb2RlRmlsdGVyQ29u
ZGl0aW9uLgotICAgIC8vIEluIE5vZGVGaWx0ZXJDb25kaXRpb24sIGZpbHRlciBvYmplY3QgaXMg
cGVyc2lzdGVkIGluIGl0cyBjb25zdHJ1Y3RvciwKLSAgICAvLyBhbmQgZGlzcG9zZWQgaW4gaXRz
IGRlc3RydWN0b3IuCi0gICAgcmV0dXJuIE5vZGVGaWx0ZXI6OmNyZWF0ZShWOE5vZGVGaWx0ZXJD
b25kaXRpb246OmNyZWF0ZShmaWx0ZXIpKTsKLX0KLQotdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4
RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2b2lkKiBpbXBsKQordjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb25Db250ZXh0LCBXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGltcGwpCiB7
CiAgICAgVjhXcmFwcGVySW5zdGFudGlhdGlvblNjb3BlIHNjb3BlKGNyZWF0aW9uQ29udGV4dCk7
CiAKICAgICBWOFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERh
dGE6OmZyb20oc2NvcGUuY29udGV4dCgpKTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5z
dGFuY2UgPSBwZXJDb250ZXh0RGF0YSA/IHBlckNvbnRleHREYXRhLT5jcmVhdGVXcmFwcGVyRnJv
bUNhY2hlKHR5cGUpIDogVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UodHlwZS0+Z2V0
VGVtcGxhdGUoKS0+R2V0RnVuY3Rpb24oKSk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBwZXJDb250ZXh0RGF0YSA/IHBlckNvbnRleHREYXRhLT5jcmVhdGVXcmFwcGVyRnJv
bUNhY2hlKHR5cGUpIDogVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UodHlwZS0+Z2V0
VGVtcGxhdGUoKS0+R2V0RnVuY3Rpb24oKSk7CiAKLSAgICAvLyBBdm9pZCBzZXR0aW5nIHRoZSBE
T00gd3JhcHBlciBmb3IgZmFpbGVkIGFsbG9jYXRpb25zLgotICAgIGlmIChpbnN0YW5jZS5Jc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICBpZiAodHlwZSA9PSAmVjhIVE1M
RG9jdW1lbnQ6OmluZm8gJiYgIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICB3cmFwcGVyID0g
VjhIVE1MRG9jdW1lbnQ6OndyYXBJblNoYWRvd09iamVjdCh3cmFwcGVyLCBzdGF0aWNfY2FzdDxO
b2RlKj4oaW1wbCkpOwogCi0gICAgaWYgKHR5cGUgPT0gJlY4SFRNTERvY3VtZW50OjppbmZvKQot
ICAgICAgICBpbnN0YW5jZSA9IFY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFkb3dPYmplY3QoaW5z
dGFuY2UsIHN0YXRpY19jYXN0PE5vZGUqPihpbXBsKSk7Ci0gICAgcmV0dXJuIGluc3RhbmNlOwor
ICAgIHJldHVybiB3cmFwcGVyOwogfQogCiBzdGF0aWMgYm9vbCBoYXNJbnRlcm5hbEZpZWxkKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTE2NywxMSArMTQ1LDExIEBAIGJvb2wgVjhE
T01XcmFwcGVyOjppc1dyYXBwZXJPZlR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBX
cmFwcGVyVHlwZUluZm8qCiAgICAgaWYgKCFoYXNJbnRlcm5hbEZpZWxkKHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKLSAgICBBU1NFUlQob2JqZWN0LT5J
bnRlcm5hbEZpZWxkQ291bnQoKSA+PSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
KTsKLSAgICBBU1NFUlQob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxk
KHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisgICAgQVNTRVJU
KHdyYXBwZXItPkludGVybmFsRmllbGRDb3VudCgpID49IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5h
bEZpZWxkQ291bnQpOworICAgIEFTU0VSVCh3cmFwcGVyLT5HZXRBbGlnbmVkUG9pbnRlckZyb21J
bnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CiAKLSAgICBXcmFwcGVyVHlw
ZUluZm8qIHR5cGVJbmZvID0gc3RhdGljX2Nhc3Q8V3JhcHBlclR5cGVJbmZvKj4ob2JqZWN0LT5H
ZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRleCkp
OworICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZUluZm8gPSBzdGF0aWNfY2FzdDxXcmFwcGVyVHlw
ZUluZm8qPih3cmFwcGVyLT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9N
V3JhcHBlclR5cGVJbmRleCkpOwogICAgIHJldHVybiB0eXBlSW5mbyA9PSB0eXBlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCmluZGV4IDE4Y2M3YWJlZjNk
MGFiOTQ1NWFlNGIwMzlmNjBiNDIzNGU0ZDYzNGUuLmUxMWQyMDE0YmRlN2E0YjMxN2IwNDYwZDFl
Mjk4OGU5MWI5MTA4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiTm9kZUZpbHRlci5o
IgogI2luY2x1ZGUgIlY4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiVjhET01X
aW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCkBAIC00NywxMyArNDYsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBET01XaW5kb3c7Ci0gICAgY2xh
c3MgRXZlbnRUYXJnZXQ7Ci0gICAgY2xhc3MgRnJhbWU7Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBj
bGFzcyBWOFBlckNvbnRleHREYXRhOwotICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7Ci0KICAgICBl
bnVtIExpc3RlbmVyTG9va3VwVHlwZSB7CiAgICAgICAgIExpc3RlbmVyRmluZE9ubHksCiAgICAg
ICAgIExpc3RlbmVyRmluZE9yQ3JlYXRlLApAQCAtNjYsNjEgKzU4LDQ3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgbWF5YmVET01XcmFwcGVyKHY4OjpIYW5kbGU8
djg6OlZhbHVlPik7CiAjZW5kaWYKIAotICAgICAgICBzdGF0aWMgdm9pZCBzZXRET01XcmFwcGVy
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZv
aWQqIGltcGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvYmplY3QtPkludGVybmFs
RmllbGRDb3VudCgpID49IDIpOwotICAgICAgICAgICAgQVNTRVJUKGltcGwpOwotICAgICAgICAg
ICAgQVNTRVJUKHR5cGUpOwotICAgICAgICAgICAgb2JqZWN0LT5TZXRBbGlnbmVkUG9pbnRlcklu
SW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCwgaW1wbCk7Ci0gICAgICAgICAg
ICBvYmplY3QtPlNldEFsaWduZWRQb2ludGVySW5JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5
cGVJbmRleCwgdHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBjbGVhckRP
TVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIFdyYXBwZXJUeXBlSW5mbyog
dHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG9iamVjdC0+SW50ZXJuYWxGaWVs
ZENvdW50KCkgPj0gMik7Ci0gICAgICAgICAgICBBU1NFUlQodHlwZSk7Ci0gICAgICAgICAgICBv
YmplY3QtPlNldEFsaWduZWRQb2ludGVySW5JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJ
bmRleCwgdHlwZSk7Ci0gICAgICAgICAgICBvYmplY3QtPlNldEFsaWduZWRQb2ludGVySW5JbnRl
cm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4LCAwKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxvb2t1cERPTVdyYXBwZXIodjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBvYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvYmplY3Qu
SXNFbXB0eSgpID8gb2JqZWN0IDogb2JqZWN0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KGZ1bmN0aW9uVGVtcGxhdGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIFdyYXBwZXJU
eXBlSW5mbyogZG9tV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7Ci0KLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcih2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJpYnV0ZSwgTGlzdGVuZXJMb29rdXBU
eXBlIGxvb2t1cCk7Ci0KLSAgICAgICAgLy8gV3JhcCBKUyBub2RlIGZpbHRlciBpbiBDKysuCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHdyYXBOYXRpdmVOb2RlRmlsdGVy
KHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CisgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gY3JlYXRlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCBXcmFw
cGVyVHlwZUluZm8qLCB2b2lkKik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGNyZWF0ZURPTVdyYXBwZXIo
UGFzc1JlZlB0cjxUPiwgV3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwg
djg6Oklzb2xhdGUqID0gMCk7CisgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiwgV3Jh
cHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7
CisgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXROYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqKTsKKyAgICAgICAgc3RhdGljIGlubGlu
ZSB2b2lkIGNsZWFyTmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlw
ZUluZm8qKTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgcHJvYmFi
bHkgbW92ZSB0byBWOEV2ZW50TGlzdGVuZXJMaXN0LmgKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiwg
Ym9vbCBpc0F0dHJpYnV0ZSwgTGlzdGVuZXJMb29rdXBUeXBlKTsKIAotICAgICAgICAvLyBDaGVj
ayB3aGV0aGVyIGEgVjggdmFsdWUgaXMgYSB3cmFwcGVyIG9mIHR5cGUgfGNsYXNzVHlwZXwuCiAg
ICAgICAgIHN0YXRpYyBib29sIGlzV3JhcHBlck9mVHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4s
IFdyYXBwZXJUeXBlSW5mbyopOwogCisgICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBmdW5j
dGlvbiBpbiBWOERPTVdyYXBwZXI/CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldE5hbWVkSGlkZGVu
UmVmZXJlbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcGFyZW50LCBjb25zdCBjaGFyKiBuYW1l
LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2hpbGQpOwogCi0gICAgICAgIHN0YXRpYyB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gaW5zdGFudGlhdGVWOE9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgV3JhcHBlclR5cGVJbmZvKiwgdm9pZCopOwotCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckNsYXNzKHZvaWQqLCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICB3cmFwcGVy
LlNldFdyYXBwZXJDbGFzc0lkKHY4RE9NT2JqZWN0Q2xhc3NJZCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyQ2xhc3MoTm9kZSosIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdyYXBwZXIuU2V0V3Jh
cHBlckNsYXNzSWQodjhET01Ob2RlQ2xhc3NJZCk7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGlj
IHZvaWQgc2V0V3JhcHBlckNsYXNzKHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVyKSB7IHdyYXBwZXIuU2V0V3JhcHBlckNsYXNzSWQodjhET01PYmplY3RDbGFzc0lkKTsg
fQorICAgICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyQ2xhc3MoTm9kZSosIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpIHsgd3JhcHBlci5TZXRXcmFwcGVyQ2xhc3NJZCh2OERP
TU5vZGVDbGFzc0lkKTsgfQogICAgIH07CiAKKyAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6
OnNldE5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBXcmFwcGVyVHlw
ZUluZm8qIHR5cGUsIHZvaWQqIG9iamVjdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh3cmFwcGVy
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSAyKTsKKyAgICAgICAgQVNTRVJUKG9iamVjdCk7Cisg
ICAgICAgIEFTU0VSVCh0eXBlKTsKKyAgICAgICAgd3JhcHBlci0+U2V0QWxpZ25lZFBvaW50ZXJJ
bkludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgsIG9iamVjdCk7CisgICAgICAg
IHdyYXBwZXItPlNldEFsaWduZWRQb2ludGVySW5JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5
cGVJbmRleCwgdHlwZSk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgVjhET01XcmFwcGVyOjpj
bGVhck5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBXcmFwcGVyVHlw
ZUluZm8qIHR5cGUpCisgICAgeworICAgICAgICBBU1NFUlQod3JhcHBlci0+SW50ZXJuYWxGaWVs
ZENvdW50KCkgPj0gMik7CisgICAgICAgIEFTU0VSVCh0eXBlKTsKKyAgICAgICAgd3JhcHBlci0+
U2V0QWxpZ25lZFBvaW50ZXJJbkludGVybmFsRmllbGQodjhET01XcmFwcGVyVHlwZUluZGV4LCB0
eXBlKTsKKyAgICAgICAgd3JhcHBlci0+U2V0QWxpZ25lZFBvaW50ZXJJbkludGVybmFsRmllbGQo
djhET01XcmFwcGVyT2JqZWN0SW5kZXgsIDApOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjpjcmVh
dGVET01XcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBXcmFwcGVyVHlwZUluZm8qIHR5cGUs
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisg
ICAgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiBvYmplY3QsIFdyYXBwZXJUeXBlSW5m
byogdHlwZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKICAgICB7Ci0gICAgICAgIHNldERPTVdyYXBwZXIod3JhcHBlciwgdHlwZSwgb2JqZWN0
LmdldCgpKTsKKyAgICAgICAgc2V0TmF0aXZlSW5mbyh3cmFwcGVyLCB0eXBlLCBvYmplY3QuZ2V0
KCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKICAgICAgICAgQVNTRVJU
KG1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7CiAgICAgICAgIHNldFdyYXBwZXJDbGFz
cyhvYmplY3QuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGM2OWQxOWU1NDc1OWNiMGY1MjJlMTc0NzNi
NzkxNDQ3NTExOTZkODUuLjg0MDUzMGU5MTI2ZGIyZDUwNjFhZDkwMzJiN2ZiZmE0YThjMTEwYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAg
LTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICh2YWx1ZS5Jc0luZGVwZW5kZW50
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBl
ID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh3cmFwcGVyKTsKKyAgICAgICAgV3JhcHBl
clR5cGVJbmZvKiB0eXBlID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CiAgICAgICAgIHZv
aWQqIG9iamVjdCA9IHRvTmF0aXZlKHdyYXBwZXIpOwogCiAgICAgICAgIC8vIEZJWE1FOiBBYnN0
cmFjdCB0aGlzIGlmIGNhc2NhZGUgaW50byBhIFdyYXBwZXJUeXBlSW5mbyBmdW5jdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKaW5kZXggZjgzZDUz
M2E4YjQ0Yjk5OGQ2YTIzNjk2MGE3N2Q0ODBhNjU3YTY4NS4uZmE1OWE0MjYxY2NmOGNiODVjZWM2
ZmE5NGY1OTFhMTk2ZWE4YWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhJbml0aWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bml0aWFsaXplci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIEZyYW1lKiBmaW5kRnJhbWUo
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCiAg
ICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlID0gV3JhcHBlclR5cGVJbmZvOjp1bndyYXAoZGF0YSk7
CiAKICAgICBpZiAoVjhET01XaW5kb3c6OmluZm8uZXF1YWxzKHR5cGUpKSB7Ci0gICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6bG9va3Vw
RE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgaG9zdCk7CisgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGhvc3QtPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAo
d2luZG93V3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
cmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKS0+ZnJhbWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggYjVhMjFjMGU4Yzky
ZDg3NjY4ODZmYzEyZDMxNTU2NjJiY2EzYzE3OS4uOWEwZjI2ZmQyNWMwZWMwMDYyMDE1YzhmMDdi
MmIxYTc0MzdjZGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhO
UE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5j
cHAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlVjhPYmpl
Y3RGb3JOUE9iamVjdChOUE9iamVjdCogb2JqZWN0LCBOUE9iamVjdCogcm9vdAogICAgIGlmICh2
YWx1ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIFY4RE9NV3JhcHBl
cjo6c2V0RE9NV3JhcHBlcih2YWx1ZSwgbnBPYmplY3RUeXBlSW5mbygpLCBvYmplY3QpOworICAg
IFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyh2YWx1ZSwgbnBPYmplY3RUeXBlSW5mbygpLCBv
YmplY3QpOwogCiAgICAgLy8gS0pTIHJldGFpbnMgdGhlIG9iamVjdCBhcyBwYXJ0IG9mIGl0cyB3
cmFwcGVyIChzZWUgQmluZGluZ3M6OkNJbnN0YW5jZSkuCiAgICAgX05QTl9SZXRhaW5PYmplY3Qo
b2JqZWN0KTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIGZvcmdldFY4T2JqZWN0Rm9yTlBPYmpl
Y3QoTlBPYmplY3QqIG9iamVjdCkKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gc3RhdGljTlBPYmplY3RNYXAoKS5nZXQob2JqZWN0KTsKICAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICAgICAgVjhE
T01XcmFwcGVyOjpjbGVhckRPTVdyYXBwZXIod3JhcHBlciwgbnBPYmplY3RUeXBlSW5mbygpKTsK
KyAgICAgICAgVjhET01XcmFwcGVyOjpjbGVhck5hdGl2ZUluZm8od3JhcHBlciwgbnBPYmplY3RU
eXBlSW5mbygpKTsKICAgICAgICAgc3RhdGljTlBPYmplY3RNYXAoKS5yZW1vdmUob2JqZWN0LCB3
cmFwcGVyKTsKICAgICAgICAgd3JhcHBlci5EaXNwb3NlKCk7CiAgICAgICAgIHdyYXBwZXIuQ2xl
YXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggZWU1M2IyMDU2MDJmYzNkNmRiMDRlZTVlYTg0NTFhYmE1ZGJl
ODU3Mi4uNDBiNjY4OWYxYWU4NTdkNmI2MWYzZjdlNTVjMzEzNzZkYjI4MDYyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRp
YWxpemVDb250ZXh0SWZOZWVkZWQoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKFBhc3NSZWZQdHI8V29ya2VyQ29udGV4
dD4obV93b3JrZXJDb250ZXh0KSwgY29udGV4dFR5cGUsIGpzV29ya2VyQ29udGV4dCk7CisgICAg
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFdvcmtl
ckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCksIGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRleHQp
OwogCiAgICAgLy8gSW5zZXJ0IHRoZSBvYmplY3QgaW5zdGFuY2UgYXMgdGhlIHByb3RvdHlwZSBv
ZiB0aGUgc2hhZG93IG9iamVjdC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbE9i
amVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobV9jb250ZXh0LT5HbG9iYWwoKS0+
R2V0UHJvdG90eXBlKCkpOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KCkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpD
b250ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwg
PSBjb250ZXh0LT5HbG9iYWwoKTsKLSAgICBnbG9iYWwgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERP
TVdyYXBwZXIoVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0ZSgpLCBnbG9iYWwpOworICAgIGds
b2JhbCA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFdvcmtlckNvbnRl
eHQ6OkdldFRlbXBsYXRlKCkpOwogICAgIC8vIFJldHVybiAwIGlmIHRoZSBjdXJyZW50IGV4ZWN1
dGluZyBjb250ZXh0IGlzIG5vdCB0aGUgd29ya2VyIGNvbnRleHQuCiAgICAgaWYgKGdsb2JhbC5J
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCmluZGV4IGZiZDZm
NzY5MzcyYmQ4YmViNzBjZmMzZjc0NzZlNzBiYmJhMmMwMjQuLmEzZmVmNDU3ZTkwNDk2OWEwZGNi
MDhkMDVhNGE1NGU5MzFmODk2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKQEAgLTc2LDcgKzc2LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW4KICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0
ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5z
Zm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGJ1ZmZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFw
cGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGJ1ZmZl
ci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZm
ZXJWaWV3Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJh
eUJ1ZmZlclZpZXdDdXN0b20uaAppbmRleCBmOWJlYjM5ZTRlM2U5ZmNmOTkxMzhhN2U3MzcwYzBh
OTM2ZmI4ZDA3Li5hMmYxOTI4NjBhNDcwNTcxOTU0NDRhZmZkMTVlZDZjZDI4YTM2YmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZp
ZXdDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJh
eUJ1ZmZlclZpZXdDdXN0b20uaApAQCAtNTUsNyArNTUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd3JhcEFycmF5QnVmZmVyVmlldyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXcmFwcGVy
VHlwZQogICAgIGlmIChoYXNJbmRleGVyKQogICAgICAgICBhcmdzLkhvbGRlcigpLT5TZXRJbmRl
eGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoYXJyYXkuZ2V0KCktPmJhc2VBZGRyZXNz
KCksIGFycmF5VHlwZSwgYXJyYXkuZ2V0KCktPmxlbmd0aCgpKTsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIo
YXJyYXkucmVsZWFzZSgpLCB0eXBlLCB3cmFwcGVyKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIpOwogICAgIHdyYXBwZXJIYW5k
bGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CkBAIC0yMTQsNyAr
MjE0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdFdlYkdMQXJyYXkoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgV3JhcHBlclR5cGUKICAgICB9CiAKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBw
ZXIoYXJyYXkucmVsZWFzZSgpLCB0eXBlLCB3cmFwcGVyKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIpOwogICAgIHdyYXBwZXJI
YW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0
Q3VzdG9tLmNwcAppbmRleCA2ZjRmZTI4YTY3YzJhY2RhOGFlNGVmZTM2NDdlZDZhNDkxNmUwNDlk
Li44MGEzMmJhZGIxNTk0NzdkY2ZkNDJmNjA3YjE3ODQwODlkZWI4OGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1
c3RvbS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9D
b250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWUKICAgICAK
ICAgICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRo
ZSBhdWRpbyBjb250ZXh0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFy
Z3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGF1ZGlvQ29u
dGV4dC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGF1ZGlvQ29udGV4dC5yZWxlYXNlKCksICZpbmZvLCB3cmFw
cGVyKTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAppbmRl
eCBlOWEwYWFkOTYxMzZmMWU3Njk5ODIzZjMzYTRiZWMwY2Y1MzQ3YTQ0Li4yYzkwN2QwZTY3MDMx
ODE3YTRkOWM1YzliNjAxYTUyM2ZlNDRjMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgUmVmUHRyPERPTUZvcm1EYXRh
PiBkb21Gb3JtRGF0YSA9IERPTUZvcm1EYXRhOjpjcmVhdGUoZm9ybSk7CiAKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBl
cjo6Y3JlYXRlRE9NV3JhcHBlcihkb21Gb3JtRGF0YS5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRvbUZvcm1E
YXRhLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcAppbmRleCA4NGM2Njg1MzJiZjg4ZjI1Yzg4NTIzYzU3Njk3MjAwOGYyZTY3
Y2VjLi4wYmE5MzRhNTliYzA2Yzg2YmE2NjhjZTc1NWNkNTcyN2IzOTkwM2NiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0
VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmV2ZW50QWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERP
TVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJ
blByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9s
ZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIApAQCAtMTY3
LDcgKzE2Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nl
c3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAKIHZvaWQgVjhET01XaW5kb3c6
OmV2ZW50QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01X
cmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRl
ci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzYyLDcgKzM2Miw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6d2Via2l0UG9zdE1lc3NhZ2VDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnRv
U3RyaW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5ET01XaW5kb3cudG9TdHJpbmcoKSIpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gZG9tV3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRv
dzo6R2V0VGVtcGxhdGUoKSwgYXJncy5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gZG9tV3JhcHBlciA9IGFyZ3MuVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoZG9tV3JhcHBlci5Jc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBhcmdzLlRoaXMoKS0+T2JqZWN0UHJvdG9Ub1N0cmluZygpOwog
ICAgIHJldHVybiBkb21XcmFwcGVyLT5PYmplY3RQcm90b1RvU3RyaW5nKCk7CkBAIC01MzUsNyAr
NTM1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRJbnRlcnZhbENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogYm9vbCBWOERPTVdpbmRvdzo6bmFt
ZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6
OlZhbHVlPiBrZXksIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+KQog
ewotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gVjhET01XcmFwcGVyOjpsb29r
dXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBob3N0KTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmICh3aW5kb3cuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyB0aGUgZnJhbWUgaXMgZ29uZS4KIApAQCAt
NTY4LDcgKzU2OCw3IEBAIGJvb2wgVjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjayh2ODo6
TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWCiAKIGJvb2wgVjhET01XaW5k
b3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1aW50
MzJfdCBpbmRleCwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4pCiB7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6Omxvb2t1
cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGhvc3QpOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKHdpbmRvdy5Jc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjEwLDcgKzYxMCw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KERPTVdpbmRvdyogd2luZG93LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29uCiAgICAgLy8gbmVjZXNzYXJpbHkgdGhlIGZpcnN0IGdsb2JhbCBvYmpl
Y3QgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRE9NV2luZG93LgogICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGN1cnJlbnRDb250ZXh0ID0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGN1cnJlbnRHbG9iYWwgPSBjdXJyZW50Q29udGV4dC0+R2xv
YmFsKCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gVjhET01X
cmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBjdXJy
ZW50R2xvYmFsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBj
dXJyZW50R2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpH
ZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKSB7CiAgICAg
ICAgIGlmIChWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93V3JhcHBlcikgPT0gd2luZG93KQog
ICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRHbG9iYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggYjEwODBh
MzRjZDlhZTliZGUzZDMzOTNjNTE1NWQ4M2M0M2RiYTNjMC4uZGRhNjQxOGEwZTE5NjcwNjk3YjBk
YmVhM2VhZDkzOWQ3NDJkOGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJgogICAgICAgICAvLyAnbmV3IERhdGFWaWV3KCknIGFuZCB0aGUg
Y2FsbCB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgY2FjaGVkIERhdGFWaWV3IG9iamVjdC4KICAgICAg
ICAgUmVmUHRyPERhdGFWaWV3PiBkYXRhVmlldyA9IERhdGFWaWV3OjpjcmVhdGUoMCk7CiAgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAg
ICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihkYXRhVmlldy5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyKTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihkYXRhVmlldy5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CiAgICAgfQogICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSB8fCAhVjhBcnJh
eUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA4
ZWRlNzA3MzhjYjg3NDYyYWI5NjE4NTYxMDdiZDkyMzliYTgxYWI3Li5mMWUzNmQ2OGIzZGQ0OGY2
YTkyMWQ0MTE0YjE4NTM0MjkwNzE5OTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTc2LDcg
Kzc2LDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFk
b3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKICAgICBpZiAoc2hhZG93LklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwogICAgIHNoYWRvdy0+
U2V0UHJvdG90eXBlKHdyYXBwZXIpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3
cmFwcGVyLCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8sIGltcGwpOworICAgIFY4RE9NV3JhcHBlcjo6
c2V0TmF0aXZlSW5mbyh3cmFwcGVyLCAmVjhIVE1MRG9jdW1lbnQ6OmluZm8sIGltcGwpOwogICAg
IHJldHVybiBzaGFkb3c7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3Bw
CmluZGV4IGNmYjk3NmZkNzc2ODNjYWU5ZmQwMTBjYjUzM2E5OTEyYzhjYzQwMjEuLjMyNWMzNWZl
Njc5MGM1MjdkNTIwNWM4ZmE0ZGRkMzIwMzA2NTI4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVu
dENvbnN0cnVjdG9yLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
ZwogCiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVu
dDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVudCwgb3B0aW9uYWxXaWR0aCwgb3B0aW9u
YWxIZWlnaHQpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9s
ZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltYWdlLnJlbGVhc2Uo
KSwgJlY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyKTsKKyAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltYWdlLnJlbGVhc2UoKSwg
JlY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyKTsKICAgICByZXR1
cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggM2EwYjI5YjUx
ZjcxYTMyZDEwODVhY2UyOWJmMjdhYWI4OGM5MDY4ZS4uMWYxODJlNzM5NjdhNTRjM2Y0MjJjNDU0
MjlkYmFkZTgwODg2MWM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlSW5qZWN0ZWRTY3JpcHRI
b3N0VjhXcmFwcGVyKEluamVjdGVkU2NyaXB0SG9zCiAgICAgICAgIC8vIEF2b2lkIHNldHRpbmcg
dGhlIHdyYXBwZXIgaWYgYWxsb2NhdGlvbiBmYWlsZWQuCiAgICAgICAgIHJldHVybiB2ODo6TG9j
YWw8djg6Ok9iamVjdD4oKTsKICAgICB9Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVy
KGluc3RhbmNlLCAmVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmluZm8sIGhvc3QpOworICAgIFY4RE9N
V3JhcHBlcjo6c2V0TmF0aXZlSW5mbyhpbnN0YW5jZSwgJlY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojpp
bmZvLCBob3N0KTsKICAgICAvLyBDcmVhdGUgYSB3ZWFrIHJlZmVyZW5jZSB0byB0aGUgdjggd3Jh
cHBlciBvZiBJbnNwZWN0b3JCYWNrZW5kIHRvIGRlcmVmCiAgICAgLy8gSW5zcGVjdG9yQmFja2Vu
ZCB3aGVuIHRoZSB3cmFwcGVyIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgogICAgIGhvc3QtPnJlZigp
OwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nl
c3NJbnNwZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKICAgICBpZiAoZ2xvYmFs
LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93
OjpHZXRUZW1wbGF0ZSgpLCBnbG9iYWwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpH
ZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIEZyYW1lKiBmcmFtZSA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShob2xkZXIp
LT5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggOWIz
ODA5YzMwOGZjYjQ2NGEzNjMyYzFjN2M5YWIwNjE2ZWVmMTBhOC4uZjM3NWNlZTAzMmNiNGQ3MThk
NDk2Yzk5ZWVhM2VjNmVkZDIxNjg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnVDYWxsYmFjayhjb25zdCB2ODoKICAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBl
dmVudFdyYXBwZXIgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSk7Ci0gICAg
aWYgKCFWOE1vdXNlRXZlbnQ6OmluZm8uZXF1YWxzKFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5
cGUoZXZlbnRXcmFwcGVyKSkpCisgICAgaWYgKCFWOE1vdXNlRXZlbnQ6OmluZm8uZXF1YWxzKHRv
V3JhcHBlclR5cGVJbmZvKGV2ZW50V3JhcHBlcikpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogCiAgICAgRXZlbnQqIGV2ZW50ID0gVjhFdmVudDo6dG9OYXRpdmUoZXZlbnRXcmFw
cGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
dGVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRl
bnRDdXN0b20uY3BwCmluZGV4IGY1MmQ3N2MzMzczZDg3MGViNzMzYWI5YTJmM2NjMWZkOTFlMDYw
NDEuLjg2MDc4NzEyZjE3YWJiYzYxY2ZiZTk1NTJlMzFjM2EzYzg1M2M2MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcApA
QCAtNTUsNyArNTUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlbnQ6OmNvbnN0cnVj
dG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgICAgICAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgICAgIFY4
RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBw
ZXIpOworICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwog
ICAgIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlbnQ6
OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgICAg
ICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9N
V3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxl
YXNlKCksICZpbmZvLCB3cmFwcGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwCmluZGV4IDc4MzNlYTRiYzdiMjBhZDNkYTQ1NWNjYzNjOTBmOWEyN2Y5ZjZmMTYuLjk3YWY4
NGQ1ZTQ3ODZiYTBjYzdiNGQ2NjRjMjVhYmI3NTUwMDk2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE0
OCw3ICsxNDgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQWNj
ZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogewogICAgIElOQ19TVEFUUygi
RE9NLkxvY2F0aW9uLnJlbG9hZC5fZ2V0Iik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRp
b246OnJlbG9hZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhM
b2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOExvY2F0aW9uOjpHZXRU
ZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9u
OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAv
LyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQg
c2hvdWxkIHBhc3NlZAogICAgICAgICAvLyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpA
QCAtMTY2LDcgKzE2Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBs
YWNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uTG9jYXRpb24ucmVwbGFjZS5fZ2V0Iik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4
TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6
TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlv
bjo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhM
b2NhdGlvbjo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywg
YW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFs
cmVhZHkKQEAgLTE4NSw3ICsxODUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlv
bjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIElO
Q19TVEFUUygiRE9NLkxvY2F0aW9uLmFzc2lnbi5fZ2V0Iik7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPQogICAgICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBl
cihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1w
dHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90
b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAgICAvLyBkb21haW4gc2VjdXJp
dHkgY2hlY2sgYWxyZWFkeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCmluZGV4IDhiMTFkMzhlMDdm
Y2RmNWQ1NGNkZTBiYmIyYzRkNTc0ZGEyMWU2ZmIuLjY3MTljMGMwNDA3NDVhMjY5MTkyN2JjYjc5
MmVhNDk5ZTEwMzBjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3UKICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlk
ZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MSIsIHRvVjgob2JqLT5wb3J0MSgpLCBhcmdzLkhv
bGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRI
aWRkZW5SZWZlcmVuY2Uod3JhcHBlciwgInBvcnQyIiwgdG9WOChvYmotPnBvcnQyKCksIGFyZ3Mu
SG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0
ZURPTVdyYXBwZXIob2JqLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JqLnJlbGVhc2UoKSwgJmluZm8sIHdy
YXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRl
eCA2ZTViYzU2N2MyZmI3ODY4ZDdhYTY4YjVlZmIyZDBiZGU0MmQ3ZWJlLi40MTNjNmUyZWEwMDdk
ZjQ2Y2MzM2E3YTJkNzk4ZGVkZjk5MDNjZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTEx
OSw3ICsxMTksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRN
ZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbgogICAgIERPTVdpbmRvdyogc291
cmNlQXJnID0gMDsKICAgICBpZiAoYXJnc1s2XS0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGFyZ3NbNl0pOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IFY4RE9N
V3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgd3Jh
cHBlcik7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBlci0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7
CiAgICAgICAgIGlmICghd2luZG93LklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZUFyZyA9
IFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHAKaW5kZXggNWIwOWFlZDkzZjdkYTYxZDM1MjdjNTYxMWFiZjgyZWFmMzljZWUzYS4u
ZjU1YmI3NDNlYjQ5NWQzYjJjMjYzMWJhZWYzMmI3NTZkNmQ4NzYzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXIK
ICAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJh
Y2s6OmNyZWF0ZShhcmcsIGNvbnRleHQsIHdyYXBwZXIpOwogICAgIFJlZlB0cjxNdXRhdGlvbk9i
c2VydmVyPiBvYnNlcnZlciA9IE11dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxl
YXNlKCkpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKG9ic2VydmVyLnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAKaW5kZXggZjJmYTcyN2Nm
OGM4M2JjN2Y2MDA1NTA3NzY2NzMzODE4M2QxNDA5ZS4uMWZjODE0MWE4OTE4YWQwMDMyOTc4YTQw
OThkNWNlYTIxZjg1MTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU2NyaXB0UHJvZmlsZSogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkMKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiAgICAgfQogICAgIGltcGwtPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBl
cihpbnN0YW5jZSwgJlY4U2NyaXB0UHJvZmlsZTo6aW5mbywgaW1wbCk7CisgICAgVjhET01XcmFw
cGVyOjpzZXROYXRpdmVJbmZvKGluc3RhbmNlLCAmVjhTY3JpcHRQcm9maWxlOjppbmZvLCBpbXBs
KTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNw
cAppbmRleCAyMDk2Y2IyNTI4NjI2Y2QxMDk5MWI2ZGNkMWI2Yzg1YTdiZTFmZDE2Li43ZTg0MDU1
YjcwNDU2NjU2OWMxYzhhNjY4ZWNhMGI3OGQyNjliZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVD
dXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNj
cmlwdFByb2ZpbGVOb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0CiAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICB9CiAgICAgaW1wbC0+cmVm
KCk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGluc3RhbmNlLCAmVjhTY3JpcHRQ
cm9maWxlTm9kZTo6aW5mbywgaW1wbCk7CisgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZv
KGluc3RhbmNlLCAmVjhTY3JpcHRQcm9maWxlTm9kZTo6aW5mbywgaW1wbCk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKaW5kZXggNzkyMjViNDI5MTU3MmQ0ZWU4
YTY5ZGY0MDc0NDJmOWMwNzRlZmZmZS4uODUzNWNhNjdjMGI5ZDU2ZGY4NmMyMzE0YmVhMjA2OWRk
N2QwNmM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViS2l0UG9pbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJLaXRQb2ludDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbgogICAgIH0KICAgICBSZWZQdHI8V2ViS2l0UG9pbnQ+IHBvaW50ID0gV2Vi
S2l0UG9pbnQ6OmNyZWF0ZSh4LCB5KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihw
b2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKHBvaW50LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggZjgy
MDY3ODMwYTlkNGFlYWI3ZjYyMTdlYzlkN2E4YTliYzVkZTczMi4uMGE4MDhiZDRmODhkZGFjMjE5
MTdmODhmMjAyMGUzYmJjMWNhMmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtNjEs
NyArNjEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6Y29uc3Ry
dWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndQogICAgIFJlZlB0cjxYTUxIdHRwUmVx
dWVzdD4geG1sSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNl
Y3VyaXR5T3JpZ2luKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFy
Z3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKHhtbEh0dHBS
ZXF1ZXN0LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOworICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoeG1sSHR0cFJlcXVlc3QucmVsZWFzZSgpLCAmaW5mbywg
d3JhcHBlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkJpbmRpbmdzLmNwcAppbmRleCBjNDRkYzQyOWU2ODMyYzEwZWI1MThjYzBiYzJi
N2NhYzUyZTlhNDIwLi5lY2I0ZjlkYzc2NGVmZTQ0NGYxZTMwOTgzNTAwYTcyYTUwMWI0YzgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCkBAIC0yMTEsNyAr
MjExLDcgQEAgc3RhdGljIGJvb2wgZ2V0UmFuZ2VJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYlJh
bmdlKiB3ZWJSYW5nZSkKIAogICAgIFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSByZWludGVycHJl
dF9jYXN0PFY4TlBPYmplY3QqPihvYmplY3QpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
djhPYmplY3QodjhOUE9iamVjdC0+djhPYmplY3QpOwotICAgIGlmICghVjhSYW5nZTo6aW5mby5l
cXVhbHMoVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh2OE9iamVjdCkpKQorICAgIGlmICgh
VjhSYW5nZTo6aW5mby5lcXVhbHModG9XcmFwcGVyVHlwZUluZm8odjhPYmplY3QpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmFuZ2UqIG5hdGl2ZSA9IFY4UmFuZ2U6Okhhc0luc3Rh
bmNlKHY4T2JqZWN0KSA/IFY4UmFuZ2U6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177622</attachid>
            <date>2012-12-04 17:35:19 -0800</date>
            <delta_ts>2012-12-04 17:37:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-104069-20121204173245.patch</filename>
            <type>text/plain</type>
            <size>82811</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM4ODQ3NWIyNjhhODNi
Yjc2MGJiZGVhNWU0MDVmYjQzNGI2ZTlhYi4uZjMxYzIwM2VhNTk3OGFiYWJmMTg4Zjk5NThhZjUx
Yzg5OTFmZDFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxMi0xMi0wNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtWOF0gUmVuYW1lIFY4RE9N
V3JhcHBlciBtZW1iZXIgZnVuY3Rpb25zIHRvIGJlIG1vcmUgZGVzY3JpcHRpdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDA2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBy
ZW5hbWVzLCB0aGlzIHBhdGNoIGFsc28gaW5saW5lIGxvb2t1cERPTVdyYXBwZXIKKyAgICAgICAg
aW50byBpdHMgY2FsbGVycy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIpOgor
ICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0
b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6
CisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChH
ZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUZyYW1lV2l0
aEdsb2JhbE9iamVjdENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9ET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6dG9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmNsZWFyRm9y
TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxs
RE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoVjhET01XcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdyYXBwZXI6OmNsZWFyTmF0aXZlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEluaXRpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGcmFtZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVWOE9iamVjdEZvck5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldFY4T2JqZWN0
Rm9yTlBPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZUNvbnRleHRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1
ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjp3cmFw
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJyYXkp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFja0N1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yU2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6d3JhcEluU2hhZG93
T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluamVjdGVkU2Ny
aXB0SG9zdFY4V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW50ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZW50Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhM
b2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRB
Y2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQWNj
ZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQWNjZXNz
b3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVj
dG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25P
YnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdl
YktpdFBvaW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKworMjAxMi0x
Mi0wNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtWOF0gQ2xl
YW51cCBzdHlsZSBpbiBWOERPTVdyYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNDA2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgYSBudW1iZXIgb2YgZnVuY3Rpb25zIGZy
b20gaW5zaWRlIHRoZSBjbGFzcworICAgICAgICBkZWNsYXJhdGlvbiB0byBiZWxvdyB0aGUgY2xh
c3MgZGVjbGFyYXRpb24uIEkndmUgYWxzbyBpbmxpbmVkCisgICAgICAgIGRvbVdyYXBwZXJUeXBl
IGludG8gZWFjaCBvZiBpdHMgY2FsbGVycyBhbmQgcmVuYW1lZCBhIGZldyBmdW5jdGlvbnMuCisg
ICAgICAgIEEgc3Vic2VxdWVudCBwYXRjaCB3aWxsIGltcHJvdmUgdGhlIG5hbWVzIG9mIHRoZSBy
ZW1haW5pbmcgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEFycmF5cyk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZFByb3BlcnR5T2ZDb2xs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEluZGV4ZWRQcm9wZXJ0eU9mQ29sbGVjdGlv
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVET01XcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuaDoKKyAgICAgICAgKFY4RE9NV3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdyYXBwZXI6OnNldFdyYXBwZXJDbGFzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNsZWFyRE9NV3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5z
cGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnVDYWxsYmFjayk6CisKKzIwMTItMTItMDQg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBbVjhdIFY4RE9NV3Jh
cHBlciBzaG91bGRuJ3Qga25vdyBhYm91dCBOb2RlRmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQwNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBUaGlzIHBhdGNoIGp1c3QgbW92ZXMgdGhpcyBjb2Rl
IGludG8gVjhCaW5kaW5ncy5oLCB3aGljaCBpcyB3aGVyZSB3ZQorICAgICAgICBoYXZlIG91ciBv
dGhlciB0eXBlIGNvbnZlcnNpb24gZnVuY3Rpb25zLiBJdCdzIHRvbyBiYWQgdGhhdCB3ZSBzdGls
bAorICAgICAgICBuZWVkIHRvIHNwZWNpYWwgY2FzZSBOb2RlRmlsdGVyLCBidXQgZml4aW5nIHRo
YXQgaXMgZ29pbmcgdG8gYmUgYSBiaXQKKyAgICAgICAgbW9yZSB3b3JrLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChKU1ZhbHVlVG9O
YXRpdmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b05vZGVGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERPTVdyYXBwZXIpOgorCiAy
MDEyLTEyLTA0ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIHBhcnNlciogbWV0aG9kcyBpbiBDb250YWluZXJOb2RlIHNob3VsZCBub3Qgc3VwcG9ydCBE
b2N1bWVudEZyYWdtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZkN2VhN2VjN2Nk
YjA4YzYyOTYwNWI5MTMwM2FjYTM0NzI1NjI1Y2QuLjIzMWRjYTU5ZWI3OTcxZDMzM2M4ZjdhYThl
ZmI0ZDg0MDdmMTRiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTItMTItMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBbVjhdIENsZWFudXAgc3R5bGUgaW4gVjhET01XcmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQwNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIHNyYy9XZWJCaW5kaW5ncy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmdldFJhbmdlSW1wbCk6CisKIDIwMTItMTItMDQgIFN0ZXBoZW4gV2hpdGUgIDxz
ZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBE
RVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCA3ZGMyMjMwM2I3ZGJhZTM1YTM5OGZlODI2ZTVjOTQ2ODI2ODBkN2I4Li45
NmZjYzA0N2ExODIzYmQ3OWZhZWZmMGY3N2ZkZmEzY2M4NDNiZDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtODA0LDcg
KzgwNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjCiB7CiAgICAgSU5DX1NUQVRTKFwiRE9N
LiRpbnRlcmZhY2VOYW1lLiRmdW5jTmFtZS5fZ2V0XCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoJG5ld1RlbXBsYXRlU3RyaW5nKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CiAg
ICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVy
ZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAg
ICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKQEAgLTgzNSw3ICs4MzUsNyBAQCBz
dWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIKIHN0YXRpYyB2b2lkICR7aW50ZXJm
YWNlTmFtZX1Eb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLiRpbnRlcmZhY2VOYW1lLl9zZXQiKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CiAg
ICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAke2ludGVyZmFj
ZU5hbWV9KiBpbXAgPSAke3Y4SW50ZXJmYWNlTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CkBAIC05
MzEsNyArOTMxLDcgQEAgRU5ECiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAjIHBlcmZv
cm0gbG9va3VwIGZpcnN0CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVO
RCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxv
b2t1cERPTVdyYXBwZXIoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRo
aXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBs
YXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIEVORApAQCAtMTk3MSw3ICsxOTcxLDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBF
TkQKIApAQCAtMjA0OCw3ICsyMDQ4LDcgQEAgRU5ECiAgICAgUmVmUHRyPCR7aW50ZXJmYWNlTmFt
ZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAg
IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTIxODYsNyArMjE4Niw3
IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAotICAgIFY4RE9NV3Jh
cHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJiR7djhJbnRlcmZhY2VOYW1l
fUNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJiR7
djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIApAQCAtMzUwMiwxMiArMzUwMiwxMiBA
QCBFTkQKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3Qo
Y3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29u
dGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1w
dHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQ
cm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1w
bCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVu
dExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAg
IHJldHVybiB3cmFwcGVyOwpAQCAtMzgxMiw3ICszODEyLDcgQEAgc3ViIEpTVmFsdWVUb05hdGl2
ZQogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiTm9kZUZpbHRlciIpIHsKLSAgICAgICAgcmV0
dXJuICJWOERPTVdyYXBwZXI6OndyYXBOYXRpdmVOb2RlRmlsdGVyKCR2YWx1ZSkiOworICAgICAg
ICByZXR1cm4gInRvTm9kZUZpbHRlcigkdmFsdWUpIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUg
ZXEgIk1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRleCBm
ZjNmMTU5MGM4YzA4NTYzNjJjZDNlNWQ3NjJkMDliN2E5YzNiZmY0Li5mN2M0YjRlNzZkNDFmNTU2
OTJlNzY3NTliNWQ5ZDA5OTdmMjZhY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTE1MSwx
MiArMTUxLDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhGbG9hdDY0QXJyYXk6OmNyZWF0
ZVdyYXBwZXIoUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGltCiAgICAgQVNTRVJUKERPTURhdGFT
dG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxBcnJheUJ1ZmZlclZpZXcqPihp
bXBsLmdldCgpKSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KGltcGwuZ2V0KCkpKTsKIAotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVW
OE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3Jl
YXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBw
ZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3Jh
cHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFz
RGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50
KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3Bw
CmluZGV4IDk5YWQ0MWY4ZDgxMzk0Y2U1NzgzMzYzNGQ0ZmNmMWNjZjU0ZmNjMTAuLmYxNzFlMTJm
NTBiNzQyNjUzODhiMDBiNmZlMjY4MmNjOGVkZTdlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVE
T01PYmplY3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcG9zdE1lc3NhZ2VBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEFjdGl2ZURPTU9iamVjdC5wb3N0TWVzc2FnZS5fZ2V0
Iik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2
YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpw
b3N0TWVzc2FnZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4VGVz
dEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJv
dG90eXBlQ2hhaW4oVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBp
ZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5
ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAgICAv
LyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgYwogc3RhdGljIHZvaWQgVGVzdEFjdGl2ZURPTU9iamVjdERvbWFpblNh
ZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uVGVzdEFjdGl2ZURPTU9iamVjdC5fc2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhUZXN0
QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90
b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKCkpOwogICAgIGlm
IChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgVGVzdEFjdGl2ZURPTU9i
amVjdCogaW1wID0gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05hdGl2ZShob2xkZXIpOwpAQCAt
MTgwLDEyICsxODAsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RBY3RpdmVET01P
YmplY3Q6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0QWN0aXYKICAgICBBU1NFUlQoaW1w
bC5nZXQoKSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0
KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0
LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGlt
cGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBw
ZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJI
YW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBw
ZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5k
bGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZv
LCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAg
ICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggZDI2NzEwOTc1MjY4
ZjVjNmIwZTU2MWI1YTkzNDJkY2E2ZjBlYmUyYi4uYjU4MzIzZDI0NWRkNTU1NjQ4NzQ3ZGM5MDNk
MTIzZjk3ZWU3ZWU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBA
IC0xMTQsMTIgKzExNCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdEN1cwogICAgIEFTU0VSVChp
bXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5n
ZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRl
eHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywg
aW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3Jh
cHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
ckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3Jh
cHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhh
bmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAg
ICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBw
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggN2Q2ODczMDdlYjg0
YzAxMzkxZmQ3ZTZkNGQxMTI0MDZiNjYyMTYwNC4uMmM2MDhlMGVlYjk5ODJiOGUxZTM5ZTI1Y2Vj
MTJlZjM4NGE5MGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAt
ODMsNyArODMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndQogICAgIFJlZlB0cjxUZXN0RXZl
bnRDb25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHR5cGUs
IGV2ZW50SW5pdCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdz
LkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihldmVudC5yZWxl
YXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAg
LTE0OCwxMiArMTQ4LDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVuCiAgICAgQVNTRVJUKGlt
cGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdl
dChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4
dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBp
bXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFw
cGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
SGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZvLCB3cmFw
cGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFu
ZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5m
bywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAg
ICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDRjZWIyNWU3MWVhZDIxZDRmNDAyYTZj
ZDk1NjhhNjUzNDczNzE1NDQuLmRlODdjNjlhOTNmYmE2OWVmOWMxYTVlOWMyMGY5ZjZiNzMxN2Q5
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTc3LDEyICsxNzcsMTIgQEAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFdmVudFRhcmdldDo6Y3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPFRlc3RFdmVudFRhcmcKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7CiAgICAgQVNTRVJU
KERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHko
KSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVh
dGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChV
TkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAg
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsK
ICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1h
cmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNw
cAppbmRleCBiYmI5ZmVjZWM4OTAwZTZlZjJlZDM1MWJkMGE4MDQwYzY5M2U4MjEyLi5hMWYwYzVh
Mjk2MzQ2YWVkMDhjODRjMzJmMjRlNTQ5NTczMzdlYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNw
cApAQCAtMTA1LDEyICsxMDUsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFeGNl
cHRpb246OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPgogICAgIEFTU0VS
VChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUp
LT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNv
bnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5m
bywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMo
d3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywg
d3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
ckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwg
JmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUp
CiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDdiZTNkNDE5MzRiNjUzOTgyOWJkMTQ3
MThmMWI5M2FkNDNjZDViMTIuLmE4ZjM3Mjc0NTg4ZTU2ZjU2YTNlNWY4OTNlMmQ1MWUwM2RlYjFl
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJgogICAgIGlmIChlYykKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiAgIGZhaWw6CiAgICAgcmV0dXJuIHNldERPTUV4
Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMzQzLDEyICszNDMsMTIgQEAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RJbnRlcmZhY2U6OmNyZWF0ZVdyYXBwZXIoUGFzc1Jl
ZlB0cjxUZXN0SW50ZXJmYWNlPgogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQo
RE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgp
KTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6
aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0
ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVO
TElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAg
ICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6
Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwog
ICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFy
a0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMDI5MWRlNzZiMzIzN2VmMDUzNTllNDYx
M2JiMDhhZGQ2YTM1ZGM3NS4uMmViMmMxZWJkNGJiZWUyMzBhOTg3YjZmNjRmM2I3Mzk5NzQyMjU5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAt
MTE0LDEyICsxMTQsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGUKICAgICBBU1NFUlQoaW1w
bC5nZXQoKSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0
KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0
LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGlt
cGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBw
ZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJI
YW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBw
ZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5k
bGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZv
LCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAg
ICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDk1NGNjYTdjYzQ3NWY0
OGEzOTIxYTc3Njk2MGRhNTQ5YzFiYzlmNWIuLmJlYTM3OTIyNmYwZmUyNGNlMTA4MGUyMGRjMmZh
ZTY1ODc2ZDExZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTcw
LDcgKzcwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODoKICAgICBpZiAoZWMpCiAgICAgICAg
IGdvdG8gZmFpbDsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLnJl
bGVhc2UoKSwgJlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gd3Jh
cHBlcjsKICAgZmFpbDoKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElz
b2xhdGUoKSk7CkBAIC0xNTIsMTIgKzE1MiwxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0TmFtZQog
ICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50
KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChj
cmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250
ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0
eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFBy
b3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBs
LCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50
TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZjljNTdhYTNlM2JkMjdjMTQ1ZmRiMzE5
MTcyMDc0OTkxNjcwYWQyYy4uZjcyODk4ZGNhOTA2ZGVhNDBhZjk3OWM0N2ZiM2FmYjBkZGI3YWVi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogICAgIFJlZlB0cjxUZXN0Tm9kZT4gaW1wbCA9IFRlc3ROb2RlOjpjcmVhdGUoKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTExMywxMiArMTEzLDEyIEBAIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Tm9kZTo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRy
PFRlc3ROb2RlPiBpbXBsLCB2ODo6CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0Tm9kZShp
bXBsLmdldCgpLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx2
b2lkKj4oc3RhdGljX2Nhc3Q8Tm9kZSo+KGltcGwuZ2V0KCkpKSA9PSBzdGF0aWNfY2FzdDx2b2lk
Kj4oaW1wbC5nZXQoKSkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
VjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8s
IGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9N
V3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgp
KTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBs
LmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
VjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29s
YXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBl
ciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3Jh
cHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKaW5kZXggMWFkMzVkMDMzNzVjMGNhM2I3MmY0YTNiMGM2MTgyMWRkMGE1MWJhOS4uMTY0NmM3
ODRlMjQxM2Q2MzI2ZGIxYzY3NmZmNmEzYjA0YjQ4MTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIyMjIs
NyArMjIyMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPYmo6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBSZWZQdHI8VGVzdE9iaj4g
aW1wbCA9IFRlc3RPYmo6OmNyZWF0ZSh0ZXN0Q2FsbGJhY2spOwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNy
ZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjQwMCwxMiArMjQwMCwxMiBAQCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4VGVzdE9iajo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RPYmo+IGlt
cGwsIHY4OjpIYQogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0
b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlh
dGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIo
Y3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdy
YXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxs
UGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9N
V3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICgh
aGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5k
ZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMGM3OGY3NzJmNjJmZWQwMDJhYjVmZTUwNWYwZjk4YzY2
NjUyNGYxMC4uZTk0Mzg5ZTJmM2Y3NmMzZDdlYjA5Y2RmZGIxMmM3ZGNlZmQ1MGY4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtNTQsNyArNTQs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJy
YXlCdWZmZXIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9s
ZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtNjcs
NyArNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6Y29uc3RydWN0b3IyQ2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0cjxUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVh
dGUoYXJyYXlCdWZmZXJWaWV3KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9
CiAKQEAgLTgwLDcgKzgwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yM0NhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6Y3JlYXRlKGJsb2IpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1w
bC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmlu
Zm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0K
IApAQCAtOTMsNyArOTMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0cjxU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpjcmVhdGUoc3RyaW5nKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9
CiAKQEAgLTE3MywxMiArMTczLDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlCiAgICAgQVNT
RVJUKGltcGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0
ZSktPmdldChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9u
Q29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZp
bmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGll
cyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZv
LCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBs
LCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGlt
ZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4g
d3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKaW5kZXggYjgxNDQxZmIxZDk5MGYwNzcxYmQwZTEwOGZlNDk5NTVhNGM2
M2IxMC4uYjE1ZmZhNGU3ZjY0Mzc3YmE4ZDE2NzU4YjQyNjIxOGMyZDRmYTEwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
QEAgLTIzMyw3ICsyMzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKAogICAgIFJlZlB0cjxU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBpbXBsID0gVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlKGhlbGxvLCBkYXRhLCBtZXNzYWdlUG9ydEFycmF5
VHJhbnNmZXJMaXN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdz
LkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAg
LTI5NiwxMiArMjk2LDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKFBhc3NSCiAgICAgQVNTRVJUKGlt
cGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdl
dChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4
dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBp
bXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFw
cGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
SGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZpbmZvLCB3cmFw
cGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFu
ZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5m
bywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAg
ICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKaW5kZXggMGE4Y2M0
MjQzZDNlYjVmYzlkNjBiZThhZjFkNDIwMDYxMmM1NzcyZC4uZTVjZDRkMjExNTU3MTBjZGFiNzQx
YWNhZTdlOTUxMjc5NDk0YmU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlv
bmFyeS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBT
dHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4mIHZhbHVlKSBjb25zdAogICAgIERPTVdpbmRv
dyogc291cmNlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IFY4
RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwg
d3JhcHBlcik7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gd3JhcHBl
ci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUo
KSk7CiAgICAgICAgIGlmICghd2luZG93LklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9
IFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwogICAgIH0KQEAgLTI2Niw3ICsyNjYsNyBA
QCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPFN0b3JhZ2U+
JiB2YWx1ZSkgY29uc3QKICAgICBTdG9yYWdlKiBzb3VyY2UgPSAwOwogICAgIGlmICh2OFZhbHVl
LT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSk7Ci0gICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gc3RvcmFnZSA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihW
OFN0b3JhZ2U6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHN0b3JhZ2UgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4U3RvcmFnZTo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICghc3RvcmFnZS5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICBzb3VyY2UgPSBWOFN0b3JhZ2U6OnRvTmF0aXZlKHN0b3JhZ2UpOwog
ICAgIH0KQEAgLTMyNyw4ICszMjcsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJp
bmcmIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiB2YWx1ZSkgY29uc3QKICAgICBVaW50OEFycmF5
KiBzb3VyY2UgPSAwOwogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QodjhWYWx1ZSk7Ci0KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBhcnJheSA9IFY4
RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOFVpbnQ4QXJyYXk6OkdldFRlbXBsYXRlKCks
IHdyYXBwZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGFycmF5ID0gd3JhcHBl
ci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFVpbnQ4QXJyYXk6OkdldFRlbXBsYXRl
KCkpOwogICAgICAgICBpZiAoIWFycmF5LklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9
IFY4VWludDhBcnJheTo6dG9OYXRpdmUoYXJyYXkpOwogICAgIH0KQEAgLTM0Niw4ICszNDUsNyBA
QCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPE1lZGlhS2V5
RXJyb3I+JiB2YWx1ZSkgY29uc3QKICAgICBNZWRpYUtleUVycm9yKiBzb3VyY2UgPSAwOwogICAg
IGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSk7Ci0KLSAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBlcnJvciA9IFY4RE9NV3JhcHBlcjo6bG9va3Vw
RE9NV3JhcHBlcihWOE1lZGlhS2V5RXJyb3I6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGVycm9yID0gd3JhcHBlci0+RmluZEluc3RhbmNl
SW5Qcm90b3R5cGVDaGFpbihWOE1lZGlhS2V5RXJyb3I6OkdldFRlbXBsYXRlKCkpOwogICAgICAg
ICBpZiAoIWVycm9yLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4TWVkaWFLZXlF
cnJvcjo6dG9OYXRpdmUoZXJyb3IpOwogICAgIH0KQEAgLTM2OSw3ICszNjcsNyBAQCBib29sIERp
Y3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPFRyYWNrQmFzZT4mIHZhbHVl
KSBjb25zdAogCiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHdpbGwgbmVlZCB0byBiZSBjaGFuZ2Vk
IHNvIGl0IGNhbiBhbHNvIHJldHVybiBhbiBBdWRpb1RyYWNrIG9yIGEgVmlkZW9UcmFjayBvbmNl
CiAgICAgICAgIC8vIHdlIGFkZCB0aGVtLgotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHRyYWNrID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4VGV4dFRyYWNrOjpHZXRU
ZW1wbGF0ZSgpLCB3cmFwcGVyKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0cmFj
ayA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXh0VHJhY2s6Okdl
dFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAoIXRyYWNrLklzRW1wdHkoKSkKICAgICAgICAgICAg
IHNvdXJjZSA9IFY4VGV4dFRyYWNrOjp0b05hdGl2ZSh0cmFjayk7CiAgICAgfQpAQCAtMzg4LDcg
KzM4Niw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mIHZhbHVlKSBjCiAgICAgU3BlZWNoUmVjb2duaXRpb25F
cnJvciogc291cmNlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmplY3QoKSkgewogICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNwZWVjaFJl
Y29nbml0aW9uRXJyb3IgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yOjpHZXRUZW1wbGF0ZSgpLCB3cmFwcGVyKTsKKyAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBzcGVlY2hSZWNvZ25pdGlvbkVycm9yID0gd3JhcHBlci0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFNwZWVjaFJlY29nbml0aW9uRXJyb3I6OkdldFRlbXBs
YXRlKCkpOwogICAgICAgICBpZiAoIXNwZWVjaFJlY29nbml0aW9uRXJyb3IuSXNFbXB0eSgpKQog
ICAgICAgICAgICAgc291cmNlID0gVjhTcGVlY2hSZWNvZ25pdGlvbkVycm9yOjp0b05hdGl2ZShz
cGVlY2hSZWNvZ25pdGlvbkVycm9yKTsKICAgICB9CkBAIC00MDUsNyArNDAzLDcgQEAgYm9vbCBE
aWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdD4mIHZhbHVlKQogICAgIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0KiBzb3VyY2UgPSAw
OwogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSk7
Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc3BlZWNoUmVjb2duaXRpb25SZXN1bHQg
PSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dDo6R2V0VGVtcGxhdGUoKSwgd3JhcHBlcik7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gc3BlZWNoUmVjb2duaXRpb25SZXN1bHQgPSB3cmFwcGVyLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6OkdldFRlbXBsYXRlKCkpOwogICAg
ICAgICBpZiAoIXNwZWVjaFJlY29nbml0aW9uUmVzdWx0LklzRW1wdHkoKSkKICAgICAgICAgICAg
IHNvdXJjZSA9IFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6OnRvTmF0aXZlKHNwZWVjaFJlY29n
bml0aW9uUmVzdWx0KTsKICAgICB9CkBAIC00MjIsNyArNDIwLDcgQEAgYm9vbCBEaWN0aW9uYXJ5
OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExp
c3Q+JiB2YWwKICAgICBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3QqIHNvdXJjZSA9IDA7CiAg
ICAgaWYgKHY4VmFsdWUtPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKTsKLSAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Qg
PSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dExpc3Q6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCA9IHdyYXBwZXItPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q6OkdldFRlbXBs
YXRlKCkpOwogICAgICAgICBpZiAoIXNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdC5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICBzb3VyY2UgPSBWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDo6
dG9OYXRpdmUoc3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRl
eCA2NWU0ODM3ZDQ1MGQ3NzdjNzU0NmY0N2U1YzMwNTdmYjk3OTU0NzEyLi40NDUwODA1MzkyYmY2
NzgyYTNjYmI3MjVhOWNiY2FkYTEyM2YxZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAg
c3RhdGljIEZyYW1lKiByZXRyaWV2ZUZyYW1lV2l0aEdsb2JhbE9iamVjdENoZWNrKHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQKICAgICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBnbG9iYWwgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBw
ZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7CisgICAgZ2xvYmFsID0gZ2xv
YmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0
ZSgpKTsKICAgICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCA5NTlm
OTgyMWJiNWNiZTg2NTYxNTQ4MDczNzZlOWI2ODNmODUyY2YwLi4zOTU2MjQ0ODYwOGQ1NmI0MGJh
N2RmMzQ5MjJkMjY0ZGZjN2Y0N2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRQcm9maWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBTY3JpcHRQcm9maWxl
cjo6dmlzaXRFeHRlcm5hbEFycmF5cyhFeHRlcm5hbEFycmF5VmlzaXRvciogdmlzaXRvcikKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0
KCkpOwogICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKLSAgICAgICAgICAgIGlmICgh
VjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh3cmFwcGVyKS0+aXNTdWJjbGFzcygmVjhBcnJh
eUJ1ZmZlclZpZXc6OmluZm8pKQorICAgICAgICAgICAgaWYgKCF0b1dyYXBwZXJUeXBlSW5mbyh3
cmFwcGVyKS0+aXNTdWJjbGFzcygmVjhBcnJheUJ1ZmZlclZpZXc6OmluZm8pKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fdmlzaXRvci0+dmlzaXRKU0V4dGVybmFsQXJy
YXkoVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHdyYXBwZXIpKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggZjE5OTJmOWJmNGNkZjQx
Njc5MjZiZjU0NTgzNjRjYWFkYWIwZmFhOC4uNWRiZTIxNWNkMWE4MTExZmViZTdlOTU5MmU3MWU2
OTZiNDZjOTliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBA
IC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVjhET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAi
VjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOEVsZW1lbnQuaCIKKyNpbmNsdWRlICJWOE5vZGVG
aWx0ZXJDb25kaXRpb24uaCIKICNpbmNsdWRlICJWOE9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiVjhXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhYUGF0aE5TUmVzb2x2ZXIuaCIK
QEAgLTE0OSw2ICsxNTAsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4QXJyYXkoUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBzdHJpbmdMaXN0LCB2ODo6SXNvbGF0ZSoKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcih2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY2FsbGJhY2spCit7CisgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OmNyZWF0
ZShWOE5vZGVGaWx0ZXJDb25kaXRpb246OmNyZWF0ZShjYWxsYmFjaykpOworfQorCiBpbnQgdG9J
bnQzMih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wmIG9rKQogewogICAgIG9rID0g
dHJ1ZTsKQEAgLTI3Myw3ICsyNzksNyBAQCBET01XaW5kb3cqIHRvRE9NV2luZG93KHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBn
bG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKICAgICBBU1NFUlQoIWdsb2JhbC5Jc0VtcHR5KCkp
OwotICAgIGdsb2JhbCA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRv
dzo6R2V0VGVtcGxhdGUoKSwgZ2xvYmFsKTsKKyAgICBnbG9iYWwgPSBnbG9iYWwtPkZpbmRJbnN0
YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIEFT
U0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2
ZShnbG9iYWwpOwogfQpAQCAtMjgxLDExICsyODcsMTEgQEAgRE9NV2luZG93KiB0b0RPTVdpbmRv
dyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogdG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRl
eHQpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9i
YWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBWOERPTVdy
YXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGdsb2Jh
bCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gZ2xvYmFsLT5G
aW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsK
ICAgICBpZiAoIXdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gVjhET01X
aW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3b3JrZXJX
cmFwcGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4V29ya2VyQ29udGV4dDo6
R2V0VGVtcGxhdGUoKSwgZ2xvYmFsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdvcmtl
cldyYXBwZXIgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhXb3JrZXJD
b250ZXh0OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoIXdvcmtlcldyYXBwZXIuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZSh3b3JrZXJXcmFwcGVy
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5oCmluZGV4IDY5MGZiMDc0MzE5NWIwZWY5ZGNkYTE5ZTg2NDYwMThmOTQw
YTMwMzIuLjQyZDQxMjcwMWY4NzA4OWIyYThjMzdkM2Q3MGIyMGNlZmMwYTY2OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiQmluZGluZ1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhET01Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiVjhET01XcmFwcGVyLmgiCkBAIC0yNjcsNyArMjY4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotCiAgICAgLy8gVmFsaWRhdGVzIHRo
YXQgdGhlIHBhc3NlZCBvYmplY3QgaXMgYSBzZXF1ZW5jZSB0eXBlIHBlciBXZWJJREwgc3BlYwog
ICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTIvV0QtV2ViSURMLTIwMTIwMjA3LyNlcy1z
ZXF1ZW5jZQogICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNlcXVlbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdWludDMyX3QmIGxlbmd0aCkKQEAgLTI5Myw2ICsy
OTMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiB2OFZhbHVlOwogICAg
IH0KIAorICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gdG9Ob2RlRmlsdGVyKHY4OjpIYW5kbGU8
djg6OlZhbHVlPik7CisKICAgICAvLyBDb252ZXJ0IGEgdmFsdWUgdG8gYSAzMi1iaXQgaW50ZWdl
ci4gIFRoZSBjb252ZXJzaW9uIGZhaWxzIGlmIHRoZQogICAgIC8vIHZhbHVlIGNhbm5vdCBiZSBj
b252ZXJ0ZWQgdG8gYW4gaW50ZWdlciBvciBjb252ZXJ0cyB0byBuYW4gb3IgdG8gYW4gaW5maW5p
dHkuCiAgICAgaW50IHRvSW50MzIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBv
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oCmluZGV4IGY3Mzlm
NTBiYzYyYWZhYjg2NmQ3YmYyZmY1MWUxM2M0ZmUzZDIwODIuLjUzOTg4MDFlNDI3MTI1ZDZjYzVh
YTIwZjU5MzU1MWE1M2M1YWEyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29s
bGVjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIHRlbXBsYXRlPGNsYXNzIENvbGxlY3Rpb24sIGNs
YXNzIEl0ZW1UeXBlPiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkCiB7CiAg
ICAgLy8gRklYTUU6IGFzc2VydCBvYmplY3QgaXMgYSBjb2xsZWN0aW9uIHR5cGUKICAgICBBU1NF
UlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIob2JqZWN0KSk7Ci0gICAgQVNTRVJUKFY4
RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUob2JqZWN0KSAhPSAmVjhOb2RlOjppbmZvKTsKKyAg
ICBBU1NFUlQodG9XcmFwcGVyVHlwZUluZm8ob2JqZWN0KSAhPSAmVjhOb2RlOjppbmZvKTsKICAg
ICBDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gdG9OYXRpdmVDb2xsZWN0aW9uPENvbGxlY3Rpb24+
KG9iamVjdCk7CiAgICAgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZSA9IHRvV2ViQ29yZUF0b21p
Y1N0cmluZ1dpdGhOdWxsQ2hlY2sobmFtZSk7CiAgICAgcmV0dXJuIGdldFY4T2JqZWN0PEl0ZW1U
eXBlPihjb2xsZWN0aW9uLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lKSwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKQEAgLTg1LDcgKzg1LDcgQEAgdGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlvbiwg
Y2xhc3MgSXRlbVR5cGU+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0SW5kZXgKIHsK
ICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoYXQgb2JqZWN0IG11c3QgYmUgYSBjb2xsZWN0aW9uIHR5
cGUuCiAgICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVyKG9iamVjdCkpOwot
ICAgIEFTU0VSVChWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKG9iamVjdCkgIT0gJlY4Tm9k
ZTo6aW5mbyk7CisgICAgQVNTRVJUKHRvV3JhcHBlclR5cGVJbmZvKG9iamVjdCkgIT0gJlY4Tm9k
ZTo6aW5mbyk7CiAgICAgQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IHRvTmF0aXZlQ29sbGVjdGlv
bjxDb2xsZWN0aW9uPihvYmplY3QpOwogICAgIHJldHVybiBnZXRWOE9iamVjdDxJdGVtVHlwZT4o
Y29sbGVjdGlvbi0+aXRlbShpbmRleCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4
IDQyNjg3NDAyNzkwODA3OTkwZmE0M2RkNTNjM2RlOTA2MDBmNjU3YmMuLjMxN2ZkN2NjOTk2OTNi
ZDBlMjUxN2M2ZjZjYjk5YmEwYjFmYWRhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBWOERP
TVdpbmRvd1NoZWxsOjpjbGVhckZvck5hdmlnYXRpb24oKQogICAgIC8vIHdpbGwgYmUgcHJvdGVj
dGVkIGJ5IHRoZSBzZWN1cml0eSBjaGVja3Mgb24gdGhlIERPTVdpbmRvdyB3cmFwcGVyLgogICAg
IGNsZWFyRG9jdW1lbnRQcm9wZXJ0eSgpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
aW5kb3dXcmFwcGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93
OjpHZXRUZW1wbGF0ZSgpLCBtX2dsb2JhbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3aW5kb3dXcmFwcGVyID0gbV9nbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIEFTU0VSVCghd2luZG93V3JhcHBl
ci5Jc0VtcHR5KCkpOwogICAgIHdpbmRvd1dyYXBwZXItPlR1cm5PbkFjY2Vzc0NoZWNrKCk7CiAg
ICAgbV9jb250ZXh0LT5EZXRhY2hHbG9iYWwoKTsKQEAgLTMxNiw3ICszMTYsNyBAQCBib29sIFY4
RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3coKQogCiAgICAgVjhET01XaW5kb3c6Omlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3aW5kb3dXcmFwcGVyLCB3aW5kb3cpOwogCi0gICAg
VjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
d2luZG93V3JhcHBlci0+R2V0UHJvdG90eXBlKCkpLCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRv
dyk7CisgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3Qod2luZG93V3JhcHBlci0+R2V0UHJvdG90eXBlKCkpLCAmVjhET01XaW5kb3c6Omlu
Zm8sIHdpbmRvdyk7CiAKICAgICAvLyBJbnN0YWxsIHRoZSB3aW5kb3dXcmFwcGVyIGFzIHRoZSBw
cm90b3R5cGUgb2YgdGhlIGlubmVyR2xvYmFsT2JqZWN0LgogICAgIC8vIFRoZSBmdWxsIHN0cnVj
dHVyZSBvZiB0aGUgZ2xvYmFsIG9iamVjdCBpcyBhcyBmb2xsb3dzOgpAQCAtMzMyLDkgKzMzMiw5
IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdygpCiAgICAgLy8gICAg
ICAgSmF2YVNjcmlwdCBvYmplY3QuCiAgICAgLy8KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGlubmVyR2xvYmFsT2JqZWN0ID0gdG9Jbm5lckdsb2JhbE9iamVjdChtX2NvbnRleHQuZ2V0KCkp
OwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihpbm5lckdsb2JhbE9iamVjdCwgJlY4
RE9NV2luZG93OjppbmZvLCB3aW5kb3cpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5m
byhpbm5lckdsb2JhbE9iamVjdCwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3cpOwogICAgIGlu
bmVyR2xvYmFsT2JqZWN0LT5TZXRQcm90b3R5cGUod2luZG93V3JhcHBlcik7Ci0gICAgVjhET01X
cmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKFBhc3NSZWZQdHI8RE9NV2luZG93Pih3aW5kb3cpLCAm
VjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dyYXBwZXIpOworICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksICZW
OERPTVdpbmRvdzo6aW5mbywgd2luZG93V3JhcHBlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDg2Y2Zi
NTNjZTZlOWEwYmM3YTlmMTZlODRkMmQ1MWQyMDQwMGFmNzEuLjI5Y2Q0OTc0OGJiMmI1MjUzM2Nj
N2VhN2Y4MjNhOGYxMzZkMjFjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcApAQCAtMTA0LDM5ICsxMDQsMTcgQEAgdm9pZCBWOERPTVdyYXBwZXI6OnNl
dE5hbWVkSGlkZGVuUmVmZXJlbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcGFyZW50LCBjb25z
dAogICAgIHBhcmVudC0+U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRl
blJlZmVyZW5jZU5hbWUobmFtZSwgc3RybGVuKG5hbWUpKSwgY2hpbGQpOwogfQogCi1XcmFwcGVy
VHlwZUluZm8qIFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QpCi17Ci0gICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVy
KG9iamVjdCkpOwotICAgIHJldHVybiB0b1dyYXBwZXJUeXBlSW5mbyhvYmplY3QpOwotfQotCi1Q
YXNzUmVmUHRyPE5vZGVGaWx0ZXI+IFY4RE9NV3JhcHBlcjo6d3JhcE5hdGl2ZU5vZGVGaWx0ZXIo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGZpbHRlcikKLXsKLSAgICAvLyBBIE5vZGVGaWx0ZXIgaXMg
dXNlZCB3aGVuIHdhbGtpbmcgdGhyb3VnaCBhIERPTSB0cmVlIG9yIGl0ZXJhdGluZyB0cmVlCi0g
ICAgLy8gbm9kZXMuCi0gICAgLy8gRklYTUU6IHdlIG1heSB3YW50IHRvIGNhY2hlIE5vZGVGaWx0
ZXJDb25kaXRpb24gYW5kIE5vZGVGaWx0ZXIKLSAgICAvLyBvYmplY3QsIGJ1dCBpdCBpcyBtaW5v
ci4KLSAgICAvLyBOb2RlRmlsdGVyIGlzIHBhc3NlZCB0byBOb2RlSXRlcmF0b3IgdGhhdCBoYXMg
YSByZWYgY291bnRlZCBwb2ludGVyCi0gICAgLy8gdG8gTm9kZUZpbHRlci4gTm9kZUZpbHRlciBo
YXMgYSByZWYgY291bnRlZCBwb2ludGVyIHRvIE5vZGVGaWx0ZXJDb25kaXRpb24uCi0gICAgLy8g
SW4gTm9kZUZpbHRlckNvbmRpdGlvbiwgZmlsdGVyIG9iamVjdCBpcyBwZXJzaXN0ZWQgaW4gaXRz
IGNvbnN0cnVjdG9yLAotICAgIC8vIGFuZCBkaXNwb3NlZCBpbiBpdHMgZGVzdHJ1Y3Rvci4KLSAg
ICByZXR1cm4gTm9kZUZpbHRlcjo6Y3JlYXRlKFY4Tm9kZUZpbHRlckNvbmRpdGlvbjo6Y3JlYXRl
KGZpbHRlcikpOwotfQotCi12ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjppbnN0
YW50aWF0ZVY4T2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCBX
cmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGltcGwpCit2ODo6TG9jYWw8djg6Ok9iamVjdD4g
VjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCBXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGltcGwpCiB7CiAgICAgVjhX
cmFwcGVySW5zdGFudGlhdGlvblNjb3BlIHNjb3BlKGNyZWF0aW9uQ29udGV4dCk7CiAKICAgICBW
OFBlckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmZyb20o
c2NvcGUuY29udGV4dCgpKTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFuY2UgPSBw
ZXJDb250ZXh0RGF0YSA/IHBlckNvbnRleHREYXRhLT5jcmVhdGVXcmFwcGVyRnJvbUNhY2hlKHR5
cGUpIDogVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UodHlwZS0+Z2V0VGVtcGxhdGUo
KS0+R2V0RnVuY3Rpb24oKSk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBw
ZXJDb250ZXh0RGF0YSA/IHBlckNvbnRleHREYXRhLT5jcmVhdGVXcmFwcGVyRnJvbUNhY2hlKHR5
cGUpIDogVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UodHlwZS0+Z2V0VGVtcGxhdGUo
KS0+R2V0RnVuY3Rpb24oKSk7CiAKLSAgICAvLyBBdm9pZCBzZXR0aW5nIHRoZSBET00gd3JhcHBl
ciBmb3IgZmFpbGVkIGFsbG9jYXRpb25zLgotICAgIGlmIChpbnN0YW5jZS5Jc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICBpZiAodHlwZSA9PSAmVjhIVE1MRG9jdW1lbnQ6
OmluZm8gJiYgIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICB3cmFwcGVyID0gVjhIVE1MRG9j
dW1lbnQ6OndyYXBJblNoYWRvd09iamVjdCh3cmFwcGVyLCBzdGF0aWNfY2FzdDxOb2RlKj4oaW1w
bCkpOwogCi0gICAgaWYgKHR5cGUgPT0gJlY4SFRNTERvY3VtZW50OjppbmZvKQotICAgICAgICBp
bnN0YW5jZSA9IFY4SFRNTERvY3VtZW50Ojp3cmFwSW5TaGFkb3dPYmplY3QoaW5zdGFuY2UsIHN0
YXRpY19jYXN0PE5vZGUqPihpbXBsKSk7Ci0gICAgcmV0dXJuIGluc3RhbmNlOworICAgIHJldHVy
biB3cmFwcGVyOwogfQogCiBzdGF0aWMgYm9vbCBoYXNJbnRlcm5hbEZpZWxkKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTE2NywxMSArMTQ1LDExIEBAIGJvb2wgVjhET01XcmFwcGVy
Ojppc1dyYXBwZXJPZlR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBXcmFwcGVyVHlw
ZUluZm8qCiAgICAgaWYgKCFoYXNJbnRlcm5hbEZpZWxkKHZhbHVlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKLSAgICBBU1NFUlQob2JqZWN0LT5JbnRlcm5hbEZp
ZWxkQ291bnQoKSA+PSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICBB
U1NFUlQob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3Jh
cHBlck9iamVjdEluZGV4KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisgICAgQVNTRVJUKHdyYXBwZXIt
PkludGVybmFsRmllbGRDb3VudCgpID49IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQpOworICAgIEFTU0VSVCh3cmFwcGVyLT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZp
ZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CiAKLSAgICBXcmFwcGVyVHlwZUluZm8qIHR5
cGVJbmZvID0gc3RhdGljX2Nhc3Q8V3JhcHBlclR5cGVJbmZvKj4ob2JqZWN0LT5HZXRBbGlnbmVk
UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRleCkpOworICAgIFdy
YXBwZXJUeXBlSW5mbyogdHlwZUluZm8gPSBzdGF0aWNfY2FzdDxXcmFwcGVyVHlwZUluZm8qPih3
cmFwcGVyLT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5
cGVJbmRleCkpOwogICAgIHJldHVybiB0eXBlSW5mbyA9PSB0eXBlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCmluZGV4IDE4Y2M3YWJlZjNkMGFiOTQ1NWFl
NGIwMzlmNjBiNDIzNGU0ZDYzNGUuLjkwMTVhMDM0MmQ4NTZiZjE2MWQ4ZDE1N2Y3Yzg4NWQxYjVj
ZjAyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC0z
NSw3ICszNSw2IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogI2luY2x1
ZGUgIlY4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3dTaGVs
bC5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCkBAIC00NywxMyArNDYsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBET01XaW5kb3c7Ci0gICAgY2xhc3MgRXZlbnRU
YXJnZXQ7Ci0gICAgY2xhc3MgRnJhbWU7Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBWOFBl
ckNvbnRleHREYXRhOwotICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7Ci0KICAgICBlbnVtIExpc3Rl
bmVyTG9va3VwVHlwZSB7CiAgICAgICAgIExpc3RlbmVyRmluZE9ubHksCiAgICAgICAgIExpc3Rl
bmVyRmluZE9yQ3JlYXRlLApAQCAtNjYsNjEgKzU4LDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgc3RhdGljIGJvb2wgbWF5YmVET01XcmFwcGVyKHY4OjpIYW5kbGU8djg6OlZhbHVl
Pik7CiAjZW5kaWYKIAotICAgICAgICBzdGF0aWMgdm9pZCBzZXRET01XcmFwcGVyKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gb2JqZWN0LCBXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIGltcGwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvYmplY3QtPkludGVybmFsRmllbGRDb3Vu
dCgpID49IDIpOwotICAgICAgICAgICAgQVNTRVJUKGltcGwpOwotICAgICAgICAgICAgQVNTRVJU
KHR5cGUpOwotICAgICAgICAgICAgb2JqZWN0LT5TZXRBbGlnbmVkUG9pbnRlckluSW50ZXJuYWxG
aWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCwgaW1wbCk7Ci0gICAgICAgICAgICBvYmplY3Qt
PlNldEFsaWduZWRQb2ludGVySW5JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRleCwg
dHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBjbGVhckRPTVdyYXBwZXIo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkg
Pj0gMik7Ci0gICAgICAgICAgICBBU1NFUlQodHlwZSk7Ci0gICAgICAgICAgICBvYmplY3QtPlNl
dEFsaWduZWRQb2ludGVySW5JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRleCwgdHlw
ZSk7Ci0gICAgICAgICAgICBvYmplY3QtPlNldEFsaWduZWRQb2ludGVySW5JbnRlcm5hbEZpZWxk
KHY4RE9NV3JhcHBlck9iamVjdEluZGV4LCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxvb2t1cERPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QuSXNFbXB0eSgp
ID8gb2JqZWN0IDogb2JqZWN0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKGZ1bmN0aW9u
VGVtcGxhdGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyog
ZG9tV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7Ci0KLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgYm9vbCBpc0F0dHJpYnV0ZSwgTGlzdGVuZXJMb29rdXBUeXBlIGxvb2t1
cCk7Ci0KLSAgICAgICAgLy8gV3JhcCBKUyBub2RlIGZpbHRlciBpbiBDKysuCi0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHdyYXBOYXRpdmVOb2RlRmlsdGVyKHY4OjpIYW5k
bGU8djg6OlZhbHVlPik7CisgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3Jl
YXRlV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgV3JhcHBl
clR5cGVJbmZvKiwgdm9pZCopOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBjcmVhdGVET01XcmFwcGVyKFBh
c3NSZWZQdHI8VD4sIFdyYXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4
OjpJc29sYXRlKiA9IDApOworICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IGFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4sIFdyYXBw
ZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiA9IDApOwor
ICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+LCBXcmFwcGVyVHlwZUluZm8qLCB2b2lkKik7CisgICAgICAgIHN0YXRpYyBpbmxpbmUg
dm9pZCBjbGVhck5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgV3JhcHBlclR5cGVJ
bmZvKik7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIHByb2JhYmx5
IG1vdmUgdG8gVjhFdmVudExpc3RlbmVyTGlzdC5oCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGJv
b2wgaXNBdHRyaWJ1dGUsIExpc3RlbmVyTG9va3VwVHlwZSk7CiAKLSAgICAgICAgLy8gQ2hlY2sg
d2hldGhlciBhIFY4IHZhbHVlIGlzIGEgd3JhcHBlciBvZiB0eXBlIHxjbGFzc1R5cGV8LgogICAg
ICAgICBzdGF0aWMgYm9vbCBpc1dyYXBwZXJPZlR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBX
cmFwcGVyVHlwZUluZm8qKTsKIAorICAgICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgZnVuY3Rp
b24gaW4gVjhET01XcmFwcGVyPwogICAgICAgICBzdGF0aWMgdm9pZCBzZXROYW1lZEhpZGRlblJl
ZmVyZW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHBhcmVudCwgY29uc3QgY2hhciogbmFtZSwg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoaWxkKTsKIAotICAgICAgICBzdGF0aWMgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGluc3RhbnRpYXRlVjhPYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqKTsKLQogICAgIHByaXZhdGU6
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJDbGFzcyh2b2lkKiwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKLSAgICAgICAgewotICAgICAgICAgICAgd3JhcHBlci5T
ZXRXcmFwcGVyQ2xhc3NJZCh2OERPTU9iamVjdENsYXNzSWQpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckNsYXNzKE5vZGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICB3cmFwcGVyLlNldFdyYXBw
ZXJDbGFzc0lkKHY4RE9NTm9kZUNsYXNzSWQpOwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2
b2lkIHNldFdyYXBwZXJDbGFzcyh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlcikgeyB3cmFwcGVyLlNldFdyYXBwZXJDbGFzc0lkKHY4RE9NT2JqZWN0Q2xhc3NJZCk7IH0K
KyAgICAgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckNsYXNzKE5vZGUqLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVyKSB7IHdyYXBwZXIuU2V0V3JhcHBlckNsYXNzSWQodjhET01O
b2RlQ2xhc3NJZCk7IH0KICAgICB9OwogCisgICAgaW5saW5lIHZvaWQgVjhET01XcmFwcGVyOjpz
ZXROYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgV3JhcHBlclR5cGVJ
bmZvKiB0eXBlLCB2b2lkKiBvYmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQod3JhcHBlci0+
SW50ZXJuYWxGaWVsZENvdW50KCkgPj0gMik7CisgICAgICAgIEFTU0VSVChvYmplY3QpOworICAg
ICAgICBBU1NFUlQodHlwZSk7CisgICAgICAgIHdyYXBwZXItPlNldEFsaWduZWRQb2ludGVySW5J
bnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4LCBvYmplY3QpOworICAgICAgICB3
cmFwcGVyLT5TZXRBbGlnbmVkUG9pbnRlckluSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJUeXBl
SW5kZXgsIHR5cGUpOworICAgIH0KKworICAgIGlubGluZSB2b2lkIFY4RE9NV3JhcHBlcjo6Y2xl
YXJOYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgV3JhcHBlclR5cGVJ
bmZvKiB0eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHdyYXBwZXItPkludGVybmFsRmllbGRD
b3VudCgpID49IDIpOworICAgICAgICBBU1NFUlQodHlwZSk7CisgICAgICAgIHdyYXBwZXItPlNl
dEFsaWduZWRQb2ludGVySW5JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRleCwgdHlw
ZSk7CisgICAgICAgIHdyYXBwZXItPlNldEFsaWduZWRQb2ludGVySW5JbnRlcm5hbEZpZWxkKHY4
RE9NV3JhcHBlck9iamVjdEluZGV4LCAwKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6Y3JlYXRl
RE9NV3JhcHBlcihQYXNzUmVmUHRyPFQ+IG9iamVjdCwgV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAg
IGlubGluZSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBXcmFwcGVyVHlwZUluZm8q
IHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiAgICAgewotICAgICAgICBzZXRET01XcmFwcGVyKHdyYXBwZXIsIHR5cGUsIG9iamVjdC5n
ZXQoKSk7CisgICAgICAgIHNldE5hdGl2ZUluZm8od3JhcHBlciwgdHlwZSwgb2JqZWN0LmdldCgp
KTsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7CiAgICAgICAgIEFTU0VSVCht
YXliZURPTVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOwogICAgICAgICBzZXRXcmFwcGVyQ2xhc3Mo
b2JqZWN0LmdldCgpLCB3cmFwcGVySGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCBjNjlkMTllNTQ3NTljYjBmNTIyZTE3NDczYjc5
MTQ0NzUxMTk2ZDg1Li44NDA1MzBlOTEyNmRiMmQ1MDYxYWQ5MDMyYjdmYmZhNGE4YzExMGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCkBAIC0x
NjksNyArMTY5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAodmFsdWUuSXNJbmRlcGVuZGVudCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZSA9
IFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUod3JhcHBlcik7CisgICAgICAgIFdyYXBwZXJU
eXBlSW5mbyogdHlwZSA9IHRvV3JhcHBlclR5cGVJbmZvKHdyYXBwZXIpOwogICAgICAgICB2b2lk
KiBvYmplY3QgPSB0b05hdGl2ZSh3cmFwcGVyKTsKIAogICAgICAgICAvLyBGSVhNRTogQWJzdHJh
Y3QgdGhpcyBpZiBjYXNjYWRlIGludG8gYSBXcmFwcGVyVHlwZUluZm8gZnVuY3Rpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxpemVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwCmluZGV4IGY4M2Q1MzNh
OGI0NGI5OThkNmEyMzY5NjBhNzdkNDgwYTY1N2E2ODUuLmZhNTlhNDI2MWNjZjhjYjg1Y2VjNmZh
OTRmNTkxYTE5NmVhOGFiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4SW5pdGlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5p
dGlhbGl6ZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBGcmFtZSogZmluZEZyYW1lKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKQogICAg
IFdyYXBwZXJUeXBlSW5mbyogdHlwZSA9IFdyYXBwZXJUeXBlSW5mbzo6dW53cmFwKGRhdGEpOwog
CiAgICAgaWYgKFY4RE9NV2luZG93OjppbmZvLmVxdWFscyh0eXBlKSkgewotICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERP
TVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGhvc3QpOworICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBob3N0LT5GaW5kSW5zdGFuY2VJblBy
b3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICAgICAgaWYgKHdp
bmRvd1dyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJl
dHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93V3JhcHBlciktPmZyYW1lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IGI1YTIxYzBlOGM5MmQ4
NzY2ODg2ZmMxMmQzMTU1NjYyYmNhM2MxNzkuLjlhMGYyNmZkMjVjMGVjMDA2MjAxNWM4ZjA3YjJi
MWE3NDM3Y2RhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3Bw
CkBAIC00MzgsNyArNDM4LDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVY4T2JqZWN0
Rm9yTlBPYmplY3QoTlBPYmplY3QqIG9iamVjdCwgTlBPYmplY3QqIHJvb3QKICAgICBpZiAodmFs
dWUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIodmFsdWUsIG5wT2JqZWN0VHlwZUluZm8oKSwgb2JqZWN0KTsKKyAgICBW
OERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8odmFsdWUsIG5wT2JqZWN0VHlwZUluZm8oKSwgb2Jq
ZWN0KTsKIAogICAgIC8vIEtKUyByZXRhaW5zIHRoZSBvYmplY3QgYXMgcGFydCBvZiBpdHMgd3Jh
cHBlciAoc2VlIEJpbmRpbmdzOjpDSW5zdGFuY2UpLgogICAgIF9OUE5fUmV0YWluT2JqZWN0KG9i
amVjdCk7CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0
KE5QT2JqZWN0KiBvYmplY3QpCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IHN0YXRpY05QT2JqZWN0TWFwKCkuZ2V0KG9iamVjdCk7CiAgICAgaWYgKCF3cmFwcGVyLklz
RW1wdHkoKSkgewogICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgICAgIFY4RE9N
V3JhcHBlcjo6Y2xlYXJET01XcmFwcGVyKHdyYXBwZXIsIG5wT2JqZWN0VHlwZUluZm8oKSk7Cisg
ICAgICAgIFY4RE9NV3JhcHBlcjo6Y2xlYXJOYXRpdmVJbmZvKHdyYXBwZXIsIG5wT2JqZWN0VHlw
ZUluZm8oKSk7CiAgICAgICAgIHN0YXRpY05QT2JqZWN0TWFwKCkucmVtb3ZlKG9iamVjdCwgd3Jh
cHBlcik7CiAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOwogICAgICAgICB3cmFwcGVyLkNsZWFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IGVlNTNiMjA1NjAyZmMzZDZkYjA0ZWU1ZWE4NDUxYWJhNWRiZTg1
NzIuLjQwYjY2ODlmMWFlODU3ZDZiNjFmM2Y3ZTU1YzMxMzc2ZGIyODA2MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0aWFs
aXplQ29udGV4dElmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+
KG1fd29ya2VyQ29udGV4dCksIGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRleHQpOworICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxXb3JrZXJD
b250ZXh0PihtX3dvcmtlckNvbnRleHQpLCBjb250ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0KTsK
IAogICAgIC8vIEluc2VydCB0aGUgb2JqZWN0IGluc3RhbmNlIGFzIHRoZSBwcm90b3R5cGUgb2Yg
dGhlIHNoYWRvdyBvYmplY3QuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWxPYmpl
Y3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1fY29udGV4dC0+R2xvYmFsKCktPkdl
dFByb3RvdHlwZSgpKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
KiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCgpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29u
dGV4dDo6R2V0Q3VycmVudCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0g
Y29udGV4dC0+R2xvYmFsKCk7Ci0gICAgZ2xvYmFsID0gVjhET01XcmFwcGVyOjpsb29rdXBET01X
cmFwcGVyKFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoKSwgZ2xvYmFsKTsKKyAgICBnbG9i
YWwgPSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhXb3JrZXJDb250ZXh0
OjpHZXRUZW1wbGF0ZSgpKTsKICAgICAvLyBSZXR1cm4gMCBpZiB0aGUgY3VycmVudCBleGVjdXRp
bmcgY29udGV4dCBpcyBub3QgdGhlIHdvcmtlciBjb250ZXh0LgogICAgIGlmIChnbG9iYWwuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAppbmRleCBmYmQ2Zjc2
OTM3MmJkOGJlYjcwY2ZjM2Y3NDc2ZTcwYmJiYTJjMDI0Li5hM2ZlZjQ1N2U5MDQ5NjlhMGRjYjA4
ZDA1YTRhNTRlOTMxZjg5NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCkBAIC03Niw3ICs3Niw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVy
bmFsQWxsb2NhdGVkTWVtb3J5KGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAvLyBUcmFuc2Zv
cm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhcnJheS4KICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9N
V3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
cik7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIu
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVy
Vmlld0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmgKaW5kZXggZjliZWIzOWU0ZTNlOWZjZjk5MTM4YTdlNzM3MGMwYTkz
NmZiOGQwNy4uYTJmMTkyODYwYTQ3MDU3MTk1NDQ0YWZmZDE1ZWQ2Y2QyOGEzNmJlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmgKQEAgLTU1LDcgKzU1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdyYXBBcnJheUJ1ZmZlclZpZXcoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgV3JhcHBlclR5
cGUKICAgICBpZiAoaGFzSW5kZXhlcikKICAgICAgICAgYXJncy5Ib2xkZXIoKS0+U2V0SW5kZXhl
ZFByb3BlcnRpZXNUb0V4dGVybmFsQXJyYXlEYXRhKGFycmF5LmdldCgpLT5iYXNlQWRkcmVzcygp
LCBhcnJheVR5cGUsIGFycmF5LmdldCgpLT5sZW5ndGgoKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGFy
cmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlcik7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoYXJyYXkucmVsZWFzZSgpLCB0eXBlLCB3cmFwcGVyKTsKICAgICB3cmFwcGVySGFuZGxl
Lk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQpAQCAtMjE0LDcgKzIx
NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJHTEFycmF5KGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgfQogCiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVy
KGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlcik7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgpLCB0eXBlLCB3cmFwcGVyKTsKICAgICB3cmFwcGVySGFu
ZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1
c3RvbS5jcHAKaW5kZXggNmY0ZmUyOGE2N2MyYWNkYThhZTRlZmUzNjQ3ZWQ2YTQ5MTZlMDQ5ZC4u
ODBhMzJiYWRiMTU5NDc3ZGNmZDQyZjYwN2IxNzg0MDg5ZGViODhlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0
b20uY3BwCkBAIC04NCw3ICs4NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29u
dGV4dDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lCiAgICAgCiAg
ICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUg
YXVkaW8gY29udGV4dC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdz
LkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihhdWRpb0NvbnRl
eHQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihhdWRpb0NvbnRleHQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
cik7CiAgICAgCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXgg
ZTlhMGFhZDk2MTM2ZjFlNzY5OTgyM2YzM2E0YmVjMGNmNTM0N2E0NC4uMmM5MDdkMGU2NzAzMTgx
N2E0ZDljNWM5YjYwMWE1MjNmZTQ0YzAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6Y29uc3RydWN0b3JD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbgogICAgIFJlZlB0cjxET01Gb3JtRGF0YT4g
ZG9tRm9ybURhdGEgPSBET01Gb3JtRGF0YTo6Y3JlYXRlKGZvcm0pOwogCiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7
CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihkb21Gb3JtRGF0
YS5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHAKaW5kZXggODRjNjY4NTMyYmY4OGYyNWM4ODUyM2M1NzY5NzIwMDhmMmU2N2Nl
Yy4uMGJhOTM0YTU5YmMwNmM4NmJhNjY4Y2U3NTVjZDU3MjdiMzk5MDNjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdpbmRvd1NldFRp
bWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01X
cmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRl
ci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKQEAgLTE2Nyw3
ICsxNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmV2ZW50QWNjZXNz
b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogCiB2b2lkIFY4RE9NV2luZG93Ojpl
dmVudEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJv
dG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIu
SXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM2Miw3ICszNjIsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OndlYmtpdFBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0
cmluZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uRE9NV2luZG93LnRvU3RyaW5nKCkiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGRvbVdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6
OkdldFRlbXBsYXRlKCksIGFyZ3MuVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGRvbVdyYXBwZXIuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gYXJncy5UaGlzKCktPk9iamVjdFByb3RvVG9TdHJpbmcoKTsKICAg
ICByZXR1cm4gZG9tV3JhcHBlci0+T2JqZWN0UHJvdG9Ub1N0cmluZygpOwpAQCAtNTM1LDcgKzUz
NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2V0SW50ZXJ2YWxDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAKIGJvb2wgVjhET01XaW5kb3c6Om5hbWVk
U2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4ga2V5LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPikKIHsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IFY4RE9NV3JhcHBlcjo6bG9va3Vw
RE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgaG9zdCk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAod2luZG93LklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gdGhlIGZyYW1lIGlzIGdvbmUuCiAKQEAgLTU2
OCw3ICs1NjgsNyBAQCBib29sIFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2sodjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VgogCiBib29sIFY4RE9NV2luZG93
OjppbmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdWludDMy
X3QgaW5kZXgsIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+KQogewot
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gVjhET01XcmFwcGVyOjpsb29rdXBE
T01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBob3N0KTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IGhvc3QtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmICh3aW5kb3cuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTYxMCw3ICs2MTAsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdpbmRvdywgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbgogICAgIC8vIG5lY2Vzc2FyaWx5IHRoZSBmaXJzdCBnbG9iYWwgb2JqZWN0
IGFzc29jaWF0ZWQgd2l0aCB0aGF0IERPTVdpbmRvdy4KICAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjdXJyZW50Q29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjdXJyZW50R2xvYmFsID0gY3VycmVudENvbnRleHQtPkdsb2Jh
bCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IFY4RE9NV3Jh
cHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgY3VycmVu
dEdsb2JhbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gY3Vy
cmVudEdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0
VGVtcGxhdGUoKSk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkgewogICAgICAg
ICBpZiAoVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpID09IHdpbmRvdykKICAg
ICAgICAgICAgIHJldHVybiBjdXJyZW50R2xvYmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCmluZGV4IGIxMDgwYTM0
Y2Q5YWU5YmRlM2QzMzkzYzUxNTVkODNjNDNkYmEzYzAuLmRkYTY0MThhMGUxOTY3MDY5N2IwZGJl
YTNlYWQ5MzlkNzQyZDhhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYKICAgICAgICAgLy8gJ25ldyBEYXRhVmlldygpJyBhbmQgdGhlIGNh
bGwgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNhY2hlZCBEYXRhVmlldyBvYmplY3QuCiAgICAgICAg
IFJlZlB0cjxEYXRhVmlldz4gZGF0YVZpZXcgPSBEYXRhVmlldzo6Y3JlYXRlKDApOwogICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAg
ICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoZGF0YVZpZXcucmVsZWFzZSgpLCAmaW5m
bywgd3JhcHBlcik7CisgICAgICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoZGF0YVZpZXcucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIH0KICAgICBpZiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgIVY4QXJyYXlC
dWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggOGVk
ZTcwNzM4Y2I4NzQ2MmFiOTYxODU2MTA3YmQ5MjM5YmE4MWFiNy4uZjFlMzZkNjhiM2RkNDhmNmE5
MjFkNDExNGIxODUzNDI5MDcxOTk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC03Niw3ICs3
Niw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOEhUTUxEb2N1bWVudDo6d3JhcEluU2hhZG93
T2JqZWN0KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3CiAgICAgaWYgKHNoYWRvdy5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICBzaGFkb3ctPlNl
dFByb3RvdHlwZSh3cmFwcGVyKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3Jh
cHBlciwgJlY4SFRNTERvY3VtZW50OjppbmZvLCBpbXBsKTsKKyAgICBWOERPTVdyYXBwZXI6OnNl
dE5hdGl2ZUluZm8od3JhcHBlciwgJlY4SFRNTERvY3VtZW50OjppbmZvLCBpbXBsKTsKICAgICBy
ZXR1cm4gc2hhZG93OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApp
bmRleCBjZmI5NzZmZDc3NjgzY2FlOWZkMDEwY2I1MzNhOTkxMmM4Y2M0MDIxLi4zMjVjMzVmZTY3
OTBjNTI3ZDUyMDVjOGZhNGRkZDMyMDMwNjUyODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmcK
IAogICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6
OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIG9wdGlvbmFsV2lkdGgsIG9wdGlvbmFs
SGVpZ2h0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRl
cigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbWFnZS5yZWxlYXNlKCks
ICZWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlcik7CisgICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbWFnZS5yZWxlYXNlKCksICZW
OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlcik7CiAgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDNhMGIyOWI1MWY3
MWEzMmQxMDg1YWNlMjliZjI3YWFiODhjOTA2OGUuLjFmMTgyZTczOTY3YTU0YzNmNDIyYzQ1NDI5
ZGJhZGU4MDg4NjFjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZUluamVjdGVkU2NyaXB0SG9z
dFY4V3JhcHBlcihJbmplY3RlZFNjcmlwdEhvcwogICAgICAgICAvLyBBdm9pZCBzZXR0aW5nIHRo
ZSB3cmFwcGVyIGlmIGFsbG9jYXRpb24gZmFpbGVkLgogICAgICAgICByZXR1cm4gdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+KCk7CiAgICAgfQotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihp
bnN0YW5jZSwgJlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbmZvLCBob3N0KTsKKyAgICBWOERPTVdy
YXBwZXI6OnNldE5hdGl2ZUluZm8oaW5zdGFuY2UsICZWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5m
bywgaG9zdCk7CiAgICAgLy8gQ3JlYXRlIGEgd2VhayByZWZlcmVuY2UgdG8gdGhlIHY4IHdyYXBw
ZXIgb2YgSW5zcGVjdG9yQmFja2VuZCB0byBkZXJlZgogICAgIC8vIEluc3BlY3RvckJhY2tlbmQg
d2hlbiB0aGUgd3JhcHBlciBpcyBnYXJiYWdlIGNvbGxlY3RlZC4KICAgICBob3N0LT5yZWYoKTsK
QEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNz
SW5zcGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgaWYgKGdsb2JhbC5J
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6
R2V0VGVtcGxhdGUoKSwgZ2xvYmFsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0
VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBGcmFtZSogZnJhbWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaG9sZGVyKS0+
ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmluZGV4IDliMzgw
OWMzMDhmY2I0NjRhMzYzMmMxYzdjOWFiMDYxNmVlZjEwYTguLmYzNzVjZWUwMzJjYjRkNzE4ZDQ5
NmM5OWVlYTNlYzZlZGQyMTY4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9t
LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51Q2FsbGJhY2soY29uc3Qgdjg6CiAgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZXZl
bnRXcmFwcGVyID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pOwotICAgIGlm
ICghVjhNb3VzZUV2ZW50OjppbmZvLmVxdWFscyhWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBl
KGV2ZW50V3JhcHBlcikpKQorICAgIGlmICghVjhNb3VzZUV2ZW50OjppbmZvLmVxdWFscyh0b1dy
YXBwZXJUeXBlSW5mbyhldmVudFdyYXBwZXIpKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIAogICAgIEV2ZW50KiBldmVudCA9IFY4RXZlbnQ6OnRvTmF0aXZlKGV2ZW50V3JhcHBl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRl
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50
Q3VzdG9tLmNwcAppbmRleCBmNTJkNzdjMzM3M2Q4NzBlYjczM2FiOWEyZjNjYzFmZDkxZTA2MDQx
Li44NjA3ODcxMmYxN2FiYmM2MWNmYmU5NTUyZTMxYzNhM2M4NTNjNjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgICAgIHJldHVy
biBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERP
TVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
KTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBs
LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAg
ICB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpj
b25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAg
cmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdy
YXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsK
KyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNw
cAppbmRleCA3ODMzZWE0YmM3YjIwYWQzZGE0NTVjY2MzYzkwZjlhMjdmOWY2ZjE2Li45N2FmODRk
NWU0Nzg2YmEwY2M3YjRkNjY0YzI1YWJiNzU1MDA5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDgs
NyArMTQ4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vz
c29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5Mb2NhdGlvbi5yZWxvYWQuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9u
OjpyZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9j
YXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlvbjo6R2V0VGVt
cGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6
R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8g
Y2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNo
b3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKQEAg
LTE2Niw3ICsxNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFj
ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogewogICAgIElOQ19TVEFU
UygiRE9NLkxvY2F0aW9uLnJlcGxhY2UuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExv
Y2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5l
dyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4TG9jYXRpb246
OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9j
YXRpb246OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFu
ZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJl
YWR5CkBAIC0xODUsNyArMTg1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246
OmFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICBJTkNf
U1RBVFMoIkRPTS5Mb2NhdGlvbi5hc3NpZ24uX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KICAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNp
Z25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIo
VjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAppbmRleCA4YjExZDM4ZTA3ZmNk
ZjVkNTRjZGUwYmJiMmM0ZDU3NGRhMjFlNmZiLi42NzE5YzBjMDQwNzQ1YTI2OTE5MjdiY2I3OTJl
YTQ5OWUxMDMwY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRl
blJlZmVyZW5jZSh3cmFwcGVyLCAicG9ydDEiLCB0b1Y4KG9iai0+cG9ydDEoKSwgYXJncy5Ib2xk
ZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlk
ZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdzLkhv
bGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVE
T01XcmFwcGVyKG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFw
cGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXgg
NmU1YmM1NjdjMmZiNzg2OGQ3YWE2OGI1ZWZiMmQwYmRlNDJkN2ViZS4uNDEzYzZlMmVhMDA3ZGY0
NmNjMzNhN2EyZDc5OGRlZGY5OTAzY2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBET01XaW5kb3cqIHNvdXJj
ZUFyZyA9IDA7CiAgICAgaWYgKGFyZ3NbNl0tPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzZdKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdy
YXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIHdyYXBw
ZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZp
bmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwog
ICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2VBcmcgPSBW
OERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwCmluZGV4IDViMDlhZWQ5M2Y3ZGE2MWQzNTI3YzU2MTFhYmY4MmVhZjM5Y2VlM2EuLmY1
NWJiNzQzZWI0OTVkM2IyYzI2MzFiYWVmMzJiNzU2ZDZkODc2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE11
dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyCiAg
ICAgUmVmUHRyPE11dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gVjhNdXRhdGlvbkNhbGxiYWNr
OjpjcmVhdGUoYXJnLCBjb250ZXh0LCB3cmFwcGVyKTsKICAgICBSZWZQdHI8TXV0YXRpb25PYnNl
cnZlcj4gb2JzZXJ2ZXIgPSBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFz
ZSgpKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihvYnNlcnZlci5yZWxl
YXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVj
dFdpdGhXcmFwcGVyKG9ic2VydmVyLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4IGYyZmE3MjdjZjhj
ODNiYzdmNjAwNTUwNzc2NjczMzgxODNkMTQwOWUuLjFmYzgxNDFhODkxOGFkMDAzMjk3OGE0MDk4
ZDVjZWEyMWY4NTE3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNjcmlwdFByb2ZpbGUqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25DCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIH0KICAgICBpbXBsLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIo
aW5zdGFuY2UsICZWOFNjcmlwdFByb2ZpbGU6OmluZm8sIGltcGwpOworICAgIFY4RE9NV3JhcHBl
cjo6c2V0TmF0aXZlSW5mbyhpbnN0YW5jZSwgJlY4U2NyaXB0UHJvZmlsZTo6aW5mbywgaW1wbCk7
CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAK
aW5kZXggMjA5NmNiMjUyODYyNmNkMTA5OTFiNmRjZDFiNmM4NWE3YmUxZmQxNi4uN2U4NDA1NWI3
MDQ1NjY1NjljMWM4YTY2OGVjYTBiNzhkMjY5YmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3Vz
dG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTY3Jp
cHRQcm9maWxlTm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdAogICAgICAg
ICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgfQogICAgIGltcGwtPnJlZigp
OwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihpbnN0YW5jZSwgJlY4U2NyaXB0UHJv
ZmlsZU5vZGU6OmluZm8sIGltcGwpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyhp
bnN0YW5jZSwgJlY4U2NyaXB0UHJvZmlsZU5vZGU6OmluZm8sIGltcGwpOwogICAgIHJldHVybiBp
bnN0YW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCmluZGV4IDc5MjI1YjQyOTE1NzJkNGVlOGE2
OWRmNDA3NDQyZjljMDc0ZWZmZmUuLjg1MzVjYTY3YzBiOWQ1NmRmODZjMjMxNGJlYTIwNjlkZDdk
MDZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YktpdFBvaW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViS2l0UG9pbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qg
djg6OkFyZ3VtZW4KICAgICB9CiAgICAgUmVmUHRyPFdlYktpdFBvaW50PiBwb2ludCA9IFdlYktp
dFBvaW50OjpjcmVhdGUoeCwgeSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIocG9p
bnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihwb2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKICAg
ICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGY4MjA2
NzgzMGE5ZDRhZWFiN2Y2MjE3ZWM5ZDdhOGE5YmM1ZGU3MzIuLjBhODA4YmQ0Zjg4ZGRhYzIxOTE3
Zjg4ZjIwMjBlM2JiYzFjYTJiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVj
dG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3UKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVl
c3Q+IHhtbEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzZWN1
cml0eU9yaWdpbik7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdz
LkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcih4bWxIdHRwUmVx
dWVzdC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKSwgJmluZm8sIHdy
YXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJCaW5kaW5ncy5jcHAKaW5kZXggYzQ0ZGM0MjllNjgzMmMxMGViNTE4Y2MwYmMyYjdj
YWM1MmU5YTQyMC4uZWNiNGY5ZGM3NjRlZmU0NDRmMWUzMDk4MzUwMGE3MmE1MDFiNGM4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcApAQCAtMjExLDcgKzIx
MSw3IEBAIHN0YXRpYyBib29sIGdldFJhbmdlSW1wbChOUE9iamVjdCogb2JqZWN0LCBXZWJSYW5n
ZSogd2ViUmFuZ2UpCiAKICAgICBWOE5QT2JqZWN0KiB2OE5QT2JqZWN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxWOE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4
T2JqZWN0KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAgICBpZiAoIVY4UmFuZ2U6OmluZm8uZXF1
YWxzKFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUodjhPYmplY3QpKSkKKyAgICBpZiAoIVY4
UmFuZ2U6OmluZm8uZXF1YWxzKHRvV3JhcHBlclR5cGVJbmZvKHY4T2JqZWN0KSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFJhbmdlKiBuYXRpdmUgPSBWOFJhbmdlOjpIYXNJbnN0YW5j
ZSh2OE9iamVjdCkgPyBWOFJhbmdlOjp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177625</attachid>
            <date>2012-12-04 17:37:40 -0800</date>
            <delta_ts>2012-12-04 17:37:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-104069-20121204173505.patch</filename>
            <type>text/plain</type>
            <size>69973</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQzZWU5MzhkNjljZDNi
OGFmNTRlZGZkMDlhOTQ1ZGFlM2RiZjM5My4uZjMxYzIwM2VhNTk3OGFiYWJmMTg4Zjk5NThhZjUx
Yzg5OTFmZDFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw5ICsxLDEwMCBAQAogMjAxMi0xMi0wNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFtWOF0gUmVuYW1lIFY4RE9N
V3JhcHBlciBtZW1iZXIgZnVuY3Rpb25zIHRvIGJlIG1vcmUgZGVzY3JpcHRpdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDA2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBy
ZW5hbWVzLCB0aGlzIHBhdGNoIGFsc28gaW5saW5lIGxvb2t1cERPTVdyYXBwZXIKKyAgICAgICAg
aW50byBpdHMgY2FsbGVycy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIpOgor
ICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0
b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6
CisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChH
ZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZUZyYW1lV2l0
aEdsb2JhbE9iamVjdENoZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9ET01XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6dG9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmNsZWFyRm9y
TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxs
RE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoVjhET01XcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdyYXBwZXI6OmNsZWFyTmF0aXZlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEluaXRpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGcmFtZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVWOE9iamVjdEZvck5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldFY4T2JqZWN0
Rm9yTlBPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZUNvbnRleHRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJheUJ1
ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjp3cmFw
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJyYXkp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFja0N1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yU2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6d3JhcEluU2hhZG93
T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluamVjdGVkU2Ny
aXB0SG9zdFY4V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW50ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZW50Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhM
b2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRB
Y2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQWNj
ZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQWNjZXNz
b3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVj
dG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6aW5p
dE1lc3NhZ2VFdmVudENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25P
YnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdl
YktpdFBvaW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKworMjAxMi0x
Mi0wNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFtWOF0gQ2xl
YW51cCBzdHlsZSBpbiBWOERPTVdyYXBwZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNDA2MgogCi0gICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBUaGlz
IHBhdGNoIG1vdmVzIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBmcm9tIGluc2lkZSB0aGUgY2xhc3MK
ICAgICAgICAgZGVjbGFyYXRpb24gdG8gYmVsb3cgdGhlIGNsYXNzIGRlY2xhcmF0aW9uLiBJJ3Zl
IGFsc28gaW5saW5lZApAQCAtMzcsNyArMTI4LDcgQEAKICAgICAgICAgW1Y4XSBWOERPTVdyYXBw
ZXIgc2hvdWxkbid0IGtub3cgYWJvdXQgTm9kZUZpbHRlcgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MDU3CiAKLSAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAgICAg
ICAgIFRoaXMgcGF0Y2gganVzdCBtb3ZlcyB0aGlzIGNvZGUgaW50byBWOEJpbmRpbmdzLmgsIHdo
aWNoIGlzIHdoZXJlIHdlCiAgICAgICAgIGhhdmUgb3VyIG90aGVyIHR5cGUgY29udmVyc2lvbiBm
dW5jdGlvbnMuIEl0J3MgdG9vIGJhZCB0aGF0IHdlIHN0aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDgyN2IzNTUxNTI2MDVjZWMzNDI0Yzc2NzhkZThjYTQ3YTg4MmI3MDYuLjIzMWRj
YTU5ZWI3OTcxZDMzM2M4ZjdhYThlZmI0ZDg0MDdmMTRiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0zLDcgKzMsNyBAQAogICAgICAgICBbVjhdIENsZWFudXAgc3R5bGUgaW4gVjhE
T01XcmFwcGVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDQwNjIKIAotICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCiAKICAgICAgICAgKiBzcmMvV2ViQmluZGluZ3MuY3Bw
OgogICAgICAgICAoV2ViS2l0OjpnZXRSYW5nZUltcGwpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAzNDM3YTlhMjBlYmJk
ZDViZjIwNzk4MTJiODFlMTM0N2UzNDVkNTc5Li45NmZjYzA0N2ExODIzYmQ3OWZhZWZmMGY3N2Zk
ZmEzY2M4NDNiZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtODA0LDcgKzgwNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjCiB7CiAgICAgSU5DX1NUQVRTKFwiRE9NLiRpbnRlcmZhY2VOYW1lLiRmdW5jTmFtZS5f
Z2V0XCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcoJG5ld1RlbXBsYXRlU3RyaW5nKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcigke3Y4SW50ZXJmYWNlTmFtZX06Okdl
dFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRl
cmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5j
JywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNr
IGFscmVhZHkKQEAgLTgzNSw3ICs4MzUsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rp
b25TZXR0ZXIKIHN0YXRpYyB2b2lkICR7aW50ZXJmYWNlTmFtZX1Eb21haW5TYWZlRnVuY3Rpb25T
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9N
LiRpbnRlcmZhY2VOYW1lLl9zZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcigke3Y4SW50ZXJmYWNlTmFtZX06Okdl
dFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7djhJbnRl
cmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAke2ludGVyZmFjZU5hbWV9KiBpbXAgPSAke3Y4SW50ZXJmYWNl
TmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CkBAIC05MzEsNyArOTMxLDcgQEAgRU5ECiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAjIHBlcmZvcm0gbG9va3VwIGZpcnN0CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoJHt2OEludGVyZmFj
ZU5hbWV9OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIEVORApAQCAtMTk3MSw3ICsx
OTcxLDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi0gICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIApAQCAtMjA0OCw3ICsyMDQ4LDcgQEAg
RU5ECiAgICAgUmVmUHRyPCR7aW50ZXJmYWNlTmFtZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1l
fTo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3Jh
cHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7
CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVudC5yZWxl
YXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiAKQEAgLTIxODYsNyArMjE4Niw3IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENv
bnRlbnQsIDw8RU5EKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBs
LnJlbGVhc2UoKSwgJiR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJiR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9y
OjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7
CiBFTkQKIApAQCAtMzUwMiwxMiArMzUwMiwxMiBAQCBFTkQKIAogICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERP
TVdyYXBwZXI6Omluc3RhbnRpYXRlRE9NV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBp
bXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdy
YXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7
CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5n
ZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4
RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0
ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIs
IGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBw
ZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJy
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2
NEFycmF5LmNwcAppbmRleCBmZjNmMTU5MGM4YzA4NTYzNjJjZDNlNWQ3NjJkMDliN2E5YzNiZmY0
Li5mN2M0YjRlNzZkNDFmNTU2OTJlNzY3NTliNWQ5ZDA5OTdmMjZhY2IwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRB
cnJheS5jcHAKQEAgLTE1MSwxMiArMTUxLDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhG
bG9hdDY0QXJyYXk6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGltCiAg
ICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkp
LklzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxB
cnJheUJ1ZmZlclZpZXcqPihpbXBsLmdldCgpKSkgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KGltcGwu
Z2V0KCkpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3Jh
cHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdl
dCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAg
aWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7
Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Cisg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xh
dGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5k
bGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuY3BwCmluZGV4IDk5YWQ0MWY4ZDgxMzk0Y2U1NzgzMzYzNGQ0ZmNmMWNj
ZjU0ZmNjMTAuLmYxNzFlMTJmNTBiNzQyNjUzODhiMDBiNmZlMjY4MmNjOGVkZTdlNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEFjdGl2ZURPTU9iamVj
dC5wb3N0TWVzc2FnZS5fZ2V0Iik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RBY3RpdmVET01P
YmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZSgpKSkp
OwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29r
dXBET01XcmFwcGVyKFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUoKSwgaW5mby5U
aGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCkt
PkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRU
ZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4g
b25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxk
IHBhc3NlZAogICAgICAgICAvLyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpAQCAtOTYs
NyArOTYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQXR0ckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogc3RhdGljIHZvaWQgVGVzdEFjdGl2
ZURPTU9iamVjdERvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEFjdGl2ZURPTU9iamVjdC5fc2V0Iik7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1
cERPTVdyYXBwZXIoVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRo
aXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRl
bXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wID0gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05h
dGl2ZShob2xkZXIpOwpAQCAtMTgwLDEyICsxODAsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0QWN0
aXYKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3Vy
cmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmpl
Y3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9u
Q29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklz
RW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRl
eHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIo
aW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVu
ZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwog
ICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAK
aW5kZXggZDI2NzEwOTc1MjY4ZjVjNmIwZTU2MWI1YTkzNDJkY2E2ZjBlYmUyYi4uYjU4MzIzZDI0
NWRkNTU1NjQ4NzQ3ZGM5MDNkMTIzZjk3ZWU3ZWU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCkBAIC0xMTQsMTIgKzExNCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVz
dEN1cwogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpj
dXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9i
amVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRp
b25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIu
SXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29u
dGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBl
cihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVw
ZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggN2Q2ODczMDdlYjg0YzAxMzkxZmQ3ZTZkNGQxMTI0MDZiNjYyMTYwNC4uMmM2MDhlMGVl
Yjk5ODJiOGUxZTM5ZTI1Y2VjMTJlZjM4NGE5MGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENv
bnN0cnVjdG9yLmNwcApAQCAtODMsNyArODMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndQog
ICAgIFJlZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9N
V3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVudC5y
ZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CiAKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RF
dmVuCiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1
cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2Jq
ZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlv
bkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5J
c0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250
ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVy
KGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBl
bmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDRjZWIy
NWU3MWVhZDIxZDRmNDAyYTZjZDk1NjhhNjUzNDczNzE1NDQuLmRlODdjNjlhOTNmYmE2OWVmOWMx
YTVlOWMyMGY5ZjZiNzMxN2Q5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTc3
LDEyICsxNzcsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFdmVudFRhcmdldDo6
Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVudFRhcmcKICAgICBBU1NFUlQoaW1wbC5n
ZXQoKSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGlt
cGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAm
aW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
VjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwu
Z2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJl
dHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIs
IGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5k
bGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIs
IGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUg
PSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3
cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAg
ICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXhjZXB0aW9uLmNwcAppbmRleCBiYmI5ZmVjZWM4OTAwZTZlZjJlZDM1MWJkMGE4MDQw
YzY5M2U4MjEyLi5hMWYwYzVhMjk2MzQ2YWVkMDhjODRjMzJmMjRlNTQ5NTczMzdlYjdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhj
ZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTA1LDEyICsxMDUsMTIgQEAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOFRlc3RFeGNlcHRpb246OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhj
ZXB0aW9uPgogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3Jl
OjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVW
OE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3Jl
YXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBw
ZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3Jh
cHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFz
RGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50
KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDdiZTNk
NDE5MzRiNjUzOTgyOWJkMTQ3MThmMWI5M2FkNDNjZDViMTIuLmE4ZjM3Mjc0NTg4ZTU2ZjU2YTNl
NWY4OTNlMmQ1MWUwM2RlYjFlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0yNjIsNyAr
MjYyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIGlmIChlYykKICAgICAgICAgZ290
byBmYWlsOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFw
cGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiAgIGZhaWw6CiAg
ICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMzQz
LDEyICszNDMsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RJbnRlcmZhY2U6OmNy
ZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPgogICAgIEFTU0VSVChpbXBsLmdl
dCgpKTsKICAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1w
bC5nZXQoKSkuSXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZp
bmZvLCBpbXBsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBW
OERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5n
ZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwg
aW1wbC5nZXQoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRs
ZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwg
aXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdy
YXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAg
IHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMDI5MWRl
NzZiMzIzN2VmMDUzNTllNDYxM2JiMDhhZGQ2YTM1ZGM3NS4uMmViMmMxZWJkNGJiZWUyMzBhOTg3
YjZmNjRmM2I3Mzk5NzQyMjU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcApAQCAtMTE0LDEyICsxMTQsMTIgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8
VGUKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7CiAgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3Vy
cmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CiAKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmpl
Y3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9u
Q29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklz
RW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRl
eHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIo
aW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVu
ZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwog
ICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDk1NGNjYTdjYzQ3NWY0OGEzOTIxYTc3Njk2MGRhNTQ5YzFiYzlmNWIuLmJlYTM3OTIyNmYw
ZmUyNGNlMTA4MGUyMGRjMmZhZTY1ODc2ZDExZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODoKICAg
ICBpZiAoZWMpCiAgICAgICAgIGdvdG8gZmFpbDsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRl
RE9NV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZWOFRlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKICAgZmFpbDoKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0
aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0xNTIsMTIgKzE1MiwxMiBAQCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZVdyYXBwZXIoUGFz
c1JlZlB0cjxUZXN0TmFtZQogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAgICBBU1NFUlQoRE9N
RGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsK
IAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5z
dGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdy
YXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElL
RUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBp
bnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7Ci0gICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3Jl
YXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwogICAg
IGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0lu
ZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZjljNTdh
YTNlM2JkMjdjMTQ1ZmRiMzE5MTcyMDc0OTkxNjcwYWQyYy4uZjcyODk4ZGNhOTA2ZGVhNDBhZjk3
OWM0N2ZiM2FmYjBkZGI3YWViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxUZXN0Tm9kZT4gaW1wbCA9IFRlc3ROb2Rl
OjpjcmVhdGUoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFw
cGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTEx
MywxMiArMTEzLDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Tm9kZTo6Y3JlYXRl
V3JhcHBlcihQYXNzUmVmUHRyPFRlc3ROb2RlPiBpbXBsLCB2ODo6CiAgICAgQVNTRVJUKERPTURh
dGFTdG9yZTo6Z2V0Tm9kZShpbXBsLmdldCgpLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwogICAgIEFT
U0VSVChzdGF0aWNfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Tm9kZSo+KGltcGwuZ2V0KCkpKSA9
PSBzdGF0aWNfY2FzdDx2b2lkKj4oaW1wbC5nZXQoKSkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0
aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQs
ICZpbmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkp
KQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVy
dGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGltcGwsICZp
bmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZl
dGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1
cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMWFkMzVkMDMzNzVjMGNhM2I3MmY0YTNiMGM2MTgy
MWRkMGE1MWJhOS4uMTY0NmM3ODRlMjQxM2Q2MzI2ZGIxYzY3NmZmNmEzYjA0YjQ4MTkzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAKQEAgLTIyMjIsNyArMjIyMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRl
c3RPYmo6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICBSZWZQdHI8VGVzdE9iaj4gaW1wbCA9IFRlc3RPYmo6OmNyZWF0ZSh0ZXN0Q2FsbGJhY2spOwog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAg
ICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjQwMCwxMiArMjQwMCwx
MiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE9iajo6Y3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPFRlc3RPYmo+IGltcGwsIHY4OjpIYQogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKICAg
ICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSku
SXNFbXB0eSgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9N
V3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBs
LmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBw
ZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQo
KSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9N
V3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlz
b2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJI
YW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMGM3OGY3NzJmNjJmZWQw
MDJhYjVmZTUwNWYwZjk4YzY2NjUyNGYxMC4uZTk0Mzg5ZTJmM2Y3NmMzZDdlYjA5Y2RmZGIxMmM3
ZGNlZmQ1MGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcApAQCAtNTQsNyArNTQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdy
YXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7
CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gd3Jh
cHBlcjsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJhY2soY29uc3QgdgogICAg
IFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3KTsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjpj
cmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTgwLDcgKzgwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yM0NhbGxiYWNrKGNv
bnN0IHYKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGJsb2IpOwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmNy
ZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtOTMsNyArOTMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2soY29u
c3QgdgogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoc3RyaW5nKTsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjpj
cmVhdGVET01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTE3MywxMiArMTczLDEyIEBAIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPFRlCiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3Rv
cmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0
ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihj
cmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3Jh
cHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQ
ZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01X
cmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFo
YXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRl
bnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggYjgxNDQxZmIxZDk5MGYwNzcx
YmQwZTEwOGZlNDk5NTVhNGM2M2IxMC4uYjE1ZmZhNGU3ZjY0Mzc3YmE4ZDE2NzU4YjQyNjIxOGMy
ZDRmYTEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKAogICAgIFJlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBpbXBs
ID0gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlKGhlbGxvLCBkYXRh
LCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVE
T01XcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5y
ZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CiAKQEAgLTI5NiwxMiArMjk2LDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKFBh
c3NSCiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwogICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1
cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOwogCi0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2Jq
ZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlV3JhcHBlcihjcmVhdGlv
bkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5J
c0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250
ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVy
KGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBl
bmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5jcHAKaW5kZXggMGE4Y2M0MjQzZDNlYjVmYzlkNjBiZThhZjFkNDIwMDYxMmM1NzcyZC4uZTVj
ZDRkMjExNTU3MTBjZGFiNzQxYWNhZTdlOTUxMjc5NDk0YmU3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIERpY3Rp
b25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPERPTVdpbmRvdz4mIHZhbHVlKSBj
b25zdAogICAgIERPTVdpbmRvdyogc291cmNlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNPYmpl
Y3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdpbmRvdyA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRv
dzo6R2V0VGVtcGxhdGUoKSwgd3JhcHBlcik7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd2luZG93ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICghd2luZG93LklzRW1wdHkoKSkKICAg
ICAgICAgICAgIHNvdXJjZSA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwogICAgIH0K
QEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtl
eSwgUmVmUHRyPFN0b3JhZ2U+JiB2YWx1ZSkgY29uc3QKICAgICBTdG9yYWdlKiBzb3VyY2UgPSAw
OwogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSk7
Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc3RvcmFnZSA9IFY4RE9NV3JhcHBlcjo6
bG9va3VwRE9NV3JhcHBlcihWOFN0b3JhZ2U6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHN0b3JhZ2UgPSB3cmFwcGVyLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4U3RvcmFnZTo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlm
ICghc3RvcmFnZS5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2UgPSBWOFN0b3JhZ2U6OnRv
TmF0aXZlKHN0b3JhZ2UpOwogICAgIH0KQEAgLTMyNyw4ICszMjcsNyBAQCBib29sIERpY3Rpb25h
cnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiB2YWx1ZSkgY29u
c3QKICAgICBVaW50OEFycmF5KiBzb3VyY2UgPSAwOwogICAgIGlmICh2OFZhbHVlLT5Jc09iamVj
dCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSk7Ci0KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBhcnJheSA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOFVpbnQ4QXJy
YXk6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGFycmF5ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFVpbnQ4
QXJyYXk6OkdldFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAoIWFycmF5LklzRW1wdHkoKSkKICAg
ICAgICAgICAgIHNvdXJjZSA9IFY4VWludDhBcnJheTo6dG9OYXRpdmUoYXJyYXkpOwogICAgIH0K
QEAgLTM0Niw4ICszNDUsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtl
eSwgUmVmUHRyPE1lZGlhS2V5RXJyb3I+JiB2YWx1ZSkgY29uc3QKICAgICBNZWRpYUtleUVycm9y
KiBzb3VyY2UgPSAwOwogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QodjhWYWx1ZSk7Ci0KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBlcnJvciA9IFY4
RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOE1lZGlhS2V5RXJyb3I6OkdldFRlbXBsYXRl
KCksIHdyYXBwZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGVycm9yID0gd3Jh
cHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOE1lZGlhS2V5RXJyb3I6OkdldFRl
bXBsYXRlKCkpOwogICAgICAgICBpZiAoIWVycm9yLklzRW1wdHkoKSkKICAgICAgICAgICAgIHNv
dXJjZSA9IFY4TWVkaWFLZXlFcnJvcjo6dG9OYXRpdmUoZXJyb3IpOwogICAgIH0KQEAgLTM2OSw3
ICszNjcsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRy
PFRyYWNrQmFzZT4mIHZhbHVlKSBjb25zdAogCiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHdpbGwg
bmVlZCB0byBiZSBjaGFuZ2VkIHNvIGl0IGNhbiBhbHNvIHJldHVybiBhbiBBdWRpb1RyYWNrIG9y
IGEgVmlkZW9UcmFjayBvbmNlCiAgICAgICAgIC8vIHdlIGFkZCB0aGVtLgotICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHRyYWNrID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVy
KFY4VGV4dFRyYWNrOjpHZXRUZW1wbGF0ZSgpLCB3cmFwcGVyKTsKKyAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB0cmFjayA9IHdyYXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhUZXh0VHJhY2s6OkdldFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAoIXRyYWNrLklzRW1w
dHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4VGV4dFRyYWNrOjp0b05hdGl2ZSh0cmFjayk7
CiAgICAgfQpAQCAtMzg4LDcgKzM4Niw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0
cmluZyYga2V5LCBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mIHZhbHVlKSBjCiAgICAg
U3BlZWNoUmVjb2duaXRpb25FcnJvciogc291cmNlID0gMDsKICAgICBpZiAodjhWYWx1ZS0+SXNP
YmplY3QoKSkgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpOwotICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHNwZWVjaFJlY29nbml0aW9uRXJyb3IgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERP
TVdyYXBwZXIoVjhTcGVlY2hSZWNvZ25pdGlvbkVycm9yOjpHZXRUZW1wbGF0ZSgpLCB3cmFwcGVy
KTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzcGVlY2hSZWNvZ25pdGlvbkVycm9y
ID0gd3JhcHBlci0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFNwZWVjaFJlY29nbml0
aW9uRXJyb3I6OkdldFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAoIXNwZWVjaFJlY29nbml0aW9u
RXJyb3IuSXNFbXB0eSgpKQogICAgICAgICAgICAgc291cmNlID0gVjhTcGVlY2hSZWNvZ25pdGlv
bkVycm9yOjp0b05hdGl2ZShzcGVlY2hSZWNvZ25pdGlvbkVycm9yKTsKICAgICB9CkBAIC00MDUs
NyArNDAzLDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0
cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIHZhbHVlKQogICAgIFNwZWVjaFJlY29nbml0aW9u
UmVzdWx0KiBzb3VyY2UgPSAwOwogICAgIGlmICh2OFZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodjhWYWx1ZSk7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gc3BlZWNo
UmVjb2duaXRpb25SZXN1bHQgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdDo6R2V0VGVtcGxhdGUoKSwgd3JhcHBlcik7CisgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gc3BlZWNoUmVjb2duaXRpb25SZXN1bHQgPSB3cmFwcGVyLT5G
aW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6Okdl
dFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAoIXNwZWVjaFJlY29nbml0aW9uUmVzdWx0LklzRW1w
dHkoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHQ6OnRv
TmF0aXZlKHNwZWVjaFJlY29nbml0aW9uUmVzdWx0KTsKICAgICB9CkBAIC00MjIsNyArNDIwLDcg
QEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdExpc3Q+JiB2YWwKICAgICBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExp
c3QqIHNvdXJjZSA9IDA7CiAgICAgaWYgKHY4VmFsdWUtPklzT2JqZWN0KCkpIHsKICAgICAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdCh2OFZhbHVlKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBzcGVlY2hSZWNv
Z25pdGlvblJlc3VsdExpc3QgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdExpc3Q6OkdldFRlbXBsYXRlKCksIHdyYXBwZXIpOworICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdCA9IHdy
YXBwZXItPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdExpc3Q6OkdldFRlbXBsYXRlKCkpOwogICAgICAgICBpZiAoIXNwZWVjaFJlY29nbml0aW9u
UmVzdWx0TGlzdC5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2UgPSBWOFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0TGlzdDo6dG9OYXRpdmUoc3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcAppbmRleCA2NWU0ODM3ZDQ1MGQ3NzdjNzU0NmY0N2U1YzMwNTdmYjk3OTU0
NzEyLi40NDUwODA1MzkyYmY2NzgyYTNjYmI3MjVhOWNiY2FkYTEyM2YxZjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIEZyYW1lKiByZXRyaWV2ZUZyYW1lV2l0aEdsb2JhbE9i
amVjdENoZWNrKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQKICAgICBpZiAoZ2xvYmFs
LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBnbG9iYWwgPSBWOERPTVdyYXBw
ZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7
CisgICAgZ2xvYmFsID0gZ2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9N
V2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmlu
ZGV4IGY5ODA0NDNkZWYwNjJkNzgwZDVjMjNhMGMzZWMyOTJhMjczZjA0MWQuLjVkYmUyMTVjZDFh
ODExMWZlYmU3ZTk1OTJlNzFlNjk2YjQ2Yzk5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIERPTVdpbmRvdyogdG9ET01XaW5k
b3codjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKIHsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwogICAgIEFTU0VSVCghZ2xvYmFs
LklzRW1wdHkoKSk7Ci0gICAgZ2xvYmFsID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVy
KFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBnbG9iYWwpOworICAgIGdsb2JhbCA9IGdsb2Jh
bC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUo
KSk7CiAgICAgQVNTRVJUKCFnbG9iYWwuSXNFbXB0eSgpKTsKICAgICByZXR1cm4gVjhET01XaW5k
b3c6OnRvTmF0aXZlKGdsb2JhbCk7CiB9CkBAIC0yODcsMTEgKzI4NywxMSBAQCBET01XaW5kb3cq
IHRvRE9NV2luZG93KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiB0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dCkKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNv
bnRleHQtPkdsb2JhbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxh
dGUoKSwgZ2xvYmFsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIg
PSBnbG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRl
bXBsYXRlKCkpOwogICAgIGlmICghd2luZG93V3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBWOERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93V3JhcHBlciktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICNpZiBFTkFCTEUoV09SS0VSUykKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdvcmtlcldyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhXb3Jr
ZXJDb250ZXh0OjpHZXRUZW1wbGF0ZSgpLCBnbG9iYWwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd29ya2VyV3JhcHBlciA9IGdsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmICghd29ya2VyV3JhcHBl
ci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBWOFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKHdv
cmtlcldyYXBwZXIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggNDI2ODc0
MDI3OTA4MDc5OTBmYTQzZGQ1M2MzZGU5MDYwMGY2NTdiYy4uMzE3ZmQ3Y2M5OTY5M2JkMGUyNTE3
YzZmNmNiOTliYTBiMWZhZGExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFY4RE9NV2luZG93
U2hlbGw6OmNsZWFyRm9yTmF2aWdhdGlvbigpCiAgICAgLy8gd2lsbCBiZSBwcm90ZWN0ZWQgYnkg
dGhlIHNlY3VyaXR5IGNoZWNrcyBvbiB0aGUgRE9NV2luZG93IHdyYXBwZXIuCiAgICAgY2xlYXJE
b2N1bWVudFByb3BlcnR5KCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dy
YXBwZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRl
bXBsYXRlKCksIG1fZ2xvYmFsLmdldCgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdp
bmRvd1dyYXBwZXIgPSBtX2dsb2JhbC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERP
TVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgQVNTRVJUKCF3aW5kb3dXcmFwcGVyLklzRW1w
dHkoKSk7CiAgICAgd2luZG93V3JhcHBlci0+VHVybk9uQWNjZXNzQ2hlY2soKTsKICAgICBtX2Nv
bnRleHQtPkRldGFjaEdsb2JhbCgpOwpAQCAtMzE2LDcgKzMxNiw3IEBAIGJvb2wgVjhET01XaW5k
b3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdygpCiAKICAgICBWOERPTVdpbmRvdzo6aW5zdGFsbFBl
ckNvbnRleHRQcm9wZXJ0aWVzKHdpbmRvd1dyYXBwZXIsIHdpbmRvdyk7CiAKLSAgICBWOERPTVdy
YXBwZXI6OnNldERPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh3aW5kb3dX
cmFwcGVyLT5HZXRQcm90b3R5cGUoKSksICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93KTsKKyAg
ICBWOERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh3aW5kb3dXcmFwcGVyLT5HZXRQcm90b3R5cGUoKSksICZWOERPTVdpbmRvdzo6aW5mbywgd2lu
ZG93KTsKIAogICAgIC8vIEluc3RhbGwgdGhlIHdpbmRvd1dyYXBwZXIgYXMgdGhlIHByb3RvdHlw
ZSBvZiB0aGUgaW5uZXJHbG9iYWxPYmplY3QuCiAgICAgLy8gVGhlIGZ1bGwgc3RydWN0dXJlIG9m
IHRoZSBnbG9iYWwgb2JqZWN0IGlzIGFzIGZvbGxvd3M6CkBAIC0zMzIsOSArMzMyLDkgQEAgYm9v
bCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KCkKICAgICAvLyAgICAgICBKYXZh
U2NyaXB0IG9iamVjdC4KICAgICAvLwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJH
bG9iYWxPYmplY3QgPSB0b0lubmVyR2xvYmFsT2JqZWN0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAg
VjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGlubmVyR2xvYmFsT2JqZWN0LCAmVjhET01XaW5k
b3c6OmluZm8sIHdpbmRvdyk7CisgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKGlubmVy
R2xvYmFsT2JqZWN0LCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvdyk7CiAgICAgaW5uZXJHbG9i
YWxPYmplY3QtPlNldFByb3RvdHlwZSh3aW5kb3dXcmFwcGVyKTsKLSAgICBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksICZWOERPTVdp
bmRvdzo6aW5mbywgd2luZG93V3JhcHBlcik7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPERPTVdpbmRvdz4od2luZG93KSwgJlY4RE9NV2lu
ZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggYjFjOTQ3ZWVlNTM4
OGM2YWY4NjYxZTRkZjIwYzc1YmNiMGU5YjlhZS4uMjljZDQ5NzQ4YmIyYjUyNTMzY2M3ZWE3Zjgy
M2E4ZjEzNmQyMWNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlk
ZGVuUmVmZXJlbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcGFyZW50LCBjb25zdAogICAgIHBh
cmVudC0+U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5j
ZU5hbWUobmFtZSwgc3RybGVuKG5hbWUpKSwgY2hpbGQpOwogfQogCi12ODo6TG9jYWw8djg6Ok9i
amVjdD4gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZURPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgdm9pZCogaW1w
bCkKK3Y4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFdyYXBwZXJUeXBlSW5mbyogdHlw
ZSwgdm9pZCogaW1wbCkKIHsKICAgICBWOFdyYXBwZXJJbnN0YW50aWF0aW9uU2NvcGUgc2NvcGUo
Y3JlYXRpb25Db250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaAppbmRleCAxMGJjNjFmNzQzOTU3NWViMmJmMGZmODZiZmUzMTgzMzEzZmQ4YWRhLi45MDE1
YTAzNDJkODU2YmYxNjFkOGQxNTdmN2M4ODVkMWI1Y2YwMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtNTgsMTQgKzU4LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgbWF5YmVET01XcmFwcGVyKHY4OjpIYW5kbGU8
djg6OlZhbHVlPik7CiAjZW5kaWYKIAotICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGluc3RhbnRpYXRlRE9NV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgV3JhcHBlclR5cGVJbmZvKiwgdm9pZCopOworICAgICAgICBzdGF0aWMgdjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqKTsKIAogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IGNyZWF0ZURPTVdyYXBwZXIoUGFzc1JlZlB0cjxUPiwgV3JhcHBlclR5cGVJbmZvKiwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgICAgIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRET01XcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFdyYXBw
ZXJUeXBlSW5mbyosIHZvaWQqKTsKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFyRE9N
V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlwZUluZm8qKTsKLQotICAg
ICAgICBzdGF0aWMgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gbG9va3VwRE9NV3JhcHBl
cih2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pik7CisgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gYXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiwgV3JhcHBlclR5cGVJbmZvKiwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgICAgIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXROYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFdyYXBw
ZXJUeXBlSW5mbyosIHZvaWQqKTsKKyAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFyTmF0
aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlwZUluZm8qKTsKIAogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgcHJvYmFibHkgbW92ZSB0byBWOEV2
ZW50TGlzdGVuZXJMaXN0LmgKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gZ2V0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6OlZhbHVlPiwgYm9vbCBpc0F0dHJpYnV0
ZSwgTGlzdGVuZXJMb29rdXBUeXBlKTsKQEAgLTgwLDcgKzc4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyQ2xhc3MoTm9kZSosIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpIHsgd3JhcHBlci5TZXRXcmFwcGVyQ2xhc3NJZCh2
OERPTU5vZGVDbGFzc0lkKTsgfQogICAgIH07CiAKLSAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBw
ZXI6OnNldERPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBXcmFwcGVy
VHlwZUluZm8qIHR5cGUsIHZvaWQqIG9iamVjdCkKKyAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBw
ZXI6OnNldE5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBXcmFwcGVy
VHlwZUluZm8qIHR5cGUsIHZvaWQqIG9iamVjdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCh3cmFw
cGVyLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSAyKTsKICAgICAgICAgQVNTRVJUKG9iamVjdCk7
CkBAIC04OSw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgd3JhcHBlci0+
U2V0QWxpZ25lZFBvaW50ZXJJbkludGVybmFsRmllbGQodjhET01XcmFwcGVyVHlwZUluZGV4LCB0
eXBlKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6OmNsZWFyRE9NV3Jh
cHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIFdyYXBwZXJUeXBlSW5mbyogdHlw
ZSkKKyAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6OmNsZWFyTmF0aXZlSW5mbyh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCh3cmFwcGVyLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSAyKTsKICAgICAg
ICAgQVNTRVJUKHR5cGUpOwpAQCAtOTcsMTcgKzk1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgd3JhcHBlci0+U2V0QWxpZ25lZFBvaW50ZXJJbkludGVybmFsRmllbGQodjhET01X
cmFwcGVyT2JqZWN0SW5kZXgsIDApOwogICAgIH0KIAotICAgIGlubGluZSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcih2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvblRlbXBsYXRlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIpCi0gICAgewotICAgICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICAgICAgcmV0dXJuIHdyYXBwZXItPkZpbmRJbnN0YW5j
ZUluUHJvdG90eXBlQ2hhaW4oZnVuY3Rpb25UZW1wbGF0ZSk7Ci0gICAgfQotCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBXcmFwcGVy
VHlwZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCisgICAgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiBvYmplY3Qs
IFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7Ci0gICAgICAgIHNldERPTVdyYXBwZXIod3JhcHBl
ciwgdHlwZSwgb2JqZWN0LmdldCgpKTsKKyAgICAgICAgc2V0TmF0aXZlSW5mbyh3cmFwcGVyLCB0
eXBlLCBvYmplY3QuZ2V0KCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsK
ICAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7CiAgICAgICAg
IHNldFdyYXBwZXJDbGFzcyhvYmplY3QuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxpemVyLmNwcAppbmRleCBmODNkNTMzYThiNDRi
OTk4ZDZhMjM2OTYwYTc3ZDQ4MGE2NTdhNjg1Li5mYTU5YTQyNjFjY2Y4Y2I4NWNlYzZmYTk0ZjU5
MWExOTZlYThhYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElu
aXRpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluaXRpYWxp
emVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgRnJhbWUqIGZpbmRGcmFtZSh2ODo6TG9j
YWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSkKICAgICBXcmFw
cGVyVHlwZUluZm8qIHR5cGUgPSBXcmFwcGVyVHlwZUluZm86OnVud3JhcChkYXRhKTsKIAogICAg
IGlmIChWOERPTVdpbmRvdzo6aW5mby5lcXVhbHModHlwZSkpIHsKLSAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFw
cGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBob3N0KTsKKyAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5
cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgICAgIGlmICh3aW5kb3dX
cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4g
VjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpLT5mcmFtZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCBiNWEyMWMwZThjOTJkODc2Njg4
NmZjMTJkMzE1NTY2MmJjYTNjMTc5Li45YTBmMjZmZDI1YzBlYzAwNjIwMTVjOGYwN2IyYjFhNzQz
N2NkYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcApAQCAt
NDM4LDcgKzQzOCw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVWOE9iamVjdEZvck5Q
T2JqZWN0KE5QT2JqZWN0KiBvYmplY3QsIE5QT2JqZWN0KiByb290CiAgICAgaWYgKHZhbHVlLklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgVjhET01XcmFwcGVyOjpzZXRE
T01XcmFwcGVyKHZhbHVlLCBucE9iamVjdFR5cGVJbmZvKCksIG9iamVjdCk7CisgICAgVjhET01X
cmFwcGVyOjpzZXROYXRpdmVJbmZvKHZhbHVlLCBucE9iamVjdFR5cGVJbmZvKCksIG9iamVjdCk7
CiAKICAgICAvLyBLSlMgcmV0YWlucyB0aGUgb2JqZWN0IGFzIHBhcnQgb2YgaXRzIHdyYXBwZXIg
KHNlZSBCaW5kaW5nczo6Q0luc3RhbmNlKS4KICAgICBfTlBOX1JldGFpbk9iamVjdChvYmplY3Qp
OwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgZm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdChOUE9i
amVjdCogb2JqZWN0KQogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBz
dGF0aWNOUE9iamVjdE1hcCgpLmdldChvYmplY3QpOwogICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgICAgICBWOERPTVdyYXBw
ZXI6OmNsZWFyRE9NV3JhcHBlcih3cmFwcGVyLCBucE9iamVjdFR5cGVJbmZvKCkpOworICAgICAg
ICBWOERPTVdyYXBwZXI6OmNsZWFyTmF0aXZlSW5mbyh3cmFwcGVyLCBucE9iamVjdFR5cGVJbmZv
KCkpOwogICAgICAgICBzdGF0aWNOUE9iamVjdE1hcCgpLnJlbW92ZShvYmplY3QsIHdyYXBwZXIp
OwogICAgICAgICB3cmFwcGVyLkRpc3Bvc2UoKTsKICAgICAgICAgd3JhcHBlci5DbGVhcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCBlZTUzYjIwNTYwMmZjM2Q2ZGIwNGVlNWVhODQ1MWFiYTVkYmU4NTcyLi40
MGI2Njg5ZjFhZTg1N2Q2YjYxZjNmN2U1NWMzMTM3NmRiMjgwNjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAt
MTI3LDcgKzEyNyw3IEBAIGJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUNv
bnRleHRJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBWOERP
TVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PihtX3dv
cmtlckNvbnRleHQpLCBjb250ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0KTsKKyAgICBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8V29ya2VyQ29udGV4
dD4obV93b3JrZXJDb250ZXh0KSwgY29udGV4dFR5cGUsIGpzV29ya2VyQ29udGV4dCk7CiAKICAg
ICAvLyBJbnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJvdG90eXBlIG9mIHRoZSBz
aGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsT2JqZWN0ID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkdsb2JhbCgpLT5HZXRQcm90
b3R5cGUoKSk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKQogICAgICAgICByZXR1
cm4gMDsKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkNvbnRleHQ6
OkdldEN1cnJlbnQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRl
eHQtPkdsb2JhbCgpOwotICAgIGdsb2JhbCA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBl
cihWOFdvcmtlckNvbnRleHQ6OkdldFRlbXBsYXRlKCksIGdsb2JhbCk7CisgICAgZ2xvYmFsID0g
Z2xvYmFsLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4V29ya2VyQ29udGV4dDo6R2V0
VGVtcGxhdGUoKSk7CiAgICAgLy8gUmV0dXJuIDAgaWYgdGhlIGN1cnJlbnQgZXhlY3V0aW5nIGNv
bnRleHQgaXMgbm90IHRoZSB3b3JrZXIgY29udGV4dC4KICAgICBpZiAoZ2xvYmFsLklzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKaW5kZXggZmJkNmY3NjkzNzJi
ZDhiZWI3MGNmYzNmNzQ3NmU3MGJiYmEyYzAyNC4uYTNmZWY0NTdlOTA0OTY5YTBkY2IwOGQwNWE0
YTU0ZTkzMWY4OTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbgogICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRlcm5hbEFs
bG9jYXRlZE1lbW9yeShidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgLy8gVHJhbnNmb3JtIHRo
ZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgYXJyYXkuCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBw
ZXI6OmNyZWF0ZURPTVdyYXBwZXIoYnVmZmVyLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwor
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYnVmZmVyLnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdD
dXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVy
Vmlld0N1c3RvbS5oCmluZGV4IGY5YmViMzllNGUzZTlmY2Y5OTEzOGE3ZTczNzBjMGE5MzZmYjhk
MDcuLmEyZjE5Mjg2MGE0NzA1NzE5NTQ0NGFmZmQxNWVkNmNkMjhhMzZiZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3Rv
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVy
Vmlld0N1c3RvbS5oCkBAIC01NSw3ICs1NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFw
QXJyYXlCdWZmZXJWaWV3KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAg
ICAgaWYgKGhhc0luZGV4ZXIpCiAgICAgICAgIGFyZ3MuSG9sZGVyKCktPlNldEluZGV4ZWRQcm9w
ZXJ0aWVzVG9FeHRlcm5hbEFycmF5RGF0YShhcnJheS5nZXQoKS0+YmFzZUFkZHJlc3MoKSwgYXJy
YXlUeXBlLCBhcnJheS5nZXQoKS0+bGVuZ3RoKCkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihhcnJheS5y
ZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlcik7CiAgICAgd3JhcHBlckhhbmRsZS5NYXJr
SW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KQEAgLTIxNCw3ICsyMTQsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJheShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzLCBXcmFwcGVyVHlwZQogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihhcnJh
eS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlcik7CiAgICAgd3JhcHBlckhhbmRsZS5N
YXJrSW5kZXBlbmRlbnQoKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20u
Y3BwCmluZGV4IDZmNGZlMjhhNjdjMmFjZGE4YWU0ZWZlMzY0N2VkNmE0OTE2ZTA0OWQuLjgwYTMy
YmFkYjE1OTQ3N2RjZmQ0MmY2MDdiMTc4NDA4OWRlYjg4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNw
cApAQCAtODQsNyArODQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6
OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZQogICAgIAogICAgIC8v
IFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGF1ZGlv
IGNvbnRleHQuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xk
ZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoYXVkaW9Db250ZXh0LnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoYXVkaW9Db250ZXh0LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwog
ICAgIAogICAgIHJldHVybiB3cmFwcGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IGU5YTBh
YWQ5NjEzNmYxZTc2OTk4MjNmMzNhNGJlYzBjZjUzNDdhNDQuLjJjOTA3ZDBlNjcwMzE4MTdhNGQ5
YzVjOWI2MDFhNTIzZmU0NGMwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZv
cm1EYXRhID0gRE9NRm9ybURhdGE6OmNyZWF0ZShmb3JtKTsKIAogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjpjcmVh
dGVET01XcmFwcGVyKGRvbUZvcm1EYXRhLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOworICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwCmluZGV4IDg0YzY2ODUzMmJmODhmMjVjODg1MjNjNTc2OTcyMDA4ZjJlNjdjZWMuLjBi
YTkzNGE1OWJjMDZjODZiYTY2OGNlNzU1Y2Q1NzI3YjM5OTAzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApA
QCAtMTQ1LDcgKzE0NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0
SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBl
cihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90
eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCkBAIC0xNjcsNyArMTY3
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIAogdm9pZCBWOERPTVdpbmRvdzo6ZXZlbnRB
Y2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIo
VjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlw
ZUNoYWluKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAoaG9sZGVyLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjIsNyArMzYyLDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp3ZWJraXRQb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJpbmdD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkRPTVdpbmRvdy50b1N0cmluZygpIik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21X
cmFwcGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRU
ZW1wbGF0ZSgpLCBhcmdzLlRoaXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21X
cmFwcGVyID0gYXJncy5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01X
aW5kb3c6OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChkb21XcmFwcGVyLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGFyZ3MuVGhpcygpLT5PYmplY3RQcm90b1RvU3RyaW5nKCk7CiAgICAgcmV0
dXJuIGRvbVdyYXBwZXItPk9iamVjdFByb3RvVG9TdHJpbmcoKTsKQEAgLTUzNSw3ICs1MzUsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNldEludGVydmFsQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiBib29sIFY4RE9NV2luZG93OjpuYW1lZFNlY3Vy
aXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IGtleSwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4pCiB7Ci0gICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdy
YXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGhvc3QpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd2luZG93ID0gaG9zdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKHdpbmRvdy5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsgIC8vIHRoZSBmcmFtZSBpcyBnb25lLgogCkBAIC01NjgsNyAr
NTY4LDcgQEAgYm9vbCBWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlYKIAogYm9vbCBWOERPTVdpbmRvdzo6aW5k
ZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVpbnQzMl90IGlu
ZGV4LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPikKIHsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgaG9zdCk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3aW5kb3cgPSBob3N0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4
RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpKTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02MTAsNyArNjEwLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoRE9NV2luZG93KiB3aW5kb3csIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db24KICAgICAvLyBuZWNlc3NhcmlseSB0aGUgZmlyc3QgZ2xvYmFsIG9iamVjdCBhc3Nv
Y2lhdGVkIHdpdGggdGhhdCBET01XaW5kb3cuCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y3VycmVudENvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3VycmVudEdsb2JhbCA9IGN1cnJlbnRDb250ZXh0LT5HbG9iYWwoKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIgPSBWOERPTVdyYXBwZXI6
Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGN1cnJlbnRHbG9i
YWwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IGN1cnJlbnRH
bG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBs
YXRlKCkpOwogICAgIGlmICghd2luZG93V3JhcHBlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3dXcmFwcGVyKSA9PSB3aW5kb3cpCiAgICAgICAg
ICAgICByZXR1cm4gY3VycmVudEdsb2JhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAppbmRleCBiMTA4MGEzNGNkOWFl
OWJkZTNkMzM5M2M1MTU1ZDgzYzQzZGJhM2MwLi5kZGE2NDE4YTBlMTk2NzA2OTdiMGRiZWEzZWFk
OTM5ZDc0MmQ4YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1bWVudHMmCiAgICAgICAgIC8vICduZXcgRGF0YVZpZXcoKScgYW5kIHRoZSBjYWxsIHVz
ZWQgdG8gY29uc3RydWN0IHRoZSBjYWNoZWQgRGF0YVZpZXcgb2JqZWN0LgogICAgICAgICBSZWZQ
dHI8RGF0YVZpZXc+IGRhdGFWaWV3ID0gRGF0YVZpZXc6OmNyZWF0ZSgwKTsKICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICAgICAgVjhE
T01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2UoKSwgJmluZm8sIHdy
YXBwZXIpOworICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KGRhdGFWaWV3LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKICAgICB9CiAgICAgaWYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8ICFWOEFycmF5QnVmZmVy
OjpIYXNJbnN0YW5jZShhcmdzWzBdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDhlZGU3MDcz
OGNiODc0NjJhYjk2MTg1NjEwN2JkOTIzOWJhODFhYjcuLmYxZTM2ZDY4YjNkZDQ4ZjZhOTIxZDQx
MTRiMTg1MzQyOTA3MTk5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNzYsNyArNzYsNyBA
QCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OndyYXBJblNoYWRvd09iamVj
dCh2ODo6TG9jYWw8djg6Ok9iamVjdD4gdwogICAgIGlmIChzaGFkb3cuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgc2hhZG93LT5TZXRQcm90
b3R5cGUod3JhcHBlcik7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIs
ICZWOEhUTUxEb2N1bWVudDo6aW5mbywgaW1wbCk7CisgICAgVjhET01XcmFwcGVyOjpzZXROYXRp
dmVJbmZvKHdyYXBwZXIsICZWOEhUTUxEb2N1bWVudDo6aW5mbywgaW1wbCk7CiAgICAgcmV0dXJu
IHNoYWRvdzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
Y2ZiOTc2ZmQ3NzY4M2NhZTlmZDAxMGNiNTMzYTk5MTJjOGNjNDAyMS4uMzI1YzM1ZmU2NzkwYzUy
N2Q1MjA1YzhmYTRkZGQzMjAzMDY1MjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAKICAg
ICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGVGb3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBvcHRpb25hbFdpZHRoLCBvcHRpb25hbEhlaWdo
dCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsK
LSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1hZ2UucmVsZWFzZSgpLCAmVjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1hZ2UucmVsZWFzZSgpLCAmVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFw
cGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCAzYTBiMjliNTFmNzFhMzJk
MTA4NWFjZTI5YmYyN2FhYjg4YzkwNjhlLi4xZjE4MmU3Mzk2N2E1NGMzZjQyMmM0NTQyOWRiYWRl
ODA4ODYxYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
c3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVJbmplY3RlZFNjcmlwdEhvc3RWOFdy
YXBwZXIoSW5qZWN0ZWRTY3JpcHRIb3MKICAgICAgICAgLy8gQXZvaWQgc2V0dGluZyB0aGUgd3Jh
cHBlciBpZiBhbGxvY2F0aW9uIGZhaWxlZC4KICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PigpOwogICAgIH0KLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoaW5zdGFu
Y2UsICZWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5mbywgaG9zdCk7CisgICAgVjhET01XcmFwcGVy
OjpzZXROYXRpdmVJbmZvKGluc3RhbmNlLCAmVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmluZm8sIGhv
c3QpOwogICAgIC8vIENyZWF0ZSBhIHdlYWsgcmVmZXJlbmNlIHRvIHRoZSB2OCB3cmFwcGVyIG9m
IEluc3BlY3RvckJhY2tlbmQgdG8gZGVyZWYKICAgICAvLyBJbnNwZWN0b3JCYWNrZW5kIHdoZW4g
dGhlIHdyYXBwZXIgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuCiAgICAgaG9zdC0+cmVmKCk7CkBAIC0x
MTcsNyArMTE3LDcgQEAgYm9vbCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vzc0luc3Bl
Y3RlZFdpbmRvdyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwogICAgIGlmIChnbG9iYWwuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRl
bXBsYXRlKCksIGdsb2JhbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBn
bG9iYWwtPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBs
YXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgRnJhbWUqIGZyYW1lID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGhvbGRlciktPmZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRl
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50
Q3VzdG9tLmNwcAppbmRleCBmNTJkNzdjMzM3M2Q4NzBlYjczM2FiOWEyZjNjYzFmZDkxZTA2MDQx
Li44NjA3ODcxMmYxN2FiYmM2MWNmYmU5NTUyZTMxYzNhM2M4NTNjNjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgICAgIHJldHVy
biBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERP
TVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
KTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBs
LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAg
ICB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpj
b25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAg
cmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdy
YXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsK
KyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNw
cAppbmRleCA3ODMzZWE0YmM3YjIwYWQzZGE0NTVjY2MzYzkwZjlhMjdmOWY2ZjE2Li45N2FmODRk
NWU0Nzg2YmEwY2M3YjRkNjY0YzI1YWJiNzU1MDA5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDgs
NyArMTQ4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vz
c29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5Mb2NhdGlvbi5yZWxvYWQuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9u
OjpyZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9j
YXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlvbjo6R2V0VGVt
cGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6
R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8g
Y2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNo
b3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKQEAg
LTE2Niw3ICsxNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFj
ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogewogICAgIElOQ19TVEFU
UygiRE9NLkxvY2F0aW9uLnJlcGxhY2UuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExv
Y2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5l
dyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4TG9jYXRpb246
OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9j
YXRpb246OkdldFRlbXBsYXRlKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFu
ZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJl
YWR5CkBAIC0xODUsNyArMTg1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246
OmFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICBJTkNf
U1RBVFMoIkRPTS5Mb2NhdGlvbi5hc3NpZ24uX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KICAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNp
Z25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIo
VjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAppbmRleCA4YjExZDM4ZTA3ZmNk
ZjVkNTRjZGUwYmJiMmM0ZDU3NGRhMjFlNmZiLi42NzE5YzBjMDQwNzQ1YTI2OTE5MjdiY2I3OTJl
YTQ5OWUxMDMwY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRl
blJlZmVyZW5jZSh3cmFwcGVyLCAicG9ydDEiLCB0b1Y4KG9iai0+cG9ydDEoKSwgYXJncy5Ib2xk
ZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlk
ZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdzLkhv
bGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVE
T01XcmFwcGVyKG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFw
cGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKaW5kZXgg
NmU1YmM1NjdjMmZiNzg2OGQ3YWE2OGI1ZWZiMmQwYmRlNDJkN2ViZS4uNDEzYzZlMmVhMDA3ZGY0
NmNjMzNhN2EyZDc5OGRlZGY5OTAzY2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBET01XaW5kb3cqIHNvdXJj
ZUFyZyA9IDA7CiAgICAgaWYgKGFyZ3NbNl0tPklzT2JqZWN0KCkpIHsKICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzZdKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cgPSBWOERPTVdy
YXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIHdyYXBw
ZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IHdyYXBwZXItPkZp
bmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCkpOwog
ICAgICAgICBpZiAoIXdpbmRvdy5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBzb3VyY2VBcmcgPSBW
OERPTVdpbmRvdzo6dG9OYXRpdmUod2luZG93KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwCmluZGV4IDViMDlhZWQ5M2Y3ZGE2MWQzNTI3YzU2MTFhYmY4MmVhZjM5Y2VlM2EuLmY1
NWJiNzQzZWI0OTVkM2IyYzI2MzFiYWVmMzJiNzU2ZDZkODc2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE11
dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyCiAg
ICAgUmVmUHRyPE11dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gVjhNdXRhdGlvbkNhbGxiYWNr
OjpjcmVhdGUoYXJnLCBjb250ZXh0LCB3cmFwcGVyKTsKICAgICBSZWZQdHI8TXV0YXRpb25PYnNl
cnZlcj4gb2JzZXJ2ZXIgPSBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFz
ZSgpKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihvYnNlcnZlci5yZWxl
YXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVj
dFdpdGhXcmFwcGVyKG9ic2VydmVyLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCmluZGV4IGYyZmE3MjdjZjhj
ODNiYzdmNjAwNTUwNzc2NjczMzgxODNkMTQwOWUuLjFmYzgxNDFhODkxOGFkMDAzMjk3OGE0MDk4
ZDVjZWEyMWY4NTE3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFNjcmlwdFByb2ZpbGUqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25DCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
ICAgIH0KICAgICBpbXBsLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIo
aW5zdGFuY2UsICZWOFNjcmlwdFByb2ZpbGU6OmluZm8sIGltcGwpOworICAgIFY4RE9NV3JhcHBl
cjo6c2V0TmF0aXZlSW5mbyhpbnN0YW5jZSwgJlY4U2NyaXB0UHJvZmlsZTo6aW5mbywgaW1wbCk7
CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAK
aW5kZXggMjA5NmNiMjUyODYyNmNkMTA5OTFiNmRjZDFiNmM4NWE3YmUxZmQxNi4uN2U4NDA1NWI3
MDQ1NjY1NjljMWM4YTY2OGVjYTBiNzhkMjY5YmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3Vz
dG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTY3Jp
cHRQcm9maWxlTm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdAogICAgICAg
ICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiAgICAgfQogICAgIGltcGwtPnJlZigp
OwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihpbnN0YW5jZSwgJlY4U2NyaXB0UHJv
ZmlsZU5vZGU6OmluZm8sIGltcGwpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyhp
bnN0YW5jZSwgJlY4U2NyaXB0UHJvZmlsZU5vZGU6OmluZm8sIGltcGwpOwogICAgIHJldHVybiBp
bnN0YW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCmluZGV4IDc5MjI1YjQyOTE1NzJkNGVlOGE2
OWRmNDA3NDQyZjljMDc0ZWZmZmUuLjg1MzVjYTY3YzBiOWQ1NmRmODZjMjMxNGJlYTIwNjlkZDdk
MDZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YktpdFBvaW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViS2l0UG9pbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qg
djg6OkFyZ3VtZW4KICAgICB9CiAgICAgUmVmUHRyPFdlYktpdFBvaW50PiBwb2ludCA9IFdlYktp
dFBvaW50OjpjcmVhdGUoeCwgeSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIocG9p
bnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihwb2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKICAg
ICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGY4MjA2
NzgzMGE5ZDRhZWFiN2Y2MjE3ZWM5ZDdhOGE5YmM1ZGU3MzIuLjBhODA4YmQ0Zjg4ZGRhYzIxOTE3
Zjg4ZjIwMjBlM2JiYzFjYTJiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVj
dG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3UKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVl
c3Q+IHhtbEh0dHBSZXF1ZXN0ID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzZWN1
cml0eU9yaWdpbik7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdz
LkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcih4bWxIdHRwUmVx
dWVzdC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKSwgJmluZm8sIHdy
YXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCg==
</data>
<flag name="commit-queue"
          id="193847"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>