<?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>127527</bug_id>
          
          <creation_ts>2014-01-23 17:42:54 -0800</creation_ts>
          <short_desc>Add an APILoaderClient base class</short_desc>
          <delta_ts>2014-01-23 17:55:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>971418</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-23 17:42:54 -0800</bug_when>
    <thetext>Add an APILoaderClient base class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971419</commentid>
    <comment_count>1</comment_count>
      <attachid>222051</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-23 17:48:27 -0800</bug_when>
    <thetext>Created attachment 222051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971420</commentid>
    <comment_count>2</comment_count>
      <attachid>222051</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-23 17:51:22 -0800</bug_when>
    <thetext>Comment on attachment 222051
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm:811
&gt; -    return (WKBrowsingContextController *)WebKit::toImpl(pageRef)-&gt;loaderClient().client().base.clientInfo;
&gt; +//    return (WKBrowsingContextController *)WebKit::toImpl(pageRef)-&gt;loaderClient()-&gt;client().base.clientInfo;
&gt; +    return 0;

wut</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971421</commentid>
    <comment_count>3</comment_count>
      <attachid>222051</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-23 17:52:07 -0800</bug_when>
    <thetext>Comment on attachment 222051
Patch

other than that, seems fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971424</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-23 17:55:42 -0800</bug_when>
    <thetext>Committed r162670: &lt;http://trac.webkit.org/changeset/162670&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222051</attachid>
            <date>2014-01-23 17:48:27 -0800</date>
            <delta_ts>2014-01-23 17:52:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127527-20140123174826.patch</filename>
            <type>text/plain</type>
            <size>43221</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjNkN2RmNGUwNjM0ZDdk
MDYxNzc3NmQzMjFhNGMyN2RiNjg3NjRmZi4uMjYyYTdlMDQ4NTE0MTczMmI2YjNmOTA5M2M1NjVk
ODhkYThmZGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYxIEBACiAyMDE0LTAxLTIzICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIGFuIEFQSUxv
YWRlckNsaWVudCBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjc1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6IEFkZGVkLgor
ICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6On5Mb2FkZXJDbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW06CisgICAgICAgIChzZXRVcFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAo
LVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgc2V0TG9hZERlbGVnYXRlOl0pOgorICAgICAg
ICAoK1tXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgX2Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXJGb3JQYWdlUmVmOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OldlYkxvYWRlckNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExv
YWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb2dyZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkRmFpbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVyYWN0aW9uT2NjdXJyZWRXaGls
ZVByb2Nlc3NVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBy
b2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdp
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdp
blZlcnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworMjAxNC0wMS0yMyAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEZpeCBhIHJlZmFjdG9yaW5nIGJ1ZyB0
aGF0IGNyZXB0IGluIGFuZCBpcyBjYXVzaW5nIHRoZSBpbnNwZWN0b3IgdG8gY3Jhc2guCiAKICAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiODc2Nzg4MDJi
MjYzMGY1YTMyZTc5MWMyMTU2OWUwNDlhZmU1MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBAIC0wLDAgKzEsMTA2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBBUElMb2FkZXJDbGllbnRfaAorI2RlZmluZSBBUElMb2Fk
ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgorI2luY2x1ZGUgIlNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRl
clR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VF
cnJvcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJGcmFtZVByb3h5OworY2xhc3MgV2ViUGFnZVByb3h5Owor
Y2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3Mg
T2JqZWN0OworCitjbGFzcyBMb2FkZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkxv
YWRlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCBBUEk6Ok9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYktpdDo6V2ViUGFn
ZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIEFQSTo6T2JqZWN0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBB
UEk6Ok9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBB
UEk6Ok9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmpl
Y3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6U2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUsIEFQSTo6T2JqZWN0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0
OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqLCBBUEk6Ok9iamVjdCopID0gMDsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
Y29uc2lkZXIgcmVtb3ZpbmcgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUg
c2luY2UgaXQgaXMgcmVwbGFjZWQgYnkgZGlkTGF5b3V0LgorICAgIHZpcnR1YWwgdm9pZCBkaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0KikgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0KikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBkaWRMYXlvdXQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3Rv
bmVzLCBBUEk6Ok9iamVjdCopID0gMDsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5G
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydFByb2dyZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5KikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSopPSAw
OworCisgICAgLy8gRklYTUU6IFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIHBh
cnQgb2YgdGhpcyBjbGllbnQuCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGlu
dGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUoV2ViS2l0OjpXZWJQYWdl
UHJveHkqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZl
KFdlYktpdDo6V2ViUGFnZVByb3h5KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZEl0ZW0sIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+
PiogcmVtb3ZlZEl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxHb1RvQmFja0Zvcndh
cmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0SXRlbSosIEFQSTo6T2JqZWN0KikgPSAwOworCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCisgICAgdmlydHVhbCBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgcGx1Z2lu
TG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9h
ZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgV2ViS2l0OjpJbW11dGFibGVEaWN0aW9u
YXJ5KiwgV1RGOjpTdHJpbmcmIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIFdURjo6U3RyaW5n
JiB1c2VCbG9ja2VkUGx1Z2luVGl0bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRv
SW5pdGlhbGl6ZVBsdWdpbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6SW1tdXRhYmxl
RGljdGlvbmFyeSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdp
blZlcnNpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OkltbXV0YWJsZURpY3Rpb25h
cnkqKSA9IDA7CisjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xM
b2FkUG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSBjb25z
dCA9IDA7CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQorfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJ
CisKKyNlbmRpZiAvLyBBUElMb2FkZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAppbmRleCBhODk0MTBjYTZlNzMwZjBjNGE4NTViYjE0YjEzMmU3YjFm
ZTk4NGQ1Li4wNDExMjczYWYxMDA4MzRlYTFjY2IxNTRjYjdiZDE2ODdkODQxZDdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMzMsNiArMzMsOCBAQAog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUGx1Z2luSW5mb3JtYXRpb24uaCIK
ICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKKyNpbmNsdWRlICJXZWJMb2FkZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKQEAgLTY2OCw3ICs2NzAsMjMgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2wKIAog
dm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZikt
PmluaXRpYWxpemVMb2FkZXJDbGllbnQod2tDbGllbnQpOworICAgIFdlYlBhZ2VQcm94eSogd2Vi
UGFnZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOworCisgICAgYXV0byBsb2FkZXJDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkxvYWRlckNsaWVudD4od2tDbGllbnQpOworCisgICAgLy8gSXQg
d291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJhbnNpdGlvbiBhbGwg
Y2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgorICAgIC8vIGRpZEZpcnN0TGF5
b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4g
dGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCisgICAgLy8gZm9yIGJhY2t3YXJkcyBjb21w
YXRpYmlsaXR5LgorICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcyA9IDA7
CisgICAgaWYgKGxvYWRlckNsaWVudC0+Y2xpZW50KCkuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkK
KyAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdExheW91dDsKKyAgICBpZiAo
bG9hZGVyQ2xpZW50LT5jbGllbnQoKS5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZSkKKyAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQ7CisKKyAgICBpZiAobWlsZXN0b25lcykKKyAgICAgICAgd2ViUGFnZVByb3h5
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0
b25lcyhtaWxlc3RvbmVzKSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisKKyAgICB3ZWJQYWdl
UHJveHktPnNldExvYWRlckNsaWVudChzdGQ6Om1vdmUobG9hZGVyQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLm1tCmluZGV4IDQ3YTg3N2NkNDNhNjViMmE2MjM5OGMyZTlmNjMzZDJlY2M5NWZmMWEuLjJl
OTdlYmNlMTk3MTQ4ZmEzZDBmM2NmODE1OWViNmFhZTcwNTk3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLm1tCkBAIC02MTYsNyArNjE2LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBQ
YWdlTG9hZGVyQ2xpZW50KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250
ZXh0LAogCiAgICAgbG9hZGVyQ2xpZW50LmRpZExheW91dCA9IGRpZExheW91dDsKIAotICAgIHBh
Z2UuaW5pdGlhbGl6ZUxvYWRlckNsaWVudCgmbG9hZGVyQ2xpZW50LmJhc2UpOworICAgIFdLUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQodG9BUEkoJnBhZ2UpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwog
fQogCiBzdGF0aWMgV0tQb2xpY3lEZWNpc2lvbkhhbmRsZXIgbWFrZVBvbGljeURlY2lzaW9uQmxv
Y2soV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyKQpAQCAtNzI4LDcgKzcyOCw3IEBA
IHN0YXRpYyB2b2lkIHNldFVwUGFnZVBvbGljeUNsaWVudChXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKmJyb3dzaW5nQ29udGV4dCwKICAgICBpZiAobG9hZERlbGVnYXRlKQogICAgICAgICBz
ZXRVcFBhZ2VMb2FkZXJDbGllbnQoc2VsZiwgKl9wYWdlKTsKICAgICBlbHNlCi0gICAgICAgIF9w
YWdlLT5pbml0aWFsaXplTG9hZGVyQ2xpZW50KG51bGxwdHIpOworICAgICAgICBfcGFnZS0+c2V0
TG9hZGVyQ2xpZW50KG51bGxwdHIpOwogfQogCiAtIChpZCA8V0tCcm93c2luZ0NvbnRleHRQb2xp
Y3lEZWxlZ2F0ZT4pcG9saWN5RGVsZWdhdGUKQEAgLTgwNyw3ICs4MDcsOCBAQCBzdGF0aWMgdm9p
ZCBzZXRVcFBhZ2VQb2xpY3lDbGllbnQoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93
c2luZ0NvbnRleHQsCiAKICsgKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKV9icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyRm9yUGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VSZWYKIHsKLSAgICBy
ZXR1cm4gKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKVdlYktpdDo6dG9JbXBsKHBhZ2VS
ZWYpLT5sb2FkZXJDbGllbnQoKS5jbGllbnQoKS5iYXNlLmNsaWVudEluZm87CisvLyAgICByZXR1
cm4gKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKVdlYktpdDo6dG9JbXBsKHBhZ2VSZWYp
LT5sb2FkZXJDbGllbnQoKS0+Y2xpZW50KCkuYmFzZS5jbGllbnRJbmZvOworICAgIHJldHVybiAw
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGMxMzhhMjcyMWI3OGZjN2UxNDllMmMxZTUwNWNjODk3MmIyNDM1NWIuLjc0MDcx
YWI3MGU1MzIzMWJkNDRjMjQyNjlhZTVjNjk2Yzg2ZmQ3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCkBAIC0zOCw2ICszOCwxMSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1dlYkxvYWRlckNsaWVu
dDo6V2ViTG9hZGVyQ2xpZW50KGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIGNsaWVudCkK
K3sKKyAgICBpbml0aWFsaXplKGNsaWVudCk7Cit9CisKIHZvaWQgV2ViTG9hZGVyQ2xpZW50Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJh
bWVQcm94eSogZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgKaW5kZXggNjE1MThlODI4MGJkNWU3Y2NlMDhiNWRkNDNl
MjU3NWI3MTZhMDVmNy4uZWFhOTFjNTZmYzE1ODZiZWQ0NmZkYzdlMmMwYTJlNGRkODJhMjFkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaApAQCAtMjcsMTQg
KzI3LDggQEAKICNkZWZpbmUgV2ViTG9hZGVyQ2xpZW50X2gKIAogI2luY2x1ZGUgIkFQSUNsaWVu
dC5oIgotI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKLSNpbmNsdWRlICJTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZS5oIgotI2luY2x1ZGUgIldLUGFnZS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXJUeXBlcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25l
cy5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJXS1BhZ2VMb2FkZXJDbGllbnQuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBP
YmplY3Q7CkBAIC01OCw1MyArNTIsNTYgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKIAotY2xhc3MgV2ViTG9hZGVy
Q2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUxvYWRlckNsaWVudEJhc2U+IHsKK2Ns
YXNzIFdlYkxvYWRlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VMb2FkZXJDbGll
bnRCYXNlPiwgcHVibGljIEFQSTo6TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94
eSosIEFQSTo6T2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJ
OjpPYmplY3QqKTsKLSAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JG
cmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIEFQSTo6T2JqZWN0Kik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0Kik7Ci0gICAgdm9pZCBk
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5
KiwgQVBJOjpPYmplY3QqKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKTsKLSAgICB2b2lkIGRpZEZhaWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopOwotICAgIHZvaWQgZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkq
LCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIFdlYkZy
YW1lUHJveHkqLCBBUEk6Ok9iamVjdCopOwotICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFt
ZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKTsKKyAgICBleHBs
aWNpdCBXZWJMb2FkZXJDbGllbnQoY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSopOworCitw
cml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgQVBJ
OjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFtZVByb3h5Kiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlyc3RMYXlvdXRG
b3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKSBvdmVy
cmlkZTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgc2luY2UgaXQgaXMgcmVwbGFjZWQgYnkg
ZGlkTGF5b3V0LgotICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJh
bWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0Kik7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYlBhZ2VQ
cm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94
eSosIEFQSTo6T2JqZWN0Kik7Ci0gICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9y
RnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0Kik7Ci0gICAg
dm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgQVBJOjpPYmplY3QqKTsKLSAgICB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdl
YlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkaWRMYXlvdXQoV2ViUGFnZVByb3h5KiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcywg
QVBJOjpPYmplY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTGF5b3V0KFdlYlBhZ2VQcm94eSos
IFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAg
Ci0gICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShX
ZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNwYWNlKik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94
eSosIFdlYkZyYW1lUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Kik7CisgICAg
Ym9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNwYWNlKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkqKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXZWJQYWdlUHJveHkq
KTsKLSAgICB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdlYlBhZ2VQcm94eSopOwotICAgIHZvaWQg
ZGlkRmluaXNoUHJvZ3Jlc3MoV2ViUGFnZVByb3h5Kik7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0
YXJ0UHJvZ3Jlc3MoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZVByb2dyZXNzKFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hQcm9ncmVzcyhXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKIAogICAgIC8vIEZJ
WE1FOiBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoaXMgY2xp
ZW50LgotICAgIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJQYWdlUHJveHkq
KTsKLSAgICB2b2lkIGludGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUo
V2ViUGFnZVByb3h5Kik7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZShXZWJQ
YWdlUHJveHkqKTsKLSAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQYWdlUHJveHkqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJQYWdlUHJveHkq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJv
Y2Vzc1VucmVzcG9uc2l2ZShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSosIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkSXRlbSwgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
KiByZW1vdmVkSXRlbXMpOwotICAgIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdl
YlBhZ2VQcm94eSosIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qLCBBUEk6Ok9iamVjdCopOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV2ViUGFnZVByb3h5KiwgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWRJdGVtLCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0
Pj4qIHJlbW92ZWRJdGVtcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlUHJveHkqLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQotICAgIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgcGx1Z2luTG9hZFBvbGljeShXZWJQYWdlUHJv
eHkqLCBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5LCBJbW11
dGFibGVEaWN0aW9uYXJ5KiwgU3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uLCBTdHJp
bmcmIHVzZUJsb2NrZWRQbHVnaW5UaXRsZSk7Ci0gICAgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXpl
UGx1Z2luKFdlYlBhZ2VQcm94eSosIEltbXV0YWJsZURpY3Rpb25hcnkqKTsKLSAgICB2b2lkIGRp
ZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKFdlYlBhZ2VQcm94eSosIEltbXV0YWJsZURpY3Rp
b25hcnkqKTsKKyAgICBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBsdWdpbkxvYWRQb2xpY3koV2Vi
UGFnZVByb3h5KiwgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGlj
eSwgSW1tdXRhYmxlRGljdGlvbmFyeSosIFdURjo6U3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2Ny
aXB0aW9uLCBXVEY6OlN0cmluZyYgdXNlQmxvY2tlZFBsdWdpblRpdGxlKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihXZWJQYWdlUHJveHkqLCBJ
bW11dGFibGVEaWN0aW9uYXJ5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZEJsb2Nr
SW5zZWN1cmVQbHVnaW5WZXJzaW9uKFdlYlBhZ2VQcm94eSosIEltbXV0YWJsZURpY3Rpb25hcnkq
KSBvdmVycmlkZTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lm
IEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xMb2FkUG9s
aWN5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpT
dHJpbmcmKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGRhNWI3MzM0Yjc2Yjg1NWEwZTFl
MGRkYzZhNjE0ZTRkZmQwZjJhOTQuLjEzMTBjZGEzMThmNTQyOGZhMTY1Njk1MDNjMGViOGE4MDgy
OWE1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0y
OCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJBUElB
cnJheS5oIgorI2luY2x1ZGUgIkFQSUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVBvbGlj
eUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lv
bkxpc3RlbmVyLmgiCkBAIC0zOTgsMjQgKzQwMCw5IEBAIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4g
V2ViUGFnZVByb3h5OjpyZWxhdGVkUGFnZXMoKSBjb25zdAogICAgIHJldHVybiBBUEk6OkFycmF5
OjpjcmVhdGUoc3RkOjptb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5p
dGlhbGl6ZUxvYWRlckNsaWVudChjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiBsb2FkQ2xp
ZW50KQordm9pZCBXZWJQYWdlUHJveHk6OnNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpMb2FkZXJDbGllbnQ+IGxvYWRlckNsaWVudCkKIHsKLSAgICBtX2xvYWRlckNsaWVudC5p
bml0aWFsaXplKGxvYWRDbGllbnQpOwotICAgIAotICAgIGlmICghbG9hZENsaWVudCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMg
Y29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVh
ZCBvZgotICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCi0g
ICAgLy8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgotICAgIFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZXMgbWlsZXN0b25lcyA9IDA7Ci0gICAgaWYgKG1fbG9hZGVyQ2xpZW50LmNsaWVudCgp
LmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpCi0gICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6
RGlkRmlyc3RMYXlvdXQ7Ci0gICAgaWYgKG1fbG9hZGVyQ2xpZW50LmNsaWVudCgpLmRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKQotICAgICAgICBtaWxlc3RvbmVzIHw9IFdl
YkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dDsKLQotICAgIGlmIChtaWxlc3Rv
bmVzKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZv
ckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcyksIG1fcGFnZUlEKTsKKyAgICBtX2xvYWRlckNs
aWVudCA9IHN0ZDo6bW92ZShsb2FkZXJDbGllbnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4gcG9saWN5
Q2xpZW50KQpAQCAtNTU3LDcgKzU0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAK
ICAgICByZXNldFN0YXRlKCk7CiAKLSAgICBtX2xvYWRlckNsaWVudC5pbml0aWFsaXplKDApOwor
ICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX3BvbGljeUNsaWVudCA9IG51bGxw
dHI7CiAgICAgbV9mb3JtQ2xpZW50LmluaXRpYWxpemUoMCk7CiAgICAgbV91aUNsaWVudC5pbml0
aWFsaXplKDApOwpAQCAtODMwLDcgKzgxNyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmUHRyPEFQ
STo6T2JqZWN0Pj4qIHJlbW92ZWQpCiB7Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0KHRoaXMsIGFkZGVkLCByZW1vdmVkKTsKKyAgICBpZiAobV9sb2FkZXJDbGll
bnQpCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QodGhp
cywgYWRkZWQsIHJlbW92ZWQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNr
Rm9yd2FyZExpc3RJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVj
b2RlcikKQEAgLTg0MCw4ICs4MjgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBpdGVtSUQsIElQQzo6TWVzc2FnZURlY28KICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0gPSBtX3Byb2Nlc3MtPndlYkJhY2tG
b3J3YXJkSXRlbShpdGVtSUQpKQotICAgICAgICBtX2xvYWRlckNsaWVudC53aWxsR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0odGhpcywgaXRlbSwgdXNlckRhdGEuZ2V0KCkpOworICAgIGlmIChXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9wcm9jZXNzLT53ZWJCYWNrRm9yd2FyZEl0ZW0o
aXRlbUlEKSkgeworICAgICAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgICAgICBtX2xv
YWRlckNsaWVudC0+d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHRoaXMsIGl0ZW0sIHVzZXJE
YXRhLmdldCgpKTsKKyAgICB9CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5TaG93TUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTEzMzYsNyArMTMyNiw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQzMl90IHBy
b2Nlc3NUeXBlLCBjb25zCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmVmUHRyPEltbXV0YWJs
ZURpY3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25E
aWN0aW9uYXJ5KHBsdWdpbiwgZnJhbWVVUkxTdHJpbmcsIFN0cmluZygpLCBwYWdlVVJMU3RyaW5n
LCBTdHJpbmcoKSwgU3RyaW5nKCkpOwotICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBtX2xvYWRlckNs
aWVudC5wbHVnaW5Mb2FkUG9saWN5KHRoaXMsIHN0YXRpY19jYXN0PFBsdWdpbk1vZHVsZUxvYWRQ
b2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSwgdW5hdmFp
bGFiaWxpdHlEZXNjcmlwdGlvbiwgdXNlQmxvY2tlZFBsdWdpblRpdGxlKTsKKyAgICBpZiAobV9s
b2FkZXJDbGllbnQpCisgICAgICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBtX2xvYWRlckNsaWVudC0+
cGx1Z2luTG9hZFBvbGljeSh0aGlzLCBzdGF0aWNfY2FzdDxQbHVnaW5Nb2R1bGVMb2FkUG9saWN5
PihwbHVnaW5Mb2FkUG9saWN5KSwgcGx1Z2luSW5mb3JtYXRpb24uZ2V0KCksIHVuYXZhaWxhYmls
aXR5RGVzY3JpcHRpb24sIHVzZUJsb2NrZWRQbHVnaW5UaXRsZSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShmcmFtZVVSTFN0cmluZyk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VVUkxTdHJpbmcp
OwpAQCAtMjA3Miw3ICsyMDYzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvZ3Jl
c3MoKQogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRTdGFydFByb2dyZXNzKHRyYW5zYWN0aW9uKTsK
IAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGll
bnQuZGlkU3RhcnRQcm9ncmVzcyh0aGlzKTsKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAg
ICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb2dyZXNzKHRoaXMpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoZG91YmxlIHZhbHVlKQpAQCAtMjA4MSw3ICsy
MDczLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb2dyZXNzKGRvdWJsZSB2YWx1
ZSkKICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkQ2hhbmdlUHJvZ3Jlc3ModHJhbnNhY3Rpb24sIHZh
bHVlKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2Fk
ZXJDbGllbnQuZGlkQ2hhbmdlUHJvZ3Jlc3ModGhpcyk7CisgICAgaWYgKG1fbG9hZGVyQ2xpZW50
KQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ2hhbmdlUHJvZ3Jlc3ModGhpcyk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hQcm9ncmVzcygpCkBAIC0yMDkwLDcgKzIwODMs
OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoUHJvZ3Jlc3MoKQogICAgIG1fcGFnZUxv
YWRTdGF0ZS5kaWRGaW5pc2hQcm9ncmVzcyh0cmFuc2FjdGlvbik7CiAKICAgICBtX3BhZ2VMb2Fk
U3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZpbmlzaFByb2dy
ZXNzKHRoaXMpOworICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAgbV9sb2FkZXJDbGll
bnQtPmRpZEZpbmlzaFByb2dyZXNzKHRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYgZGVjb2RlcikKQEAgLTIxMTUsNyArMjEwOSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
CiAgICAgZnJhbWUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7CiAKICAgICBtX3BhZ2VM
b2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKKyAgICBp
ZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgSVBDOjpNZXNz
YWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTIxMzcsNyArMjEzMiw4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmCiAgICAgZnJhbWUtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZCh1cmwpOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAg
ICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIGlmIChtX2xvYWRl
ckNsaWVudCkKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0YS5nZXQoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIElQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCkBAIC0yMTU4LDcgKzIxNTQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFJlc291cgogICAgIGZyYW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAKICAgICBtX3Bh
Z2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0aGlzLCBmcmFtZSwgZXJyb3IsIHVzZXJE
YXRhLmdldCgpKTsKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodGhpcywgZnJhbWUs
IGVycm9yLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxv
YWREZXBlbmRlbnRDYWxsYmFja3MoKQpAQCAtMjIxMSw3ICsyMjA4LDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIG1pbWVUeXAKICAgICAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSAxOwogCiAgICAgbV9wYWdl
TG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC5kaWRDb21taXRM
b2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKKyAgICBpZiAobV9sb2Fk
ZXJDbGllbnQpCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDb21taXRMb2FkRm9yRnJhbWUo
dGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCkBAIC0yMjI0LDcgKzIyMjIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSVBDOjpN
ZXNzYWdlRAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShm
cmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50
LmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0YS5nZXQo
KSk7CisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQorICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjI0NSw3ICsyMjQ0LDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJgogICAgIGZyYW1lLT5kaWRGaW5pc2hMb2FkKCk7CiAK
ICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50
LmRpZEZpbmlzaExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAg
IGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaExv
YWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTIyNjgs
NyArMjI2OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVyCiAgICAgZnJhbWUtPmRpZEZhaWxM
b2FkKCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9h
ZGVyQ2xpZW50LmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodGhpcywgZnJhbWUsIGVycm9y
LCB1c2VyRGF0YS5nZXQoKSk7CisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQorICAgICAgICBtX2xv
YWRlckNsaWVudC0+ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0aGlzLCBmcmFtZSwgZXJy
b3IsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcGFxdWVT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIElQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCkBAIC0yMjkxLDcgKzIyOTIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQzMl90CiAgICAgZnJhbWUtPmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24odXJsKTsKIAogICAg
IG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHRoaXMsIGZyYW1lLCBzdGF0aWNfY2FzdDxT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZT4ob3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUpLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQorICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHRoaXMsIGZy
YW1lLCBzdGF0aWNfY2FzdDxTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZT4ob3BhcXVlU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUpLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjMxMiw3ICsy
MzE0LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdGl0bGUKICAgICBmcmFtZS0+ZGlkQ2hhbmdlVGl0
bGUodGl0bGUpOwogICAgIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0g
ICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodGhpcywgdGl0bGUsIGZy
YW1lLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQorICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodGhpcywgdGl0bGUsIGZyYW1l
LCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdExheW91
dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIp
CkBAIC0yMzI1LDcgKzIzMjgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJgogICAgIFdlYkZy
YW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNT
QUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZpcnN0TGF5b3V0Rm9y
RnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKKyAgICBpZiAobV9sb2FkZXJDbGll
bnQpCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaXJzdExheW91dEZvckZyYW1lKHRoaXMs
IGZyYW1lLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjMzOCw3ICsyMzQyLDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIElQQzoKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBtX2xvYWRlckNs
aWVudC5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh0aGlzLCBmcmFtZSwg
dXNlckRhdGEuZ2V0KCkpOworICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAgbV9sb2Fk
ZXJDbGllbnQtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHRoaXMsIGZy
YW1lLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRMYXlvdXQo
dWludDMyX3QgbGF5b3V0TWlsZXN0b25lcywgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikK
QEAgLTIzNDgsNyArMjM1Myw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRMYXlvdXQodWludDMy
X3QgbGF5b3V0TWlsZXN0b25lcywgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
bG9hZGVyQ2xpZW50LmRpZExheW91dCh0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRNaWxlc3RvbmVz
PihsYXlvdXRNaWxlc3RvbmVzKSwgdXNlckRhdGEuZ2V0KCkpOworICAgIGlmIChtX2xvYWRlckNs
aWVudCkKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZExheW91dCh0aGlzLCBzdGF0aWNfY2Fz
dDxMYXlvdXRNaWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSwgdXNlckRhdGEuZ2V0KCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHVpbnQ2
NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCkBAIC0yMzYxLDcgKzIz
NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHVp
bnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlYwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1l
KTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh0aGlz
LCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAg
ICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh0aGlzLCBmcmFt
ZSwgdXNlckRhdGEuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29k
ZXImIGRlY29kZXIpCkBAIC0yMzc4LDcgKzIzODUsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVz
cwogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJh
bnNhY3Rpb24pOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBt
X2xvYWRlckNsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodGhpcywgZnJh
bWUsIHVzZXJEYXRhLmdldCgpKTsKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgIG1f
bG9hZGVyQ2xpZW50LT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodGhpcywgZnJh
bWUsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2Vj
dXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXIm
IGRlY29kZXIpCkBAIC0yMzk1LDcgKzI0MDMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVu
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSVBDOjpNZXNzYWdlRAog
ICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNh
Y3Rpb24pOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xv
YWRlckNsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNl
ckRhdGEuZ2V0KCkpOworICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAgbV9sb2FkZXJD
bGllbnQtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0
YS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjQwOCw3
ICsyNDE3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIElQQzo6TWVzc2FnZURlY29kZXImIGQKICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CiAKLSAgICBtX2xvYWRlckNsaWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSh0aGlzLCBm
cmFtZSwgdXNlckRhdGEuZ2V0KCkpOworICAgIGlmIChtX2xvYWRlckNsaWVudCkKKyAgICAgICAg
bV9sb2FkZXJDbGllbnQtPmRpZERldGVjdFhTU0ZvckZyYW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0
YS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2V0
KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUpCkBAIC0yNjk5LDcgKzI3MDksMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBv
cGFxdWVQbHVnaW5VbmF2YWlsYWIKICNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIFdlYlBhZ2VQcm94
eTo6d2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQzMl90JiBsb2FkUG9s
aWN5KQogewotICAgIGxvYWRQb2xpY3kgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJD
bGllbnQud2ViR0xMb2FkUG9saWN5KHRoaXMsIHVybCkpOworICAgIGlmICghbV9sb2FkZXJDbGll
bnQpCisgICAgICAgIGxvYWRQb2xpY3kgPSBXZWJHTEFsbG93OworICAgIGVsc2UKKyAgICAgICAg
bG9hZFBvbGljeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+d2ViR0xM
b2FkUG9saWN5KHRoaXMsIHVybCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApAQCAt
MzcyOSw3ICszNzQyLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoKQogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSgpOwog
Ci0gICAgbV9sb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSh0aGlzKTsK
KyAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5wcm9jZXNz
RGlkQmVjb21lVW5yZXNwb25zaXZlKHRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW50
ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZSgpCkBAIC0zNzM3LDcgKzM3
NTEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vz
c1VucmVzcG9uc2l2ZSgpCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fbG9hZGVyQ2xpZW50LmludGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3Bv
bnNpdmUodGhpcyk7CisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQorICAgICAgICBtX2xvYWRlckNs
aWVudC0+aW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZSh0aGlzKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKQEAg
LTM3NDcsNyArMzc2Miw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZSgpCiAgICAgCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSgp
OwogCi0gICAgbV9sb2FkZXJDbGllbnQucHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUodGhpcyk7
CisgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQorICAgICAgICBtX2xvYWRlckNsaWVudC0+cHJvY2Vz
c0RpZEJlY29tZVJlc3BvbnNpdmUodGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9j
ZXNzRGlkQ3Jhc2goKQpAQCAtMzc2Miw3ICszNzc4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBy
b2Nlc3NEaWRDcmFzaCgpCiAKICAgICBtX3BhZ2VDbGllbnQucHJvY2Vzc0RpZENyYXNoKCk7CiAK
LSAgICBtX2xvYWRlckNsaWVudC5wcm9jZXNzRGlkQ3Jhc2godGhpcyk7CisgICAgaWYgKG1fbG9h
ZGVyQ2xpZW50KQorICAgICAgICBtX2xvYWRlckNsaWVudC0+cHJvY2Vzc0RpZENyYXNoKHRoaXMp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSgpCkBAIC0zOTYwLDggKzM5Nzcs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VJbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsK
IAogICAgIFJlZlB0cjxXZWJQcm90ZWN0aW9uU3BhY2U+IHByb3RlY3Rpb25TcGFjZSA9IFdlYlBy
b3RlY3Rpb25TcGFjZTo6Y3JlYXRlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOwotICAgIAotICAgIGNh
bkF1dGhlbnRpY2F0ZSA9IG1fbG9hZGVyQ2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VJbkZyYW1lKHRoaXMsIGZyYW1lLCBwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpOwor
CisgICAgaWYgKCFtX2xvYWRlckNsaWVudCkKKyAgICAgICAgY2FuQXV0aGVudGljYXRlID0gZmFs
c2U7CisgICAgZWxzZQorICAgICAgICBjYW5BdXRoZW50aWNhdGUgPSBtX2xvYWRlckNsaWVudC0+
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUodGhpcywgZnJhbWUs
IHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpA
QCAtMzk3Nyw3ICszOTk3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5KHVpbnQ2NF90IGZyYW1lSUQsIFBhc3MKICAgICBNRVNTQUdF
X0NIRUNLKGZyYW1lKTsKIAogICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
PiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IHBycEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwot
ICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJh
bWUodGhpcywgZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKKyAgICBpZiAo
bV9sb2FkZXJDbGllbnQpCisgICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKHRoaXMsIGZyYW1lLCBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVv
dGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1
cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBQYXNzUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5
PiByZXBseSkKQEAgLTQxMzUsNyArNDE1Niw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFu
Z2VQYWdlQ291bnQodW5zaWduZWQgcGFnZUNvdW50KQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBwYWdlVVJMU3RyaW5nKQogewotICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZhaWxUb0lu
aXRpYWxpemVQbHVnaW4odGhpcywgY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KG1p
bWVUeXBlLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykuZ2V0KCkpOworICAgIGlmICht
X2xvYWRlckNsaWVudCkKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxUb0luaXRpYWxp
emVQbHVnaW4odGhpcywgY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KG1pbWVUeXBl
LCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9i
c2N1cmVkKQpAQCAtNDE1NCw3ICs0MTc2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEJsb2Nr
SW5zZWN1cmVQbHVnaW5WZXJzaW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFMKICAg
ICBVTlVTRURfUEFSQU0ocmVwbGFjZW1lbnRPYnNjdXJlZCk7CiAjZW5kaWYKIAotICAgIG1fbG9h
ZGVyQ2xpZW50LmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKHRoaXMsIHBsdWdpbkluZm9y
bWF0aW9uLmdldCgpKTsKKyAgICBpZiAobV9sb2FkZXJDbGllbnQpCisgICAgICAgIG1fbG9hZGVy
Q2xpZW50LT5kaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbih0aGlzLCBwbHVnaW5JbmZvcm1h
dGlvbi5nZXQoKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhZThkZTc0OTRmMjNi
Y2JkZDYzOTgxNzc1YTZmYmRjYzFjY2RmYzkwLi5mZTFiOWI3ODIwYzU1ZjBkMjg4ZTllZjNmY2U4
ZWM3MjMwMDVlMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYlBhZ2VQcm94eV9oCiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKLSNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKQEAgLTEwMCw2ICs5OSw4IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEFQSSB7
CitjbGFzcyBMb2FkZXJDbGllbnQ7CitjbGFzcyBQb2xpY3lDbGllbnQ7CiBjbGFzcyBVUkxSZXF1
ZXN0OwogfQogCkBAIC0zNjcsNyArMzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6
ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqKTsKICAgICB2b2lkIGluaXRp
YWxpemVGaW5kTWF0Y2hlc0NsaWVudChjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2Uq
KTsKICAgICB2b2lkIGluaXRpYWxpemVGb3JtQ2xpZW50KGNvbnN0IFdLUGFnZUZvcm1DbGllbnRC
YXNlKik7Ci0gICAgdm9pZCBpbml0aWFsaXplTG9hZGVyQ2xpZW50KGNvbnN0IFdLUGFnZUxvYWRl
ckNsaWVudEJhc2UqKTsKKyAgICB2b2lkIHNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpMb2FkZXJDbGllbnQ+KTsKICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+KTsKICAgICB2b2lkIGluaXRpYWxpemVVSUNsaWVudChj
b25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqKTsKICNpZiBQTEFURk9STShFRkwpCkBAIC04MzMsNyAr
ODM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5kQ29sb3JQaWNrZXIoKTsKICNlbmRpZgogCi0g
ICAgY29uc3QgV2ViTG9hZGVyQ2xpZW50JiBsb2FkZXJDbGllbnQoKSB7IHJldHVybiBtX2xvYWRl
ckNsaWVudDsgfQorICAgIGNvbnN0IEFQSTo6TG9hZGVyQ2xpZW50KiBsb2FkZXJDbGllbnQoKSB7
IHJldHVybiBtX2xvYWRlckNsaWVudC5nZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
aW5pbXVtTGF5b3V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUxheW91dFNpemU7IH0K
ICAgICB2b2lkIHNldE1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
QEAgLTExNjIsNyArMTE2Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFBhZ2VDbGllbnQm
IG1fcGFnZUNsaWVudDsKLSAgICBXZWJMb2FkZXJDbGllbnQgbV9sb2FkZXJDbGllbnQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRlckNsaWVudDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5Q2xpZW50OwogICAgIFdl
YkZvcm1DbGllbnQgbV9mb3JtQ2xpZW50OwogICAgIFdlYlVJQ2xpZW50IG1fdWlDbGllbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNTZiNjQ0Y2Q1MTQyOGM5NjZkY2YwNjhhOGNiZDAzZGJiMjA5OWFiOC4uZDI0ZTY5NjM3ZDU3
YzJhZWI0MDUzMTUxZDVmNThjNzRiOWZjYzQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEyLDYgKzExMiw3IEBACiAJCTFB
MjMyOEZGMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMzI4RkQxNjJDODY2QTAwRDgyRjdB
IC8qIE1lc3NhZ2VFbmNvZGVyLmggKi87IH07CiAJCTFBMjMyOTAyMTYyQzg2NzMwMEQ4MkY3QSAv
KiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTIzMjkwMDE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuY3Bw
ICovOyB9OwogCQkxQTIzMjkwMzE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjMyOTAxMTYy
Qzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oICovOyB9OworCQkxQTI0NjRGMzE4OTFF
NDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9h
ZGVyQ2xpZW50LmggKi87IH07CiAJCTFBMjRCNUYyMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBMjRCNUYwMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJ
MUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjRCNUYxMTFGNTMxRTgwMEMzODI2
OSAvKiBNYWNoVXRpbGl0aWVzLmggKi87IH07CiAJCTFBMjRCRUQ1MTIwODk0RDEwMEZCQjA1OSAv
KiBTaGFyZWRNZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMjRCRUQzMTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCAqLzsgfTsK
QEAgLTE3MzYsNiArMTczNyw3IEBACiAJCTFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNz
YWdlRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlRW5j
b2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTIzMjkwMDE2MkM4NjczMDBE
ODJGN0EgLyogTWVzc2FnZURlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVzc2FnZURlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTIzMjkwMTE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZURlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElMb2FkZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8q
IE1hY2hVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWFjaFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjRCNUYx
MTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1hY2hVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRNZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUwMTMsNiArNTAxNSw3IEBACiAJCQkJMzdDNEMwODMxODE0OUMyQTAwMzY4
OEI5IC8qIENvY29hICovLAogCQkJCUJDOEE1MDEzMTE3NjVGNDUwMDc1NzU3MyAvKiBjcHAgKi8s
CiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3QkFCIC8qIG1hYyAqLywKKwkJCQkxQTI0NjRGMjE4
OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJMUFGREQzMTQxODkx
QjU0MDAwMTUzOTcwIC8qIEFQSVBvbGljeUNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBB
UEk7CkBAIC02NDA1LDYgKzY0MDgsNyBAQAogCQkJCTUxNUU3NzJDMTg0MDA4QjkwMDA3MjAzRiAv
KiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzQUExMDY3MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDRBMTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29r
aWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUEyNDY0RjMxODkx
RTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
REQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmgg
aW4gSGVhZGVycyAqLywK
</data>
<flag name="review"
          id="246028"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>