<?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>37347</bug_id>
          
          <creation_ts>2010-04-09 11:39:44 -0700</creation_ts>
          <short_desc>Don&apos;t use CF types in the new C API</short_desc>
          <delta_ts>2010-04-09 15:48:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>210824</commentid>
    <comment_count>0</comment_count>
      <attachid>52971</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-09 11:39:44 -0700</bug_when>
    <thetext>Created attachment 52971
Patch

Use WK types instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210827</commentid>
    <comment_count>1</comment_count>
      <attachid>52971</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-04-09 11:42:11 -0700</bug_when>
    <thetext>Comment on attachment 52971
Patch


&gt; +    WebCore::KURL&amp; url() { return m_url; }

This should be const. Looks good otherwise.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210864</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-09 13:03:29 -0700</bug_when>
    <thetext>The KURLWrapper::create boilerplate here is unfortunate. It would be better if KURL itself were refcounted, like StringImpl. That would avoid an allocation at the API boundary, too.

Same goes for ResourceRequest, ResourceResponse, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210925</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-04-09 14:13:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; The KURLWrapper::create boilerplate here is unfortunate. It would be better if
&gt; KURL itself were refcounted, like StringImpl. That would avoid an allocation at
&gt; the API boundary, too.
&gt; 
&gt; Same goes for ResourceRequest, ResourceResponse, etc.

Indeed, it would be good for WebCore as a cross-platform whole if that were the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210986</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-09 15:48:07 -0700</bug_when>
    <thetext>Fixed in r57352.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52971</attachid>
            <date>2010-04-09 11:39:44 -0700</date>
            <delta_ts>2010-04-09 11:42:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>apiPatch.diff</filename>
            <type>text/plain</type>
            <size>59787</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzM0NikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzcgQEAKKzIwMTAtMDQtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNl
IGFsbCB1c2VzIG9mIENGIHR5cGVzIGluIHRoZSBDIEFQSS4KKyAgICAgICAgLSBSZXBsYWNlIENG
U3RyaW5nUmVmIHdpdGggV0tTdHJpbmdSZWYuCisgICAgICAgIC0gUmVwbGFjZSBDRlVSTFJlZiB3
aXRoIFdLVVJMUmVmLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogU2hhcmVkL0tVUkxXcmFwcGVyLmg6IEFk
ZGVkLiBSZWZDb3VudGVkIHdyYXBwZXIgYXJvdW5kIEtVUkwuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oOiBBZGQgbmV3IGNvbnZlcnNpb25zLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0Jhc2UuaDogQWRkIG5ldyB0eXBlcy4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tGcmFtZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaDog
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICBSZXBsYWNlIHVzZXMgb2YgQ0YgdHlwZXMgd2l0
aCBXSyBlcXVpdmFsZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1N0cmluZy5j
cHA6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1N0cmluZy5oOiBBZGRlZC4K
KyAgICAgICAgUmVwcmVzZW50cyBhIFdlYkNvcmU6OlN0cmluZ0ltcGwqLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLVVJMLmNwcDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLVVJMLmg6IEFkZGVkLgorICAgICAgICBSZXByZXNlbnRzIGEgV2ViS2l0OjpLVVJMV3Jh
cHBlciouCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvY2Y6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9jZi9XS1N0cmluZ0NGLmNwcDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL2NmL1dLU3RyaW5nQ0YuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL2NmL1dLVVJMQ0YuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
Y2YvV0tVUkxDRi5oOiBBZGRlZC4KKyAgICAgICAgQ29yZUZvdW5kYXRpb24gY29udmVyc2lvbiBm
aWxlcy4gQWxsb3dzIGNvbnZlcnRpbmcKKyAgICAgICAgIFdLU3RyaW5nUmVmIDwtPiBDRlN0cmlu
Z1JlZgorICAgICAgICAgV0tVUkxSZWYgPC0+IENGVVJMUmVmCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcmlw
dFJldHVyblZhbHVlQ2FsbGJhY2s6OnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1NjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
UHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVQcm94eTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6dXJsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVQcm94eTo6cHJvdmlzaW9uYWxVUkwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEV4aXQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
YWdlVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVybEF0UHJvY2Vzc0V4
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTUlNRVR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQb2xpY3lDbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VUlDbGllbnQuaDoKKyAgICAgICAgRG9uJ3QgdXNlIENGIHR5cGVzIGludGVybmFsbHkgYXQgYWxs
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxv
YWRlckRlc3Ryb3llZCk6CisgICAgICAgIEZpeCB0eXBvLgorCiAyMDEwLTA0LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxz
c29uLgpJbmRleDogV2ViS2l0Mi9TaGFyZWQvS1VSTFdyYXBwZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1NoYXJlZC9LVVJMV3JhcHBlci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFy
ZWQvS1VSTFdyYXBwZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgS1VSTFdyYXBwZXJfaAorI2RlZmluZSBLVVJMV3JhcHBlcl9oCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBLVVJM
V3JhcHBlciA6IHB1YmxpYyBSZWZDb3VudGVkPEtVUkxXcmFwcGVyPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8S1VSTFdyYXBwZXI+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpLVVJM
JiB1cmwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEtVUkxXcmFwcGVyKHVy
bCkpOworICAgIH0KKworICAgIFdlYkNvcmU6OktVUkwmIHVybCgpIHsgcmV0dXJuIG1fdXJsOyB9
CisKK3ByaXZhdGU6CisgICAgS1VSTFdyYXBwZXIoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKQor
ICAgICAgICA6IG1fdXJsKHVybCkKKyAgICB7CisgICAgfQorCisgICAgV2ViQ29yZTo6S1VSTCBt
X3VybDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gS1VSTFdyYXBw
ZXJfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvU2NyaXB0UmV0dXJuVmFsdWVDYWxs
YmFjay5jcHAJKHJldmlzaW9uIDU3MzEyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvU2NyaXB0UmV0
dXJuVmFsdWVDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAog
I2luY2x1ZGUgIlNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suaCIKIAorI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRl
Q2FsbGJhY2tJRCgpCkBAIC00NywxMSArNDksMTEgQEAgU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFj
azo6flNjcmlwdFJldHVybgogICAgICAgICBtX2Rpc3Bvc2VDYWxsYmFjayhtX2NvbnRleHQpOwog
fQogCi12b2lkIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s6OnBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShDRlN0cmluZ1JlZiByZXR1cm5WYWx1ZSkKK3ZvaWQgU2NyaXB0UmV0dXJuVmFs
dWVDYWxsYmFjazo6cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKFdlYkNvcmU6OlN0cmlu
Z0ltcGwqIHJldHVyblZhbHVlKQogewogICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKIAotICAgIG1f
Y2FsbGJhY2sobV9jb250ZXh0LCByZXR1cm5WYWx1ZSk7CisgICAgbV9jYWxsYmFjayhtX2NvbnRl
eHQsIHRvUmVmKHJldHVyblZhbHVlKSk7CiAgICAgCiAgICAgbV9jYWxsYmFjayA9IDA7CiAgICAg
bV9kaXNwb3NlQ2FsbGJhY2sgPSAwOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvU2NyaXB0UmV0
dXJuVmFsdWVDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1Njcmlw
dFJldHVyblZhbHVlQ2FsbGJhY2suaAkocmV2aXNpb24gNTczMTIpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0
ICsyNiwxOSBAQAogI2lmbmRlZiBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrX2gKICNkZWZpbmUg
U2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja19oCiAKKyNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBTdHJpbmdJbXBsOworfQorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjayA6IHB1YmxpYyBSZWZD
b3VudGVkPFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s+IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVm
IHZvaWQgKCpTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrRnVuY3Rpb24pKHZvaWQqLCBDRlN0cmlu
Z1JlZik7CisgICAgdHlwZWRlZiB2b2lkICgqU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja0Z1bmN0
aW9uKSh2b2lkKiwgV0tTdHJpbmdSZWYpOwogICAgIHR5cGVkZWYgdm9pZCAoKlNjcmlwdFJldHVy
blZhbHVlQ2FsbGJhY2tEaXNwb3NlRnVuY3Rpb24pKHZvaWQqKTsKIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s+IGNyZWF0ZSh2b2lkKiBjb250ZXh0LCBT
Y3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2ssIFNjcmlwdFJldHVyblZh
bHVlQ2FsbGJhY2tEaXNwb3NlRnVuY3Rpb24gZGlzcG9zZUNhbGxiYWNrKQpAQCAtNDQsNyArNDks
NyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja0lEOyB9CiAKLSAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShDRlN0cmluZ1JlZik7CisgICAgdm9pZCBwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUo
V2ViQ29yZTo6U3RyaW5nSW1wbCopOwogCiBwcml2YXRlOgogICAgIFNjcmlwdFJldHVyblZhbHVl
Q2FsbGJhY2sodm9pZCosIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tGdW5jdGlvbiwgU2NyaXB0
UmV0dXJuVmFsdWVDYWxsYmFja0Rpc3Bvc2VGdW5jdGlvbik7CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcAkocmV2aXNpb24gNTczMTIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1
ZGUgIldlYkZyYW1lUHJveHkuaCIKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02NSwxNiArNjQsMTUgQEAgdm9pZCBXZWJG
cmFtZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTAogewogICAgIC8vIEZJWE1FOiBBZGQgYXNz
ZXJ0aW9ucy4KICAgICBtX2xvYWRTdGF0ZSA9IExvYWRTdGF0ZVByb3Zpc2lvbmFsOwotCi0gICAg
Ly8gRklYTUU6IFRoaXMgaXMgdGhlIHdyb25nIGxheWVyIHRvIGJlIGNvbnZlcnRpbmcgdG8gQ0Yu
Ci0gICAgbV9wcm92aXNpb25hbFVSTC5hZG9wdENGKHVybC5jcmVhdGVDRlVSTCgpKTsKKyAgICBt
X3Byb3Zpc2lvbmFsVVJMID0gS1VSTFdyYXBwZXI6OmNyZWF0ZSh1cmwpOwogfQogCiB2b2lkIFdl
YkZyYW1lUHJveHk6OmRpZENvbW1pdExvYWQoKQogewogICAgIC8vIEZJWE1FOiBBZGQgYXNzZXJ0
aW9ucy4KICAgICBtX2xvYWRTdGF0ZSA9IExvYWRTdGF0ZUNvbW1pdHRlZDsKLSAgICBtX3VybCA9
IG1fcHJvdmlzaW9uYWxVUkwucmVsZWFzZVJlZigpOworICAgIG1fdXJsID0gbV9wcm92aXNpb25h
bFVSTDsKKyAgICBtX3Byb3Zpc2lvbmFsVVJMID0gMDsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5
OjpkaWRGaW5pc2hMb2FkKCkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgJKHJldmlz
aW9uIDU3MzEyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpZm5kZWYgV2ViRnJhbWVQcm94eV9oCiAjZGVm
aW5lIFdlYkZyYW1lUHJveHlfaAogCisjaW5jbHVkZSAiS1VSTFdyYXBwZXIuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2Ug
Q29yZUlQQyB7CiAgICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOwpAQCAtMzksNyArMzksNiBAQCBu
YW1lc3BhY2UgQ29yZUlQQyB7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBL
VVJMOwogICAgIGNsYXNzIFN0cmluZzsKIH0KIApAQCAtNjgsOCArNjcsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0OwogICAgIExvYWRTdGF0ZSBsb2FkU3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRTdGF0ZTsgfQogCi0gICAgQ0ZVUkxSZWYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmwuZ2V0KCk7IH0KLSAgICBDRlVSTFJlZiBwcm92aXNpb25hbFVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkwuZ2V0KCk7IH0KKyAgICBLVVJMV3JhcHBlciog
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmwuZ2V0KCk7IH0KKyAgICBLVVJMV3JhcHBlciogcHJv
dmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsVVJMLmdldCgpOyB9CiAK
ICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVy
bCk7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CkBAIC04NCw4ICs4Myw4IEBAIHByaXZhdGU6
CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKICAgICBMb2FkU3RhdGUgbV9sb2FkU3RhdGU7
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBtX3VybDsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IG1fcHJvdmlzaW9uYWxVUkw7CisgICAgUmVmUHRyPEtVUkxXcmFwcGVyPiBtX3VybDsKKyAgICBS
ZWZQdHI8S1VSTFdyYXBwZXI+IG1fcHJvdmlzaW9uYWxVUkw7CiAgICAgUmVmUHRyPFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eT4gbV9wb2xpY3lMaXN0ZW5lcjsKICAgICB1aW50NjRfdCBtX2Zy
YW1lSUQ7CiB9OwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZp
c2lvbiA1NzMxMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDEwICs3OCwxMCBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlk
RmFpbExvYWRXaXRoRXJyCiAgICAgICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIG1fcGFnZUxvYWRlckNs
aWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgQ0ZTdHJpbmdSZWYgdGl0bGUsIFdlYkZy
YW1lUHJveHkqIGZyYW1lKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViQ29yZTo6U3RyaW5nSW1wbCogdGl0bGUsIFdl
YkZyYW1lUHJveHkqIGZyYW1lKQogewogICAgIGlmIChtX3BhZ2VMb2FkZXJDbGllbnQuZGlkUmVj
ZWl2ZVRpdGxlRm9yRnJhbWUpCi0gICAgICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZSh0b1JlZihwYWdlKSwgdGl0bGUsIHRvUmVmKGZyYW1lKSwgbV9wYWdlTG9h
ZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAgICAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkUmVj
ZWl2ZVRpdGxlRm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKHRpdGxlKSwgdG9SZWYoZnJhbWUp
LCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xp
ZW50OjpkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQ
cm94eSogZnJhbWUpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkocmV2aXNp
b24gNTczMTIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsMTAgQEAKIAogI2luY2x1ZGUgIldLUGFnZS5oIgogCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgU3RyaW5nSW1wbDsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKQEAgLTQ0LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJv
eHkqKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJG
cmFtZVByb3h5Kik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lKFdlYlBhZ2VQcm94eSosIENGU3RyaW5nUmVmLCBXZWJGcmFtZVByb3h5Kik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJDb3JlOjpTdHJpbmdJ
bXBsKiwgV2ViRnJhbWVQcm94eSopOwogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShX
ZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kik7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kik7CiAg
ICAgdm9pZCBkaWRTdGFydFByb2dyZXNzKFdlYlBhZ2VQcm94eSopOwpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA1NzMxMikKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICAgICAgZnJhbWVbaV0tPmRpc2Nvbm5lY3QoKTsK
ICAgICBtX2ZyYW1lTWFwLmNsZWFyKCk7CiAgICAgbV9tYWluRnJhbWUgPSAwOwotICAgIG1fcGFn
ZVRpdGxlID0gMDsKKworICAgIG1fcGFnZVRpdGxlID0gU3RyaW5nKCk7CisgICAgbV90b29sVGlw
ID0gU3RyaW5nKCk7CisKICAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIHdpdGggcGVuZGluZyBt
X3NjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzLgogICAgIG1fY2FuR29Gb3J3YXJkID0gZmFsc2U7
CiAgICAgbV9jYW5Hb0JhY2sgPSBmYWxzZTsKQEAgLTU4MiwxNCArNTg1LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmEKIHsKICAgICBmcmFtZS0+ZGlkUmVjZWl2
ZVRpdGxlKHRpdGxlKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRoZSB3cm9uZyBsYXllciB0
byBiZSBjb252ZXJ0aW5nIHRvIENGLgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZUaXRs
ZShBZG9wdENGLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpKTsKLQogICAgIC8vIENhY2hlIHRoZSB0
aXRsZSBmb3IgdGhlIG1haW4gZnJhbWUgaW4gdGhlIHBhZ2UuCiAgICAgaWYgKGZyYW1lID09IG1f
bWFpbkZyYW1lKQotICAgICAgICBtX3BhZ2VUaXRsZSA9IGNmVGl0bGUuZ2V0KCk7CisgICAgICAg
IG1fcGFnZVRpdGxlID0gdGl0bGU7CiAKLSAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlVGl0
bGVGb3JGcmFtZSh0aGlzLCBjZlRpdGxlLmdldCgpLCBmcmFtZSk7CisgICAgbV9sb2FkZXJDbGll
bnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodGhpcywgdGl0bGUuaW1wbCgpLCBmcmFtZSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYkZyYW1lUHJv
eHkqIGZyYW1lKQpAQCAtNjA2LDMyICs2MDYsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
cnN0VmlzdWFsbHlOb25FbQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDMyX3QgbmF2aWdhdGlvblR5
cGUsIGNvbnN0IEtVUkwmIHVybCwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKLSAgICAvLyBGSVhN
RTogVGhpcyBpcyB0aGUgd3JvbmcgbGF5ZXIgdG8gYmUgY29udmVydGluZyB0byBDRi4KLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKLQog
ICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklEKTsKLSAgICBpZiAoIW1fcG9saWN5
Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odGhpcywgbmF2aWdhdGlvblR5
cGUsIGNmVVJMLmdldCgpLCBmcmFtZSwgbGlzdGVuZXIuZ2V0KCkpKQorICAgIGlmICghbV9wb2xp
Y3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0aGlzLCBuYXZpZ2F0aW9u
VHlwZSwgdXJsLCBmcmFtZSwgbGlzdGVuZXIuZ2V0KCkpKQogICAgICAgICBsaXN0ZW5lci0+dXNl
KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQzMl90IG5hdmlnYXRpb25UeXBlLCBjb25zdCBL
VVJMJiB1cmwsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMg
dGhlIHdyb25nIGxheWVyIHRvIGJlIGNvbnZlcnRpbmcgdG8gQ0YuCi0gICAgUmV0YWluUHRyPENG
VVJMUmVmPiBjZlVSTChBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7Ci0KICAgICBSZWZQdHI8
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsaXN0ZW5lciA9IGZyYW1lLT5zZXRVcFBvbGlj
eUxpc3RlbmVyUHJveHkobGlzdGVuZXJJRCk7Ci0gICAgaWYgKCFtX3BvbGljeUNsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odGhpcywgbmF2aWdhdGlvblR5cGUsIGNmVVJMLmdl
dCgpLCBmcmFtZSwgbGlzdGVuZXIuZ2V0KCkpKQorICAgIGlmICghbV9wb2xpY3lDbGllbnQuZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRoaXMsIG5hdmlnYXRpb25UeXBlLCB1cmwsIGZy
YW1lLCBsaXN0ZW5lci5nZXQoKSkpCiAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck1JTUVUeXBlKFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBLVVJMJiB1cmwsIHVpbnQ2NF90IGxp
c3RlbmVySUQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHdyb25nIGxheWVyIHRvIGJl
IGNvbnZlcnRpbmcgdG8gQ0YuCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk1JTUVUeXBl
KEFkb3B0Q0YsIE1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gY2ZVUkwoQWRvcHRDRiwgdXJsLmNyZWF0ZUNGVVJMKCkpOwotCiAgICAgUmVmUHRyPFdl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KGxpc3RlbmVySUQpOwotICAgIGlmICghbV9wb2xpY3lDbGllbnQuZGVjaWRl
UG9saWN5Rm9yTUlNRVR5cGUodGhpcywgY2ZNSU1FVHlwZS5nZXQoKSwgY2ZVUkwuZ2V0KCksIGZy
YW1lLCBsaXN0ZW5lci5nZXQoKSkpCisgICAgaWYgKCFtX3BvbGljeUNsaWVudC5kZWNpZGVQb2xp
Y3lGb3JNSU1FVHlwZSh0aGlzLCBNSU1FVHlwZSwgdXJsLCBmcmFtZSwgbGlzdGVuZXIuZ2V0KCkp
KQogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiB9CiAKQEAgLTY1MywxMiArNjQzLDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0QWxlcnQoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
YWxlcnRUZXh0KQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRoZSB3cm9uZyBsYXllciB0byBi
ZSBjb252ZXJ0aW5nIHRvIENGLgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZBbGVydFRl
eHQoQWRvcHRDRiwgYWxlcnRUZXh0LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIG1fdWlDbGllbnQu
cnVuSmF2YVNjcmlwdEFsZXJ0KHRoaXMsIGNmQWxlcnRUZXh0LmdldCgpLCBmcmFtZSk7CisgICAg
bV91aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodGhpcywgYWxlcnRUZXh0LmltcGwoKSwgZnJh
bWUpOwogfQogCi0KIC8vIE90aGVyCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlRm9jdXMoYm9v
bCBkaXJlY3Rpb24pCkBAIC02OTksOSArNjg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1
bkphdmFTY3JpcHRJbk1haQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6
IFRoaXMgaXMgdGhlIHdyb25nIGxheWVyIHRvIGJlIGNvbnZlcnRpbmcgdG8gQ0YuCi0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZlJlc3VsdFN0cmluZyhBZG9wdENGLCByZXN1bHRTdHJpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShjZlJlc3VsdFN0cmluZy5nZXQoKSk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxs
YmFja1dpdGhSZXR1cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQpAQCAtNzE4LDcgKzcwMyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkRXhpdCgpCiB7CiAgICAgQVNTRVJUKG1f
cGFnZUNsaWVudCk7CiAKLSAgICBtX3VybEF0UHJvY2Vzc0V4aXQgPSBtX21haW5GcmFtZS0+dXJs
KCk7CisgICAgbV91cmxBdFByb2Nlc3NFeGl0ID0gbV9tYWluRnJhbWUtPnVybCgpLT51cmwoKTsK
IAogICAgIFZlY3RvcjxSZWZQdHI8V2ViRnJhbWVQcm94eT4gPiBmcmFtZTsKICAgICBjb3B5VmFs
dWVzVG9WZWN0b3IobV9mcmFtZU1hcCwgZnJhbWUpOwpAQCAtNzI2LDcgKzcxMSwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEV4aXQoKQogICAgICAgICBmcmFtZVtpXS0+ZGlzY29u
bmVjdCgpOwogICAgIG1fZnJhbWVNYXAuY2xlYXIoKTsKICAgICBtX21haW5GcmFtZSA9IDA7Ci0g
ICAgbV9wYWdlVGl0bGUgPSAwOworCisgICAgbV9wYWdlVGl0bGUgPSBTdHJpbmcoKTsKKyAgICBt
X3Rvb2xUaXAgPSBTdHJpbmcoKTsKKwogICAgIG1fY2FuR29Gb3J3YXJkID0gZmFsc2U7CiAgICAg
bV9jYW5Hb0JhY2sgPSBmYWxzZTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDU3MzEyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDEzICszNSwxMyBAQAogI2luY2x1ZGUgIldlYlVJQ2xpZW50LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybVN0cmluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7
CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2hlZWxFdmVudChjb25zdCBX
ZWJXaGVlbEV2ZW50Jik7CiAgICAgdm9pZCBrZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50
Jik7CiAKLSAgICBDRlN0cmluZ1JlZiBwYWdlVGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VU
aXRsZS5nZXQoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcGFnZVRpdGxlKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRv
b2xUaXAoKSBjb25zdCB7IHJldHVybiBtX3Rvb2xUaXA7IH0KIAogICAgIHZvaWQgdGVybWluYXRl
UHJvY2VzcygpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmFsaWQo
KTsKIAogICAgIC8vIFJFTU9WRTogRm9yIGRlbW8gcHVycG9zZXMgb25seS4KLSAgICBDRlVSTFJl
ZiB1cmxBdFByb2Nlc3NFeGl0KCkgY29uc3QgeyByZXR1cm4gbV91cmxBdFByb2Nlc3NFeGl0Lmdl
dCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsQXRQcm9jZXNzRXhpdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsQXRQcm9jZXNzRXhpdDsgfQogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0Rp
ZENoYW5nZSgpOwogCkBAIC0xNzgsNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2Vi
UGFnZU5hbWVzcGFjZT4gbV9wYWdlTmFtZXNwYWNlOwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5
PiBtX21haW5GcmFtZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94
eT4gPiBtX2ZyYW1lTWFwOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9wYWdlVGl0bGU7
CisgICAgV2ViQ29yZTo6U3RyaW5nIG1fcGFnZVRpdGxlOwogCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s+ID4gbV9zY3JpcHRSZXR1cm5WYWx1
ZUNhbGxiYWNrczsKICAgICAKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OlN0cmluZyBtX3Rvb2xUaXA7CiAKICAgICAvLyBSRU1PVkU6IEZvciBkZW1vIHB1cnBvc2Vz
IG9ubHkuCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBtX3VybEF0UHJvY2Vzc0V4aXQ7CisgICAg
V2ViQ29yZTo6S1VSTCBtX3VybEF0UHJvY2Vzc0V4aXQ7CiAgICAgCiAgICAgYm9vbCBtX3ZhbGlk
OwogICAgIGJvb2wgbV9jbG9zZWQ7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xpY3lD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVu
dC5jcHAJKHJldmlzaW9uIDU3MzEyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9saWN5Q2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTAgQEAKICNpbmNsdWRlICJXZWJQ
b2xpY3lDbGllbnQuaCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIktVUkxX
cmFwcGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQyLDMwICs0Niwz
MyBAQCB2b2lkIFdlYlBvbGljeUNsaWVudDo6aW5pdGlhbGl6ZShXS1BhZ2VQCiAgICAgICAgIG1l
bXNldCgmbV9wYWdlUG9saWN5Q2xpZW50LCAwLCBzaXplb2YobV9wYWdlUG9saWN5Q2xpZW50KSk7
CiB9CiAKLWJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgdWludDMyX3QgbmF2aWdhdGlvbkFjdGlvbiwgQ0ZVUkxS
ZWYgdXJsLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
KiBsaXN0ZW5lcikKK2Jvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgdWludDMyX3QgbmF2aWdhdGlvbkFjdGlvbiwg
Y29uc3QgS1VSTCYgdXJsLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5KiBsaXN0ZW5lcikKIHsKICAgICBpZiAoIW1fcGFnZVBvbGljeUNsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b1Jl
ZihwYWdlKSwgbmF2aWdhdGlvbkFjdGlvbiwgdXJsLCB0b1JlZihmcmFtZSksIHRvUmVmKGxpc3Rl
bmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50LmNsaWVudEluZm8pOworICAgIFJlZlB0cjxLVVJMV3Jh
cHBlcj4gdXJsV3JhcHBlciA9IEtVUkxXcmFwcGVyOjpjcmVhdGUodXJsKTsKKyAgICBtX3BhZ2VQ
b2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b1JlZihwYWdlKSwg
bmF2aWdhdGlvbkFjdGlvbiwgdG9SZWYodXJsV3JhcHBlci5nZXQoKSksIHRvUmVmKGZyYW1lKSwg
dG9SZWYobGlzdGVuZXIpLCBtX3BhZ2VQb2xpY3lDbGllbnQuY2xpZW50SW5mbyk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5KiBwYWdlLCB1aW50MzJfdCBuYXZpZ2F0aW9uQWN0aW9u
LCBDRlVSTFJlZiB1cmwsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkqIGxpc3RlbmVyKQorYm9vbCBXZWJQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkqIHBhZ2UsIHVpbnQzMl90IG5hdmlnYXRpb25B
Y3Rpb24sIGNvbnN0IEtVUkwmIHVybCwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2VQb2xpY3lDbGll
bnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KHRvUmVmKHBhZ2UpLCBuYXZpZ2F0aW9uQWN0aW9uLCB1cmwsIHRvUmVmKGZyYW1lKSwgdG9SZWYo
bGlzdGVuZXIpLCBtX3BhZ2VQb2xpY3lDbGllbnQuY2xpZW50SW5mbyk7CisgICAgUmVmUHRyPEtV
UkxXcmFwcGVyPiB1cmxXcmFwcGVyID0gS1VSTFdyYXBwZXI6OmNyZWF0ZSh1cmwpOworICAgIG1f
cGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9SZWYocGFn
ZSksIG5hdmlnYXRpb25BY3Rpb24sIHRvUmVmKHVybFdyYXBwZXIuZ2V0KCkpLCB0b1JlZihmcmFt
ZSksIHRvUmVmKGxpc3RlbmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50LmNsaWVudEluZm8pOwogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TUlNRVR5cGUoV2ViUGFnZVByb3h5KiBwYWdlLCBDRlN0cmluZ1JlZiBNSU1FVHlwZSwgQ0ZVUkxS
ZWYgdXJsLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
KiBsaXN0ZW5lcikKK2Jvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JNSU1FVHlw
ZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IEtVUkwm
IHVybCwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSog
bGlzdGVuZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9y
TUlNRVR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fcGFnZVBvbGljeUNsaWVu
dC5kZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSh0b1JlZihwYWdlKSwgTUlNRVR5cGUsIHVybCwgdG9S
ZWYoZnJhbWUpLCB0b1JlZihsaXN0ZW5lciksIG1fcGFnZVBvbGljeUNsaWVudC5jbGllbnRJbmZv
KTsKKyAgICBSZWZQdHI8S1VSTFdyYXBwZXI+IHVybFdyYXBwZXIgPSBLVVJMV3JhcHBlcjo6Y3Jl
YXRlKHVybCk7CisgICAgbV9wYWdlUG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck1JTUVUeXBl
KHRvUmVmKHBhZ2UpLCB0b1JlZihNSU1FVHlwZS5pbXBsKCkpLCB0b1JlZih1cmxXcmFwcGVyLmdl
dCgpKSwgdG9SZWYoZnJhbWUpLCB0b1JlZihsaXN0ZW5lciksIG1fcGFnZVBvbGljeUNsaWVudC5j
bGllbnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUG9saWN5Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UG9saWN5Q2xpZW50LmgJKHJldmlzaW9uIDU3MzEyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UG9saWN5Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDExIEBACiAKICNpbmNs
dWRlICJXS1BhZ2UuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFN0cmluZzsK
KyAgICBjbGFzcyBLVVJMOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFn
ZVByb3h5OwpAQCAtMzksOSArNDQsOSBAQCBwdWJsaWM6CiAgICAgV2ViUG9saWN5Q2xpZW50KCk7
CiAgICAgdm9pZCBpbml0aWFsaXplKFdLUGFnZVBvbGljeUNsaWVudCopOwogCi0gICAgYm9vbCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSosIHVpbnQzMl90LCBD
RlVSTFJlZiwgV2ViRnJhbWVQcm94eSosIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSopOwot
ICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSosIHVp
bnQzMl90LCBDRlVSTFJlZiwgV2ViRnJhbWVQcm94eSosIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eSopOwotICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoV2ViUGFnZVByb3h5Kiwg
Q0ZTdHJpbmdSZWYsIENGVVJMUmVmLCBXZWJGcmFtZVByb3h5KiwgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5Kik7CisgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdl
YlBhZ2VQcm94eSosIHVpbnQzMl90LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIFdlYkZyYW1l
UHJveHkqLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqKTsKKyAgICBib29sIGRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkqLCB1aW50MzJfdCwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgdXJsLCBXZWJGcmFtZVByb3h5KiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5Kik7CisgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIFdlYkZyYW1l
UHJveHkqLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqKTsKIAogcHJpdmF0ZToKICAgICBX
S1BhZ2VQb2xpY3lDbGllbnQgbV9wYWdlUG9saWN5Q2xpZW50OwpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVUlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlVJQ2xpZW50LmNwcAkocmV2aXNpb24gNTczMTIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJV
SUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIFdlYlVJQ2xpZW50OjpXZWJVSUNsaWVudCgpCkBAIC02NiwxMiArNjgsMTIgQEAg
dm9pZCBXZWJVSUNsaWVudDo6Y2xvc2UoV2ViUGFnZVByb3h5KiBwYQogICAgIG1fcGFnZVVJQ2xp
ZW50LmNsb3NlKHRvUmVmKHBhZ2UpLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAot
dm9pZCBXZWJVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSogcGFnZSwg
Q0ZTdHJpbmdSZWYgYWxlcnRUZXh0LCBXZWJGcmFtZVByb3h5KiBmcmFtZSkKK3ZvaWQgV2ViVUlD
bGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqIHBhZ2UsIFN0cmluZ0ltcGwq
IGFsZXJ0VGV4dCwgV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7CiAgICAgaWYgKCFtX3BhZ2VVSUNs
aWVudC5ydW5KYXZhU2NyaXB0QWxlcnQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Bh
Z2VVSUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9SZWYocGFnZSksIGFsZXJ0VGV4dCwgdG9S
ZWYoZnJhbWUpLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VVSUNsaWVu
dC5ydW5KYXZhU2NyaXB0QWxlcnQodG9SZWYocGFnZSksIHRvUmVmKGFsZXJ0VGV4dCksIHRvUmVm
KGZyYW1lKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIApJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJVSUNsaWVudC5oCShyZXZpc2lvbiA1NzMxMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEwIEBACiAKICNpbmNsdWRl
ICJXS1BhZ2UuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFN0cmluZ0ltcGw7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtNDEs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZVByb3h5KiBjcmVhdGVOZXdQYWdlKFdlYlBh
Z2VQcm94eSopOwogICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBj
bG9zZShXZWJQYWdlUHJveHkqKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdl
UHJveHkqLCBDRlN0cmluZ1JlZiwgV2ViRnJhbWVQcm94eSopOworICAgIHZvaWQgcnVuSmF2YVNj
cmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSosIFdlYkNvcmU6OlN0cmluZ0ltcGwqLCBXZWJGcmFtZVBy
b3h5Kik7CiAKIHByaXZhdGU6CiAgICAgV0tQYWdlVUlDbGllbnQgbV9wYWdlVUlDbGllbnQ7Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gNTczMTIpCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsMTAgQEAKICNpbmNsdWRlICJXS0FQSUNhc3RXaW4uaCIKICNlbmRpZgogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgY2xhc3MgU3RyaW5nSW1wbDsKK30KKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgY2xhc3MgV2ViQ29udGV4dDsKICAgICBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk7CkBAIC0zOSw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIGNsYXNz
IFdlYlBhZ2VOYW1lc3BhY2U7CiAgICAgY2xhc3MgV2ViUGFnZVByb3h5OwogICAgIGNsYXNzIFdl
YlByZWZlcmVuY2VzOworICAgIGNsYXNzIEtVUkxXcmFwcGVyOwogfQogCiAvKiBPcGFxdWUgdHlw
aW5nIGNvbnZlbmllbmNlIG1ldGhvZHMgKi8KQEAgLTEwMyw0ICsxMDgsMjQgQEAgaW5saW5lIFdL
UHJlZmVyZW5jZXNSZWYgdG9SZWYoV2ViS2l0OjpXZQogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdLUHJlZmVyZW5jZXNSZWY+KHApOwogfQogCitpbmxpbmUgV2ViQ29yZTo6U3RyaW5nSW1w
bCogdG9XSyhXS1N0cmluZ1JlZiBzKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OlN0cmluZ0ltcGwqPihzKTsKK30KKworaW5saW5lIFdLU3RyaW5nUmVmIHRvUmVmKFdl
YkNvcmU6OlN0cmluZ0ltcGwqIHMpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tT
dHJpbmdSZWY+KHMpOworfQorCitpbmxpbmUgV2ViS2l0OjpLVVJMV3JhcHBlciogdG9XSyhXS1VS
TFJlZiB1KQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYktpdDo6S1VSTFdyYXBw
ZXIqPih1KTsKK30KKworaW5saW5lIFdLVVJMUmVmIHRvUmVmKFdlYktpdDo6S1VSTFdyYXBwZXIq
IHUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tVUkxSZWY+KHUpOworfQorCiAj
ZW5kaWYgLy8gV0tBUElDYXN0X2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFzZS5oCShyZXZp
c2lvbiA1NzMxMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQ29udGV4dCog
V0tDb250ZXgKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLUGFnZU5hbWVzcGFjZSogV0tQYWdlTmFt
ZXNwYWNlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tGcmFtZVBvbGljeUxpc3RlbmVyKiBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVu
Y2VzUmVmKiBXS1ByZWZlcmVuY2VzUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tTdHJpbmdS
ZWYqIFdLU3RyaW5nUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tVUkxSZWYqIFdLVVJMUmVm
OwogCiAjZGVmaW5lIFdLX0VYUE9SVAogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
LmNwcAkocmV2aXNpb24gNTczMTIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTYgKzUyLDE2IEBAIFdLRnJhbWVMb2FkU3RhdGUg
V0tGcmFtZUdldEZyYW1lTG9hZFN0YXQKICAgICByZXR1cm4ga1dLRnJhbWVMb2FkU3RhdGVGaW5p
c2hlZDsKIH0KIAotQ0ZVUkxSZWYgV0tGcmFtZUdldFByb3Zpc2lvbmFsVVJMKFdLRnJhbWVSZWYg
ZnJhbWVSZWYpCitXS1VSTFJlZiBXS0ZyYW1lR2V0UHJvdmlzaW9uYWxVUkwoV0tGcmFtZVJlZiBm
cmFtZVJlZikKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHRvV0soZnJhbWVSZWYpOwot
ICAgIHJldHVybiBmcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKKyAgICByZXR1cm4gdG9SZWYoZnJh
bWUtPnByb3Zpc2lvbmFsVVJMKCkpOwogfQogCi1DRlVSTFJlZiBXS0ZyYW1lR2V0VVJMKFdLRnJh
bWVSZWYgZnJhbWVSZWYpCitXS1VSTFJlZiBXS0ZyYW1lR2V0VVJMKFdLRnJhbWVSZWYgZnJhbWVS
ZWYpCiB7CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSB0b1dLKGZyYW1lUmVmKTsKLSAgICBy
ZXR1cm4gZnJhbWUtPnVybCgpOworICAgIHJldHVybiB0b1JlZihmcmFtZS0+dXJsKCkpOwogfQog
CiBXS0ZyYW1lUmVmIFdLRnJhbWVSZXRhaW4oV0tGcmFtZVJlZiBmcmFtZVJlZikKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmgJKHJldmlzaW9uIDU3MzEyKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBAIHR5
cGVkZWYgZW51bSBXS0ZyYW1lTG9hZFN0YXRlIFdLRnJhbWVMb2EKIAogV0tfRVhQT1JUIGJvb2wg
V0tGcmFtZUlzTWFpbkZyYW1lKFdLRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JUIFdLRnJhbWVM
b2FkU3RhdGUgV0tGcmFtZUdldEZyYW1lTG9hZFN0YXRlKFdLRnJhbWVSZWYgZnJhbWUpOwotV0tf
RVhQT1JUIENGVVJMUmVmIFdLRnJhbWVHZXRQcm92aXNpb25hbFVSTChXS0ZyYW1lUmVmIGZyYW1l
KTsKLVdLX0VYUE9SVCBDRlVSTFJlZiBXS0ZyYW1lR2V0VVJMKFdLRnJhbWVSZWYgZnJhbWUpOwor
V0tfRVhQT1JUIFdLVVJMUmVmIFdLRnJhbWVHZXRQcm92aXNpb25hbFVSTChXS0ZyYW1lUmVmIGZy
YW1lKTsKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS0ZyYW1lR2V0VVJMKFdLRnJhbWVSZWYgZnJhbWUp
OwogCiBXS19FWFBPUlQgV0tGcmFtZVJlZiBXS0ZyYW1lUmV0YWluKFdLRnJhbWVSZWYgZnJhbWUp
OwogV0tfRVhQT1JUIHZvaWQgV0tGcmFtZVJlbGVhc2UoV0tGcmFtZVJlZiBmcmFtZSk7CkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDU3MzEyKQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzks
OSBAQCBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjCiAgICAgcmV0dXJu
IHRvUmVmKHRvV0socGFnZVJlZiktPnBhZ2VOYW1lc3BhY2UoKSk7CiB9CiAKLXZvaWQgV0tQYWdl
TG9hZFVSTChXS1BhZ2VSZWYgcGFnZVJlZiwgQ0ZVUkxSZWYgdXJsKQordm9pZCBXS1BhZ2VMb2Fk
VVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBVUkxSZWYpCiB7Ci0gICAgdG9XSyhwYWdl
UmVmKS0+bG9hZFVSTCh1cmwpOworICAgIHRvV0socGFnZVJlZiktPmxvYWRVUkwodG9XSyhVUkxS
ZWYpLT51cmwoKSk7CiB9CiAKIHZvaWQgV0tQYWdlU3RvcExvYWRpbmcoV0tQYWdlUmVmIHBhZ2VS
ZWYpCkBAIC04OSw5ICs4OSw5IEBAIGJvb2wgV0tQYWdlQ2FuR29CYWNrKFdLUGFnZVJlZiBwYWdl
UmVmKQogICAgIHJldHVybiB0b1dLKHBhZ2VSZWYpLT5jYW5Hb0JhY2soKTsKIH0KIAotQ0ZTdHJp
bmdSZWYgV0tQYWdlR2V0VGl0bGUoV0tQYWdlUmVmIHBhZ2VSZWYpCitXS1N0cmluZ1JlZiBXS1Bh
Z2VHZXRUaXRsZShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9XSyhwYWdlUmVm
KS0+cGFnZVRpdGxlKCk7CisgICAgcmV0dXJuIHRvUmVmKHRvV0socGFnZVJlZiktPnBhZ2VUaXRs
ZSgpLmltcGwoKSk7CiB9CiAKIFdLRnJhbWVSZWYgV0tQYWdlR2V0TWFpbkZyYW1lKFdLUGFnZVJl
ZiBwYWdlUmVmKQpAQCAtMTIzLDI4ICsxMjMsMjggQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQoV0tQYWdlUmVmIHBhZwogfQogCiAjaWYgX19CTE9DS1NfXwotc3RhdGljIHZvaWQgY2FsbEJs
b2NrQW5kUmVsZWFzZSh2b2lkICpjb250ZXh0LCBDRlN0cmluZ1JlZiByZXN1bHRWYWx1ZSkKK3N0
YXRpYyB2b2lkIGNhbGxCbG9ja0FuZFJlbGVhc2Uodm9pZCogY29udGV4dCwgV0tTdHJpbmdSZWYg
cmVzdWx0VmFsdWUpCiB7Ci0gICAgdm9pZCAoXmJsb2NrKShDRlN0cmluZ1JlZikgPSAodm9pZCAo
XlJldHVyblZhbHVlQmxvY2tUeXBlKShDRlN0cmluZ1JlZikpY29udGV4dDsKKyAgICB2b2lkIChe
YmxvY2spKFdLU3RyaW5nUmVmKSA9ICh2b2lkICheUmV0dXJuVmFsdWVCbG9ja1R5cGUpKFdLU3Ry
aW5nUmVmKSljb250ZXh0OwogICAgIGJsb2NrKHJlc3VsdFZhbHVlKTsKICAgICBCbG9ja19yZWxl
YXNlKGJsb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgZGlzcG9zZUJsb2NrKHZvaWQgKmNvbnRleHQp
CitzdGF0aWMgdm9pZCBkaXNwb3NlQmxvY2sodm9pZCogY29udGV4dCkKIHsKLSAgICB2b2lkIChe
YmxvY2spKENGU3RyaW5nUmVmKSA9ICh2b2lkICheUmV0dXJuVmFsdWVCbG9ja1R5cGUpKENGU3Ry
aW5nUmVmKSljb250ZXh0OworICAgIHZvaWQgKF5ibG9jaykoV0tTdHJpbmdSZWYpID0gKHZvaWQg
KF5SZXR1cm5WYWx1ZUJsb2NrVHlwZSkoV0tTdHJpbmdSZWYpKWNvbnRleHQ7CiAgICAgQmxvY2tf
cmVsZWFzZShibG9jayk7CiB9CiAKLXZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFdLUGFnZVJlZiBwYWdlUmVmLCBDRlN0cmluZ1JlZiBzY3JpcHQsIHZvaWQgKF5yZXR1cm5WYWx1
ZUJsb2NrKShDRlN0cmluZ1JlZikpCit2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkIChecmV0dXJu
VmFsdWVCbG9jaykoV0tTdHJpbmdSZWYpKQogewotICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZV9mKHBhZ2VSZWYsIHNjcmlwdCwgQmxvY2tfY29weShyZXR1cm5WYWx1ZUJsb2NrKSwg
Y2FsbEJsb2NrQW5kUmVsZWFzZSwgZGlzcG9zZUJsb2NrKTsKKyAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVfZihwYWdlUmVmLCBzY3JpcHRSZWYsIEJsb2NrX2NvcHkocmV0dXJuVmFs
dWVCbG9jayksIGNhbGxCbG9ja0FuZFJlbGVhc2UsIGRpc3Bvc2VCbG9jayk7CiB9CiAjZW5kaWYK
IAotdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfZihXS1BhZ2VSZWYgcGFnZVJl
ZiwgQ0ZTdHJpbmdSZWYgc2NyaXB0LCB2b2lkICpjb250ZXh0LCB2b2lkICgqcmV0dXJuVmFsdWVD
YWxsYmFjaykodm9pZCosIENGU3RyaW5nUmVmKSwgdm9pZCAoKmRpc3Bvc2VDb250ZXh0Q2FsbGJh
Y2spKHZvaWQqKSkKK3ZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2YoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgdm9pZCAo
KnJldHVyblZhbHVlQ2FsbGJhY2spKHZvaWQqLCBXS1N0cmluZ1JlZiksIHZvaWQgKCpkaXNwb3Nl
Q29udGV4dENhbGxiYWNrKSh2b2lkKikpCiB7Ci0gICAgdG9XSyhwYWdlUmVmKS0+cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlN0cmluZyhzY3JpcHQpLCBTY3JpcHRSZXR1cm5WYWx1
ZUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgcmV0dXJuVmFsdWVDYWxsYmFjaywgZGlzcG9zZUNv
bnRleHRDYWxsYmFjaykpOworICAgIHRvV0socGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZSh0b1dLKHNjcmlwdFJlZiksIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s6OmNyZWF0ZShj
b250ZXh0LCByZXR1cm5WYWx1ZUNhbGxiYWNrLCBkaXNwb3NlQ29udGV4dENhbGxiYWNrKSk7CiB9
CiAKIFdLUGFnZVJlZiBXS1BhZ2VSZXRhaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNTczMTIpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VEaWRGYWlsUHJvdmlzaW9uYWxMCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VE
aWRDb21taXRMb2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlk
RmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOyAvLyBGSVhNRTogQWRkIFdLRXJyb3JS
ZWYuCi10eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgQ0ZTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRpdGxlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAo
KldLUGFnZURpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKQEAgLTg0LDkgKzg0LDkg
QEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlTG9hZGVyQ2xpZW50IFdLUGFnZQogCiAvLyBQb2xpY3kg
Q2xpZW50LgogCi10eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCB1aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSwg
Q0ZVUkxSZWYgdXJsLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYg
bGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCB1
aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSwgQ0ZVUkxSZWYgdXJsLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwotdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGVDYWxsYmFjayko
V0tQYWdlUmVmIHBhZ2UsIENGU3RyaW5nUmVmIE1JTUVUeXBlLCBDRlVSTFJlZiB1cmwsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCB1aW50MzJfdCBuYXZpZ2F0aW9u
VHlwZSwgV0tVUkxSZWYgdXJsLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgq
V0tQYWdlRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCB1aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSwgV0tVUkxSZWYgdXJsLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGVDYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIE1JTUVUeXBlLCBXS1VSTFJlZiB1cmws
IFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHN0cnVjdCBXS1BhZ2VQb2xpY3lDbGllbnQgewogICAg
IGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTEwMSw3ICsxMDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBX
S1BhZ2VQb2xpY3lDbGllbnQgV0tQYWdlCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0
ZU5ld1BhZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tQYWdlU2hvd1BhZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlQ2xvc2VDYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2
b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBD
RlN0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sp
KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnQgewogICAg
IGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTExNSw3ICsxMTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBX
S1BhZ2VVSUNsaWVudCBXS1BhZ2VVSUNsCiAKIFdLX0VYUE9SVCBXS1BhZ2VOYW1lc3BhY2VSZWYg
V0tQYWdlR2V0UGFnZU5hbWVzcGFjZShXS1BhZ2VSZWYgcGFnZSk7CiAKLVdLX0VYUE9SVCB2b2lk
IFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2UsIENGVVJMUmVmIHVybCk7CitXS19FWFBPUlQg
dm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmwpOwogV0tfRVhQ
T1JUIHZvaWQgV0tQYWdlU3RvcExvYWRpbmcoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZv
aWQgV0tQYWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlKTsKIApAQCAtMTI4LDcgKzEyOCw3IEBAIFdL
X0VYUE9SVCBib29sIFdLUGFnZUNhbkdvRm9yd2FyZChXS1BhZ2UKIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZUdvQmFjayhXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgYm9vbCBXS1BhZ2VDYW5Hb0Jh
Y2soV0tQYWdlUmVmIHBhZ2UpOwogCi1XS19FWFBPUlQgQ0ZTdHJpbmdSZWYgV0tQYWdlR2V0VGl0
bGUoV0tQYWdlUmVmIHBhZ2UpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGFnZUdldFRpdGxl
KFdLUGFnZVJlZiBwYWdlKTsKIAogV0tfRVhQT1JUIFdLRnJhbWVSZWYgV0tQYWdlR2V0TWFpbkZy
YW1lKFdLUGFnZVJlZiBwYWdlKTsKIApAQCAtMTM5LDkgKzEzOSw5IEBAIFdLX0VYUE9SVCB2b2lk
IFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VV
SUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlVUlDbGllbnQgKiBjbGllbnQpOwogCiAjaWYg
X19CTE9DS1NfXwotV0tfRVhQT1JUIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBDRlN0cmluZ1JlZiBzY3JpcHQsIHZvaWQgKF5yZXR1cm5WYWx1ZUJs
b2NrKShDRlN0cmluZ1JlZikpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzY3JpcHQsIHZvaWQgKF5yZXR1
cm5WYWx1ZUJsb2NrKShXS1N0cmluZ1JlZikpOwogI2VuZGlmCi1XS19FWFBPUlQgdm9pZCBXS1Bh
Z2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfZihXS1BhZ2VSZWYgcGFnZSwgQ0ZTdHJpbmdSZWYg
c2NyaXB0LCB2b2lkICpjb250ZXh0LCB2b2lkICgqcmV0dXJuVmFsdWVDYWxsYmFjaykodm9pZCos
IENGU3RyaW5nUmVmKSwgdm9pZCAoKmRpc3Bvc2VDb250ZXh0Q2FsbGJhY2spKHZvaWQqKSk7CitX
S19FWFBPUlQgdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfZihXS1BhZ2VSZWYg
cGFnZSwgV0tTdHJpbmdSZWYgc2NyaXB0LCB2b2lkICpjb250ZXh0LCB2b2lkICgqcmV0dXJuVmFs
dWVDYWxsYmFjaykodm9pZCosIFdLU3RyaW5nUmVmKSwgdm9pZCAoKmRpc3Bvc2VDb250ZXh0Q2Fs
bGJhY2spKHZvaWQqKSk7CiAKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlUmV0YWluKFdLUGFn
ZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJlbGVhc2UoV0tQYWdlUmVmIHBhZ2Up
OwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTdHJpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU3RyaW5nLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU3RyaW5nLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TdHJpbmdJbXBsLmg+CisKK1dLU3Ry
aW5nUmVmIFdLU3RyaW5nUmV0YWluKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKK3sKKyAgICB0b1dL
KHN0cmluZ1JlZiktPnJlZigpOworICAgIHJldHVybiBzdHJpbmdSZWY7Cit9CisKK3ZvaWQgV0tT
dHJpbmdSZWxlYXNlKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKK3sKKyAgICB0b1dLKHN0cmluZ1Jl
ZiktPmRlcmVmKCk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1N0cmluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU3RyaW5nLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1N0cmluZy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1N0cmluZ19oCisjZGVm
aW5lIFdLU3RyaW5nX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLU3RyaW5nUmV0YWluKFdLU3RyaW5nUmVmIHN0cmluZyk7CitXS19FWFBPUlQgdm9pZCBXS1N0
cmluZ1JlbGVhc2UoV0tTdHJpbmdSZWYgc3RyaW5nKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8qIFdLU3RyaW5nX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1VSTC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VS
TC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiV0tVUkwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIktVUkxXcmFw
cGVyLmgiCisKK1dLVVJMUmVmIFdLVVJMUmV0YWluKFdLVVJMUmVmIFVSTFJlZikKK3sKKyAgICB0
b1dLKFVSTFJlZiktPnJlZigpOworICAgIHJldHVybiBVUkxSZWY7Cit9CisKK3ZvaWQgV0tVUkxS
ZWxlYXNlKFdLVVJMUmVmIFVSTFJlZikKK3sKKyAgICB0b1dLKFVSTFJlZiktPmRlcmVmKCk7Cit9
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VSTC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVVJMLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1VSTC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS1VSTF9oCisjZGVmaW5lIFdLVVJMX2gKKworI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYKKworV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMUmV0YWluKFdLVVJMUmVmIFVSTCk7CitXS19F
WFBPUlQgdm9pZCBXS1VSTFJlbGVhc2UoV0tVUkxSZWYgVVJMKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLVVJMX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2NmL1dLU3RyaW5nQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2NmL1dLU3RyaW5nQ0YuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvY2YvV0tTdHJpbmdDRi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tTdHJpbmdDRi5oIgorCisjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoQ0ZTdHJpbmdSZWYgY2ZTdHJpbmcpCit7CisgICAgU3RyaW5nIHN0cmluZyhjZlN0cmlu
Zyk7CisgICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCA9IHN0cmluZy5pbXBsKCk7CisgICAgc3Ry
aW5nSW1wbC0+cmVmKCk7CisgICAgcmV0dXJuIHRvUmVmKHN0cmluZ0ltcGwpOworfQorCitDRlN0
cmluZ1JlZiBXS1N0cmluZ0NvcHlDRlN0cmluZyhDRkFsbG9jYXRvclJlZiAvKmFsbG9jYXRvclJl
ZiovLCBXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCit7CisgICAgLy8gRklYTUU6IEhvbm9yIHRoZSBh
bGxvY2F0b3IgcGFyYW1ldGVyLgorICAgIHJldHVybiB0b1dLKHN0cmluZ1JlZiktPmNyZWF0ZUNG
U3RyaW5nKCk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZi9XS1N0cmluZ0NG
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2YvV0tTdHJpbmdDRi5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2YvV0tTdHJpbmdDRi5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1N0
cmluZ0NGX2gKKyNkZWZpbmUgV0tTdHJpbmdDRl9oCisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlv
bi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZyk7CitXS19F
WFBPUlQgQ0ZTdHJpbmdSZWYgV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2MsIFdLU3RyaW5nUmVmIHN0cmluZyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZiAvKiBXS1N0cmluZ0NGX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2NmL1dLVVJMQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2NmL1dLVVJMQ0YuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
Y2YvV0tVUkxDRi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiV0tVUkxDRi5oIgorCisjaW5jbHVkZSAiS1VSTFdyYXBwZXIuaCIKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCitXS1VSTFJlZiBXS1VSS0NyZWF0ZVdpdGhDRlVSTChDRlVSTFJlZiBjZlVS
TCkKK3sKKyAgICBSZWZQdHI8S1VSTFdyYXBwZXI+IHVybCA9IEtVUkxXcmFwcGVyOjpjcmVhdGUo
S1VSTChjZlVSTCkpOworICAgIHJldHVybiB0b1JlZih1cmwucmVsZWFzZSgpLnJlbGVhc2VSZWYo
KSk7Cit9CisKK0NGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENGQWxsb2NhdG9yUmVmIC8qYWxsb2Nh
dG9yUmVmKi8sIFdLVVJMUmVmIFVSTFJlZikKK3sKKyAgICAvLyBGSVhNRTogSG9ub3IgdGhlIGFs
bG9jYXRvciBwYXJhbWV0ZXIuCisgICAgcmV0dXJuIHRvV0soVVJMUmVmKS0+dXJsKCkuY3JlYXRl
Q0ZVUkwoKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NmL1dLVVJMQ0YuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZi9XS1VSTENGLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZi9XS1VSTENGLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLVVJMQ0ZfaAorI2Rl
ZmluZSBXS1VSTENGX2gKKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tVUkxSZWYgV0tVUktDcmVhdGVXaXRo
Q0ZVUkwoQ0ZVUkxSZWYgVVJMKTsKK1dLX0VYUE9SVCBDRlVSTFJlZiBXS1VSTENvcHlDRlVSTChD
RkFsbG9jYXRvclJlZiBhbGxvYywgV0tVUkxSZWYgc3RyaW5nKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLVVJMQ0ZfaCAqLwpJbmRleDogV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU3MzEyKQorKysgV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDYgKzkzLDE1IEBACiAJCUJDMTExQjY1MTEyRjYzODMwMDMzN0JBQiAvKiBXZWJQcm9jZXNz
TWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzExMUI2MjExMkY2MzgzMDAzMzdCQUIgLyogV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5o
ICovOyB9OwogCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogV2ViUHJvY2Vzc0xhdW5jaGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBN0M1
NzExMzZFMTlDMDBGQjcxNjcgLyogV2ViUHJvY2Vzc0xhdW5jaGVyLmggKi87IH07CiAJCUJDMURE
N0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlVHlwZUFyZ3VtZW50TWFyc2hhbGxpbmcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUREN0IxMTE0
REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlVHlwZUFyZ3VtZW50TWFyc2hhbGxpbmcuaCAqLzsgfTsK
KwkJQkMyMEVCQjAxMTZFRUIwODAwMDk0QTUwIC8qIFdLU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIwRUJBRTExNkVFQjA4MDAwOTRBNTAg
LyogV0tTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CisJCUJDMjBFQkIxMTE2RUVCMDgwMDA5NEE1MCAvKiBXS1N0cmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIwRUJBRjExNkVFQjA4MDAw
OTRBNTAgLyogV0tTdHJpbmcuY3BwICovOyB9OworCQlCQzIwRUJCNDExNkVFRjdBMDAwOTRBNTAg
LyogV0tVUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjBFQkIyMTE2RUVGN0EwMDA5NEE1MCAvKiBXS1VSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkMyMEVCQjUxMTZFRUY3QTAwMDk0QTUwIC8q
IFdLVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjBFQkIzMTE2RUVGN0EwMDA5NEE1MCAvKiBXS1VSTC5jcHAgKi87IH07CisJCUJDMjBFQkM3
MTE2RUYxMDUwMDA5NEE1MCAvKiBLVVJMV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMEVCQzUxMTZFRjEwNTAwMDk0QTUwIC8qIEtVUkxX
cmFwcGVyLmggKi87IH07CisJCUJDMjBFQzA2MTE2RUY3RkYwMDA5NEE1MCAvKiBXS1N0cmluZ0NG
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIwRUMw
NDExNkVGN0ZGMDAwOTRBNTAgLyogV0tTdHJpbmdDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJQkMyMEVDMDcxMTZFRjdGRjAwMDk0QTUwIC8qIFdL
U3RyaW5nQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyMEVDMDUxMTZFRjdGRjAwMDk0QTUwIC8qIFdLU3RyaW5nQ0YuY3BwICovOyB9OworCQlC
QzIwRUQ2NjExNkY5NzExMDAwOTRBNTAgLyogV0tVUkxDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMEVENjQxMTZGOTcxMTAwMDk0QTUwIC8qIFdL
VVJMQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJ
CUJDMjBFRDY3MTE2Rjk3MTEwMDA5NEE1MCAvKiBXS1VSTENGLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjBFRDY1MTE2Rjk3MTEwMDA5NEE1MCAv
KiBXS1VSTENGLmNwcCAqLzsgfTsKIAkJQkMyRTZFODcxMTQxOTcxNTAwQTYzQjFFIC8qIFJ1bkxv
b3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
RTZFNzcxMTQxOTcwQzAwQTYzQjFFIC8qIFJ1bkxvb3AuY3BwICovOyB9OwogCQlCQzJFNkU4ODEx
NDE5NzE1MDBBNjNCMUUgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyRTZFNzgxMTQxOTcwQzAwQTYzQjFFIC8qIFJ1bkxvb3AuaCAq
LzsgfTsKIAkJQkMyRTZFOEMxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtJdGVtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3QzExNDE5NzBDMDBB
NjNCMUUgLyogV29ya0l0ZW0uaCAqLzsgfTsKQEAgLTI3MSw2ICsyODAsMTUgQEAKIAkJQkMxMTFC
NjIxMTJGNjM4MzAwMzM3QkFCIC8qIFdlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0M1NzExMzZFMTlDMDBGQjcxNjcgLyogV2ViUHJv
Y2Vzc0xhdW5jaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nl
c3NMYXVuY2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFERDdCMTExNERD
Mzk2MDA1QURBRjMgLyogV2ViQ29yZVR5cGVBcmd1bWVudE1hcnNoYWxsaW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFsbGluZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzIwRUJBRTExNkVFQjA4MDAwOTRBNTAg
LyogV0tTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTdHJpbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyMEVCQUYxMTZFRUIwODAwMDk0QTUw
IC8qIFdLU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
U3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyMEVCQjIxMTZFRUY3
QTAwMDk0QTUwIC8qIFdLVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
VVJMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjBFQkIzMTE2RUVGN0EwMDA5
NEE1MCAvKiBXS1VSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S1VSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjBFQkM1MTE2RUYxMDUw
MDA5NEE1MCAvKiBLVVJMV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBLVVJMV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzIwRUMwNDEx
NkVGN0ZGMDAwOTRBNTAgLyogV0tTdHJpbmdDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1N0cmluZ0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjBF
QzA1MTE2RUY3RkYwMDA5NEE1MCAvKiBXS1N0cmluZ0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLU3RyaW5nQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzIwRUQ2NDExNkY5NzExMDAwOTRBNTAgLyogV0tVUkxDRi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VSTENGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDMjBFRDY1MTE2Rjk3MTEwMDA5NEE1MCAvKiBXS1VSTENGLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVVJMQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzJFNkU3NzExNDE5NzBDMDBBNjNCMUUgLyogUnVuTG9vcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5Mb29wLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRTZFNzgxMTQxOTcwQzAwQTYzQjFFIC8qIFJ1bkxvb3Au
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJFNkU3QzExNDE5NzBDMDBBNjNCMUUgLyogV29ya0l0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya0l0ZW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2NSw2ICs0ODMsNyBAQAogCQkJCUJDMDMyREIxMTBGNDM4
MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNpb24uaCAqLywKIAkJCQlCQ0Q1OThBQjExMkI3
RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAgKi8sCiAJCQkJQkNENTk4QUEx
MTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuaCAqLywKKwkJCQlCQzIwRUJD
NTExNkVGMTA1MDAwOTRBNTAgLyogS1VSTFdyYXBwZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
U2hhcmVkOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU5Miw2ICs2MTEsNyBAQAog
CQlCQzBDMzc2NjEwRjgwNzY2MDA3NkQ3Q0IgLyogQyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyMEVCRDAxMTZFRjY2NzAwMDk0QTUwIC8qIGNmICov
LAogCQkJCUJDQjYzNDc3MTE2QkYxMDYwMDYwMzIxNSAvKiBXZWJLaXQyLmggKi8sCiAJCQkJQkMw
QzM3NkQxMEY4MDg0NjAwNzZEN0NCIC8qIFdLQVBJQ2FzdC5oICovLAogCQkJCUJDMEMzNzY3MTBG
ODA3QjIwMDc2RDdDQiAvKiBXS0Jhc2UuaCAqLywKQEAgLTYwNyw2ICs2MjcsMTAgQEAKIAkJCQlC
Q0VFOThDQjExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmggKi8sCiAJCQkJQkNE
NTk3Q0YxMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuY3BwICovLAogCQkJCUJDRDU5
N0NFMTEyQjU2QUMwMEVDOEMyMyAvKiBXS1ByZWZlcmVuY2VzLmggKi8sCisJCQkJQkMyMEVCQUYx
MTZFRUIwODAwMDk0QTUwIC8qIFdLU3RyaW5nLmNwcCAqLywKKwkJCQlCQzIwRUJBRTExNkVFQjA4
MDAwOTRBNTAgLyogV0tTdHJpbmcuaCAqLywKKwkJCQlCQzIwRUJCMzExNkVFRjdBMDAwOTRBNTAg
LyogV0tVUkwuY3BwICovLAorCQkJCUJDMjBFQkIyMTE2RUVGN0EwMDA5NEE1MCAvKiBXS1VSTC5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBDOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTY4OSw2ICs3MTMsMTcgQEAKIAkJCXBhdGggPSBDb3JlSVBDU3VwcG9ydDsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUJDMjBFQkQwMTE2RUY2NjcwMDA5NEE1MCAvKiBjZiAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyMEVDMDUx
MTZFRjdGRjAwMDk0QTUwIC8qIFdLU3RyaW5nQ0YuY3BwICovLAorCQkJCUJDMjBFQzA0MTE2RUY3
RkYwMDA5NEE1MCAvKiBXS1N0cmluZ0NGLmggKi8sCisJCQkJQkMyMEVENjUxMTZGOTcxMTAwMDk0
QTUwIC8qIFdLVVJMQ0YuY3BwICovLAorCQkJCUJDMjBFRDY0MTE2Rjk3MTEwMDA5NEE1MCAvKiBX
S1VSTENGLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNmOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJQkMyRTZFNzQxMTQxOTZGMDAwQTYzQjFFIC8qIFBsYXRmb3JtICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTgwNyw2ICs4NDIsMTEg
QEAKIAkJCQlCQzg2OTlCNTExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzg2OTlCNzExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQjYzNDc4MTE2QkYxMDYwMDYwMzIxNSAvKiBXZWJLaXQyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzIwRUJCMDExNkVFQjA4MDAwOTRBNTAgLyogV0tTdHJpbmcuaCBp
biBIZWFkZXJzICovLAorCQkJCUJDMjBFQkI0MTE2RUVGN0EwMDA5NEE1MCAvKiBXS1VSTC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQkMyMEVCQzcxMTZFRjEwNTAwMDk0QTUwIC8qIEtVUkxXcmFwcGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzIwRUMwNjExNkVGN0ZGMDAwOTRBNTAgLyogV0tTdHJp
bmdDRi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyMEVENjYxMTZGOTcxMTAwMDk0QTUwIC8qIFdL
VVJMQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtOTU2LDYgKzk5NiwxMCBAQAogCQkJCUJDODQ1MkE3
MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Qzg0NTJCQjExNjJDOTZGMDBDQUI5QjUgLyogRHJhd2luZ0FyZWFVcGRhdGVDaHVuay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzg2OTlCNjExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkMyMEVCQjExMTZFRUIwODAwMDk0QTUwIC8qIFdLU3RyaW5nLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUJDMjBFQkI1MTE2RUVGN0EwMDA5NEE1MCAvKiBXS1VSTC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzIwRUMwNzExNkVGN0ZGMDAwOTRBNTAgLyogV0tTdHJp
bmdDRi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzIwRUQ2NzExNkY5NzExMDAwOTRBNTAgLyog
V0tVUkxDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2
aXNpb24gNTczMTIpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGUKIHsKICAgICBtX2ZyYW1lLT5pbnZh
bGlkYXRlKCk7CiAKLSAgICAvLyBCYWxlbmNlcyBleHBsaWNpdCByZWYoKSBpbiBXZWJGcmFtZTo6
Y3JlYXRlTWFpbkZyYW1lIGFuZCBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUuCisgICAgLy8gQmFs
YW5jZXMgZXhwbGljaXQgcmVmKCkgaW4gV2ViRnJhbWU6OmNyZWF0ZU1haW5GcmFtZSBhbmQgV2Vi
RnJhbWU6OmNyZWF0ZVN1YmZyYW1lLgogICAgIG1fZnJhbWUtPmRlcmVmKCk7CiB9CiAK
</data>
<flag name="review"
          id="36610"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>