<?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>27134</bug_id>
          
          <creation_ts>2009-07-09 16:11:50 -0700</creation_ts>
          <short_desc>[V8] Make DOMWrapper interface more like JSC</short_desc>
          <delta_ts>2014-12-16 00:48:07 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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="Nobody">webkit-unassigned</assigned_to>
          <cc>arv</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>130756</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-09 16:11:50 -0700</bug_when>
    <thetext>In JSC you make a wrapper by saying toJS.  In V8, we have a bunch of different functions that do that.  We should unify them.  I&apos;ve worked up a patch with the name V8DOMWrapper::wrap (soon to be followed with V8DOMWrapper::unwrap for the reverse operation).

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130759</commentid>
    <comment_count>1</comment_count>
      <attachid>32537</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-09 16:19:53 -0700</bug_when>
    <thetext>Created attachment 32537
Patch (renaming only)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130773</commentid>
    <comment_count>2</comment_count>
      <attachid>32537</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-09 17:17:56 -0700</bug_when>
    <thetext>Comment on attachment 32537
Patch (renaming only)

Why not just call them toJS like the JSC bindings?  And make them autogenerated like the JSC bindings?

Or is that the eventual plan?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130779</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-09 17:37:17 -0700</bug_when>
    <thetext>That sound rocking.  Cancel the review and I&apos;ll do that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055927</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-16 00:48:07 -0800</bug_when>
    <thetext>Closing some V8-related work items.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32537</attachid>
            <date>2009-07-09 16:19:53 -0700</date>
            <delta_ts>2010-06-10 17:46:12 -0700</delta_ts>
            <desc>Patch (renaming only)</desc>
            <filename>wrap.patch</filename>
            <type>text/plain</type>
            <size>31708</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTY4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjkgQEAKKzIwMDktMDctMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbVjhd
IE1ha2UgRE9NV3JhcHBlciBpbnRlcmZhY2UgbW9yZSBsaWtlIEpTQworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcxMzQKKworICAgICAgICBDaGFuZ2Vz
IGEgYnVuY2ggb2YgdGhlIFY4RE9NV3JhcHBlcjo6Y29udmVydCogbWV0aG9kcyB0byBiZQorICAg
ICAgICBWOERPTVdyYXBwZXI6OndyYXAgdG8gbWltaWMgdG9KUyBpbiB0aGUgSlNDIGJpbmRpbmdz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAg
ICAgICogYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlY4QWJz
dHJhY3RFdmVudExpc3RlbmVyOjpnZXRSZWNlaXZlck9iamVjdCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpnZXRWOE9iamVjdCk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NV3JhcHBlcjo6d3JhcCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNv
bnZlcnRUb1Y4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94
eTo6dXBkYXRlRG9jdW1lbnRXcmFwcGVyQ2FjaGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfR0VU
VEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5BTUVEX1BST1BFUlRZX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wp
OgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NP
Ul9HRVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1l
bnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOQU1FRF9QUk9QRVJUWV9HRVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
TkRFWEVEX1BST1BFUlRZX0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpOQU1FRF9QUk9QRVJU
WV9HRVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX1BST1BFUlRZX0dFVFRFUik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5BTUVEX1BST1BFUlRZX0dFVFRFUik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhOYW1lZE5vZGVNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SU5ERVhF
RF9QUk9QRVJUWV9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6TkFNRURfUFJPUEVSVFlfR0VU
VEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlSXRlcmF0b3JDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TkFNRURfUFJPUEVS
VFlfR0VUVEVSKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhUcmVlV2Fsa2VyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FM
TEJBQ0tfRlVOQ19ERUNMKToKKwogMjAwOS0wNy0wOSAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1
dHRAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNDU2NTkpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgyLDcgKzE0ODIsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAg
ICAgICB9CiAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICJpZiAoc3VjY2VzcylcbiI7CiAg
ICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgIiAuCi0gICAgICAgICAgICAicmV0dXJu
IFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KCRub2RlVG9SZXR1cm4pO1xuIjsK
KyAgICAgICAgICAgICJyZXR1cm4gVjhET01XcmFwcGVyOjp3cmFwKCRub2RlVG9SZXR1cm4pO1xu
IjsKICAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gInJldHVybiB2ODo6TnVsbCgpO1xuIjsK
ICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgfSBlbHNpZiAoJHJldHVyblR5cGUgZXEgInZv
aWQiKSB7CkBAIC0yMDEyLDE5ICsyMDEyLDE5IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIAogICAg
ICMgc3BlY2lhbCBjYXNlIGZvciBub24tRE9NIG5vZGUgaW50ZXJmYWNlcwogICAgIGlmIChJc0RP
TU5vZGVUeXBlKCR0eXBlKSkgewotICAgICAgICByZXR1cm4gIlY4RE9NV3JhcHBlcjo6Y29udmVy
dE5vZGVUb1Y4T2JqZWN0KCR2YWx1ZSkiOworICAgICAgICByZXR1cm4gIlY4RE9NV3JhcHBlcjo6
d3JhcCgkdmFsdWUpIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgIkV2ZW50VGFyZ2V0IiBv
ciAkdHlwZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIikgewotICAgICAgICByZXR1cm4gIlY4RE9N
V3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdCgkdmFsdWUpIjsKKyAgICAgICAg
cmV0dXJuICJWOERPTVdyYXBwZXI6OndyYXAoJHZhbHVlKSI7CiAgICAgfQogCiAgICAgaWYgKCR0
eXBlIGVxICJFdmVudCIpIHsKLSAgICAgICAgcmV0dXJuICJWOERPTVdyYXBwZXI6OmNvbnZlcnRF
dmVudFRvVjhPYmplY3QoJHZhbHVlKSI7CisgICAgICAgIHJldHVybiAiVjhET01XcmFwcGVyOjp3
cmFwKCR2YWx1ZSkiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIp
IHsKLSAgICAgICAgcmV0dXJuICJWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudExpc3RlbmVyVG9W
OE9iamVjdCgkdmFsdWUpIjsKKyAgICAgICAgcmV0dXJuICJWOERPTVdyYXBwZXI6OndyYXAoJHZh
bHVlKSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJSR0JDb2xvciIpIHsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcAkocmV2aXNp
b24gNDU2NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdFF1YXJhbnRpbmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgZ2V0UXVhcmFudGluZWRT
Y3JpcHRPYmplY3QoTm9kZSogbm8KICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQg
PSBWOFByb3h5Ojpjb250ZXh0KG5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCkp
OwogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKIAotICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2OE5vZGUgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9iamVj
dChub2RlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhOb2RlID0gVjhET01XcmFwcGVy
Ojp3cmFwKG5vZGUpOwogICAgIHF1YXJhbnRpbmVkT2JqZWN0ID0gU2NyaXB0T2JqZWN0KHY4OjpM
b2NhbDx2ODo6T2JqZWN0Pih2ODo6T2JqZWN0OjpDYXN0KCp2OE5vZGUpKSk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50
TGlzdGVuZXIuY3BwCShyZXZpc2lvbiA0NTY1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhB
YnN0cmFjdEV2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcg
QEAgdm9pZCBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbgogICAgIHY4OjpDb250
ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOwogCiAgICAgLy8gR2V0IHRoZSBWOCB3cmFwcGVy
IGZvciB0aGUgZXZlbnQgb2JqZWN0LgotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRUb1Y4T2JqZWN0KGV2ZW50KTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCA9IFY4RE9NV3JhcHBlcjo6d3JhcChldmVudCk7CiAK
ICAgICBpbnZva2VFdmVudEhhbmRsZXIodjhDb250ZXh0LCBldmVudCwganNFdmVudCwgaXNXaW5k
b3dFdmVudCk7CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhB
YnN0cmFjdEV2ZW50TGlzCiAgICAgICAgIHJldHVybiB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgp
LT5HbG9iYWwoKTsKIAogICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQgPSBldmVudC0+Y3VycmVudFRh
cmdldCgpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IFY4RE9NV3JhcHBlcjo6
Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdCh0YXJnZXQpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSA9IFY4RE9NV3JhcHBlcjo6d3JhcCh0YXJnZXQpOwogICAgIGlmICh2YWx1
ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAg
ICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdCh2YWx1ZSkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oCShyZXZp
c2lvbiA0NTY1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogICAgICAgICBWOENsYXNzSW5kZXg6
OlY4V3JhcHBlclR5cGUgdHlwZSA9IFY4Q2xhc3NJbmRleDo6RnJvbUludChpbXBsZW1lbnRhdGlv
blR5cGUtPkludDMyVmFsdWUoKSk7CiAgICAgICAgIGlmICh0eXBlID09IFY4Q2xhc3NJbmRleDo6
Tk9ERSkKLSAgICAgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9i
amVjdChzdGF0aWNfY2FzdDxOb2RlKj4oaW1wbGVtZW50YXRpb24pKTsKKyAgICAgICAgICAgIHJl
dHVybiBWOERPTVdyYXBwZXI6OndyYXAoc3RhdGljX2Nhc3Q8Tm9kZSo+KGltcGxlbWVudGF0aW9u
KSk7CiAgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KHR5cGUs
IGltcGxlbWVudGF0aW9uKTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAJKHJldmlzaW9uIDQ1NjY0KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gQ29uc3RydWN0b3IKIH0KIAogI2lmIEVOQUJMRShTVkcpCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpjb252ZXJ0U1ZHRWxlbWVudEluc3RhbmNlVG9W
OE9iamVjdChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4RE9NV3JhcHBlcjo6d3JhcChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlKQogewog
ICAgIGlmICghaW5zdGFuY2UpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwpAQCAtNDY2LDE5
ICs0NjYsMTkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udgogI2lm
IEVOQUJMRShTVkcpCiAgICAgICAgIFNWR19OT0RFX1RZUEVTKE1BS0VfQ0FTRSkKICNlbmRpZgot
ICAgICAgICByZXR1cm4gY29udmVydE5vZGVUb1Y4T2JqZWN0KHN0YXRpY19jYXN0PE5vZGUqPihp
bXBsKSk7CisgICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PE5vZGUqPihpbXBsKSk7CiAg
ICAgY2FzZSBWOENsYXNzSW5kZXg6OkNTU1ZBTFVFOgotICAgICAgICByZXR1cm4gY29udmVydENT
U1ZhbHVlVG9WOE9iamVjdChzdGF0aWNfY2FzdDxDU1NWYWx1ZSo+KGltcGwpKTsKKyAgICAgICAg
cmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8Q1NTVmFsdWUqPihpbXBsKSk7CiAgICAgY2FzZSBWOENs
YXNzSW5kZXg6OkNTU1JVTEU6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0Q1NTUnVsZVRvVjhPYmpl
Y3Qoc3RhdGljX2Nhc3Q8Q1NTUnVsZSo+KGltcGwpKTsKKyAgICAgICAgcmV0dXJuIHdyYXAoc3Rh
dGljX2Nhc3Q8Q1NTUnVsZSo+KGltcGwpKTsKICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6U1RZTEVT
SEVFVDoKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRTdHlsZVNoZWV0VG9WOE9iamVjdChzdGF0aWNf
Y2FzdDxTdHlsZVNoZWV0Kj4oaW1wbCkpOworICAgICAgICByZXR1cm4gd3JhcChzdGF0aWNfY2Fz
dDxTdHlsZVNoZWV0Kj4oaW1wbCkpOwogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpET01XSU5ET1c6
Ci0gICAgICAgIHJldHVybiBjb252ZXJ0V2luZG93VG9WOE9iamVjdChzdGF0aWNfY2FzdDxET01X
aW5kb3cqPihpbXBsKSk7CisgICAgICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PERPTVdpbmRv
dyo+KGltcGwpKTsKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBTVkdfTk9OTk9ERV9UWVBFUyhN
QUtFX0NBU0UpCiAgICAgICAgIGlmICh0eXBlID09IFY4Q2xhc3NJbmRleDo6U1ZHRUxFTUVOVElO
U1RBTkNFKQotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRTVkdFbGVtZW50SW5zdGFuY2VUb1Y4
T2JqZWN0KHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbnN0YW5jZSo+KGltcGwpKTsKKyAgICAgICAg
ICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbnN0YW5jZSo+KGltcGwpKTsK
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRTVkdPYmplY3RXaXRoQ29udGV4dFRvVjhPYmplY3QodHlw
ZSwgaW1wbCk7CiAjZW5kaWYKIApAQCAtOTkzLDcgKzk5Myw3IEBAIFY4Q2xhc3NJbmRleDo6VjhX
cmFwcGVyVHlwZSBWOERPTVdyYXBwZXIKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRvVjhPYmplY3QoRXZl
bnQqIGV2ZW50KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6d3JhcChFdmVu
dCogZXZlbnQpCiB7CiAgICAgaWYgKCFldmVudCkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7
CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBzdGF0aWMgY29uc3QgVjhDbGFzc0luZGV4OjpWOFdyYXBw
ZXJUeXBlCiB9OwogCiAvLyBDYWxsZXIgY2hlY2tzIG5vZGUgaXMgbm90IG51bGwuCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpjb252ZXJ0Tm9kZVRvVjhPYmplY3QoTm9kZSog
bm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OndyYXAoTm9kZSogbm9k
ZSkKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwpAQCAtMTE2
OSw3ICsxMTY5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udgog
Ly8gMSkgRXZlbnRUYXJnZXROb2RlOyAyKSBET01XaW5kb3cgMykgWE1MSHR0cFJlcXVlc3Q7IDQp
IE1lc3NhZ2VQb3J0OwogLy8gNSkgWE1MSHR0cFJlcXVlc3RVcGxvYWQKIC8vIGNoZWNrIEV2ZW50
VGFyZ2V0LmggZm9yIG5ldyB0eXBlIGNvbnZlcnNpb24gbWV0aG9kcwotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRh
cmdldCogdGFyZ2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6d3JhcChF
dmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4g
djg6Ok51bGwoKTsKQEAgLTExODgsNyArMTE4OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERPTVdyYXBwZXI6OmNvbnYKIAogICAgIE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpOwog
ICAgIGlmIChub2RlKQotICAgICAgICByZXR1cm4gY29udmVydE5vZGVUb1Y4T2JqZWN0KG5vZGUp
OworICAgICAgICByZXR1cm4gd3JhcChub2RlKTsKIAogICAgIGlmIChET01XaW5kb3cqIGRvbVdp
bmRvdyA9IHRhcmdldC0+dG9ET01XaW5kb3coKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1Y4
T2JqZWN0KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBkb21XaW5kb3cpOwpAQCAtMTIyMCw3ICsx
MjIwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udgogICAgIHJl
dHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRMaXN0ZW5lclRvVjhPYmplY3QoRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjp3cmFw
KEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIGlmICghbGlzdGVuZXIpCiAgICAgICAg
IHJldHVybiB2ODo6TnVsbCgpOwpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udgogICAgIHJldHVybiB2OGxpc3RlbmVyLT5nZXRMaXN0
ZW5lck9iamVjdCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpj
b252ZXJ0RE9NSW1wbGVtZW50YXRpb25Ub1Y4T2JqZWN0KERPTUltcGxlbWVudGF0aW9uKiBpbXBs
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6d3JhcChET01JbXBsZW1lbnRh
dGlvbiogaW1wbCkKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHJlc3VsdCA9IGluc3Rh
bnRpYXRlVjhPYmplY3QoVjhDbGFzc0luZGV4OjpET01JTVBMRU1FTlRBVElPTiwgVjhDbGFzc0lu
ZGV4OjpET01JTVBMRU1FTlRBVElPTiwgaW1wbCk7CiAgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkp
IHsKQEAgLTEyNDEsNyArMTI0MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBw
ZXI6OmNvbnYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhET01XcmFwcGVyOjpjb252ZXJ0U3R5bGVTaGVldFRvVjhPYmplY3QoU3R5bGVTaGVldCogc2hl
ZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjp3cmFwKFN0eWxlU2hlZXQq
IHNoZWV0KQogewogICAgIGlmICghc2hlZXQpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwpA
QCAtMTI2NCwxNCArMTI2NCwxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVy
Ojpjb252CiAgICAgLy8gQWRkIGEgaGlkZGVuIHJlZmVyZW5jZSBmcm9tIHN0eWxlc2hlZXQgb2Jq
ZWN0IHRvIGl0cyBvd25lciBub2RlLgogICAgIE5vZGUqIG93bmVyTm9kZSA9IHNoZWV0LT5vd25l
ck5vZGUoKTsKICAgICBpZiAob3duZXJOb2RlKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb3duZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnZlcnROb2RlVG9W
OE9iamVjdChvd25lck5vZGUpKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvd25l
ciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qod3JhcChvd25lck5vZGUpKTsKICAgICAg
ICAgcmVzdWx0LT5TZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprU3R5bGVTaGVldE93bmVyTm9k
ZUluZGV4LCBvd25lcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydENTU1ZhbHVlVG9WOE9iamVjdChD
U1NWYWx1ZSogdmFsdWUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjp3cmFw
KENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdjg6
Ok51bGwoKTsKQEAgLTEzMDcsNyArMTMwNyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdyYXBwZXI6OmNvbnYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhET01XcmFwcGVyOjpjb252ZXJ0Q1NTUnVsZVRvVjhPYmplY3QoQ1NTUnVsZSogcnVs
ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OndyYXAoQ1NTUnVsZSogcnVs
ZSkKIHsKICAgICBpZiAoIXJ1bGUpIAogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKQEAgLTEz
NjAsNyArMTM2MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OmNvbnYK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFw
cGVyOjpjb252ZXJ0V2luZG93VG9WOE9iamVjdChET01XaW5kb3cqIHdpbmRvdykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OndyYXAoRE9NV2luZG93KiB3aW5kb3cpCiB7CiAg
ICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5oCShyZXZpc2lvbiA0NTY2NCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxNyArMTM0LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEMqPihj
b252ZXJ0RE9NV3JhcHBlclRvTm9kZUhlbHBlcih2YWx1ZSkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUgdHlwZSwg
UGFzc1JlZlB0cjxUPiBpbXApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0
VG9WOE9iamVjdCh0eXBlLCBpbXAuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OlY4
V3JhcHBlclR5cGUsIHZvaWQqKTsKLQotICAgICAgICAvLyBGYXN0LXBhdGggZm9yIE5vZGUgb2Jq
ZWN0cy4KLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0Tm9kZVRv
VjhPYmplY3QoTm9kZSopOwotCiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDPgogICAgICAgICBz
dGF0aWMgQyogY29udmVydFRvTmF0aXZlT2JqZWN0KFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlw
ZSB0eXBlLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JqZWN0KQogICAgICAgICB7CkBAIC0xNTMs
OCArMTQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBWOENsYXNz
SW5kZXg6OlY4V3JhcHBlclR5cGUgZG9tV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pik7CiAKLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0RXZlbnRU
b1Y4T2JqZWN0KEV2ZW50Kik7Ci0KICAgICAgICAgc3RhdGljIEV2ZW50KiBjb252ZXJ0VG9OYXRp
dmVFdmVudCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFpc0RPTUV2ZW50V3JhcHBlcihqc0V2ZW50KSkKQEAgLTE2MiwxNSArMTQ5LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRET01XcmFw
cGVyVG9OYXRpdmU8RXZlbnQ+KGpzRXZlbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KEV2ZW50
VGFyZ2V0Kik7Ci0gICAgICAgIC8vIFdyYXAgYW5kIHVud3JhcCBKUyBldmVudCBsaXN0ZW5lcnMu
Ci0gICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50TGlzdGVu
ZXJUb1Y4T2JqZWN0KEV2ZW50TGlzdGVuZXIqKTsKLQotICAgICAgICAvLyBET01JbXBsZW1lbnRh
dGlvbiBpcyBhIHNpbmdsZXRvbiBhbmQgaXQgaXMgaGFuZGxlZCBpbiBhIHNwZWNpYWwKLSAgICAg
ICAgLy8gd2F5LiBBIHdyYXBwZXIgaXMgZ2VuZXJhdGVkIHBlciBkb2N1bWVudCBhbmQgc3RvcmVk
IGluIGFuCi0gICAgICAgIC8vIGludGVybmFsIGZpZWxkIG9mIHRoZSBkb2N1bWVudC4KLSAgICAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0RE9NSW1wbGVtZW50YXRpb25U
b1Y4T2JqZWN0KERPTUltcGxlbWVudGF0aW9uKik7Ci0KICAgICAgICAgLy8gV3JhcCBKUyBub2Rl
IGZpbHRlciBpbiBDKysuCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHdy
YXBOYXRpdmVOb2RlRmlsdGVyKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAKQEAgLTE4NiwyNSAr
MTY0LDQxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciBh
IFY4IHZhbHVlIGlzIGEgd3JhcHBlciBvZiB0eXBlIHxjbGFzc1R5cGV8LgogICAgICAgICBzdGF0
aWMgYm9vbCBpc1dyYXBwZXJPZlR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBWOENsYXNzSW5k
ZXg6OlY4V3JhcHBlclR5cGUpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkKiBjb252ZXJ0VG9TVkdQ
T0RUeXBlSW1wbChWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUsIHY4OjpIYW5kbGU8djg6OlZh
bHVlPik7Ci0KICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciBhIFY4IHZhbHVlIGlzIGEgRE9NIEV2
ZW50IHdyYXBwZXIuCiAgICAgICAgIHN0YXRpYyBib29sIGlzRE9NRXZlbnRXcmFwcGVyKHY4OjpI
YW5kbGU8djg6OlZhbHVlPik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQqIGNvbnZlcnRUb05hdGl2
ZU9iamVjdEltcGwoVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4pOworICAgICAgICAvLyBUeXBlLXNwZWNpZmljIHdyYXBwaW5nIG1ldGhvZHMuCisgICAg
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcChOb2RlKik7CisgICAgICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcChFdmVudCopOworICAgICAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXAoRXZlbnRUYXJnZXQqKTsKKyAgICAgICAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwKEV2ZW50TGlzdGVuZXIqKTsKKyAgICAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwKFN0eWxlU2hlZXQqKTsKKyAgICAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwKENTU1ZhbHVlKik7CisgICAgICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcChDU1NSdWxlKik7CisgICAgICAgIC8vIFJldHVy
bnMgdGhlIEpTIHdyYXBwZXIgb2YgYSB3aW5kb3cgb2JqZWN0LCBpbml0aWFsaXplcyB0aGUKKyAg
ICAgICAgLy8gZW52aXJvbm1lbnQgb2YgdGhlIHdpbmRvdyBmcmFtZSBpZiBuZWVkZWQuCisgICAg
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcChET01XaW5kb3cqKTsKKyAgICAg
ICAgLy8gRE9NSW1wbGVtZW50YXRpb24gaXMgYSBzaW5nbGV0b24gYW5kIGl0IGlzIGhhbmRsZWQg
aW4gYSBzcGVjaWFsCisgICAgICAgIC8vIHdheS4gQSB3cmFwcGVyIGlzIGdlbmVyYXRlZCBwZXIg
ZG9jdW1lbnQgYW5kIHN0b3JlZCBpbiBhbgorICAgICAgICAvLyBpbnRlcm5hbCBmaWVsZCBvZiB0
aGUgZG9jdW1lbnQuCisgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcChE
T01JbXBsZW1lbnRhdGlvbiopOworI2lmIEVOQUJMRShTVkcpCisgICAgICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcChTVkdFbGVtZW50SW5zdGFuY2UqKTsKKyNlbmRpZgogCi0g
ICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydFN0eWxlU2hlZXRUb1Y4
T2JqZWN0KFN0eWxlU2hlZXQqKTsKLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb252ZXJ0Q1NTVmFsdWVUb1Y4T2JqZWN0KENTU1ZhbHVlKik7Ci0gICAgICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydENTU1J1bGVUb1Y4T2JqZWN0KENTU1J1bGUqKTsK
LSAgICAgICAgLy8gUmV0dXJucyB0aGUgSlMgd3JhcHBlciBvZiBhIHdpbmRvdyBvYmplY3QsIGlu
aXRpYWxpemVzIHRoZSBlbnZpcm9ubWVudAotICAgICAgICAvLyBvZiB0aGUgd2luZG93IGZyYW1l
IGlmIG5lZWRlZC4KLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0
V2luZG93VG9WOE9iamVjdChET01XaW5kb3cqKTsKKyAgICAgICAgLy8gR2VuZXJpYyB3cmFwcGlu
ZyBtZXRob2RzLgorICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnRU
b1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlwZSwgdm9pZCopOworCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIHR5cGUsIFBh
c3NSZWZQdHI8VD4gaW1wKSB7IHJldHVybiBjb252ZXJ0VG9WOE9iamVjdCh0eXBlLCBpbXAuZ2V0
KCkpOyB9CiAKICNpZiBFTkFCTEUoU1ZHKQotICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNvbnZlcnRTVkdFbGVtZW50SW5zdGFuY2VUb1Y4T2JqZWN0KFNWR0VsZW1lbnRJbnN0
YW5jZSopOwogICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnRTVkdP
YmplY3RXaXRoQ29udGV4dFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlLCB2
b2lkKik7CiAjZW5kaWYKIAorICAgICAgICAvLyBGSVhNRTogUHVibGljIGFuZCBhbiBJbXBsPyAg
U2FkIGZhY2UuCisgICAgICAgIHN0YXRpYyB2b2lkKiBjb252ZXJ0VG9TVkdQT0RUeXBlSW1wbChW
OENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUsIHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CisKICAg
ICBwcml2YXRlOgogICAgICAgICAvLyBTZXQgaGlkZGVuIHJlZmVyZW5jZXMgaW4gYSBET01XaW5k
b3cgb2JqZWN0IG9mIGEgZnJhbWUuCiAgICAgICAgIHN0YXRpYyB2b2lkIHNldEhpZGRlbldpbmRv
d1JlZmVyZW5jZShGcmFtZSosIGNvbnN0IGludCBpbnRlcm5hbEluZGV4LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KTsKQEAgLTIxNyw2ICsyMTEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHIgPDwgMSk7CiAgICAg
ICAgIH0KIAorICAgICAgICBzdGF0aWMgdm9pZCogY29udmVydFRvTmF0aXZlT2JqZWN0SW1wbChW
OENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUsIHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CisKKwor
CiAgICAgICAgIHN0YXRpYyBWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUgaHRtbEVsZW1lbnRU
eXBlKEhUTUxFbGVtZW50Kik7CiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgc3RhdGljIFY4Q2xh
c3NJbmRleDo6VjhXcmFwcGVyVHlwZSBzdmdFbGVtZW50VHlwZShTVkdFbGVtZW50Kik7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHJldmlzaW9uIDQ1NjY0KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDcgKzkxOCw3IEBAIHZv
aWQgVjhQcm94eTo6dXBkYXRlRG9jdW1lbnRXcmFwcGVyQ2FjaGUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkb2N1bWVudFdyYXBwZXIgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9iamVjdChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZG9jdW1lbnRXcmFwcGVyID0gVjhET01XcmFwcGVyOjp3
cmFwKG1fZnJhbWUtPmRvY3VtZW50KCkpOwogCiAgICAgLy8gSWYgaW5zdGFudGlhdGlvbiBvZiB0
aGUgZG9jdW1lbnQgd3JhcHBlciBmYWlscywgY2xlYXIgdGhlIGNhY2hlCiAgICAgLy8gYW5kIGxl
dCB0aGUgRE9NV2luZG93IGFjY2Vzc29yIGhhbmRsZSBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50LgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuY3Bw
CShyZXZpc2lvbiA0NTY1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgQUNDRVNTT1JfR0VU
VEVSKERvY3VtZW50SW1wbGVtZW50YXRpb24pCiAKICAgICAvLyBHZW5lcmF0ZSBhIHdyYXBwZXIu
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBl
clRvTmF0aXZlPERvY3VtZW50PihpbmZvLkhvbGRlcigpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTUltcGxlbWVudGF0aW9uVG9W
OE9iamVjdChkb2N1bWVudC0+aW1wbGVtZW50YXRpb24oKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OndyYXAoZG9jdW1lbnQtPmltcGxlbWVudGF0
aW9uKCkpOwogCiAgICAgLy8gU3RvcmUgdGhlIHdyYXBwZXIgaW4gdGhlIGludGVybmFsIGZpZWxk
LgogICAgIGluZm8uSG9sZGVyKCktPlNldEludGVybmFsRmllbGQoa0RvY3VtZW50SW1wbGVtZW50
YXRpb25JbmRleCwgd3JhcHBlcik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA0NTY1OSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIxLDcgKzQyMSw3IEBAIEFDQ0VTU09SX0dFVFRFUihET01XaW5kb3dFdmVudEhhbmRsZXIp
CiAgICAgU3RyaW5nIGV2ZW50VHlwZSA9IGV2ZW50TmFtZUZyb21BdHRyaWJ1dGVOYW1lKGtleSk7
CiAKICAgICBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGltcC0+Z2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUpOwotICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVu
dExpc3RlbmVyVG9WOE9iamVjdChsaXN0ZW5lcik7CisgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6
d3JhcChsaXN0ZW5lcik7CiB9CiAKIHN0YXRpYyBib29sIGNhblNob3dNb2RhbERpYWxvZ05vdyhj
b25zdCBGcmFtZSogZnJhbWUpCkBAIC04MTIsNyArODEyLDcgQEAgTkFNRURfUFJPUEVSVFlfR0VU
VEVSKERPTVdpbmRvdykKICAgICAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBpdGVtcyA9IGRv
Yy0+d2luZG93TmFtZWRJdGVtcyhwcm9wTmFtZSk7CiAgICAgICAgIGlmIChpdGVtcy0+bGVuZ3Ro
KCkgPj0gMSkgewogICAgICAgICAgICAgaWYgKGl0ZW1zLT5sZW5ndGgoKSA9PSAxKQotICAgICAg
ICAgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9iamVjdChpdGVt
cy0+Zmlyc3RJdGVtKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6Ondy
YXAoaXRlbXMtPmZpcnN0SXRlbSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OkhU
TUxDT0xMRUNUSU9OLCBpdGVtcy5nZXQoKSk7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNDU2NTkp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChFbGVtZW50U2V0
QXR0cmlidXRlTm8KICAgICBpZiAoZWMpCiAgICAgICAgIHRocm93RXJyb3IoZWMpOwogCi0gICAg
cmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KHJlc3VsdC5nZXQoKSk7
CisgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6d3JhcChyZXN1bHQuZ2V0KCkpOwogfQogCiBDQUxM
QkFDS19GVU5DX0RFQ0woRWxlbWVudFNldEF0dHJpYnV0ZU5TKQpAQCAtMTI0LDcgKzEyNCw3IEBA
IENBTExCQUNLX0ZVTkNfREVDTChFbGVtZW50U2V0QXR0cmlidXRlTm8KICAgICBpZiAoZWMpCiAg
ICAgICAgIHRocm93RXJyb3IoZWMpOwogCi0gICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVy
dE5vZGVUb1Y4T2JqZWN0KHJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6
d3JhcChyZXN1bHQuZ2V0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyB0b0V2ZW50VHlw
ZSh2ODo6TG9jYWw8djg6OlN0cmluZz4gdmFsdWUpCkBAIC0xNjIsNyArMTYyLDcgQEAgQUNDRVNT
T1JfR0VUVEVSKEVsZW1lbnRFdmVudEhhbmRsZXIpCiAgICAgTm9kZSogbm9kZSA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8Tm9kZT4oaW5mby5Ib2xkZXIoKSk7CiAKICAg
ICBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IG5vZGUtPmdldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodG9FdmVudFR5cGUobmFtZSkpOwotICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRF
dmVudExpc3RlbmVyVG9WOE9iamVjdChsaXN0ZW5lcik7CisgICAgcmV0dXJuIFY4RE9NV3JhcHBl
cjo6d3JhcChsaXN0ZW5lcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0
NTY1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIEFDQ0VTU09SX0dFVFRFUihFdmVudENsaXBi
b2FyZERhdGEpCiBBQ0NFU1NPUl9HRVRURVIoRXZlbnRTcmNFbGVtZW50KQogewogICAgIEV2ZW50
KiBldmVudCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxFdmVudD4o
aW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFy
Z2V0VG9WOE9iamVjdChldmVudC0+dGFyZ2V0KCkpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6
OndyYXAoZXZlbnQtPnRhcmdldCgpKTsKIH0KIAogQUNDRVNTT1JfR0VUVEVSKEV2ZW50UmV0dXJu
VmFsdWUpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1l
bnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA0NTY1OSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0wo
SFRNTEF1ZGlvRWxlbWVudENvbnN0CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGRvY3VtZW50IGlz
IGFkZGVkIHRvIHRoZSBET00gTm9kZSBtYXAuIE90aGVyd2lzZSwgdGhlIEhUTUxBdWRpb0VsZW1l
bnQgaW5zdGFuY2UKICAgICAvLyBtYXkgZW5kIHVwIGJlaW5nIHRoZSBvbmx5IG5vZGUgaW4gdGhl
IG1hcCBhbmQgZ2V0IGdhcmJhZ2UtY2NvbGxlY3RlZCBwcmVtYXR1cmVseS4KLSAgICBWOERPTVdy
YXBwZXI6OmNvbnZlcnROb2RlVG9WOE9iamVjdChkb2N1bWVudCk7CisgICAgVjhET01XcmFwcGVy
Ojp3cmFwKGRvY3VtZW50KTsKIAogICAgIFJlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBhdWRpbyA9
IG5ldyBIVE1MQXVkaW9FbGVtZW50KEhUTUxOYW1lczo6YXVkaW9UYWcsIFY4UHJveHk6OnJldHJp
ZXZlRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwKQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDQ1NjU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZQogICAgICAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiAKICAgICBpZiAobmFtZWRJdGVtcy5zaXpl
KCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2Jq
ZWN0KG5hbWVkSXRlbXMuYXQoMCkuZ2V0KCkpOworICAgICAgICByZXR1cm4gVjhET01XcmFwcGVy
Ojp3cmFwKG5hbWVkSXRlbXMuYXQoMCkuZ2V0KCkpOwogCiAgICAgTm9kZUxpc3QqIGxpc3QgPSBu
ZXcgVjhOYW1lZE5vZGVzQ29sbGVjdGlvbihuYW1lZEl0ZW1zKTsKICAgICByZXR1cm4gVjhET01X
cmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6Ok5PREVMSVNULCBsaXN0KTsK
QEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRJdGVtKEhU
TQogICAgIH0KIAogICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBjb2xsZWN0aW9uLT5pdGVtKGlu
ZGV4LT5VaW50MzJWYWx1ZSgpKTsKLSAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0Tm9k
ZVRvVjhPYmplY3QocmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gVjhET01XcmFwcGVyOjp3cmFw
KHJlc3VsdC5nZXQoKSk7CiB9CiAKIE5BTUVEX1BST1BFUlRZX0dFVFRFUihIVE1MQ29sbGVjdGlv
bikKQEAgLTEyOCw3ICsxMjgsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woSFRNTENvbGxlY3Rpb25D
YWxsQXNGCiAgICAgTm9kZSogbm9kZSA9IGltcC0+bmFtZWRJdGVtKG5hbWUpOwogICAgIHdoaWxl
IChub2RlKSB7CiAgICAgICAgIGlmICghY3VycmVudCkKLSAgICAgICAgICAgIHJldHVybiBWOERP
TVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9iamVjdChub2RlKTsKKyAgICAgICAgICAgIHJldHVy
biBWOERPTVdyYXBwZXI6OndyYXAobm9kZSk7CiAKICAgICAgICAgbm9kZSA9IGltcC0+bmV4dE5h
bWVkSXRlbShuYW1lKTsKICAgICAgICAgY3VycmVudC0tOwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24g
NDU2NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgTkFNRURfUFJPUEVSVFlfR0VU
VEVSKEhUTUxEb2N1bWVudCkKICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjppZnJhbWVUYWcpICYmIChmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4o
bm9kZSktPmNvbnRlbnRGcmFtZSgpKSkKICAgICAgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBmcmFtZS0+ZG9tV2lu
ZG93KCkpOwogCi0gICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9i
amVjdChub2RlKTsKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6d3JhcChub2RlKTsKICAg
ICB9CiAKICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNz
SW5kZXg6OkhUTUxDT0xMRUNUSU9OLCBpdGVtcy5nZXQoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA0NTY1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1F
bGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBJTkRFWEVE
X1BST1BFUlRZX0dFVFRFUihIVE1MRm9ybUVsZW1lbnQpCiAgICAgUmVmUHRyPE5vZGU+IGZvcm1F
bGVtZW50ID0gZm9ybS0+ZWxlbWVudHMoKS0+aXRlbShpbmRleCk7CiAgICAgaWYgKCFmb3JtRWxl
bWVudCkKICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgcmV0
dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KGZvcm1FbGVtZW50LmdldCgp
KTsKKyAgICByZXR1cm4gVjhET01XcmFwcGVyOjp3cmFwKGZvcm1FbGVtZW50LmdldCgpKTsKIH0K
IAogCkBAIC03NCw3ICs3NCw3IEBAIE5BTUVEX1BST1BFUlRZX0dFVFRFUihIVE1MRm9ybUVsZW1l
bnQpCiAgICAgQVNTRVJUKCFlbGVtZW50cy5pc0VtcHR5KCkpOwogCiAgICAgaWYgKGVsZW1lbnRz
LnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0Tm9kZVRv
VjhPYmplY3QoZWxlbWVudHMuYXQoMCkuZ2V0KCkpOworICAgICAgICByZXR1cm4gVjhET01XcmFw
cGVyOjp3cmFwKGVsZW1lbnRzLmF0KDApLmdldCgpKTsKIAogICAgIE5vZGVMaXN0KiBjb2xsZWN0
aW9uID0gbmV3IFY4TmFtZWROb2Rlc0NvbGxlY3Rpb24oZWxlbWVudHMpOwogICAgIHJldHVybiBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9ERUxJU1QsIGNv
bGxlY3Rpb24pOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNDU2NTkp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgQ0FMTEJBQ0tfRlVOQ19E
RUNMKEhUTUxJbWFnZUVsZW1lbnRDb25zdAogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBkb2N1bWVu
dCBpcyBhZGRlZCB0byB0aGUgRE9NIE5vZGUgbWFwLiBPdGhlcndpc2UsIHRoZSBIVE1MSW1hZ2VF
bGVtZW50IGluc3RhbmNlCiAgICAgLy8gbWF5IGVuZCB1cCBiZWluZyB0aGUgb25seSBub2RlIGlu
IHRoZSBtYXAgYW5kIGdldCBnYXJiYWdlLWNjb2xsZWN0ZWQgcHJlbWF0dXJlbHkuCi0gICAgVjhE
T01XcmFwcGVyOjpjb252ZXJ0Tm9kZVRvVjhPYmplY3QoZG9jdW1lbnQpOworICAgIFY4RE9NV3Jh
cHBlcjo6d3JhcChkb2N1bWVudCk7CiAKICAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1h
Z2UgPSBuZXcgSFRNTEltYWdlRWxlbWVudChIVE1MTmFtZXM6OmltZ1RhZywgVjhQcm94eTo6cmV0
cmlldmVGcmFtZSgpLT5kb2N1bWVudCgpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDApIHsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDQ1NjU5KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
SFRNTE9wdGlvbnNDb2xsZQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIAotICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRO
b2RlVG9WOE9iamVjdChyZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6Ondy
YXAocmVzdWx0LmdldCgpKTsKIH0KIAogSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoSFRNTE9wdGlv
bnNDb2xsZWN0aW9uKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2Vs
ZWN0RWxlbWVudENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gNDU2NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxl
Y3RFbGVtZW50Q29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYy
LDcgQEAgTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxTZWxlY3RFbGVtZW50QwogICAgICAgICBy
ZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIAogICAgIGlmIChpdGVtcy5zaXplKCkg
PT0gMSkKLSAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0
KGl0ZW1zLmF0KDApLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6d3JhcChp
dGVtcy5hdCgwKS5nZXQoKSk7CiAKICAgICBOb2RlTGlzdCogbGlzdCA9IG5ldyBWOE5hbWVkTm9k
ZXNDb2xsZWN0aW9uKGl0ZW1zKTsKICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9W
OE9iamVjdChWOENsYXNzSW5kZXg6Ok5PREVMSVNULCBsaXN0KTsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCShyZXZpc2lv
biA0NTY1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIEFDQ0VTU09SX0dFVFRFUihN
ZXNzYWdlUG9ydE9ubWVzc2FnZSkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlUG9ydC5v
bm1lc3NhZ2UuX2dldCIpOwogICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE1lc3NhZ2VQb3J0PihWOENsYXNzSW5kZXg6Ok1F
U1NBR0VQT1JULCBpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252
ZXJ0RXZlbnRMaXN0ZW5lclRvVjhPYmplY3QobWVzc2FnZVBvcnQtPm9ubWVzc2FnZSgpKTsKKyAg
ICByZXR1cm4gVjhET01XcmFwcGVyOjp3cmFwKG1lc3NhZ2VQb3J0LT5vbm1lc3NhZ2UoKSk7CiB9
CiAKIEFDQ0VTU09SX1NFVFRFUihNZXNzYWdlUG9ydE9ubWVzc2FnZSkKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZU1hcEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDQ1NjU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVN
YXBDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIElOREVYRURfUFJP
UEVSVFlfR0VUVEVSKE5hbWVkTm9kZU1hcCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiAKLSAgICByZXR1cm4gVjhET01XcmFwcGVy
Ojpjb252ZXJ0Tm9kZVRvVjhPYmplY3QocmVzdWx0LmdldCgpKTsKKyAgICByZXR1cm4gVjhET01X
cmFwcGVyOjp3cmFwKHJlc3VsdC5nZXQoKSk7CiB9CiAKIE5BTUVEX1BST1BFUlRZX0dFVFRFUihO
YW1lZE5vZGVNYXApCkBAIC02OCw3ICs2OCw3IEBAIE5BTUVEX1BST1BFUlRZX0dFVFRFUihOYW1l
ZE5vZGVNYXApCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOwogCi0gICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4
T2JqZWN0KHJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6d3JhcChyZXN1
bHQuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVJdGVyYXRvckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlSXRlcmF0b3JDdXN0b20uY3BwCShyZXZp
c2lvbiA0NTY1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUl0ZXJhdG9y
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJl
dHVybiB2ODo6TnVsbCgpOwogCi0gICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVU
b1Y4T2JqZWN0KG9iamVjdC5nZXQoKSk7CisgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6d3JhcChv
YmplY3QuZ2V0KCkpOwogfQogCiBDQUxMQkFDS19GVU5DX0RFQ0woTm9kZUl0ZXJhdG9yTmV4dE5v
ZGUpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNDU2NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5vZGVMaXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBOQU1F
RF9QUk9QRVJUWV9HRVRURVIoTm9kZUxpc3QpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogCi0gICAgcmV0dXJuIFY4RE9NV3JhcHBl
cjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KHJlc3VsdC5nZXQoKSk7CisgICAgcmV0dXJuIFY4RE9N
V3JhcHBlcjo6d3JhcChyZXN1bHQuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFRyZWVXYWxrZXJDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJlZVdhbGtlckN1
c3RvbS5jcHAJKHJldmlzaW9uIDQ1NjU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhUcmVlV2Fsa2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBz
dGF0aWMgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4CiAgICAgaWYgKCFvYmplY3Qp
CiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogCi0gICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6
Y29udmVydE5vZGVUb1Y4T2JqZWN0KG9iamVjdC5nZXQoKSk7CisgICAgcmV0dXJuIFY4RE9NV3Jh
cHBlcjo6d3JhcChvYmplY3QuZ2V0KCkpOwogfQogCiBDQUxMQkFDS19GVU5DX0RFQ0woVHJlZVdh
bGtlclBhcmVudE5vZGUpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQ
cm9jZXNzb3JDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAJKHJldmlzaW9uIDQ1NjU5KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNyArNzcsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woWFNMVFByb2Nlc3NvclRy
YW5zZm9yCiAgICAgTm9kZSogc291cmNlID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBl
clRvTm9kZTxOb2RlPihhcmdzWzBdKTsKICAgICBEb2N1bWVudCogb3duZXIgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPERvY3VtZW50PihhcmdzWzFdKTsKICAgICBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gcmVzdWx0ID0gaW1wLT50cmFuc2Zvcm1Ub0ZyYWdtZW50KHNv
dXJjZSwgb3duZXIpOwotICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9i
amVjdChyZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6OndyYXAocmVzdWx0
LmdldCgpKTsKIH0KIAogCkBAIC05OCw3ICs5OCw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChYU0xU
UHJvY2Vzc29yVHJhbnNmb3IKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKIAotICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnROb2RlVG9WOE9i
amVjdChyZXN1bHQuZ2V0KCkpOworICAgIHJldHVybiBWOERPTVdyYXBwZXI6OndyYXAocmVzdWx0
LmdldCgpKTsKIH0KIAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>