<?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>58828</bug_id>
          
          <creation_ts>2011-04-18 14:03:52 -0700</creation_ts>
          <short_desc>Made DOM handle ownership customizable, and customized it for Nodes and NamedAttrMaps</short_desc>
          <delta_ts>2011-04-19 06:04:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>buildbot</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>388028</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-18 14:03:52 -0700</bug_when>
    <thetext>Made DOM handle ownership customizable, and customized it for Nodes and NamedAttrMaps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388036</commentid>
    <comment_count>1</comment_count>
      <attachid>90093</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-18 14:16:07 -0700</bug_when>
    <thetext>Created attachment 90093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388105</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-18 15:31:03 -0700</bug_when>
    <thetext>Attachment 90093 did not build on win:
Build output: http://queues.webkit.org/results/8474050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388108</commentid>
    <comment_count>3</comment_count>
      <attachid>90093</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-18 15:34:24 -0700</bug_when>
    <thetext>Comment on attachment 90093
Patch

r=me, but fix the windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388109</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-18 15:37:00 -0700</bug_when>
    <thetext>Man, I guess &quot;Handle&lt;Unknown&gt;&quot; combines the two most commonly used words in all of computer science!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388112</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-18 15:41:12 -0700</bug_when>
    <thetext>Committed r84194: &lt;http://trac.webkit.org/changeset/84194&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90093</attachid>
            <date>2011-04-18 14:16:07 -0700</date>
            <delta_ts>2011-04-18 15:34:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58828-20110418141605.patch</filename>
            <type>text/plain</type>
            <size>51844</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA4IEBACisyMDExLTA0LTE4ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFkZSBET00gaGFuZGxlIG93bmVyc2hpcCBjdXN0b21pemFi
bGUsIGFuZCBjdXN0b21pemVkIGl0IGZvciBOb2RlcyBhbmQgTmFtZWRBdHRyTWFwcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg4MjgKKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOiBCbGFoLgorCisgICAgICAgICogYmluZGluZ3MvanMvRE9NV3Jh
cHBlcldvcmxkLmNwcDogTW92ZWQgY29kZSByZWxhdGVkIHRvIEpTTm9kZSBvd25lcnNoaXAKKyAg
ICAgICAgdG8gSlNOb2RlQ3VzdG9tLCB3aGVyZSBvdGhlciBjdXN0b20gSlNOb2RlLXJlbGF0ZWQg
Y29kZSBnb2VzLgorCisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdyYXBwZXJPd25lcjo6ZmluYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpET01XcmFwcGVyV29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XcmFwcGVyT3duZXI6OkpTRE9NV3JhcHBlck93bmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6ZGVmYXVsdFdyYXBwZXJPd25lcik6IFJlbmFtZWQgRE9N
T2JqZWN0SGFuZGxlT3duZXIKKyAgICAgICAgdG8gSlNET01XcmFwcGVyT3duZXIsIHRvIG1hdGNo
IHRoZSBuYW1lIG9mIEpTRE9NV3JhcHBlci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXJy
YXlCdWZmZXJWaWV3SGVscGVyLmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTQXJyYXlCdWZmZXJW
aWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9K
Uyk6IFJlbW92ZWQgIkRPTU9iamVjdCIgYW5kICJOb2RlIiBmcm9tIHRoZSBuYW1lcyBvZiB3cmFw
cGVyLQorICAgICAgICByZWxhdGVkIGZ1bmN0aW9ucywgc2luY2UgdGhlcmUgaXMgbm8gbWVhbmlu
Z2Z1bCBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZQorICAgICAgICB0d28gYW55bW9yZSAtLSB0aGV5
IGJvdGggdXNlIHRoZSBzYW1lIGV4dGVuc2libGUgaW50ZXJmYWNlLgorICAgICAgICAKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOiBSZW1vdmVkIHNvbWUgbm93LXVudXNl
ZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldElubGluZUNhY2hlZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SW5saW5lQ2FjaGVkV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhcklubGlu
ZUNhY2hlZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlck93bmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OndyYXBwZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hl
ZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVXcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnVuY2FjaGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyYXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6d3JhcCk6IENyZWF0ZWQgYSBnZW5lcmljLCBleHRlbnNpYmxl
IG1lY2hhbmlzbSBmb3IgY3JlYXRpbmcsCisgICAgICAgIGNhY2hpbmcsIHJldHJpZXZpbmcsIG1h
cmtpbmcsIGFuZCBkZXN0cm95aW5nIERPTSB3cmFwcGVycy4gVGhpcyBlbGltaW5hdGVzCisgICAg
ICAgIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gRE9NIG9iamVjdCB3cmFwcGVycyBhbmQgRE9NIG5v
ZGUgd3JhcHBlcnMsIGFuZAorICAgICAgICBsYXlzIHRoZSBncm91bmR3b3JrIGZvciBnZXR0aW5n
IHJpZCBvZiBNYXJrU3RhY2s6OmRlcHJlY2F0ZWRBcHBlbmQgdXNhZ2UKKyAgICAgICAgZm9yIG1h
cmtpbmcgdGhlIHJlbWFpbmRlciBvZiBvdXIgRE9NIG9iamVjdHMuCisgICAgICAgIAorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpoaXN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojps
b2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZURhdGFD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6IFVwZGF0ZWQgZm9yIHJlbmFtZXMg
bWVudGlvbmVkIGFib3ZlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXBPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVNYXBP
d25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlck93bmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OndyYXBwZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWRO
b2RlTWFwOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6IFVwZGF0ZWQg
dG8gdXNlIG91ciBuZXcgaW50ZXJmYWNlIGZvciBjdXN0b21pemluZyB3cmFwcGVyCisgICAgICAg
IGxpZmV0aW1lIG1hbmFnZW1lbnQgdGhyb3VnaCBmdW5jdGlvbiBvdmVybG9hZGluZyB3aXRob3V0
IHVzaW5nCisgICAgICAgIE1hcmtTdGFjazo6ZGVwcmVjYXRlZEFwcGVuZC4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09ic2Vy
dmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNSZWFjaGFibGVGcm9tRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU05vZGVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlV3JhcHBlcklubGluZSk6IE1vdmVkIG5vZGUtcmVsYXRlZCBjb2RlIGZyb20gSlNET01C
aW5kaW5nCisgICAgICAgIHRvIGhlcmUuIFJlbW92ZWQgc3BlY2lhbCBjYXNlIG1hcmtpbmcgY29k
ZSBmb3IgSlNOYW1lZE5vZGVNYXAgYmVjYXVzZQorICAgICAgICBKU05hbWVkTm9kZU1hcCBub3cg
a25vd3MgaG93IHRvIG1haW50YWluIGl0cyBvd24gbGlmZXRpbWUgaW52YXJpYW50cy4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6d3Jh
cHBlck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OmdldElubGluZUNhY2hlZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SW5saW5lQ2FjaGVkV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhcklubGluZUNhY2hl
ZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6IFVwZGF0ZWQgdG8gdXNlIG91ciBu
ZXcgaW50ZXJmYWNlIGZvciBjdXN0b21pemluZyB3cmFwcGVyCisgICAgICAgIGxpZmV0aW1lIG1h
bmFnZW1lbnQgdGhyb3VnaCBmdW5jdGlvbiBvdmVybG9hZGluZyB3aXRob3V0IHVzaW5nCisgICAg
ICAgIE1hcmtTdGFjazo6ZGVwcmVjYXRlZEFwcGVuZCBvciBzcGVjaWFsLWNhc2UgY29kZSBmb3Ig
bm9kZXMuCisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1N0eWxlU2hlZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6IFVwZGF0ZWQg
Zm9yIHJlbmFtZXMgbWVudGlvbmVkIGFib3ZlLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06IEZpeGVkIHVwIG5ld2xpbmVzLiBVcGRhdGVkIGZvcgorICAg
ICAgICByZW5hbWVzIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICAqIGRvbS9OYW1lZE5vZGVN
YXAuaWRsOiBOYW1lZE5vZGVNYXAgbmVlZHMgYSBjdXN0b20gdG9KUyBmdW5jdGlvbiBub3cKKyAg
ICAgICAgYmVjYXVzZSBpdCBuZWVkcyB0byBwcm92aWRlIGEgY3VzdG9tIFdlYWtIYW5kbGVPd25l
ciBhdCB3cmFwcGVyIGNyZWF0aW9uIHRpbWUuCisKIDIwMTEtMDQtMTggIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3Vn
aC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4NDE4MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC01OTcsNyArNTk3LDYgQEAg
X19aTjdXZWJDb3JlMjVQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyMQogX19aTjdXZWJDb3JlMjVQ
bHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOXNjaGVkdWxlckV2CiBfX1pON1dlYkNvcmUyNWFkZExh
bmd1YWdlQ2hhbmdlT2JzZXJ2ZXJFUHZQRnZTMF9FCiBfX1pON1dlYkNvcmUyNWNvbnRleHRNZW51
SXRlbVRhZ091dGxpbmVFdgotX19aTjdXZWJDb3JlMjVnZXRDYWNoZWRET01PYmplY3RXcmFwcGVy
RVBOU18xNURPTVdyYXBwZXJXb3JsZEVQdgogX19aTjdXZWJDb3JlMjZDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbkMxRXYKIF9fWk43V2ViQ29yZTI2VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3Iy
N3Byb2Nlc3NpbmdVc2VyVHlwaW5nR2VzdHVyZUV2CiBfX1pON1dlYkNvcmUyNlVzZXJUeXBpbmdH
ZXN0dXJlSW5kaWNhdG9yMjhmb2N1c2VkRWxlbWVudEF0R2VzdHVyZVN0YXJ0RXYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNp
b24gODQxODApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMzQgKzIxLDI0IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAKLSNpbmNsdWRlICJIVE1MQXVkaW9F
bGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1M
RnJhbWVFbGVtZW50QmFzZS5oIgotI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNs
dWRlICJIVE1MTGlua0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRl
ICJIVE1MU2NyaXB0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJKU0RPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUgIlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJTdHlsZVNoZWV0LmgiCi0jaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwotCi1zdGF0aWMgYm9vbCBpc09ic2VydmFibGUoSlNOb2RlKiBqc05vZGUs
IE5vZGUqIG5vZGUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit2b2lkIEpTRE9NV3JhcHBlck93
bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQp
CiB7Ci0gICAgLy8gQ2VydGFpbiBjb25kaXRpb25zIGltcGxpY2l0bHkgbWFrZSBleGlzdGVuY2Ug
b2YgYSBKUyBET00gbm9kZSB3cmFwcGVyIG9ic2VydmFibGUKLSAgICAvLyB0aHJvdWdoIHRoZSBE
T00sIGV2ZW4gaWYgbm8gZXhwbGljaXQgcmVmZXJlbmNlIHRvIGl0IHJlbWFpbnMuCi0gICAgCi0g
ICAgLy8gVGhlIERPTSBkb2Vzbid0IGtub3cgaG93IHRvIGtlZXAgYSB0cmVlIG9mIG5vZGVzIGFs
aXZlIHdpdGhvdXQgdGhlIHJvb3QKLSAgICAvLyBiZWluZyBleHBsaWNpdGx5IHJlZmVyZW5jZWQu
IFNvLCB3ZSBhcnRpZmljaWFsbHkgdHJlYXQgdGhlIHJvb3Qgb2YKLSAgICAvLyBldmVyeSB0cmVl
IGFzIG9ic2VydmFibGUuCi0gICAgLy8gRklYTUU6IFJlc29sdmUgdGhpcyBsaWZldGltZSBpc3N1
ZSBpbiB0aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMgaW5lZmZpY2llbmN5LgotICAgIGlmICghbm9k
ZS0+cGFyZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIElmIGEgbm9k
ZSBpcyBpbiB0aGUgZG9jdW1lbnQsIGFuZCBpdHMgd3JhcHBlciBoYXMgY3VzdG9tIHByb3BlcnRp
ZXMsCi0gICAgLy8gdGhlIHdyYXBwZXIgaXMgb2JzZXJ2YWJsZSBiZWNhdXNlIGZ1dHVyZSBhY2Nl
c3MgdG8gdGhlIG5vZGUgdGhyb3VnaCB0aGUKLSAgICAvLyBET00gbXVzdCByZWZsZWN0IHRob3Nl
IHByb3BlcnRpZXMuCi0gICAgaWYgKGpzTm9kZS0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIElmIGEgbm9kZSBpcyBpbiB0aGUgZG9jdW1lbnQs
IGFuZCBoYXMgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcwotICAgIC8vIG9ic2VydmFi
bGUgYmVjYXVzZSBpdHMgd3JhcHBlciBpcyByZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBl
dmVudCBsaXN0ZW5lcnMuCi0gICAgaWYgKG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSWYgYSBub2RlIG93bnMgYW5vdGhlciBvYmplY3Qg
d2l0aCBhIHdyYXBwZXIgd2l0aCBjdXN0b20gcHJvcGVydGllcywKLSAgICAvLyB0aGUgd3JhcHBl
ciBtdXN0IGJlIHRyZWF0ZWQgYXMgb2JzZXJ2YWJsZSwgYmVjYXVzZSBmdXR1cmUgYWNjZXNzIHRv
Ci0gICAgLy8gdGhvc2Ugb2JqZWN0cyB0aHJvdWdoIHRoZSBET00gbXVzdCByZWZsZWN0IHRob3Nl
IHByb3BlcnRpZXMuCi0gICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGlzIGxv
Z2ljIGNvdWxkIGJlIGluIHRoZSBub2RlIG5leHQgdG8KLSAgICAvLyB0aGUgY3VzdG9tIG1hcmtD
aGlsZHJlbiBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gaGVyZS4KLSAgICAvLyBOb3RlIHRoYXQgZm9y
IHNvbWUgY29tcG91bmQgb2JqZWN0cyBsaWtlIHN0eWxlc2hlZXRzIGFuZCBDU1NTdHlsZURlY2xh
cmF0aW9ucywKLSAgICAvLyB3ZSBkb24ndCBkZXNjZW5kIHRvIGNoZWNrIGNoaWxkcmVuIGZvciBj
dXN0b20gcHJvcGVydGllcywgYW5kIGp1c3QgY29uc2VydmF0aXZlbHkKLSAgICAvLyBrZWVwIHRo
ZSBub2RlIHdyYXBwZXJzIHByb3RlY3RpbmcgdGhlbSBhbGl2ZS4KLSAgICBpZiAobm9kZS0+aXNF
bGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmF0dHJpYnV0ZU1hcCgpKSB7Ci0gICAgICAgICAg
ICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVyID0gd29ybGQtPm1fd3JhcHBlcnMuZ2V0KGF0dHJp
YnV0ZXMpLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2Vl
bXMgaW5zdWZmaWNpZW50LCBiZWNhdXNlIE5hbWVkTm9kZU1hcCBpdGVtcyBjYW4gaGF2ZSBjdXN0
b20gcHJvcGVydGllcyB0aGVtc2VsdmVzLgotICAgICAgICAgICAgICAgIC8vIE1heWJlIGl0IHdv
dWxkIGJlIE9LIHRvIGp1c3Qga2VlcCB0aGUgd3JhcHBlciBhbGl2ZSwgYXMgaXQgaXMgZG9uZSBm
b3IgQ1NTT00gb2JqZWN0cyBiZWxvdy4KLSAgICAgICAgICAgICAgICBpZiAod3JhcHBlci0+aGFz
Q3VzdG9tUHJvcGVydGllcygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobm9kZS0+aXNTdHlsZWRFbGVtZW50
KCkpIHsKLSAgICAgICAgICAgIGlmIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUg
PSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obm9kZSktPmlubGluZVN0eWxlRGVjbCgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBwZXJzLmdldChzdHlsZSkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmhhc1RhZ05hbWUoY2FudmFz
VGFnKSkgewotICAgICAgICAgICAgaWYgKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KG5vZGUpLT5yZW5kZXJpbmdDb250ZXh0
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVyID0gd29ybGQt
Pm1fd3JhcHBlcnMuZ2V0KGNvbnRleHQpLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh3cmFwcGVyLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZSBpZiAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5oYXNUYWdOYW1lKGxpbmtU
YWcpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5bGVTaGVldCogc2hlZXQgPSBzdGF0aWNfY2FzdDxI
VE1MTGlua0VsZW1lbnQqPihub2RlKS0+c2hlZXQoKSkgewotICAgICAgICAgICAgICAgIGlmICh3
b3JsZC0+bV93cmFwcGVycy5nZXQoc2hlZXQpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obm9kZSktPmhhc1RhZ05hbWUoc3R5bGVUYWcpKSB7Ci0gICAgICAgICAgICBpZiAoU3R5
bGVTaGVldCogc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MU3R5bGVFbGVtZW50Kj4obm9kZSktPnNo
ZWV0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMuZ2V0KHNoZWV0
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJPQ0VTU0lO
R19JTlNUUlVDVElPTl9OT0RFKSB7Ci0gICAgICAgIGlmIChTdHlsZVNoZWV0KiBzaGVldCA9IHN0
YXRpY19jYXN0PFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpLT5zaGVldCgpKSB7Ci0gICAg
ICAgICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMuZ2V0KHNoZWV0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotc3RhdGljIGlubGluZSBib29sIGlzUmVhY2hhYmxlRnJvbURPTShKU05vZGUqIGpzTm9kZSwg
Tm9kZSogbm9kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgTWFya1N0YWNrJiBtYXJrU3RhY2sp
Ci17Ci0gICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkpIHsKLSAgICAgICAgLy8gSWYgYSB3cmFw
cGVyIGlzIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBhbiBpbWFnZSBvciBzY3JpcHQgZWxlbWVudAot
ICAgICAgICAvLyB0aGF0IGlzIGxvYWRpbmcgYnV0IG5vdCBpbiB0aGUgZG9jdW1lbnQsIHRoZSB3
cmFwcGVyIGlzIG9ic2VydmFibGUKLSAgICAgICAgLy8gYmVjYXVzZSBpdCBpcyB0aGUgb25seSB0
aGluZyBrZWVwaW5nIHRoZSBpbWFnZSBlbGVtZW50IGFsaXZlLCBhbmQgaWYKLSAgICAgICAgLy8g
dGhlIGltYWdlIGVsZW1lbnQgaXMgZGVzdHJveWVkLCBpdHMgbG9hZCBldmVudCB3aWxsIG5vdCBm
aXJlLgotICAgICAgICAvLyBGSVhNRTogVGhlIERPTSBzaG91bGQgbWFuYWdlIHRoaXMgaXNzdWUg
d2l0aG91dCB0aGUgaGVscCBvZiBKYXZhU2NyaXB0IHdyYXBwZXJzLgotICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShpbWdUYWcpICYmICFzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4o
bm9kZSktPmhhdmVGaXJlZExvYWRFdmVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykgJiYgIXN0YXRpY19jYXN0PEhU
TUxTY3JpcHRFbGVtZW50Kj4obm9kZSktPmhhdmVGaXJlZExvYWRFdmVudCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoYXVkaW9UYWcpICYmICFzdGF0aWNfY2FzdDxIVE1MQXVkaW9FbGVtZW50Kj4o
bm9kZSktPnBhdXNlZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgI2VuZGlmCi0K
LSAgICAgICAgLy8gSWYgYSBub2RlIGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFw
cGVyIGlzIG9ic2VydmFibGUgYmVjYXVzZQotICAgICAgICAvLyBpdHMgd3JhcHBlciBpcyByZXNw
b25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCi0gICAgICAgIGlmIChu
b2RlLT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gaXNPYnNlcnZhYmxlKGpzTm9kZSwgbm9kZSwgd29ybGQpICYm
IG1hcmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChub2RlKSk7CisgICAgSlNET01XcmFw
cGVyKiB3cmFwcGVyID0gc3RhdGljX2Nhc3Q8SlNET01XcmFwcGVyKj4oaGFuZGxlLmdldCgpLmFz
Q2VsbCgpKTsKKyAgICB2b2lkKiBkb21PYmplY3QgPSBjb250ZXh0OworICAgIHVuY2FjaGVXcmFw
cGVyKG1fd29ybGQsIGRvbU9iamVjdCwgd3JhcHBlcik7CiB9CiAKIERPTVdyYXBwZXJXb3JsZDo6
RE9NV3JhcHBlcldvcmxkKEpTQzo6SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIGlzTm9y
bWFsKQogICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgLCBtX2lzTm9ybWFsKGlz
Tm9ybWFsKQotICAgICwgbV9qc05vZGVIYW5kbGVPd25lcih0aGlzKQotICAgICwgbV9kb21PYmpl
Y3RIYW5kbGVPd25lcih0aGlzKQorICAgICwgbV9kZWZhdWx0V3JhcHBlck93bmVyKHRoaXMpCiB7
CiAgICAgSlNHbG9iYWxEYXRhOjpDbGllbnREYXRhKiBjbGllbnREYXRhID0gbV9nbG9iYWxEYXRh
LT5jbGllbnREYXRhOwogICAgIEFTU0VSVChjbGllbnREYXRhKTsKQEAgLTE4MiwyNyArNzIsNCBA
QCBET01XcmFwcGVyV29ybGQqIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpCiAgICAgcmV0dXJuIGNh
Y2hlZE5vcm1hbFdvcmxkOwogfQogCi1ib29sIEpTTm9kZUhhbmRsZU93bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IEpTQzo6TWFya1N0YWNrJiBtYXJrU3RhY2spCi17Ci0gICAgSlNOb2RlKiBqc05vZGUgPSBzdGF0
aWNfY2FzdDxKU05vZGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIHJldHVybiBpc1Jl
YWNoYWJsZUZyb21ET00oanNOb2RlLCBqc05vZGUtPmltcGwoKSwgbV93b3JsZCwgbWFya1N0YWNr
KTsKLX0KLQotdm9pZCBKU05vZGVIYW5kbGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgSlNOb2RlKiBqc05vZGUg
PSBzdGF0aWNfY2FzdDxKU05vZGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIHVuY2Fj
aGVET01Ob2RlV3JhcHBlcihtX3dvcmxkLCBzdGF0aWNfY2FzdDxOb2RlKj4oY29udGV4dCksIGpz
Tm9kZSk7Ci19Ci0KLWJvb2wgRE9NT2JqZWN0SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqLCBKU0M6Ok1hcmtTdGFj
ayYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIERPTU9iamVjdEhhbmRsZU93bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4
dCkKLXsKLSAgICBKU0RPTVdyYXBwZXIqIGRvbU9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV3Jh
cHBlcio+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgdW5jYWNoZURPTU9iamVjdFdyYXBw
ZXIobV93b3JsZCwgY29udGV4dCwgZG9tT2JqZWN0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxk
LmgJKHJldmlzaW9uIDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3Jh
cHBlcldvcmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgRE9N
V3JhcHBlcldvcmxkX2gKIAogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSA8aGVhcC9XZWFrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9XZWFrR0NNYXAuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogCkBAIC0zNCwzMiArMzUsMTYgQEAgY2xhc3MgU2NyaXB0Q29udHJv
bGxlcjsKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgSlNDOjpXZWFrPEpTRE9NV3JhcHBlcj4gPiBE
T01PYmplY3RXcmFwcGVyTWFwOwogdHlwZWRlZiBKU0M6OldlYWtHQ01hcDxTdHJpbmdJbXBsKiwg
SlNDOjpKU1N0cmluZz4gSlNTdHJpbmdDYWNoZTsKIAotY2xhc3MgSlNOb2RlSGFuZGxlT3duZXIg
OiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworY2xhc3MgSlNET01XcmFwcGVyT3duZXIg
OiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIEpTTm9kZUhhbmRs
ZU93bmVyKERPTVdyYXBwZXJXb3JsZCopOwotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiwgSlNDOjpNYXJr
U3RhY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCopOworICAgIEpTRE9NV3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCopOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0KTsKIAogcHJpdmF0ZToKICAgICBET01XcmFwcGVyV29ybGQqIG1fd29ybGQ7CiB9
OwogCi1pbmxpbmUgSlNOb2RlSGFuZGxlT3duZXI6OkpTTm9kZUhhbmRsZU93bmVyKERPTVdyYXBw
ZXJXb3JsZCogd29ybGQpCi0gICAgOiBtX3dvcmxkKHdvcmxkKQotewotfQotCi1jbGFzcyBET01P
YmplY3RIYW5kbGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6
Ci0gICAgRE9NT2JqZWN0SGFuZGxlT3duZXIoRE9NV3JhcHBlcldvcmxkKik7Ci0gICAgdmlydHVh
bCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqLCBKU0M6Ok1hcmtTdGFjayYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKik7Ci0KLXByaXZhdGU6Ci0gICAgRE9NV3Jh
cHBlcldvcmxkKiBtX3dvcmxkOwotfTsKLQotaW5saW5lIERPTU9iamVjdEhhbmRsZU93bmVyOjpE
T01PYmplY3RIYW5kbGVPd25lcihET01XcmFwcGVyV29ybGQqIHdvcmxkKQoraW5saW5lIEpTRE9N
V3JhcHBlck93bmVyOjpKU0RPTVdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqIHdvcmxkKQog
ICAgIDogbV93b3JsZCh3b3JsZCkKIHsKIH0KQEAgLTg1LDggKzcwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNOb3JtYWwoKSBjb25zdCB7IHJldHVybiBtX2lzTm9ybWFsOyB9CiAKICAgICBKU0M6
OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsg
fQotICAgIEpTTm9kZUhhbmRsZU93bmVyKiBqc05vZGVIYW5kbGVPd25lcigpIHsgcmV0dXJuICZt
X2pzTm9kZUhhbmRsZU93bmVyOyB9Ci0gICAgRE9NT2JqZWN0SGFuZGxlT3duZXIqIGRvbU9iamVj
dEhhbmRsZU93bmVyKCkgeyByZXR1cm4gJm1fZG9tT2JqZWN0SGFuZGxlT3duZXI7IH0KKyAgICBK
U0RPTVdyYXBwZXJPd25lciogZGVmYXVsdFdyYXBwZXJPd25lcigpIHsgcmV0dXJuICZtX2RlZmF1
bHRXcmFwcGVyT3duZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIERPTVdyYXBwZXJXb3JsZChKU0M6
OkpTR2xvYmFsRGF0YSosIGJvb2wgaXNOb3JtYWwpOwpAQCAtOTUsOCArNzksNyBAQCBwcml2YXRl
OgogICAgIEpTQzo6SlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CiAgICAgSGFzaFNldDxTY3Jp
cHRDb250cm9sbGVyKj4gbV9zY3JpcHRDb250cm9sbGVyc1dpdGhXaW5kb3dTaGVsbHM7CiAgICAg
Ym9vbCBtX2lzTm9ybWFsOwotICAgIEpTTm9kZUhhbmRsZU93bmVyIG1fanNOb2RlSGFuZGxlT3du
ZXI7Ci0gICAgRE9NT2JqZWN0SGFuZGxlT3duZXIgbV9kb21PYmplY3RIYW5kbGVPd25lcjsKKyAg
ICBKU0RPTVdyYXBwZXJPd25lciBtX2RlZmF1bHRXcmFwcGVyT3duZXI7CiB9OwogCiBET01XcmFw
cGVyV29ybGQqIG5vcm1hbFdvcmxkKEpTQzo6SlNHbG9iYWxEYXRhJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0hlbHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgJ
KHJldmlzaW9uIDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1
ZmZlclZpZXdIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDExICsxNjMsMTEgQEAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSB0b0pTQXJyYXlCdWZmZXJWaWV3KAogICAgIGlmICghb2JqZWN0KQog
ICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIAotICAgIGlmIChKU0RPTVdyYXBwZXIqIHdy
YXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgb2Jq
ZWN0KSkKKyAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihj
dXJyZW50V29ybGQoZXhlYyksIG9iamVjdCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAg
ICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3Qob2JqZWN0LT5ieXRlTGVuZ3Ro
KCkpOwotICAgIHJldHVybiBjcmVhdGVET01PYmplY3RXcmFwcGVyPEpTVHlwZT4oZXhlYywgZ2xv
YmFsT2JqZWN0LCBvYmplY3QpOworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPEpTVHlwZT4oZXhl
YywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAJ
KHJldmlzaW9uIDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxl
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgaWYgKCFydWxlKQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7CiAKLSAgICBKU0RPTVdyYXBwZXIqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01P
YmplY3RXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgcnVsZSk7CisgICAgSlNET01XcmFwcGVy
KiB3cmFwcGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIHJ1bGUpOwog
ICAgIGlmICh3cmFwcGVyKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBqc051
bGwoKTsKIAotICAgIEpTRE9NV3JhcHBlciogd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdy
YXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCB2YWx1ZSk7CisgICAgSlNET01XcmFwcGVyKiB3cmFw
cGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIHZhbHVlKTsKIAogICAg
IGlmICh3cmFwcGVyKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gODQxODApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCwxMCArNDQsMTAgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IAogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGlmIChvYmplY3QtPmlzM2QoKSkKLSAgICAgICAg
cmV0dXJuIGdldERPTU9iamVjdFdyYXBwZXI8SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ob2JqZWN0
KSk7CisgICAgICAgIHJldHVybiB3cmFwPEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0PihleGVjLCBn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KG9iamVjdCkp
OwogI2VuZGlmCiAgICAgQVNTRVJUKG9iamVjdC0+aXMyZCgpKTsKLSAgICByZXR1cm4gZ2V0RE9N
T2JqZWN0V3JhcHBlcjxKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihvYmplY3QpKTsKKyAg
ICByZXR1cm4gd3JhcDxKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihvYmplY3QpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiA4NDE4MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDYgQEAKICNpbmNsdWRlICJKU0V2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNFeGNlcHRp
b25CYXNlLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAi
SlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNSYW5nZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTWE1M
SHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0xMzUsMjIgKzEz
NCw2IEBAIGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXRIYXNoVGFibGVGb3JHbG8KICAgICByZXR1
cm4gRE9NT2JqZWN0SGFzaFRhYmxlTWFwOjptYXBGb3IoZ2xvYmFsRGF0YSkuZ2V0KHN0YXRpY1Rh
YmxlKTsKIH0KIAotSlNET01XcmFwcGVyKiBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKERPTVdy
YXBwZXJXb3JsZCogd29ybGQsIHZvaWQqIG9iamVjdEhhbmRsZSkgCi17Ci0gICAgcmV0dXJuIHdv
cmxkLT5tX3dyYXBwZXJzLmdldChvYmplY3RIYW5kbGUpLmdldCgpOwotfQotCi12b2lkIGNhY2hl
RE9NT2JqZWN0V3JhcHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCB2b2lkKiBvYmplY3RIYW5k
bGUsIEpTRE9NV3JhcHBlciogd3JhcHBlcikgCi17Ci0gICAgd29ybGQtPm1fd3JhcHBlcnMuc2V0
KG9iamVjdEhhbmRsZSwgV2VhazxKU0RPTVdyYXBwZXI+KCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCB3
cmFwcGVyLCB3b3JsZC0+ZG9tT2JqZWN0SGFuZGxlT3duZXIoKSwgb2JqZWN0SGFuZGxlKSk7Ci19
Ci0KLXZvaWQgdW5jYWNoZURPTU9iamVjdFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwg
dm9pZCogb2JqZWN0SGFuZGxlLCBKU0RPTVdyYXBwZXIqIHdyYXBwZXIpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRCh3cmFwcGVyLCB3b3JsZC0+bV93cmFwcGVycy5maW5kKG9iamVjdEhhbmRsZSktPnNl
Y29uZC5nZXQoKSA9PSB3cmFwcGVyKTsKLSAgICB3b3JsZC0+bV93cmFwcGVycy5yZW1vdmUob2Jq
ZWN0SGFuZGxlKTsKLX0KLQogdm9pZCBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRleHQoTWFya1N0
YWNrJiBtYXJrU3RhY2ssIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICAvLyBJZiBhbiBlbGVtZW50
IGhhcyBwZW5kaW5nIGFjdGl2aXR5IHRoYXQgbWF5IHJlc3VsdCBpbiBldmVudCBsaXN0ZW5lcnMg
YmVpbmcgY2FsbGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAkocmV2aXNpb24gODQxODApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Db21w
bGV0aW9uLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Mb29rdXAuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgpAQCAtMTExLDE0ICsxMTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9j
dW1lbnQoKSk7CiAgICAgICAgIH0KICAgICB9OwotCi0gICAgSlNET01XcmFwcGVyKiBnZXRDYWNo
ZWRET01PYmplY3RXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCosIHZvaWQqIG9iamVjdEhhbmRsZSk7
Ci0gICAgdm9pZCBjYWNoZURPTU9iamVjdFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiwgdm9pZCog
b2JqZWN0SGFuZGxlLCBKU0RPTVdyYXBwZXIqIHdyYXBwZXIpOwotICAgIHZvaWQgdW5jYWNoZURP
TU9iamVjdFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiwgdm9pZCogb2JqZWN0SGFuZGxlLCBKU0RP
TVdyYXBwZXIqIHdyYXBwZXIpOwotCi0gICAgSlNOb2RlKiBnZXRDYWNoZWRET01Ob2RlV3JhcHBl
cihET01XcmFwcGVyV29ybGQqLCBOb2RlKik7Ci0gICAgdm9pZCBjYWNoZURPTU5vZGVXcmFwcGVy
KERPTVdyYXBwZXJXb3JsZCosIE5vZGUqLCBKU05vZGUqIHdyYXBwZXIpOwotICAgIHZvaWQgdW5j
YWNoZURPTU5vZGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCosIE5vZGUqLCBKU05vZGUqIHdyYXBw
ZXIpOwogICAgIAogICAgIHZvaWQgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KEpTQzo6TWFy
a1N0YWNrJiwgSlNDOjpKU0dsb2JhbERhdGEmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAg
ICAgdm9pZCBtYXJrRE9NT2JqZWN0V3JhcHBlcihKU0M6Ok1hcmtTdGFjayYsIEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvYmplY3QpOwpAQCAtMTQwLDUyICsxMzMsNzAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKICAgICAg
ICAgcmV0dXJuIGNhY2hlRE9NU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpj
cmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVBy
b3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QpKSwgJldyYXBwZXJDbGFzczo6c19pbmZvKTsKICAg
ICB9CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVj
dHVyZSogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKICAg
ICB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHdyb25nLiAgSXQgdXNlcyB0
aGUgd3JvbmcgZ2xvYmFsIG9iamVjdCBmb3IgY3JlYXRpbmcgdGhlIHByb3RvdHlwZSBzdHJ1Y3R1
cmUuCiAgICAgICAgIHJldHVybiBnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVjLCBk
ZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpKTsKICAgICB9CisKICAgICB0
ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Q
cm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0M6OkpTT2JqZWN0
Kj4oYXNPYmplY3QoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4oZXhlYywgc3RhdGljX2Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKS0+c3RvcmVkUHJvdG90eXBlKCkp
KTsKICAgICB9Ci0gICAgI2RlZmluZSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgY2xhc3NOYW1lLCBvYmplY3QpIGNyZWF0ZURPTU9iamVjdFdyYXBwZXI8SlMj
I2NsYXNzTmFtZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxjbGFzc05hbWUqPihv
YmplY3QpKQotICAgIHRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+
IGlubGluZSBKU0RPTVdyYXBwZXIqIGNyZWF0ZURPTU9iamVjdFdyYXBwZXIoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBvYmpl
Y3QpCisKKyAgICAvLyBPdmVybG9hZCB0aGVzZSBmdW5jdGlvbnMgdG8gcHJvdmlkZSBhIGZhc3Qg
cGF0aCBmb3Igd3JhcHBlciBhY2Nlc3MuCisgICAgaW5saW5lIEpTRE9NV3JhcHBlciogZ2V0SW5s
aW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQqLCB2b2lkKikgeyByZXR1cm4gMDsgfQor
ICAgIGlubGluZSBib29sIHNldElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiwg
dm9pZCosIEpTRE9NV3JhcHBlciopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgaW5saW5lIGJvb2wg
Y2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCosIHZvaWQqLCBKU0RPTVdy
YXBwZXIqKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgLy8gT3ZlcmxvYWQgdGhlc2UgZnVuY3Rp
b25zIHRvIHByb3ZpZGUgYSBjdXN0b20gV2Vha0hhbmRsZU93bmVyLgorICAgIGlubGluZSBKU0M6
OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIHZv
aWQqKSB7IHJldHVybiB3b3JsZC0+ZGVmYXVsdFdyYXBwZXJPd25lcigpOyB9CisgICAgaW5saW5l
IHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCosIHZvaWQqIGRvbU9iamVjdCkg
eyByZXR1cm4gZG9tT2JqZWN0OyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRE9NQ2xhc3M+
IGlubGluZSBKU0RPTVdyYXBwZXIqIGdldENhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChvYmplY3Qp
OwotICAgICAgICBBU1NFUlQoIWdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoY3VycmVudFdvcmxk
KGV4ZWMpLCBvYmplY3QpKTsKLSAgICAgICAgLy8gRklYTUU6IG5ldyAoZXhlYykgY291bGQgdXNl
IGEgZGlmZmVyZW50IGdsb2JhbERhdGEgdGhhbiB0aGUgZ2xvYmFsRGF0YSB0aGlzIHdyYXBwZXIg
aXMgY2FjaGVkIG9uLgotICAgICAgICBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIgPSBuZXcgKGV4ZWMp
IFdyYXBwZXJDbGFzcyhnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVjLCBnbG9iYWxP
YmplY3QpLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci0gICAgICAgIGNhY2hlRE9NT2JqZWN0V3Jh
cHBlcihjdXJyZW50V29ybGQoZXhlYyksIG9iamVjdCwgd3JhcHBlcik7Ci0gICAgICAgIHJldHVy
biB3cmFwcGVyOworICAgICAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0SW5saW5l
Q2FjaGVkV3JhcHBlcih3b3JsZCwgZG9tT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgICAgICByZXR1cm4gd29ybGQtPm1fd3JhcHBlcnMuZ2V0KGRvbU9iamVjdCkuZ2V0
KCk7CiAgICAgfQotICAgIHRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xh
c3M+IGlubGluZSBKU0M6OkpTVmFsdWUgZ2V0RE9NT2JqZWN0V3JhcHBlcihKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NQ2xhc3MqIG9iamVj
dCkKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQgY2FjaGVX
cmFwcGVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIERPTUNsYXNzKiBkb21PYmplY3QsIEpTRE9N
V3JhcHBlciogd3JhcHBlcikKICAgICB7Ci0gICAgICAgIGlmICghb2JqZWN0KQotICAgICAgICAg
ICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0gICAgICAgIGlmIChKU0RPTVdyYXBwZXIqIHdyYXBw
ZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgb2JqZWN0
KSkKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgICAgICByZXR1cm4gY3JlYXRlRE9N
T2JqZWN0V3JhcHBlcjxXcmFwcGVyQ2xhc3M+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsK
KyAgICAgICAgaWYgKHNldElubGluZUNhY2hlZFdyYXBwZXIod29ybGQsIGRvbU9iamVjdCwgd3Jh
cHBlcikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVCghd29ybGQtPm1fd3Jh
cHBlcnMuY29udGFpbnMoZG9tT2JqZWN0KSk7CisgICAgICAgIHdvcmxkLT5tX3dyYXBwZXJzLnNl
dChkb21PYmplY3QsIEpTQzo6V2VhazxKU0RPTVdyYXBwZXI+KCp3b3JsZC0+Z2xvYmFsRGF0YSgp
LCB3cmFwcGVyLCB3cmFwcGVyT3duZXIod29ybGQsIGRvbU9iamVjdCksIHdyYXBwZXJDb250ZXh0
KHdvcmxkLCBkb21PYmplY3QpKSk7CiAgICAgfQogCi0gICAgI2RlZmluZSBDUkVBVEVfRE9NX05P
REVfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIGNsYXNzTmFtZSwgb2JqZWN0KSBjcmVhdGVE
T01Ob2RlV3JhcHBlcjxKUyMjY2xhc3NOYW1lPihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19j
YXN0PGNsYXNzTmFtZSo+KG9iamVjdCkpCi0gICAgdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNz
LCBjbGFzcyBET01DbGFzcz4gaW5saW5lIEpTTm9kZSogY3JlYXRlRE9NTm9kZVdyYXBwZXIoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNs
YXNzKiBub2RlKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIHZvaWQg
dW5jYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVj
dCwgSlNET01XcmFwcGVyKiB3cmFwcGVyKQorICAgIHsKKyAgICAgICAgaWYgKGNsZWFySW5saW5l
Q2FjaGVkV3JhcHBlcih3b3JsZCwgZG9tT2JqZWN0LCB3cmFwcGVyKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgQVNTRVJUKHdvcmxkLT5tX3dyYXBwZXJzLmZpbmQoZG9tT2JqZWN0KS0+
c2Vjb25kLmdldCgpID09IHdyYXBwZXIpOworICAgICAgICB3b3JsZC0+bV93cmFwcGVycy5yZW1v
dmUoZG9tT2JqZWN0KTsKKyAgICB9CisgICAgCisgICAgI2RlZmluZSBDUkVBVEVfRE9NX09CSkVD
VF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgY2xhc3NOYW1lLCBvYmplY3QpIGNyZWF0ZVdy
YXBwZXI8SlMjI2NsYXNzTmFtZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxjbGFz
c05hbWUqPihvYmplY3QpKQorICAgICNkZWZpbmUgQ1JFQVRFX0RPTV9OT0RFX1dSQVBQRVIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBjbGFzc05hbWUsIG9iamVjdCkgc3RhdGljX2Nhc3Q8SlNOb2RlKj4o
Y3JlYXRlV3JhcHBlcjxKUyMjY2xhc3NOYW1lPihleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19j
YXN0PGNsYXNzTmFtZSo+KG9iamVjdCkpKQorICAgIHRlbXBsYXRlPGNsYXNzIFdyYXBwZXJDbGFz
cywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0RPTVdyYXBwZXIqIGNyZWF0ZVdyYXBwZXIoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNs
YXNzKiBub2RlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5vZGUpOwotICAgICAgICBBU1NFUlQo
IWdldENhY2hlZERPTU5vZGVXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbm9kZSkpOworICAg
ICAgICBBU1NFUlQoIWdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBub2RlKSk7
CiAgICAgICAgIFdyYXBwZXJDbGFzcyogd3JhcHBlciA9IG5ldyAoZXhlYykgV3JhcHBlckNsYXNz
KGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KGV4ZWMsIGdsb2JhbE9iamVjdCksIGdsb2Jh
bE9iamVjdCwgbm9kZSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgZW50aXJlIGZ1bmN0aW9uIGNh
biBiZSByZW1vdmVkLCBvbmNlIHdlIGZpeCBjYWNoaW5nLgogICAgICAgICAvLyBUaGlzIGZ1bmN0
aW9uIGlzIGEgb25lLW9mZiBoYWNrIHRvIG1ha2UgTm9kZXMgY2FjaGUgaW4gdGhlIHJpZ2h0IGds
b2JhbCBvYmplY3QuCi0gICAgICAgIGNhY2hlRE9NTm9kZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4
ZWMpLCBub2RlLCB3cmFwcGVyKTsKKyAgICAgICAgY2FjaGVXcmFwcGVyKGN1cnJlbnRXb3JsZChl
eGVjKSwgbm9kZSwgd3JhcHBlcik7CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBXcmFwcGVyQ2xhc3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlND
OjpKU1ZhbHVlIGdldERPTU5vZGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBET01DbGFzcyogbm9kZSkKKworICAgIHRlbXBsYXRl
PGNsYXNzIFdyYXBwZXJDbGFzcywgY2xhc3MgRE9NQ2xhc3M+IGlubGluZSBKU0M6OkpTVmFsdWUg
d3JhcChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkKICAgICB7Ci0gICAgICAgIGlmICghbm9kZSkKKyAgICAg
ICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKLSAg
ICAgICAgaWYgKEpTQzo6SlNDZWxsKiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIo
Y3VycmVudFdvcmxkKGV4ZWMpLCBub2RlKSkKKyAgICAgICAgaWYgKEpTRE9NV3JhcHBlciogd3Jh
cHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBkb21PYmplY3QpKQog
ICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgICAgIHJldHVybiBjcmVhdGVET01Ob2Rl
V3JhcHBlcjxXcmFwcGVyQ2xhc3M+KGV4ZWMsIGdsb2JhbE9iamVjdCwgbm9kZSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVXcmFwcGVyPFdyYXBwZXJDbGFzcz4oZXhlYywgZ2xvYmFsT2JqZWN0LCBk
b21PYmplY3QpOwogICAgIH0KIAogICAgIGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXRIYXNoVGFi
bGVGb3JHbG9iYWxEYXRhKEpTQzo6SlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDOjpIYXNoVGFibGUq
IHN0YXRpY1RhYmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEs
MjQgKzQ0MSwyNCBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpsb29rdXBTZXR0ZXIoRXhlY1N0CiBK
U1ZhbHVlIEpTRE9NV2luZG93OjpoaXN0b3J5KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAg
ICBIaXN0b3J5KiBoaXN0b3J5ID0gaW1wbCgpLT5oaXN0b3J5KCk7Ci0gICAgaWYgKEpTRE9NV3Jh
cHBlciogd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoY3VycmVudFdvcmxkKGV4
ZWMpLCBoaXN0b3J5KSkKKyAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0Q2FjaGVk
V3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGhpc3RvcnkpKQogICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKIAogICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBjb25zdF9jYXN0PEpTRE9NV2luZG93
Kj4odGhpcyk7CiAgICAgSlNIaXN0b3J5KiBqc0hpc3RvcnkgPSBuZXcgKGV4ZWMpIEpTSGlzdG9y
eShnZXRET01TdHJ1Y3R1cmU8SlNIaXN0b3J5PihleGVjLCB3aW5kb3cpLCB3aW5kb3csIGhpc3Rv
cnkpOwotICAgIGNhY2hlRE9NT2JqZWN0V3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGhpc3Rv
cnksIGpzSGlzdG9yeSk7CisgICAgY2FjaGVXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgaGlz
dG9yeSwganNIaXN0b3J5KTsKICAgICByZXR1cm4ganNIaXN0b3J5OwogfQogCiBKU1ZhbHVlIEpT
RE9NV2luZG93Ojpsb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgTG9jYXRp
b24qIGxvY2F0aW9uID0gaW1wbCgpLT5sb2NhdGlvbigpOwotICAgIGlmIChKU0RPTVdyYXBwZXIq
IHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwg
bG9jYXRpb24pKQorICAgIGlmIChKU0RPTVdyYXBwZXIqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFw
cGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbG9jYXRpb24pKQogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKIAogICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBjb25zdF9jYXN0PEpTRE9NV2luZG93Kj4o
dGhpcyk7CiAgICAgSlNMb2NhdGlvbioganNMb2NhdGlvbiA9IG5ldyAoZXhlYykgSlNMb2NhdGlv
bihnZXRET01TdHJ1Y3R1cmU8SlNMb2NhdGlvbj4oZXhlYywgd2luZG93KSwgd2luZG93LCBsb2Nh
dGlvbik7Ci0gICAgY2FjaGVET01PYmplY3RXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbG9j
YXRpb24sIGpzTG9jYXRpb24pOworICAgIGNhY2hlV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyks
IGxvY2F0aW9uLCBqc0xvY2F0aW9uKTsKICAgICByZXR1cm4ganNMb2NhdGlvbjsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAJ
KHJldmlzaW9uIDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmll
d0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgZW51bSBEYXRhVmll
d0FjY2Vzc1R5cGUgewogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBEYXRhVmlldyogb2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01PYmplY3RXcmFwcGVyPEpTRGF0YVZpZXc+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0
KTsKKyAgICByZXR1cm4gd3JhcDxKU0RhdGFWaWV3PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVj
dCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNEYXRhVmlld0NvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU0RhdGFWaWV3KEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA4
NDE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMSArNjgsMTEgQEAgSlNWYWx1ZSBKU0RvY3VtZW50Ojps
b2NhdGlvbihFeGVjU3RhdGUqIAogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBMb2Nh
dGlvbiogbG9jYXRpb24gPSBmcmFtZS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCk7Ci0gICAgaWYg
KEpTRE9NV3JhcHBlciogd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoY3VycmVu
dFdvcmxkKGV4ZWMpLCBsb2NhdGlvbikpCisgICAgaWYgKEpTRE9NV3JhcHBlciogd3JhcHBlciA9
IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBsb2NhdGlvbikpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwogCiAgICAgSlNMb2NhdGlvbioganNMb2NhdGlvbiA9IG5ldyAoZXhl
YykgSlNMb2NhdGlvbihnZXRET01TdHJ1Y3R1cmU8SlNMb2NhdGlvbj4oZXhlYywgZ2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgbG9jYXRpb24pOwotICAgIGNhY2hlRE9NT2JqZWN0V3Jh
cHBlcihjdXJyZW50V29ybGQoZXhlYyksIGxvY2F0aW9uLCBqc0xvY2F0aW9uKTsKKyAgICBjYWNo
ZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBsb2NhdGlvbiwganNMb2NhdGlvbik7CiAgICAg
cmV0dXJuIGpzTG9jYXRpb247CiB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwogCi0gICAgSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0Q2FjaGVk
RE9NTm9kZVdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBkb2N1bWVudCk7CisgICAgSlNET01X
cmFwcGVyKiB3cmFwcGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGRv
Y3VtZW50KTsKICAgICBpZiAod3JhcHBlcikKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAko
cmV2aXNpb24gODQxODApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIEpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChFeGVjU3RhdGUqIGV4ZWMKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKIAotICAgIEFTU0VSVCghZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoY3Vy
cmVudFdvcmxkKGV4ZWMpLCBlbGVtZW50KSk7CisgICAgQVNTRVJUKCFnZXRDYWNoZWRXcmFwcGVy
KGN1cnJlbnRXb3JsZChleGVjKSwgZWxlbWVudCkpOwogCiAgICAgSlNOb2RlKiB3cmFwcGVyOyAg
ICAgICAgCiAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA4NDE4MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYQogICAgIGlmICghZXZlbnQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAot
ICAgIEpTRE9NV3JhcHBlciogd3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoY3Vy
cmVudFdvcmxkKGV4ZWMpLCBldmVudCk7CisgICAgSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0
Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGV2ZW50KTsKICAgICBpZiAod3JhcHBl
cikKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA4
NDE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQogICAgIGlmICghY29sbGVjdGlvbikKICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwogCi0gICAgSlNET01XcmFwcGVyKiB3cmFwcGVyID0gZ2V0Q2FjaGVk
RE9NT2JqZWN0V3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIGNvbGxlY3Rpb24pOworICAgIEpT
RE9NV3JhcHBlciogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMp
LCBjb2xsZWN0aW9uKTsKIAogICAgIGlmICh3cmFwcGVyKQogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1
c3RvbS5jcHAJKHJldmlzaW9uIDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZURhdGFDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAgICBpZiAoIWltYWdlRGF0
YSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIAotICAgIEpTRE9NV3JhcHBlciogd3Jh
cHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBpbWFn
ZURhdGEpOworICAgIEpTRE9NV3JhcHBlciogd3JhcHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3Vy
cmVudFdvcmxkKGV4ZWMpLCBpbWFnZURhdGEpOwogICAgIGlmICh3cmFwcGVyKQogICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TmFtZWROb2RlTWFwQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0MTgwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw0MCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpTTmFtZWROb2RlTWFwT3duZXIgOiBwdWJsaWMgSlNDOjpX
ZWFrSGFuZGxlT3duZXIgeworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6Ok1hcmtT
dGFjayYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2Jvb2wgSlNOYW1lZE5vZGVNYXBPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCit7CisgICAgSlNOYW1lZE5vZGVNYXAqIGpzTmFtZWRO
b2RlTWFwID0gc3RhdGljX2Nhc3Q8SlNOYW1lZE5vZGVNYXAqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOworICAgIGlmICghanNOYW1lZE5vZGVNYXAtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBqc05hbWVkTm9kZU1h
cC0+aW1wbCgpLT5lbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1hcmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChlbGVt
ZW50KSk7Cit9CisKK3ZvaWQgSlNOYW1lZE5vZGVNYXBPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5k
bGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIEpTTmFtZWROb2RlTWFw
KiBqc05hbWVkTm9kZU1hcCA9IHN0YXRpY19jYXN0PEpTTmFtZWROb2RlTWFwKj4oaGFuZGxlLmdl
dCgpLmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpz
TmFtZWROb2RlTWFwLT5pbXBsKCksIGpzTmFtZWROb2RlTWFwKTsKK30KKworaW5saW5lIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgTmFtZWROb2Rl
TWFwKikKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTTmFtZWROb2RlTWFwT3duZXIsIGpz
TmFtZWROb2RlTWFwT3duZXIsICgpKTsKKyAgICByZXR1cm4gJmpzTmFtZWROb2RlTWFwT3duZXI7
Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxk
LCBOYW1lZE5vZGVNYXAqKQoreworICAgIHJldHVybiB3b3JsZDsKK30KKwogYm9vbCBKU05hbWVk
Tm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIE5hbWVkTm9kZU1hcCogaW1w
bCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBpbXBsLT5n
ZXROYW1lZEl0ZW0oaWRlbnRpZmllclRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwpAQCAtNTAsMTAg
Kzg0LDE5IEBAIHZvaWQgSlNOYW1lZE5vZGVNYXA6Om1hcmtDaGlsZHJlbihNYXJrU3QKIHsKICAg
ICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAorICAgIC8vIFdlIG5lZWQgdG8ga2Vl
cCB0aGUgd3JhcHBlciBmb3Igb3VyIHVuZGVybHlpbmcgTmFtZWROb2RlTWFwJ3MgZWxlbWVudAor
ICAgIC8vIGFsaXZlIGJlY2F1c2UgTmFtZWROb2RlTWFwIGFuZCBBdHRyIHJlbHkgb24gdGhlIGVs
ZW1lbnQgZm9yIGRhdGEsIGFuZAorICAgIC8vIGRvbid0IGtub3cgaG93IHRvIGtlZXAgaXQgYWxp
dmUgY29ycmVjdGx5LgorICAgIC8vIEZJWE1FOiBGaXggdGhpcyBsaWZldGltZSBpc3N1ZSBpbiB0
aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMuCiAgICAgRWxlbWVudCogZWxlbWVudCA9IGltcGwoKS0+
ZWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1hcmtT
dGFjay5hZGRPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwogfQogCitKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
TmFtZWROb2RlTWFwKiBpbXBsKQoreworICAgIHJldHVybiB3cmFwPEpTTmFtZWROb2RlTWFwPihl
eGVjLCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHJldmlz
aW9uIDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsMTUgQEAKICNpbmNsdWRlICJFbnRpdHkuaCIK
ICNpbmNsdWRlICJFbnRpdHlSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiSFRNTEF1ZGlvRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVFbGVt
ZW50QmFzZS5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
TGlua0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MU2Ny
aXB0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJK
U0F0dHIuaCIKICNpbmNsdWRlICJKU0NEQVRBU2VjdGlvbi5oIgogI2luY2x1ZGUgIkpTQ29tbWVu
dC5oIgpAQCAtNTUsNiArNjMsOCBAQAogI2luY2x1ZGUgIk5vdGF0aW9uLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuaCIKKyNpbmNsdWRlICJTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5o
IgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTY4LDYgKzc4LDExNCBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
K3N0YXRpYyBib29sIGlzT2JzZXJ2YWJsZShKU05vZGUqIGpzTm9kZSwgTm9kZSogbm9kZSwgRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCkKK3sKKyAgICAvLyBDZXJ0YWluIGNvbmRpdGlvbnMgaW1wbGlj
aXRseSBtYWtlIGV4aXN0ZW5jZSBvZiBhIEpTIERPTSBub2RlIHdyYXBwZXIgb2JzZXJ2YWJsZQor
ICAgIC8vIHRocm91Z2ggdGhlIERPTSwgZXZlbiBpZiBubyBleHBsaWNpdCByZWZlcmVuY2UgdG8g
aXQgcmVtYWlucy4KKyAgICAKKyAgICAvLyBUaGUgRE9NIGRvZXNuJ3Qga25vdyBob3cgdG8ga2Vl
cCBhIHRyZWUgb2Ygbm9kZXMgYWxpdmUgd2l0aG91dCB0aGUgcm9vdAorICAgIC8vIGJlaW5nIGV4
cGxpY2l0bHkgcmVmZXJlbmNlZC4gU28sIHdlIGFydGlmaWNpYWxseSB0cmVhdCB0aGUgcm9vdCBv
ZgorICAgIC8vIGV2ZXJ5IHRyZWUgYXMgb2JzZXJ2YWJsZS4KKyAgICAvLyBGSVhNRTogUmVzb2x2
ZSB0aGlzIGxpZmV0aW1lIGlzc3VlIGluIHRoZSBET00sIGFuZCByZW1vdmUgdGhpcyBpbmVmZmlj
aWVuY3kuCisgICAgaWYgKCFub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gSWYgYSBub2RlIGlzIGluIHRoZSBkb2N1bWVudCwgYW5kIGl0cyB3cmFwcGVy
IGhhcyBjdXN0b20gcHJvcGVydGllcywKKyAgICAvLyB0aGUgd3JhcHBlciBpcyBvYnNlcnZhYmxl
IGJlY2F1c2UgZnV0dXJlIGFjY2VzcyB0byB0aGUgbm9kZSB0aHJvdWdoIHRoZQorICAgIC8vIERP
TSBtdXN0IHJlZmxlY3QgdGhvc2UgcHJvcGVydGllcy4KKyAgICBpZiAoanNOb2RlLT5oYXNDdXN0
b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgYSBub2Rl
IGlzIGluIHRoZSBkb2N1bWVudCwgYW5kIGhhcyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFwcGVy
IGlzCisgICAgLy8gb2JzZXJ2YWJsZSBiZWNhdXNlIGl0cyB3cmFwcGVyIGlzIHJlc3BvbnNpYmxl
IGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAgICBpZiAobm9kZS0+aGFzRXZl
bnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBJZiBhIG5vZGUg
b3ducyBhbm90aGVyIG9iamVjdCB3aXRoIGEgd3JhcHBlciB3aXRoIGN1c3RvbSBwcm9wZXJ0aWVz
LAorICAgIC8vIHRoZSB3cmFwcGVyIG11c3QgYmUgdHJlYXRlZCBhcyBvYnNlcnZhYmxlLCBiZWNh
dXNlIGZ1dHVyZSBhY2Nlc3MgdG8KKyAgICAvLyB0aG9zZSBvYmplY3RzIHRocm91Z2ggdGhlIERP
TSBtdXN0IHJlZmxlY3QgdGhvc2UgcHJvcGVydGllcy4KKyAgICAvLyBGSVhNRTogSXQgd291bGQg
YmUgYmV0dGVyIGlmIHRoaXMgbG9naWMgY291bGQgYmUgaW4gdGhlIG5vZGUgbmV4dCB0bworICAg
IC8vIHRoZSBjdXN0b20gbWFya0NoaWxkcmVuIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBoZXJlLgor
ICAgIC8vIE5vdGUgdGhhdCBmb3Igc29tZSBjb21wb3VuZCBvYmplY3RzIGxpa2Ugc3R5bGVzaGVl
dHMgYW5kIENTU1N0eWxlRGVjbGFyYXRpb25zLAorICAgIC8vIHdlIGRvbid0IGRlc2NlbmQgdG8g
Y2hlY2sgY2hpbGRyZW4gZm9yIGN1c3RvbSBwcm9wZXJ0aWVzLCBhbmQganVzdCBjb25zZXJ2YXRp
dmVseQorICAgIC8vIGtlZXAgdGhlIG5vZGUgd3JhcHBlcnMgcHJvdGVjdGluZyB0aGVtIGFsaXZl
LgorICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlz
U3R5bGVkRWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qIHN0eWxlID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUpLT5pbmxpbmVT
dHlsZURlY2woKSkgeworICAgICAgICAgICAgICAgIGlmICh3b3JsZC0+bV93cmFwcGVycy5nZXQo
c3R5bGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5oYXNU
YWdOYW1lKGNhbnZhc1RhZykpIHsKKyAgICAgICAgICAgIGlmIChDYW52YXNSZW5kZXJpbmdDb250
ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihub2RlKS0+cmVu
ZGVyaW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKEpTRE9NV3JhcHBlciogd3Jh
cHBlciA9IHdvcmxkLT5tX3dyYXBwZXJzLmdldChjb250ZXh0KS5nZXQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAod3JhcHBlci0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+aGFz
VGFnTmFtZShsaW5rVGFnKSkgeworICAgICAgICAgICAgaWYgKFN0eWxlU2hlZXQqIHNoZWV0ID0g
c3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4obm9kZSktPnNoZWV0KCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAod29ybGQtPm1fd3JhcHBlcnMuZ2V0KHNoZWV0KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkgeworICAgICAg
ICAgICAgaWYgKFN0eWxlU2hlZXQqIHNoZWV0ID0gc3RhdGljX2Nhc3Q8SFRNTFN0eWxlRWxlbWVu
dCo+KG5vZGUpLT5zaGVldCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBw
ZXJzLmdldChzaGVldCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5v
ZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSkgeworICAgICAgICBpZiAoU3R5bGVTaGVl
dCogc2hlZXQgPSBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihub2RlKS0+c2hl
ZXQoKSkgeworICAgICAgICAgICAgaWYgKHdvcmxkLT5tX3dyYXBwZXJzLmdldChzaGVldCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21ET00oSlNO
b2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQsIE1hcmtTdGFj
ayYgbWFya1N0YWNrKQoreworICAgIGlmICghbm9kZS0+aW5Eb2N1bWVudCgpKSB7CisgICAgICAg
IC8vIElmIGEgd3JhcHBlciBpcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gYW4gaW1hZ2Ugb3Igc2Ny
aXB0IGVsZW1lbnQKKyAgICAgICAgLy8gdGhhdCBpcyBsb2FkaW5nIGJ1dCBub3QgaW4gdGhlIGRv
Y3VtZW50LCB0aGUgd3JhcHBlciBpcyBvYnNlcnZhYmxlCisgICAgICAgIC8vIGJlY2F1c2UgaXQg
aXMgdGhlIG9ubHkgdGhpbmcga2VlcGluZyB0aGUgaW1hZ2UgZWxlbWVudCBhbGl2ZSwgYW5kIGlm
CisgICAgICAgIC8vIHRoZSBpbWFnZSBlbGVtZW50IGlzIGRlc3Ryb3llZCwgaXRzIGxvYWQgZXZl
bnQgd2lsbCBub3QgZmlyZS4KKyAgICAgICAgLy8gRklYTUU6IFRoZSBET00gc2hvdWxkIG1hbmFn
ZSB0aGlzIGlzc3VlIHdpdGhvdXQgdGhlIGhlbHAgb2YgSmF2YVNjcmlwdCB3cmFwcGVycy4KKyAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaW1nVGFnKSAmJiAhc3RhdGljX2Nhc3Q8SFRNTElt
YWdlRWxlbWVudCo+KG5vZGUpLT5oYXZlRmlyZWRMb2FkRXZlbnQoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShzY3JpcHRUYWcpICYmICFz
dGF0aWNfY2FzdDxIVE1MU2NyaXB0RWxlbWVudCo+KG5vZGUpLT5oYXZlRmlyZWRMb2FkRXZlbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICNpZiBFTkFCTEUoVklERU8pCisgICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGF1ZGlvVGFnKSAmJiAhc3RhdGljX2Nhc3Q8SFRNTEF1
ZGlvRWxlbWVudCo+KG5vZGUpLT5wYXVzZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICNlbmRpZgorCisgICAgICAgIC8vIElmIGEgbm9kZSBpcyBmaXJpbmcgZXZlbnQgbGlzdGVu
ZXJzLCBpdHMgd3JhcHBlciBpcyBvYnNlcnZhYmxlIGJlY2F1c2UKKyAgICAgICAgLy8gaXRzIHdy
YXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgor
ICAgICAgICBpZiAobm9kZS0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShqc05vZGUsIG5v
ZGUsIHdvcmxkKSAmJiBtYXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KHJvb3Qobm9kZSkpOwor
fQorCitib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQsIE1hcmtTdGFjayYgbWFya1N0YWNr
KQoreworICAgIEpTTm9kZSoganNOb2RlID0gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oaGFuZGxlLmdl
dCgpLmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgcmV0dXJuIGlzUmVhY2hhYmxlRnJvbURP
TShqc05vZGUsIGpzTm9kZS0+aW1wbCgpLCB3b3JsZCwgbWFya1N0YWNrKTsKK30KKwordm9pZCBK
U05vZGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBj
b250ZXh0KQoreworICAgIEpTTm9kZSoganNOb2RlID0gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oaGFu
ZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsIGpzTm9kZS0+aW1wbCgpLCBqc05vZGUpOworfQorCiBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0
QmVmb3JlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBOb2RlKiBpbXAgPSBzdGF0aWNfY2FzdDxO
b2RlKj4oaW1wbCgpKTsKQEAgLTEzMCw3ICsyNDgsNyBAQCB2b2lkIEpTTm9kZTo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFyCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdy
YXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAgICBBU1NFUlQoIWdldENh
Y2hlZERPTU5vZGVXcmFwcGVyKGN1cnJlbnRXb3JsZChleGVjKSwgbm9kZSkpOworICAgIEFTU0VS
VCghZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIG5vZGUpKTsKICAgICAKICAg
ICBKU05vZGUqIHdyYXBwZXI7ICAgIAogICAgIHN3aXRjaCAobm9kZS0+bm9kZVR5cGUoKSkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgJKHJldmlzaW9u
IDg0MTgwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDMwICszMSw0NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWlubGluZSBKU05vZGUqIGdldENhY2hlZERPTU5vZGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCog
d29ybGQsIE5vZGUqIG5vZGUpCitjbGFzcyBKU05vZGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtI
YW5kbGVPd25lciB7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6TWFya1N0YWNr
Jik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4s
IHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFw
cGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgTm9kZSopCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChKU05vZGVPd25lciwganNOb2RlT3duZXIsICgpKTsKKyAgICByZXR1cm4gJmpzTm9kZU93
bmVyOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCwgTm9kZSopCit7CisgICAgcmV0dXJuIHdvcmxkOworfQorCitpbmxpbmUgSlNET01XcmFw
cGVyKiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIE5vZGUq
IG5vZGUpCiB7Ci0gICAgaWYgKHdvcmxkLT5pc05vcm1hbCgpKQotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNOb2RlKj4obm9kZS0+d3JhcHBlcigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SlNOb2RlKj4oZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcih3b3JsZCwgbm9kZSkpOworICAg
IGlmICghd29ybGQtPmlzTm9ybWFsKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBu
b2RlLT53cmFwcGVyKCk7CiB9CiAKLWlubGluZSB2b2lkIGNhY2hlRE9NTm9kZVdyYXBwZXIoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCwgTm9kZSogbm9kZSwgSlNOb2RlKiB3cmFwcGVyKQoraW5saW5l
IGJvb2wgc2V0SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBOb2Rl
KiBub2RlLCBKU0RPTVdyYXBwZXIqIHdyYXBwZXIpCiB7Ci0gICAgQVNTRVJUKHdyYXBwZXIpOwot
ICAgIGlmICh3b3JsZC0+aXNOb3JtYWwoKSkgewotICAgICAgICBub2RlLT5zZXRXcmFwcGVyKCp3
b3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCB3b3JsZC0+anNOb2RlSGFuZGxlT3duZXIoKSwg
bm9kZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FjaGVET01PYmplY3RXcmFwcGVy
KHdvcmxkLCBub2RlLCB3cmFwcGVyKTsKKyAgICBpZiAoIXdvcmxkLT5pc05vcm1hbCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKCFub2RlLT53cmFwcGVyKCkpOworICAgIG5v
ZGUtPnNldFdyYXBwZXIoKndvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIHdyYXBwZXJPd25l
cih3b3JsZCwgbm9kZSksIHdyYXBwZXJDb250ZXh0KHdvcmxkLCBub2RlKSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWlubGluZSB2b2lkIHVuY2FjaGVET01Ob2RlV3JhcHBlcihET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBOb2RlKiBub2RlLCBKU05vZGUqIGpzTm9kZSkKK2lubGluZSBib29sIGNs
ZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBOb2RlKiBub2Rl
LCBKU0RPTVdyYXBwZXIqIHdyYXBwZXIpCiB7Ci0gICAgaWYgKHdvcmxkLT5pc05vcm1hbCgpKSB7
Ci0gICAgICAgIG5vZGUtPmNsZWFyV3JhcHBlcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIHVuY2FjaGVET01PYmplY3RXcmFwcGVyKHdvcmxkLCBub2RlLCBqc05vZGUpOworICAgIGlm
ICghd29ybGQtPmlzTm9ybWFsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlRf
VU5VU0VEKHdyYXBwZXIsIG5vZGUtPndyYXBwZXIoKSA9PSB3cmFwcGVyKTsKKyAgICBub2RlLT5j
bGVhcldyYXBwZXIoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogSlNDOjpKU1ZhbHVlIGNyZWF0
ZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIE5vZGUqKTsKQEAg
LTY0LDcgKzc5LDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKgog
ICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAKLSAgICBKU05v
ZGUqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01Ob2RlV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyks
IG5vZGUpOworICAgIEpTTm9kZSogd3JhcHBlciA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KGdldENh
Y2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBub2RlKSk7CiAgICAgaWYgKHdyYXBwZXIp
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NWR1BhdGhTZWdDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0N1c3RvbS5jcHAJKHJldmlzaW9uIDg0MTgwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhCiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAot
ICAgIGlmIChKU0RPTVdyYXBwZXIqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVy
KGN1cnJlbnRXb3JsZChleGVjKSwgb2JqZWN0KSkKKyAgICBpZiAoSlNET01XcmFwcGVyKiB3cmFw
cGVyID0gZ2V0Q2FjaGVkV3JhcHBlcihjdXJyZW50V29ybGQoZXhlYyksIG9iamVjdCkpCiAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgc3dpdGNoIChvYmplY3QtPnBhdGhTZWdUeXBlKCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0
Q3VzdG9tLmNwcAkocmV2aXNpb24gODQxODApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAgICBpZiAoIXN0eWxl
U2hlZXQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIEpTRE9NV3JhcHBlciogd3Jh
cHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBzdHls
ZVNoZWV0KTsKKyAgICBKU0RPTVdyYXBwZXIqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKGN1
cnJlbnRXb3JsZChleGVjKSwgc3R5bGVTaGVldCk7CiAgICAgaWYgKHdyYXBwZXIpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gODQxODApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXQke2NsYXNz
TmFtZX1Qcm90b3R5cGVUYWJsZShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCAmJHtjbGFz
c05hbWV9UHJvdG90eXBlVGFibGUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJjb25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpz
X2luZm8gPSB7IFwiJHt2aXNpYmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAmSlNDOjpKU09iamVj
dFdpdGhHbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgZ2V0JHtjbGFzc05hbWV9UHJvdG90eXBlVGFi
bGUgfTtcblxuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJj
b25zdCBDbGFzc0luZm8gJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzX2luZm8gPSB7IFwiJHt2aXNp
YmxlQ2xhc3NOYW1lfVByb3RvdHlwZVwiLCAmSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q6
OnNfaW5mbywgJiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwIH07XG5cbiIpOwpAQCAtMTM3
OSw3ICsxMzc5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXQke2NsYXNzTmFtZX1UYWJs
ZShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZv
ckdsb2JhbERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCAmJHtjbGFzc05hbWV9VGFibGUpO1xuIik7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0
IENsYXNzSW5mbyAkY2xhc3NOYW1lIiAuICI6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVDbGFzc05h
bWV9XCIsICYiIC4gJHBhcmVudENsYXNzTmFtZSAuICI6OnNfaW5mbywgIik7CkBAIC0xNTkwLDcg
KzE1OTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlv
bmFsU3RyaW5nOwogCkBAIC0xNjEwLDggKzE2MTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKGV4ZWMsIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTE3NjksNyArMTc2OCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3Ry
aW5nOwogCkBAIC0xNzk5LDggKzE3OTgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1
ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAg
ICAgfSAgICAgICAgCiAgICAgICAgIH0KICAgICB9CkBAIC0yMDk1LDcgKzIwOTMsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iai0+aW1wbCgpKS0+aXRl
bShpbmRleCkpO1xuIik7CiAgICAgICAgIH0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICBpZiAo
JGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAi
SFRNTEFsbENvbGxlY3Rpb24iKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGUu
aCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKQEAgLTIx
MDYsNyArMjEwNCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiXG5KU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0QnlJbmRleChFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBpbmRleClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4ganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpLT5pdGVtKGluZGV4KSk7XG4iKTsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0
aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iKSB7CiAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7Ik5vZGUuaCJ9ID0gMTsKQEAgLTIxMTUsMTcgKzIxMTMsMTcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KIAogICAgIGlmICgoISRoYXNQYXJlbnQgb3IgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVUb0pTIn0pIGFuZCAhJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tVG9KUyJ9KSB7CiAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlU
eXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCAk
aW1wbFR5cGUqIG9iamVjdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgJGltcGxUeXBlKiBpbXBsKVxuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCAkaW1wbFR5cGUq
IG9iamVjdClcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgJGltcGxUeXBlKiBpbXBsKVxuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01PYmplY3RXcmFwcGVy
PCRjbGFzc05hbWUsICRpbXBsVHlwZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gd3JhcDwkY2xhc3NO
YW1lLCAkaW1wbFR5cGU+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7XG4iKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRE
T01PYmplY3RXcmFwcGVyPCRjbGFzc05hbWU+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHdyYXA8JGNs
YXNzTmFtZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTtcbiIpOwogICAgICAgICB9Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifVxuXG4iKTsKICAgICB9CiAKICAgICBpZiAoKCEkaGFzUGFyZW50IG9yICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlTmF0aXZlQ29udmVydGVyIn0pIGFuZCAhJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmF0aXZlQ29udmVydGVyIn0pIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCShyZXZpc2lvbiA4NDE4MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
MSw2ICsyMSw3IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWworICAgICAgICBD
dXN0b21Ub0pTLAogICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgICAgIEhhc0luZGV4
R2V0dGVyLAogICAgICAgICBIYXNOYW1lR2V0dGVyCg==
</data>
<flag name="review"
          id="82816"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>