<?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>143941</bug_id>
          
          <creation_ts>2015-04-19 22:08:47 -0700</creation_ts>
          <short_desc>Remove all the remaining uses of OwnPtr and PassOwnPtr in JavaScriptCore</short_desc>
          <delta_ts>2015-04-19 23:06:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>gyuyoung.kim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086718</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 22:08:47 -0700</bug_when>
    <thetext>Remove all the remaining uses of OwnPtr and PassOwnPtr in JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086720</commentid>
    <comment_count>1</comment_count>
      <attachid>251141</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 22:15:45 -0700</bug_when>
    <thetext>Created attachment 251141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086721</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 22:16:21 -0700</bug_when>
    <thetext>I looked and found we were almost done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086723</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 22:17:59 -0700</bug_when>
    <thetext>*** Bug 139018 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086729</commentid>
    <comment_count>4</comment_count>
      <attachid>251141</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-04-19 22:54:59 -0700</bug_when>
    <thetext>Comment on attachment 251141
Patch

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

LGTM.

&gt; Source/JavaScriptCore/API/ObjCCallbackFunction.mm:406
&gt; +        m_instanceClass = nil;

nullptr ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086732</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 23:05:29 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/JavaScriptCore/API/ObjCCallbackFunction.mm:406
&gt; &gt; +        m_instanceClass = nil;
&gt; 
&gt; nullptr ?

No, I think nil is right for this. Class is a pointer to an Objective-C object, although its type name does not look like the others, such as NSObject *.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086733</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 23:06:37 -0700</bug_when>
    <thetext>Committed r183005: &lt;http://trac.webkit.org/changeset/183005&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251141</attachid>
            <date>2015-04-19 22:15:45 -0700</date>
            <delta_ts>2015-04-19 23:06:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143941-20150419221443.patch</filename>
            <type>text/plain</type>
            <size>28418</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZmMxMWE2YzBhMDBhODExZTBhYTQwZmY1MmEwMGJhMDYzMzQzODQwLi5mZjNmNTEwMDI0YmJkOGZl
ODc0MmVlNTExZWM3MmExZWU5ZDFlMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxNS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGFsbCB0aGUgcmVtYWluaW5nIHVzZXMgb2YgT3duUHRyIGFuZCBQYXNz
T3duUHRyIGluIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDM5NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6IFVzZSB1bmlxdWVfcHRy
IGZvciBtX2NhbGxiYWNrT2JqZWN0RGF0YS4KKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oOiBEaXR0by4KKworICAgICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlv
bi5oOiBVc2UgdW5pcXVlX3B0ciBmb3IgdGhlIGFyZ3VtZW50cyB0byB0aGUKKyAgICAgICAgY3Jl
YXRlIGZ1bmN0aW9uIGFuZCB0aGUgY29uc3RydWN0b3IgYW5kIGZvciBtX2ltcGwuCisgICAgICAg
ICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tOgorICAgICAgICAoQ2FsbGJhY2tBcmd1bWVu
dE9mQ2xhc3M6OkNhbGxiYWNrQXJndW1lbnRPZkNsYXNzKTogU3RyZWFtbGluZSB0aGlzCisgICAg
ICAgIGNsYXNzIGJ5IHVzaW5nIFJldGFpblB0cjxDbGFzcz4uCisgICAgICAgIChBcmd1bWVudFR5
cGVEZWxlZ2F0ZTo6dHlwZUludGVnZXIpOiBVc2UgbWFrZV91bmlxdWUuCisgICAgICAgIChBcmd1
bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZURvdWJsZSk6IERpdHRvLgorICAgICAgICAoQXJndW1lbnRU
eXBlRGVsZWdhdGU6OnR5cGVCb29sKTogRGl0dG8uCisgICAgICAgIChBcmd1bWVudFR5cGVEZWxl
Z2F0ZTo6dHlwZVZvaWQpOiBEaXR0by4KKyAgICAgICAgKEFyZ3VtZW50VHlwZURlbGVnYXRlOjp0
eXBlSWQpOiBEaXR0by4KKyAgICAgICAgKEFyZ3VtZW50VHlwZURlbGVnYXRlOjp0eXBlT2ZDbGFz
cyk6IERpdHRvLgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVCbG9jayk6IERp
dHRvLgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVTdHJ1Y3QpOiBEaXR0by4K
KyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUludGVnZXIpOiBEaXR0by4KKyAgICAg
ICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZURvdWJsZSk6IERpdHRvLgorICAgICAgICAoUmVz
dWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6IERpdHRvLgorICAgICAgICAoUmVzdWx0VHlwZURl
bGVnYXRlOjp0eXBlVm9pZCk6IERpdHRvLgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlSWQpOiBEaXR0by4KKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3Mp
OiBEaXR0by4KKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUJsb2NrKTogRGl0dG8u
CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVTdHJ1Y3QpOiBEaXR0by4KKyAgICAg
ICAgKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbklt
cGwpOiBVc2UKKyAgICAgICAgdW5pcXVlX3B0ciBmb3IgdGhlIGFyZ3VtZW50cyB0byB0aGUgY29u
c3RydWN0b3IsIG1fYXJndW1lbnRzLCBhbmQgbV9yZXN1bHQuCisgICAgICAgIFVzZSBSZXRhaW5Q
dHI8Q2xhc3M+IGZvciBtX2luc3RhbmNlQ2xhc3MuCisgICAgICAgIChKU0M6Om9iakNDYWxsYmFj
a0Z1bmN0aW9uQ2FsbEFzQ29uc3RydWN0b3IpOiBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIG5pbCBv
ciAwCisgICAgICAgIGZvciBub24tT2JqZWN0aXZlLUMgb2JqZWN0IHBvaW50ZXIgbnVsbC4KKyAg
ICAgICAgKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246Ok9iakNDYWxsYmFja0Z1bmN0aW9uKTog
VXNlIHVuaXF1ZV9wdHIgZm9yCisgICAgICAgIHRoZSBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVj
dG9yIGFuZCBmb3IgbV9pbXBsLgorICAgICAgICAoSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6
Y3JlYXRlKTogVXNlIHVuaXF1ZV9wdHIgZm9yIGFyZ3VtZW50cy4KKyAgICAgICAgKHNraXBOdW1i
ZXIpOiBNYXJrIHRoaXMgc3RhdGljIHNpbmNlIGl0J3MgbG9jYWwgdG8gdGhpcyBzb3VyY2UgZmls
ZS4KKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6IENhbGwgcGFy
c2VPYmpDVHlwZSB3aXRob3V0IGRvaW5nIGFueQorICAgICAgICBleHBsaWNpdCBhZG9wdFB0ciBz
aW5jZSB0aGUgdHlwZXMgaW4gdGhlIHRyYWl0cyBhcmUgbm93IHVuaXF1ZV9wdHIuIEFsc28gdXNl
CisgICAgICAgIG51bGxwdHIgaW5zdGVhZCBvZiBuaWwgZm9yIEpTT2JqZWN0UmVmIHZhbHVlcy4K
KyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9yTWV0aG9kKTogVHdlYWtlZCBjb21tZW50
LgorICAgICAgICAob2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JCbG9jayk6IFVzZSBudWxscHRyIGlu
c3RlYWQgb2YgMCBmb3IgSlNPYmplY3RSZWYuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlu
a0luZm8uaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlIG9mIE93blB0ci5oLgorCisgICAgICAg
ICogaGVhcC9HQ1RocmVhZC5jcHA6CisgICAgICAgIChKU0M6OkdDVGhyZWFkOjpHQ1RocmVhZCk6
IFVzZSB1bmlxdWVfcHRyLgorICAgICAgICAqIGhlYXAvR0NUaHJlYWQuaDogVXNlIHVuaXF1ZV9w
dHIgZm9yIGFyZ3VtZW50cyB0byB0aGUgY29uc3RydWN0b3IgYW5kIGZvcgorICAgICAgICBtX3Ns
b3RWaXNpdG9yIGFuZCBtX2NvcHlWaXNpdG9yLgorICAgICAgICAqIGhlYXAvR0NUaHJlYWRTaGFy
ZWREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6R0NUaHJlYWRTaGFyZWREYXRhOjpHQ1RocmVhZFNo
YXJlZERhdGEpOiBEaXR0by4KKworICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92aWRlci5oOiBS
ZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgUGFzc093blB0ci5oLgorCiAyMDE1LTA0LTE5ICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXByb3Zl
IHRoZSBmZWF0dXJlLmpzb24gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgKaW5kZXggMzZhMjU1YzM1Y2FmZDk4YWYzNjFlZWYzMmRmNjU3NjIxMjYw
MmEyNS4uYzYwYzJlZmIzYjlmNDU4MzBlMjkxOWZkNzlkMjBkNmJlNTAyYjQ4OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTIxMiw3ICsyMTIs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzdGF0aWNGdW5jdGlvbkdl
dHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqLCBK
U09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCi0gICAgT3duUHRyPEpT
Q2FsbGJhY2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SlNDYWxsYmFja09iamVjdERhdGE+IG1fY2FsbGJhY2tPYmplY3REYXRhOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDNlM2JkZTdhNjJhNTU0OWFhYzI3MDY1
ZmU3YmEyYWFlOWY3YzI0ZDcuLmJhNjFlOTNjZmRjYjU2MzJlMTdhNmJmYjQ2ZDk4NzU3ZWFhN2Jl
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCkBAIC01OCw3ICs1OCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD4qIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6YXNDYWxsYmFja09iamVjdChFbmNv
CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0Nh
bGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xh
c3NSZWYganNDbGFzcywgdm9pZCogZGF0YSkKICAgICA6IFBhcmVudChleGVjLT52bSgpLCBzdHJ1
Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShhZG9wdFB0cihuZXcgSlNDYWxsYmFj
a09iamVjdERhdGEoZGF0YSwganNDbGFzcykpKQorICAgICwgbV9jYWxsYmFja09iamVjdERhdGEo
c3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganNDbGFzcykpCiB7
CiB9CiAKQEAgLTY5LDcgKzY5LDcgQEAgZXh0ZXJuIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIGphdmFTY3JpcHRDb3JlQVBJR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU7CiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyZW50PgogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0
KFZNJiB2bSwgSlNDbGFzc1JlZiBqc0NsYXNzLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6
IFBhcmVudCh2bSwgc3RydWN0dXJlLCAmamF2YVNjcmlwdENvcmVBUElHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKGFkb3B0UHRyKG5ldyBKU0NhbGxi
YWNrT2JqZWN0RGF0YSgwLCBqc0NsYXNzKSkpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShz
dGQ6Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJh
Y2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5j
dGlvbi5oCmluZGV4IDA0NmJmNjUwZGQwZTFkOWM4MGQxMzNhNWM0ZDg1MmM2YTA4YmJmZGEuLmFk
YjE2N2M3NjMxNzAwY2YxNjVmNzYyOTE1ZGQ4MDE1YTE5ZjhiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgY2xhc3MgT2JqQ0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0
aWMgT2JqQ0NhbGxiYWNrRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4pOwor
ICAgIHN0YXRpYyBPYmpDQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxPYmpDQ2FsbGJhY2tGdW5j
dGlvbkltcGw+KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2lt
cGwuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2ssIEpTT2JqZWN0
Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjaywgUGFzc093blB0cjxPYmpDQ2FsbGJhY2tGdW5jdGlv
bkltcGw+KTsKKyAgICBPYmpDQ2FsbGJhY2tGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9y
Q2FsbGJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KTsKIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb25DYWxsYmFjayBtX2Z1bmN0aW9uQ2FsbGJhY2s7CiAgICAgSlNPYmplY3RDYWxsQXNDb25z
dHJ1Y3RvckNhbGxiYWNrIG1fY29uc3RydWN0Q2FsbGJhY2s7Ci0gICAgT3duUHRyPE9iakNDYWxs
YmFja0Z1bmN0aW9uSW1wbD4gbV9pbXBsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpDQ2FsbGJh
Y2tGdW5jdGlvbkltcGw+IG1faW1wbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KaW5kZXgg
ZThhMjhhN2QxZTJjODIxYzg5MjgxZTkyYzU2YjAzMDJhYzE4MmUzYS4uYmJhOTI5NGQzMDZhYWFh
MmNiZDFhMGQ0ZGFlYWVlZWI4YzA4ZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DYWxsYmFja0FyZ3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldChO
U0ludm9jYXRpb24gKiwgTlNJbnRlZ2VyLCBKU0NvbnRleHQgKiwgSlNWYWx1ZVJlZiwgSlNWYWx1
ZVJlZiopID0gMDsKIAotICAgIE93blB0cjxDYWxsYmFja0FyZ3VtZW50PiBtX25leHQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPENhbGxiYWNrQXJndW1lbnQ+IG1fbmV4dDsKIH07CiAKIENhbGxiYWNr
QXJndW1lbnQ6On5DYWxsYmFja0FyZ3VtZW50KCkKQEAgLTk5LDI0ICs5OSwxNyBAQCBjbGFzcyBD
YWxsYmFja0FyZ3VtZW50SWQgOiBwdWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7CiBjbGFzcyBDYWxs
YmFja0FyZ3VtZW50T2ZDbGFzcyA6IHB1YmxpYyBDYWxsYmFja0FyZ3VtZW50IHsKIHB1YmxpYzoK
ICAgICBDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcyhDbGFzcyBjbHMpCi0gICAgICAgIDogQ2FsbGJh
Y2tBcmd1bWVudCgpCi0gICAgICAgICwgbV9jbGFzcyhjbHMpCisgICAgICAgIDogbV9jbGFzcyhj
bHMpCiAgICAgewotICAgICAgICBbbV9jbGFzcyByZXRhaW5dOwogICAgIH0KIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIH5DYWxsYmFja0FyZ3VtZW50T2ZDbGFzcygpCi0gICAgewotICAgICAgICBb
bV9jbGFzcyByZWxlYXNlXTsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgc2V0KE5TSW52b2Nh
dGlvbiAqaW52b2NhdGlvbiwgTlNJbnRlZ2VyIGFyZ3VtZW50TnVtYmVyLCBKU0NvbnRleHQgKmNv
bnRleHQsIEpTVmFsdWVSZWYgYXJndW1lbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0gW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKIAogICAgICAgICBpZCBvYmplY3QgPSB0cnlVbndyYXBP
YmpjT2JqZWN0KGNvbnRleHRSZWYsIGFyZ3VtZW50KTsKLSAgICAgICAgaWYgKG9iamVjdCAmJiBb
b2JqZWN0IGlzS2luZE9mQ2xhc3M6bV9jbGFzc10pIHsKKyAgICAgICAgaWYgKG9iamVjdCAmJiBb
b2JqZWN0IGlzS2luZE9mQ2xhc3M6bV9jbGFzcy5nZXQoKV0pIHsKICAgICAgICAgICAgIFtpbnZv
Y2F0aW9uIHNldEFyZ3VtZW50OiZvYmplY3QgYXRJbmRleDphcmd1bWVudE51bWJlcl07CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEzMCw3ICsxMjMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250
ZXh0UmVmKSwgQVNDSUlMaXRlcmFsKCJBcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBPYmplY3RpdmUt
QyBDbGFzcyIpKSk7CiAgICAgfQogCi0gICAgQ2xhc3MgbV9jbGFzczsKKyAgICBSZXRhaW5QdHI8
Q2xhc3M+IG1fY2xhc3M7CiB9OwogCiBjbGFzcyBDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXIgOiBw
dWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7CkBAIC0xOTYsMzQgKzE4OSwzNCBAQCBwcml2YXRlOgog
CiBjbGFzcyBBcmd1bWVudFR5cGVEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBDYWxs
YmFja0FyZ3VtZW50KiBSZXN1bHRUeXBlOworICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPENh
bGxiYWNrQXJndW1lbnQ+IFJlc3VsdFR5cGU7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
ICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgQ2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD47CisgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURvdWJsZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gbmV3IENhbGxiYWNrQXJndW1lbnREb3VibGU8VD47CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnREb3VibGU8VD4+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyBDYWxsYmFja0FyZ3VtZW50Qm9vbGVhbjsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJvb2xlYW4+KCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IENhbGxiYWNrQXJndW1lbnRJZDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQp
CkBAIC0yMzEsMzUgKzIyNCwzNSBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHko
YmVnaW4sIGVuZCk7CiAgICAgICAgIENsYXNzIGNscyA9IG9iamNfZ2V0Q2xhc3MoY29weSk7CiAg
ICAgICAgIGlmICghY2xzKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAoY2xzID09IFtKU1ZhbHVlIGNsYXNzXSkKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgQ2FsbGJhY2tBcmd1bWVudEpTVmFsdWU7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SlNWYWx1ZT4oKTsKICAgICAg
ICAgaWYgKGNscyA9PSBbTlNTdHJpbmcgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBD
YWxsYmFja0FyZ3VtZW50TlNTdHJpbmc7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05T
TnVtYmVyIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbGJhY2tBcmd1bWVudE5T
TnVtYmVyOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE5TTnVtYmVyPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0RhdGUgY2xhc3NdKQotICAg
ICAgICAgICAgcmV0dXJuIG5ldyBDYWxsYmFja0FyZ3VtZW50TlNEYXRlOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKICAgICAg
ICAgaWYgKGNscyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gbmV3IENh
bGxiYWNrQXJndW1lbnROU0FycmF5OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGlj
dGlvbmFyeSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gbmV3IENhbGxiYWNrQXJndW1lbnRO
U0RpY3Rpb25hcnk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFj
a0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOwogCi0gICAgICAgIHJldHVybiBuZXcgQ2FsbGJhY2tB
cmd1bWVudE9mQ2xhc3MoY2xzKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5
cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBuaWw7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZXN1bHRUeXBlIHR5cGVTdHJ1Y3QoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkK
ICAgICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlm
IChOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSB2YWx1ZVRvVHlwZUludm9jYXRpb25Gb3IoY29w
eSkpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENhbGxiYWNrQXJndW1lbnRTdHJ1Y3QoaW52b2Nh
dGlvbiwgY29weSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH07CiAKQEAgLTMzNSw1MSArMzI4LDUxIEBA
IHByaXZhdGU6CiAKIGNsYXNzIFJlc3VsdFR5cGVEZWxlZ2F0ZSB7CiBwdWJsaWM6Ci0gICAgdHlw
ZWRlZiBDYWxsYmFja1Jlc3VsdCogUmVzdWx0VHlwZTsKKyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVl
X3B0cjxDYWxsYmFja1Jlc3VsdD4gUmVzdWx0VHlwZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG5ldyBDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD47CisgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD47CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gbmV3IENhbGxiYWNrUmVzdWx0Qm9vbGVhbjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRp
YyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbGJh
Y2tSZXN1bHRWb2lkOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jl
c3VsdFZvaWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbGJhY2tSZXN1bHRJZCgpOworICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0
YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbGJhY2tSZXN1bHRJZCgpOworICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0
YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAg
ewotICAgICAgICByZXR1cm4gbmV3IENhbGxiYWNrUmVzdWx0SWQoKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBl
bmQpCiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQpOwogICAgICAg
ICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdHlwZVRvVmFsdWVJbnZvY2F0aW9uRm9y
KGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWxsYmFja1Jlc3VsdFN0cnVjdChpbnZv
Y2F0aW9uLCBjb3B5KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH07CiAKQEAgLTM5NCwxMiArMzg3LDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwgewogcHVi
bGljOgotICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbChOU0ludm9jYXRpb24gKmludm9jYXRp
b24sIENhbGxiYWNrVHlwZSB0eXBlLCBDbGFzcyBpbnN0YW5jZUNsYXNzLCBQYXNzT3duUHRyPENh
bGxiYWNrQXJndW1lbnQ+IGFyZ3VtZW50cywgUGFzc093blB0cjxDYWxsYmFja1Jlc3VsdD4gcmVz
dWx0KQorICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbChOU0ludm9jYXRpb24gKmludm9jYXRp
b24sIENhbGxiYWNrVHlwZSB0eXBlLCBDbGFzcyBpbnN0YW5jZUNsYXNzLCBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbGJhY2tBcmd1bWVudD4gYXJndW1lbnRzLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGJhY2tS
ZXN1bHQ+IHJlc3VsdCkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX2luc3Rh
bmNlQ2xhc3MoW2luc3RhbmNlQ2xhc3MgcmV0YWluXSkKKyAgICAgICAgLCBtX2luc3RhbmNlQ2xh
c3MoaW5zdGFuY2VDbGFzcykKICAgICAgICAgLCBtX2ludm9jYXRpb24oaW52b2NhdGlvbikKLSAg
ICAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCi0gICAgICAgICwgbV9yZXN1bHQocmVzdWx0
KQorICAgICAgICAsIG1fYXJndW1lbnRzKFdURjo6bW92ZShhcmd1bWVudHMpKQorICAgICAgICAs
IG1fcmVzdWx0KFdURjo6bW92ZShyZXN1bHQpKQogICAgIHsKICAgICAgICAgQVNTRVJUKCh0eXBl
ICE9IENhbGxiYWNrSW5zdGFuY2VNZXRob2QgJiYgdHlwZSAhPSBDYWxsYmFja0luaXRNZXRob2Qp
IHx8IGluc3RhbmNlQ2xhc3MpOwogICAgIH0KQEAgLTQxMCw3ICs0MDMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIC1yZXRhaW5Bcmd1bWVudHMgb24gbV9pbnZvY2F0aW9uIChhbmQgd2UgZG9uJ3Qg
d2FudCB0byBkbyBzbykuCiAgICAgICAgIGlmIChtX3R5cGUgPT0gQ2FsbGJhY2tCbG9jayB8fCBt
X3R5cGUgPT0gQ2FsbGJhY2tDbGFzc01ldGhvZCkKICAgICAgICAgICAgIGhlYXAucmVsZWFzZVNv
b24oYWRvcHROUyhbbV9pbnZvY2F0aW9uLmdldCgpIHRhcmdldF0pKTsKLSAgICAgICAgW21faW5z
dGFuY2VDbGFzcyByZWxlYXNlXTsKKyAgICAgICAgbV9pbnN0YW5jZUNsYXNzID0gbmlsOwogICAg
IH0KIAogICAgIEpTVmFsdWVSZWYgY2FsbChKU0NvbnRleHQgKmNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwpAQCAtNDI2LDcgKzQxOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBDYWxsYmFja0Jsb2NrOgogICAgICAgICAgICAgcmV0dXJuIFttX2lu
dm9jYXRpb24gdGFyZ2V0XTsKICAgICAgICAgY2FzZSBDYWxsYmFja0luaXRNZXRob2Q6Ci0gICAg
ICAgICAgICByZXR1cm4gbV9pbnN0YW5jZUNsYXNzOworICAgICAgICAgICAgcmV0dXJuIG1faW5z
dGFuY2VDbGFzcy5nZXQoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgICAgIH0KQEAgLTQ0MSwxMCArNDM0LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBDYWxsYmFja1R5cGUgbV90eXBlOwotICAgIENsYXNzIG1faW5zdGFuY2VDbGFzczsKKyAg
ICBSZXRhaW5QdHI8Q2xhc3M+IG1faW5zdGFuY2VDbGFzczsKICAgICBSZXRhaW5QdHI8TlNJbnZv
Y2F0aW9uPiBtX2ludm9jYXRpb247Ci0gICAgT3duUHRyPENhbGxiYWNrQXJndW1lbnQ+IG1fYXJn
dW1lbnRzOwotICAgIE93blB0cjxDYWxsYmFja1Jlc3VsdD4gbV9yZXN1bHQ7CisgICAgc3RkOjp1
bmlxdWVfcHRyPENhbGxiYWNrQXJndW1lbnQ+IG1fYXJndW1lbnRzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDYWxsYmFja1Jlc3VsdD4gbV9yZXN1bHQ7CiB9OwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBv
YmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjYWxsZXJDb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKQEAgLTQ4Miw4ICs0NzUsOCBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0Nh
bGxiYWNrRnVuY3Rpb25DYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY2FsbGVyQ29udAog
ICAgIENhbGxiYWNrRGF0YSBjYWxsYmFja0RhdGE7CiAgICAgSlNWYWx1ZVJlZiByZXN1bHQ7CiAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIFtjb250ZXh0IGJlZ2luQ2FsbGJhY2tXaXRo
RGF0YTomY2FsbGJhY2tEYXRhIGNhbGxlZVZhbHVlOmNvbnN0cnVjdG9yIHRoaXNWYWx1ZTpuaWwg
YXJndW1lbnRDb3VudDphcmd1bWVudENvdW50IGFyZ3VtZW50czphcmd1bWVudHNdOwotICAgICAg
ICByZXN1bHQgPSBpbXBsLT5jYWxsKGNvbnRleHQsIE5VTEwsIGFyZ3VtZW50Q291bnQsIGFyZ3Vt
ZW50cywgZXhjZXB0aW9uKTsKKyAgICAgICAgW2NvbnRleHQgYmVnaW5DYWxsYmFja1dpdGhEYXRh
OiZjYWxsYmFja0RhdGEgY2FsbGVlVmFsdWU6Y29uc3RydWN0b3IgdGhpc1ZhbHVlOm51bGxwdHIg
YXJndW1lbnRDb3VudDphcmd1bWVudENvdW50IGFyZ3VtZW50czphcmd1bWVudHNdOworICAgICAg
ICByZXN1bHQgPSBpbXBsLT5jYWxsKGNvbnRleHQsIG51bGxwdHIsIGFyZ3VtZW50Q291bnQsIGFy
Z3VtZW50cywgZXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGNvbnRleHQuZXhjZXB0aW9uKQogICAg
ICAgICAgICAgKmV4Y2VwdGlvbiA9IHZhbHVlSW50ZXJuYWxWYWx1ZShjb250ZXh0LmV4Y2VwdGlv
bik7CiAgICAgICAgIFtjb250ZXh0IGVuZENhbGxiYWNrV2l0aERhdGE6JmNhbGxiYWNrRGF0YV07
CkBAIC00OTEsMjggKzQ4NCwyOCBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25DYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY2FsbGVyQ29udAogCiAgICAgSlNH
bG9iYWxDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
OwogICAgIGlmICgqZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0UmVmLCByZXN1bHQp
KSB7CiAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pT
KGNvbnRleHRSZWYpLCBBU0NJSUxpdGVyYWwoIk9iamVjdGl2ZS1DIGJsb2NrcyBjYWxsZWQgYXMg
Y29uc3RydWN0b3JzIG11c3QgcmV0dXJuIGFuIG9iamVjdC4iKSkpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiAoSlNPYmplY3RS
ZWYpcmVzdWx0OwogfQogCiBjb25zdCBKU0M6OkNsYXNzSW5mbyBPYmpDQ2FsbGJhY2tGdW5jdGlv
bjo6c19pbmZvID0geyAiQ2FsbGJhY2tGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoT2JqQ0NhbGxiYWNrRnVuY3Rpb24pIH07CiAKLU9iakNDYWxsYmFja0Z1
bmN0aW9uOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbihKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgZnVuY3Rp
b25DYWxsYmFjaywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNvbnN0cnVjdENh
bGxiYWNrLCBQYXNzT3duUHRyPE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4gaW1wbCkKK09iakND
YWxsYmFja0Z1bmN0aW9uOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbihKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2sgZnVuY3Rpb25DYWxsYmFjaywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNv
bnN0cnVjdENhbGxiYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBs
PiBpbXBsKQogICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LT5vYmpjQ2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZSgpKQogICAgICwgbV9mdW5jdGlvbkNhbGxiYWNrKGZ1bmN0aW9uQ2FsbGJhY2sp
CiAgICAgLCBtX2NvbnN0cnVjdENhbGxiYWNrKGNvbnN0cnVjdENhbGxiYWNrKQotICAgICwgbV9p
bXBsKGltcGwpCisgICAgLCBtX2ltcGwoV1RGOjptb3ZlKGltcGwpKQogewogfQogCi1PYmpDQ2Fs
bGJhY2tGdW5jdGlvbiogT2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NPd25QdHI8T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPiBpbXBsKQorT2JqQ0NhbGxiYWNrRnVu
Y3Rpb24qIE9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OnVuaXF1
ZV9wdHI8T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPiBpbXBsKQogewotICAgIE9iakNDYWxsYmFj
a0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iakNDYWxs
YmFja0Z1bmN0aW9uPih2bS5oZWFwKSkgT2JqQ0NhbGxiYWNrRnVuY3Rpb24odm0sIGdsb2JhbE9i
amVjdCwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNGdW5jdGlvbiwgb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25DYWxsQXNDb25zdHJ1Y3RvciwgaW1wbCk7CisgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb24q
IGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqQ0NhbGxiYWNrRnVuY3Rp
b24+KHZtLmhlYXApKSBPYmpDQ2FsbGJhY2tGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBvYmpD
Q2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Z1bmN0aW9uLCBvYmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxB
c0NvbnN0cnVjdG9yLCBXVEY6Om1vdmUoaW1wbCkpOwogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSwgbmFtZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQpAQCAtNTQzLDcgKzUzNiw3
IEBAIENvbnN0cnVjdFR5cGUgT2JqQ0NhbGxiYWNrRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiBjZWxsLCBDb25zdHJ1Y3REYXRhCiBTdHJpbmcgT2JqQ0NhbGxiYWNrRnVuY3Rpb25J
bXBsOjpuYW1lKCkKIHsKICAgICBpZiAobV90eXBlID09IENhbGxiYWNrSW5pdE1ldGhvZCkKLSAg
ICAgICAgcmV0dXJuIGNsYXNzX2dldE5hbWUobV9pbnN0YW5jZUNsYXNzKTsKKyAgICAgICAgcmV0
dXJuIGNsYXNzX2dldE5hbWUobV9pbnN0YW5jZUNsYXNzLmdldCgpKTsKICAgICAvLyBGSVhNRTog
TWF5YmUgd2UgY291bGQgc3VwcG9ydCBoYXZpbmcgdGhlIHNlbGVjdG9yIGFzIHRoZSBuYW1lIG9m
IHRoZSBub24taW5pdCAKICAgICAvLyBmdW5jdGlvbnMgdG8gbWFrZSBpdCBhIGJpdCBtb3JlIHVz
ZXItZnJpZW5kbHkgZnJvbSB0aGUgSlMgc2lkZT8KICAgICByZXR1cm4gIiI7CkBAIC01NTksNyAr
NTUyLDcgQEAgSlNWYWx1ZVJlZiBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw6OmNhbGwoSlNDb250
ZXh0ICpjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2IKICAgICBjYXNlIENhbGxiYWNrSW5pdE1l
dGhvZDogewogICAgICAgICBSRUxFQVNFX0FTU0VSVCghdGhpc09iamVjdCk7CiAgICAgICAgIHRh
cmdldCA9IFttX2luc3RhbmNlQ2xhc3MgYWxsb2NdOwotICAgICAgICBpZiAoIXRhcmdldCB8fCAh
W3RhcmdldCBpc0tpbmRPZkNsYXNzOm1faW5zdGFuY2VDbGFzc10pIHsKKyAgICAgICAgaWYgKCF0
YXJnZXQgfHwgIVt0YXJnZXQgaXNLaW5kT2ZDbGFzczptX2luc3RhbmNlQ2xhc3MuZ2V0KCldKSB7
CiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9K
Uyhjb250ZXh0UmVmKSwgQVNDSUlMaXRlcmFsKCJzZWxmIHR5cGUgY2hlY2sgZmFpbGVkIGZvciBP
YmplY3RpdmUtQyBpbnN0YW5jZSBtZXRob2QiKSkpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHRSZWYpOwogICAgICAgICB9CkBAIC01NjksNyArNTYyLDcg
QEAgSlNWYWx1ZVJlZiBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw6OmNhbGwoSlNDb250ZXh0ICpj
b250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2IKICAgICB9CiAgICAgY2FzZSBDYWxsYmFja0luc3Rh
bmNlTWV0aG9kOiB7CiAgICAgICAgIHRhcmdldCA9IHRyeVVud3JhcE9iamNPYmplY3QoY29udGV4
dFJlZiwgdGhpc09iamVjdCk7Ci0gICAgICAgIGlmICghdGFyZ2V0IHx8ICFbdGFyZ2V0IGlzS2lu
ZE9mQ2xhc3M6bV9pbnN0YW5jZUNsYXNzXSkgeworICAgICAgICBpZiAoIXRhcmdldCB8fCAhW3Rh
cmdldCBpc0tpbmRPZkNsYXNzOm1faW5zdGFuY2VDbGFzcy5nZXQoKV0pIHsKICAgICAgICAgICAg
ICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYp
LCBBU0NJSUxpdGVyYWwoInNlbGYgdHlwZSBjaGVjayBmYWlsZWQgZm9yIE9iamVjdGl2ZS1DIGlu
c3RhbmNlIG1ldGhvZCIpKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dFJlZik7CiAgICAgICAgIH0KQEAgLTYyMCw3ICs2MTMsNyBAQCBzdGF0aWMgYm9v
bCBibG9ja1NpZ25hdHVyZUNvbnRhaW5zQ2xhc3MoKQogICAgIHJldHVybiBjb250YWluc0NsYXNz
OwogfQogCi1pbmxpbmUgYm9vbCBza2lwTnVtYmVyKGNvbnN0IGNoYXIqJiBwb3NpdGlvbikKK3N0
YXRpYyBpbmxpbmUgYm9vbCBza2lwTnVtYmVyKGNvbnN0IGNoYXIqJiBwb3NpdGlvbikKIHsKICAg
ICBpZiAoIWlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02MzEsMTMgKzYyNCwxMyBAQCBpbmxpbmUgYm9vbCBza2lwTnVtYmVyKGNvbnN0IGNoYXIqJiBw
b3NpdGlvbikKIHN0YXRpYyBKU09iamVjdFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9j
YXRpb24oSlNDb250ZXh0ICpjb250ZXh0LCBOU0ludm9jYXRpb24gKmludm9jYXRpb24sIENhbGxi
YWNrVHlwZSB0eXBlLCBDbGFzcyBpbnN0YW5jZUNsYXNzLCBjb25zdCBjaGFyKiBzaWduYXR1cmVX
aXRoT2JqY0NsYXNzZXMpCiB7CiAgICAgaWYgKCFzaWduYXR1cmVXaXRoT2JqY0NsYXNzZXMpCi0g
ICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY29uc3Qg
Y2hhciogcG9zaXRpb24gPSBzaWduYXR1cmVXaXRoT2JqY0NsYXNzZXM7CiAKLSAgICBPd25QdHI8
Q2FsbGJhY2tSZXN1bHQ+IHJlc3VsdCA9IGFkb3B0UHRyKHBhcnNlT2JqQ1R5cGU8UmVzdWx0VHlw
ZURlbGVnYXRlPihwb3NpdGlvbikpOworICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VPYmpDVHlwZTxS
ZXN1bHRUeXBlRGVsZWdhdGU+KHBvc2l0aW9uKTsKICAgICBpZiAoIXJlc3VsdCB8fCAhc2tpcE51
bWJlcihwb3NpdGlvbikpCi0gICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDYWxsYmFja0luaXRNZXRob2Q6
CkBAIC02NDUsMzUgKzYzOCwzNiBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25Gb3JJbnZvY2F0aW9uKEpTQ29udGV4dCAqY29udGV4dCwgTlNJbnZvYwogICAgIGNhc2Ug
Q2FsbGJhY2tDbGFzc01ldGhvZDoKICAgICAgICAgLy8gTWV0aG9kcyBhcmUgcGFzc2VkIHR3byBp
bXBsaWNpdCBhcmd1bWVudHMgLSAoaWQpc2VsZiwgYW5kIHRoZSBzZWxlY3Rvci4KICAgICAgICAg
aWYgKCdAJyAhPSAqcG9zaXRpb24rKyB8fCAhc2tpcE51bWJlcihwb3NpdGlvbikgfHwgJzonICE9
ICpwb3NpdGlvbisrIHx8ICFza2lwTnVtYmVyKHBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBuaWw7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDYWxsYmFja0Jsb2NrOgogICAgICAgICAvLyBCbG9ja3MgYXJlIHBhc3NlZCBvbmUgaW1w
bGljaXQgYXJndW1lbnQgLSB0aGUgYmxvY2ssIG9mIHR5cGUgIkA/Ii4KICAgICAgICAgaWYgKCgn
QCcgIT0gKnBvc2l0aW9uKyspIHx8ICgnPycgIT0gKnBvc2l0aW9uKyspIHx8ICFza2lwTnVtYmVy
KHBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgLy8gT25seSBhbGxvdyBhcmd1bWVudHMgb2YgdHlwZSAnaWQnIGlm
IHRoZSBibG9jayBzaWduYXR1cmUgY29udGFpbnMgdGhlIE5TIHR5cGUgaW5mb3JtYXRpb24uCiAg
ICAgICAgIGlmICgoIWJsb2NrU2lnbmF0dXJlQ29udGFpbnNDbGFzcygpICYmIHN0cmNocihwb3Np
dGlvbiwgJ0AnKSkpCi0gICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIE93blB0cjxDYWxsYmFja0Fy
Z3VtZW50PiBhcmd1bWVudHMgPSAwOwotICAgIE93blB0cjxDYWxsYmFja0FyZ3VtZW50PiogbmV4
dEFyZ3VtZW50ID0gJmFyZ3VtZW50czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGJhY2tBcmd1
bWVudD4gYXJndW1lbnRzOworICAgIGF1dG8qIG5leHRBcmd1bWVudCA9ICZhcmd1bWVudHM7CiAg
ICAgdW5zaWduZWQgYXJndW1lbnRDb3VudCA9IDA7CiAgICAgd2hpbGUgKCpwb3NpdGlvbikgewot
ICAgICAgICBPd25QdHI8Q2FsbGJhY2tBcmd1bWVudD4gYXJndW1lbnQgPSBhZG9wdFB0cihwYXJz
ZU9iakNUeXBlPEFyZ3VtZW50VHlwZURlbGVnYXRlPihwb3NpdGlvbikpOworICAgICAgICBhdXRv
IGFyZ3VtZW50ID0gcGFyc2VPYmpDVHlwZTxBcmd1bWVudFR5cGVEZWxlZ2F0ZT4ocG9zaXRpb24p
OwogICAgICAgICBpZiAoIWFyZ3VtZW50IHx8ICFza2lwTnVtYmVyKHBvc2l0aW9uKSkKLSAgICAg
ICAgICAgIHJldHVybiBuaWw7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAg
ICAqbmV4dEFyZ3VtZW50ID0gYXJndW1lbnQucmVsZWFzZSgpOworICAgICAgICAqbmV4dEFyZ3Vt
ZW50ID0gV1RGOjptb3ZlKGFyZ3VtZW50KTsKICAgICAgICAgbmV4dEFyZ3VtZW50ID0gJigqbmV4
dEFyZ3VtZW50KS0+bV9uZXh0OwogICAgICAgICArK2FyZ3VtZW50Q291bnQ7CiAgICAgfQogCiAg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0pOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBPd25QdHI8SlND
OjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcgSlNDOjpPYmpD
Q2FsbGJhY2tGdW5jdGlvbkltcGwoaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgYXJn
dW1lbnRzLnJlbGVhc2UoKSwgcmVzdWx0LnJlbGVhc2UoKSkpOwotICAgIHJldHVybiB0b1JlZihK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBpbXBsLT5uYW1lKCksIGltcGwucmVsZWFzZSgpKSk7CisgICAgYXV0
byBpbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4o
aW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgV1RGOjptb3ZlKGFyZ3VtZW50cyksIFdU
Rjo6bW92ZShyZXN1bHQpKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBpbXBsLT5uYW1lKCk7
CisgICAgcmV0dXJuIHRvUmVmKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVj
LT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG5hbWUsIFdURjo6bW92ZShpbXBs
KSkpOwogfQogCiBKU09iamVjdFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckluaXQoSlNDb250
ZXh0ICpjb250ZXh0LCBDbGFzcyBjbHMsIFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbCwgY29u
c3QgY2hhciogdHlwZXMpCkBAIC02ODcsOCArNjgxLDggQEAgSlNPYmplY3RSZWYgb2JqQ0NhbGxi
YWNrRnVuY3Rpb25Gb3JNZXRob2QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBjbHMsIFByb3Rv
Y28KIHsKICAgICBOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSBbTlNJbnZvY2F0aW9uIGludm9j
YXRpb25XaXRoTWV0aG9kU2lnbmF0dXJlOltOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRo
T2JqQ1R5cGVzOnR5cGVzXV07CiAgICAgW2ludm9jYXRpb24gc2V0U2VsZWN0b3I6c2VsXTsKLSAg
ICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUgdGFyZ2V0IENsYXNzIGJlY2F1c2UgbV9pbnZvY2F0
aW9uIGRvZXNuJ3QgcmV0YWluIGl0Ci0gICAgLy8gYnkgZGVmYXVsdCAoYW5kIHdlIGRvbid0IHdh
bnQgaXQgdG8pLgorICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSB0YXJnZXQgQ2xhc3MgYmVj
YXVzZSBtX2ludm9jYXRpb24gZG9lc24ndCByZXRhaW4gaXQgYnkgZGVmYXVsdCAoYW5kIHdlIGRv
bid0IHdhbnQgaXQgdG8pLgorICAgIC8vIEZJWE1FOiBXaGF0IHJlbGVhc2VzIGl0PwogICAgIGlm
ICghaXNJbnN0YW5jZU1ldGhvZCkKICAgICAgICAgW2ludm9jYXRpb24gc2V0VGFyZ2V0OltjbHMg
cmV0YWluXV07CiAgICAgcmV0dXJuIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbihj
b250ZXh0LCBpbnZvY2F0aW9uLCBpc0luc3RhbmNlTWV0aG9kID8gQ2FsbGJhY2tJbnN0YW5jZU1l
dGhvZCA6IENhbGxiYWNrQ2xhc3NNZXRob2QsIGlzSW5zdGFuY2VNZXRob2QgPyBjbHMgOiBuaWws
IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbCwgWUVTLCBpc0lu
c3RhbmNlTWV0aG9kKSk7CkBAIC02OTcsNyArNjkxLDcgQEAgSlNPYmplY3RSZWYgb2JqQ0NhbGxi
YWNrRnVuY3Rpb25Gb3JNZXRob2QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBjbHMsIFByb3Rv
Y28KIEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9yQmxvY2soSlNDb250ZXh0ICpj
b250ZXh0LCBpZCB0YXJnZXQpCiB7CiAgICAgaWYgKCFfQmxvY2tfaGFzX3NpZ25hdHVyZSh0YXJn
ZXQpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29u
c3QgY2hhciogc2lnbmF0dXJlID0gX0Jsb2NrX3NpZ25hdHVyZSh0YXJnZXQpOwogICAgIE5TSW52
b2NhdGlvbiAqaW52b2NhdGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RT
aWduYXR1cmU6W05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6c2lnbmF0
dXJlXV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
aAppbmRleCA1MGMwNzQ2YzFjY2VhNmIzZTAwOWQ2MjcxNDY3MDY3NjUzYjg2ODc0Li5jNzVhYmUz
OWNiZTRlZGYxNTM2YmQ1OThkNDBiNTVhNDY2MjQ1Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCIKICNp
bmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkLmNwcAppbmRleCBiMTA5MDc1ODBjNzZmMTRhZGU3OWRi
MjI3NmViOTA0YmNiODViMzk2Li4zYTNkY2VhNjZlNzE1YzliNDYzNTYyY2NkMjU5ZmNlNDZhYjY4
NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWQuY3BwCkBAIC0zNSwxMSAr
MzUsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUdDVGhyZWFkOjpHQ1RocmVhZChHQ1RocmVh
ZFNoYXJlZERhdGEmIHNoYXJlZCwgU2xvdFZpc2l0b3IqIHNsb3RWaXNpdG9yLCBDb3B5VmlzaXRv
ciogY29weVZpc2l0b3IpCitHQ1RocmVhZDo6R0NUaHJlYWQoR0NUaHJlYWRTaGFyZWREYXRhJiBz
aGFyZWQsIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gc2xvdFZpc2l0b3IsIHN0ZDo6dW5p
cXVlX3B0cjxDb3B5VmlzaXRvcj4gY29weVZpc2l0b3IpCiAgICAgOiBtX3RocmVhZElEKDApCiAg
ICAgLCBtX3NoYXJlZChzaGFyZWQpCi0gICAgLCBtX3Nsb3RWaXNpdG9yKFdURjo6YWRvcHRQdHIo
c2xvdFZpc2l0b3IpKQotICAgICwgbV9jb3B5VmlzaXRvcihXVEY6OmFkb3B0UHRyKGNvcHlWaXNp
dG9yKSkKKyAgICAsIG1fc2xvdFZpc2l0b3IoV1RGOjptb3ZlKHNsb3RWaXNpdG9yKSkKKyAgICAs
IG1fY29weVZpc2l0b3IoV1RGOjptb3ZlKGNvcHlWaXNpdG9yKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDVGhyZWFkLmgKaW5kZXggMGQyMThmOTc1NzIzN2IyNWJiZDdjNGM4NTJj
NTU4Y2NiNjQ0ODVlZi4uYjcyNzc5OTJjOWY4YzI0YWE1MmNjMDczYzAyNWRiYjkzYzI4M2M3MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZC5oCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpbmNsdWRlIDxHQ1RocmVhZFNoYXJlZERhdGEuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTM5LDcgKzM4LDcgQEAgY2xhc3MgU2xvdFZpc2l0b3I7CiAKIGNs
YXNzIEdDVGhyZWFkIHsKIHB1YmxpYzoKLSAgICBHQ1RocmVhZChHQ1RocmVhZFNoYXJlZERhdGEm
LCBTbG90VmlzaXRvciosIENvcHlWaXNpdG9yKik7CisgICAgR0NUaHJlYWQoR0NUaHJlYWRTaGFy
ZWREYXRhJiwgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiwgc3RkOjp1bmlxdWVfcHRyPENv
cHlWaXNpdG9yPik7CiAKICAgICBTbG90VmlzaXRvciogc2xvdFZpc2l0b3IoKTsKICAgICBDb3B5
VmlzaXRvciogY29weVZpc2l0b3IoKTsKQEAgLTU0LDggKzUzLDggQEAgcHJpdmF0ZToKIAogICAg
IFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKICAgICBHQ1RocmVhZFNoYXJlZERhdGEmIG1f
c2hhcmVkOwotICAgIE93blB0cjxTbG90VmlzaXRvcj4gbV9zbG90VmlzaXRvcjsKLSAgICBPd25Q
dHI8Q29weVZpc2l0b3I+IG1fY29weVZpc2l0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RW
aXNpdG9yPiBtX3Nsb3RWaXNpdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3B5VmlzaXRvcj4g
bV9jb3B5VmlzaXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAKaW5kZXggMjQyN2VjYmUx
Y2UyMjNjNzI4MWViYjg2NmI0ZjY5NzBmZDNhODliMC4uMjI4NjM3MGYxZGQ2N2QyMDU3ODc3YzNl
ZWZjNTk4MWU4MDlhZDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
R0NUaHJlYWRTaGFyZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q1RocmVhZFNoYXJlZERhdGEuY3BwCkBAIC04Niw5ICs4Niw3IEBAIEdDVGhyZWFkU2hhcmVkRGF0
YTo6R0NUaHJlYWRTaGFyZWREYXRhKFZNKiB2bSkKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IGxvY2sobV9waGFzZU11dGV4KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
T3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMoKTsgKytpKSB7CiAgICAgICAgIG1fbnVtYmVyT2ZB
Y3RpdmVHQ1RocmVhZHMrKzsKLSAgICAgICAgU2xvdFZpc2l0b3IqIHNsb3RWaXNpdG9yID0gbmV3
IFNsb3RWaXNpdG9yKCp0aGlzKTsKLSAgICAgICAgQ29weVZpc2l0b3IqIGNvcHlWaXNpdG9yID0g
bmV3IENvcHlWaXNpdG9yKCp0aGlzKTsKLSAgICAgICAgR0NUaHJlYWQqIG5ld1RocmVhZCA9IG5l
dyBHQ1RocmVhZCgqdGhpcywgc2xvdFZpc2l0b3IsIGNvcHlWaXNpdG9yKTsKKyAgICAgICAgR0NU
aHJlYWQqIG5ld1RocmVhZCA9IG5ldyBHQ1RocmVhZCgqdGhpcywgc3RkOjptYWtlX3VuaXF1ZTxT
bG90VmlzaXRvcj4oKnRoaXMpLCBzdGQ6Om1ha2VfdW5pcXVlPENvcHlWaXNpdG9yPigqdGhpcykp
OwogICAgICAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEID0gY3JlYXRlVGhyZWFkKEdDVGhy
ZWFkOjpnY1RocmVhZFN0YXJ0RnVuYywgbmV3VGhyZWFkLCAiSmF2YVNjcmlwdENvcmU6Ok1hcmtp
bmciKTsKICAgICAgICAgbmV3VGhyZWFkLT5pbml0aWFsaXplVGhyZWFkSUQodGhyZWFkSUQpOwog
ICAgICAgICBtX2djVGhyZWFkcy5hcHBlbmQobmV3VGhyZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAppbmRleCA3MWVhYTE4NWIwZDJiNzQxMGI5
YTQ3MWJlMmMwZjBhMGE3MmMzNDBkLi40ZmM5NTk1Mjc3YzMwYmY3YjQyZmQ0M2QzMWY3M2Q5ZTM1
YTAxNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ci5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaWZuZGVmIFNvdXJjZVByb3ZpZGVyX2gKICNkZWZpbmUg
U291cmNlUHJvdmlkZXJfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgo=
</data>
<flag name="review"
          id="275938"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
          </attachment>
      

    </bug>

</bugzilla>