<?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>130484</bug_id>
          
          <creation_ts>2014-03-19 16:15:39 -0700</creation_ts>
          <short_desc>[Webkit2] Add APIDownloadClient for download support.</short_desc>
          <delta_ts>2014-03-21 14:15:22 -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>WebKit2</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="Yongjun Zhang">yongjun_zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mitz</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>992302</commentid>
    <comment_count>0</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2014-03-19 16:15:39 -0700</bug_when>
    <thetext>For download support, we need to add API::DownloadClient and make the existing WebDownloadClient subclass to it.  This is to follow the new pattern for API classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992304</commentid>
    <comment_count>1</comment_count>
      <attachid>227230</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2014-03-19 16:24:40 -0700</bug_when>
    <thetext>Created attachment 227230
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993297</commentid>
    <comment_count>2</comment_count>
      <attachid>227483</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-03-21 13:35:30 -0700</bug_when>
    <thetext>Created attachment 227483
[Webkit2] Add APIDownloadClient for download support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993299</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-21 13:36:16 -0700</bug_when>
    <thetext>Attachment 227483 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/APIDownloadClient.h:64:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/APIDownloadClient.h:64:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993303</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-03-21 13:37:10 -0700</bug_when>
    <thetext>Somehow I missed Yongjun posting a patch, and I ended up writing an almost exact copy of it :(

Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993311</commentid>
    <comment_count>5</comment_count>
      <attachid>227230</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-21 13:58:55 -0700</bug_when>
    <thetext>Comment on attachment 227230
Patch.

Looks very good, but the WebContext constructor needs to initialize m_downloadClient, something like:

, m_downloadClient(std::make_unique&lt;API::DownloadClient&gt;())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993318</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-03-21 14:15:22 -0700</bug_when>
    <thetext>Committed r166096: &lt;http://trac.webkit.org/changeset/166096&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227230</attachid>
            <date>2014-03-19 16:24:40 -0700</date>
            <delta_ts>2014-03-21 13:59:58 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>webdownloadclient.patch</filename>
            <type>text/plain</type>
            <size>31275</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">Y29tbWl0IGVlY2NjMzU3NWU3YmQyY2RmOGFlODc5MThiMzc4MTVlOWQxZjlmOWEKQXV0aG9yOiBZ
b25nanVuIFpoYW5nIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KRGF0ZTogICBXZWQgTWFyIDE5
IDE2OjE1OjQwIDIwMTQgLTA3MDAKCiAgICBbV2Via2l0Ml0gQWRkIEFQSURvd25sb2FkQ2xpZW50
IGZvciBkb3dubG9hZCBzdXBwb3J0LgogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMDQ4NAogICAgCiAgICBBZGQgQVBJOjpEb3dubG9hZENsaWVudCB0byBXZWJD
b250ZXh0IGFuZCBnZXQgcmlkIG9mIFdlYkRvd25sb2FkQ2xpZW50LgoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAw
ODExY2Y2Li44YzI2NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTQtMDMtMTkg
IFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Vi
a2l0Ml0gQWRkIEFQSURvd25sb2FkQ2xpZW50IGZvciBkb3dubG9hZCBzdXBwb3J0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNDg0CisKKyAgICAg
ICAgQWRkIEFQSTo6RG93bmxvYWRDbGllbnQgdG8gV2ViQ29udGV4dCBhbmQgZ2V0IHJpZCBvZiBX
ZWJEb3dubG9hZENsaWVudC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp+RG93bmxvYWRDbGllbnQpOgorICAgICAgICAo
QVBJOjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENs
aWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKEFQSTo6
RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChBUEk6OkRvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50
OjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSk6CisgICAgICAgIChBUEk6OkRvd25s
b2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAg
ICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAg
IChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAoQVBJOjpEb3dubG9h
ZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRDYW5j
ZWwpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KTogTW92ZSB0aGUgb3JpZ2luYWwgV2ViRG93bmxvYWRDbGllbnQg
bWV0aG9kcyB0byBhIGxvY2FsIGNsYXNzCisgICAgICAgICAgICBEb3dubG9hZENsaWVudCBhbmQg
c2V0IHVwIHRoZSBkb3dubG9hZENsaWVudCBmb3IgV2ViQ29udGV4dC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0RG93bmxvYWRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OmRvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
RG93bmxvYWRDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEb3du
bG9hZENsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNC0wMy0xNyAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdlYktpdDIgUXVpY2tsb29rLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNTMxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQVBJRG93bmxvYWRDbGllbnRfaAorI2RlZmluZSBB
UElEb3dubG9hZENsaWVudF9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFJlc291
cmNlRXJyb3I7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eTsKK2NsYXNzIFdlYkNvbnRleHQ7CitjbGFzcyBEb3dubG9hZFByb3h5Owor
fQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgRG93bmxvYWRDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgICB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydChXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktp
dDo6V2ViQ29udGV4dCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpEb3dubG9hZFByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCB1aW50
NjRfdCBsZW5ndGgpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRh
T2ZNSU1FVHlwZShXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktp
dDo6V2ViQ29udGV4dCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFdURjo6U3RyaW5n
JiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpCisgICAgeworICAgICAgICByZXR1cm4g
V1RGOjpTdHJpbmcoKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0
aW9uKFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiBwYXRoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6
V2ViQ29udGV4dCosIFdlYktpdDo6RG93bmxvYWRQcm94eSopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2Fu
Y2VsKFdlYktpdDo6V2ViQ29udGV4dCosIFdlYktpdDo6RG93bmxvYWRQcm94eSopIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0
OjpEb3dubG9hZFByb3h5KikgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlm
IC8vIEFQSURvd25sb2FkQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKaW5kZXggNDAyYTBmNC4uNmZkYzE5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTI3LDEwICsyNywxMiBAQAogI2lu
Y2x1ZGUgIldLQ29udGV4dFByaXZhdGUuaCIKIAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2lu
Y2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSGlzdG9yeUNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiQVBJVVJMUmVxdWVz
dC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAj
aW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNTksNiArNjEsMTAgQEAgbmFtZXNwYWNlIEFQSSB7CiB0
ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2U+
IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0SGlzdG9yeUNsaWVudFYwPiBWZXJz
aW9uczsKIH07CisKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3du
bG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxv
YWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OwogfQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTE1NSw3ICsxNjEsMTA1IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAKIHZvaWQgV0tD
b250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdL
Q29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbnRl
eHRSZWYpLT5pbml0aWFsaXplRG93bmxvYWRDbGllbnQod2tDbGllbnQpOworICAgIGNsYXNzIERv
d25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZSogY2xpZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpbml0aWFsaXplKGNsaWVu
dCk7CisgICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnQoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkg
b3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnQodG9B
UEkod2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5
KiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEko
YXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHRvQVBJKHdlYkNv
bnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3Jl
YXRlKHJlc3BvbnNlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAg
IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29udGV4dCogd2Vi
Q29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoKSBv
dmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YSh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIGxlbmd0aCwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJDb250ZXh0KiB3ZWJDb250
ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZSh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKG1pbWVUeXBl
LmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2aXJ0dWFsIFN0cmluZyBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
ZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSkgb3ZlcnJpZGUKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRlc3RpbmF0aW9uKEFkb3B0V0ssIG1fY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHRvQVBJKHdlYkNvbnRleHQp
LCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3Zl
cndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIHJldHVybiB0
b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93
bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBvdmVycmlkZQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9u
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVE
ZXN0aW5hdGlvbih0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJ
KHBhdGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93
bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFBy
b3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsKHRvQVBJKHdlYkNvbnRl
eHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2FuY2VsKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJv
eHkpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2Fu
Y2VsKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRDYW5jZWwodG9BUEkod2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25s
b2FkUHJveHkqIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2godG9BUEkod2Vi
Q29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICB9CisKKyAgICB9OworCisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3du
bG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwog
fQogCiB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
Y3BwCmluZGV4IDAxZjUzYmIuLjFkMjkyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSURhdGEuaCIKKyNpbmNs
dWRlICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRQcm94eU1hcC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4
IDE3ZDk3MjQuLmIxNzFiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAKICNpbmNsdWRl
ICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJSGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRl
ICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKQEAgLTI4Miw5ICsyODMsMTIgQEAgdm9pZCBXZWJD
b250ZXh0OjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okhpc3RvcnlDbGll
bnQ+IGhpc3RvcnlDbGkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKG1faGlzdG9yeUNsaWVudC0+c2hvdWxkVHJh
Y2tWaXNpdGVkTGlua3MoKSkpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OmluaXRpYWxpemVEb3du
bG9hZENsaWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKK3Zv
aWQgV2ViQ29udGV4dDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93
bmxvYWRDbGllbnQ+IGRvd25sb2FkQ2xpZW50KQogewotICAgIG1fZG93bmxvYWRDbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOworICAgIGlmICghZG93bmxvYWRDbGllbnQpCisgICAgICAgIG1fZG93
bmxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCk7Cisg
ICAgZWxzZQorICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptb3ZlKGRvd25sb2FkQ2xp
ZW50KTsKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpzZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVs
IHByb2Nlc3NNb2RlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDc4
OTIxZGQuLjU1MzYzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAt
NDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oIgotI2luY2x1ZGUgIldlYkRvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC02OSw2ICs2OCw3IEBAIE9CSkNfQ0xBU1Mg
TlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgSGlzdG9yeUNsaWVudDsKK2NsYXNz
IERvd25sb2FkQ2xpZW50OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEzNCw3ICsxMzQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDbGllbnQoY29u
c3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKik7CiAgICAgdm9pZCBpbml0aWFs
aXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSop
OwogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpIaXN0b3J5
Q2xpZW50Pik7Ci0gICAgdm9pZCBpbml0aWFsaXplRG93bmxvYWRDbGllbnQoY29uc3QgV0tDb250
ZXh0RG93bmxvYWRDbGllbnRCYXNlKik7CisgICAgdm9pZCBzZXREb3dubG9hZENsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogCiAgICAgdm9pZCBzZXRQcm9jZXNz
TW9kZWwoUHJvY2Vzc01vZGVsKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJl
IG5vIHByb2Nlc3NlcyBydW5uaW5nLgogICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwoKSBj
b25zdCB7IHJldHVybiBtX3Byb2Nlc3NNb2RlbDsgfQpAQCAtMjE5LDcgKzIxOSw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICAvLyBEb3dubG9hZHMuCiAgICAgRG93bmxvYWRQcm94eSogY3JlYXRlRG93
bmxvYWRQcm94eSgpOwotICAgIFdlYkRvd25sb2FkQ2xpZW50JiBkb3dubG9hZENsaWVudCgpIHsg
cmV0dXJuIG1fZG93bmxvYWRDbGllbnQ7IH0KKyAgICBBUEk6OkRvd25sb2FkQ2xpZW50JiBkb3du
bG9hZENsaWVudCgpIHsgcmV0dXJuICptX2Rvd25sb2FkQ2xpZW50OyB9CiAKICAgICBBUEk6Okhp
c3RvcnlDbGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9
CiAgICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAg
LTQ0Niw3ICs0NDYsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29udGV4dENsaWVudCBtX2NsaWVu
dDsKICAgICBXZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudCBtX2Nvbm5lY3Rpb25DbGllbnQ7Ci0g
ICAgV2ViRG93bmxvYWRDbGllbnQgbV9kb3dubG9hZENsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7CiAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJEb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93
bmxvYWRDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGI4NDUwLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEb3dubG9hZENsaWVudC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJEb3dubG9hZENsaWVudC5oIgotCi0jaW5jbHVkZSAi
QVBJVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1Jl
dGFpblB0ci5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXZvaWQgV2ViRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYkNvbnRleHQqIHdlYkNv
bnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCi17Ci0gICAgaWYgKCFtX2NsaWVu
dC5kaWRTdGFydCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQuZGlkU3RhcnQodG9B
UEkod2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotfQotCi12b2lkIFdlYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93
bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9h
ZFByb3h5KSwgdG9BUEkoYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZVJlc3BvbnNlKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5
KSwgdG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5nZXQoKSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViRG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSh0b0FQ
SSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLX0KLQotYm9vbCBXZWJEb3dubG9hZENsaWVudDo6c2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGUoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94
eSogZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIHJldHVybiBtX2NsaWVudC5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1F
VHlwZSh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKG1pbWVU
eXBlLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLVN0cmluZyBXZWJE
b3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2Vi
Q29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpCi17Ci0gICAgaWYgKCFtX2Ns
aWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRlc3RpbmF0aW9u
KEFkb3B0V0ssIG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUu
aW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKLSAg
ICByZXR1cm4gdG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCkpOwotfQotCi12b2lkIFdlYkRv
d25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJDb250ZXh0KiB3ZWJDb250ZXh0
LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0g
ICAgaWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9jbGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24odG9BUEkod2ViQ29udGV4dCksIHRv
QVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShwYXRoLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJDb250
ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQotewotICAgIGlm
ICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9jbGll
bnQuZGlkRmluaXNoKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJEb3dubG9hZENsaWVudDo6ZGlk
RmFpbChXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZEZh
aWwpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmRpZEZhaWwodG9BUEkod2ViQ29u
dGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShlcnJvciksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJD
b250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQotewotICAg
IGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVu
dC5kaWRDYW5jZWwodG9BUEkod2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYkRvd25sb2FkQ2xpZW50Ojpwcm9j
ZXNzRGlkQ3Jhc2goV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxv
YWRQcm94eSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKHRvQVBJKHdlYkNvbnRleHQp
LCB0b0FQSShkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEb3du
bG9hZENsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzcwYzg0Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEb3dubG9hZENsaWVudC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRG93
bmxvYWRDbGllbnRfaAotI2RlZmluZSBXZWJEb3dubG9hZENsaWVudF9oCi0KLSNpbmNsdWRlICJB
UElDbGllbnQuaCIKLSNpbmNsdWRlICJXS0NvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxX
S0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tD
b250ZXh0RG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Ci19OwotfQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKLSAgICBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTsKLWNsYXNzIERvd25sb2FkUHJveHk7Ci1jbGFzcyBXZWJDb250ZXh0OwotCi1j
bGFzcyBXZWJEb3dubG9hZENsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0NvbnRleHREb3du
bG9hZENsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2b2lkIGRpZFN0YXJ0KFdlYkNvbnRleHQq
LCBEb3dubG9hZFByb3h5Kik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoV2ViQ29udGV4dCosIERvd25sb2FkUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5Kik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29udGV4dCosIERvd25s
b2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShXZWJDb250ZXh0KiwgRG93bmxvYWRQcm94eSosIHVpbnQ2NF90IGxlbmd0
aCk7Ci0gICAgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJDb250ZXh0
KiwgRG93bmxvYWRQcm94eSosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotICAgIFN0cmluZyBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJDb250ZXh0KiwgRG93bmxv
YWRQcm94eSosIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKTsK
LSAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYkNvbnRleHQqLCBEb3dubG9hZFByb3h5
KiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJDb250ZXh0Kiwg
RG93bmxvYWRQcm94eSopOwotICAgIHZvaWQgZGlkRmFpbChXZWJDb250ZXh0KiwgRG93bmxvYWRQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIGRpZENhbmNl
bChXZWJDb250ZXh0KiwgRG93bmxvYWRQcm94eSopOwotICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNo
KFdlYkNvbnRleHQqLCBEb3dubG9hZFByb3h5Kik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYkRvd25sb2FkQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YTg1NzhlLi42YTgyYjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zMzQsOCArMzM0LDYgQEAKIAkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERv
d25sb2FkUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCN0Q0QzkxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwICovOyB9
OwogCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTFBQjdENjFBMTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjdENjE4MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZXMuaCAqLzsgfTsK
LQkJMUFCN0Q3MkMxMjg4Q0FBRDAwQ0ZEMDhDIC8qIFdlYkRvd25sb2FkQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDcyQTEyODhDQUFE
MDBDRkQwOEMgLyogV2ViRG93bmxvYWRDbGllbnQuaCAqLzsgfTsKLQkJMUFCN0Q3MkQxMjg4Q0FB
RDAwQ0ZEMDhDIC8qIFdlYkRvd25sb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENzJCMTI4OENBQUQwMENGRDA4QyAvKiBXZWJE
b3dubG9hZENsaWVudC5jcHAgKi87IH07CiAJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBX
S0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjdENzhFMTI4OENEOUEwMENG
RDA4QyAvKiBXS0Rvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmNwcCAq
LzsgfTsKIAkJMUFCOEExRUMxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCOEExRUIx
ODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NTEsNiArNDQ5LDcgQEAKIAkJMUY3
NTA2QjYxODU5MTY1NzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYw
MTgxNzExODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRl
cm5hbC5oICovOyB9OwogCQkxRjc1MDZCNzE4NTkxNjVBMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNz
UGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE2RTE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmggKi87IH07CiAJCTFGNzUwNkI4MTg1OTE2
NUQwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE2QjE4NThEQzE1MDBG
OTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oICovOyB9OworCQkxRjdE
MzZDMTE4REE1MTNGMDBEOUQ2NTkgLyogQVBJRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGN0QzNkMwMThEQTUxM0YwMEQ5RDY1
OSAvKiBBUElEb3dubG9hZENsaWVudC5oICovOyB9OwogCQkxRjg3MjRCNzE4RDc2MzJCMDA3NkQ0
QjQgLyogV2ViUmVzb3VyY2VMb2FkZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxRjg3MjRCMzE4RDc2MzFEMDA3NkQ0QjQgLyogV2ViUmVzb3Vy
Y2VMb2FkZXJJT1MubW0gKi87IH07CiAJCTFGQjAwQUM3MTg1Rjc2NDYwMDE5MTQyRSAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5QYWdlR3JvdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFGQjAwQUM0MTg1Rjc2NDYwMDE5MTQyRSAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5QYWdlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxRkIwMEFDODE4NUY3NjQ2MDAxOTE0MkUgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
UGFnZUdyb3VwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUZCMDBBQzUxODVGNzY0NjAwMTkxNDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJblBhZ2VHcm91
cC5tbSAqLzsgfTsKQEAgLTIwODYsOCArMjA4NSw2IEBACiAJCTFBQjdENUU5MTI4OEI4QzAwMENG
RDA4QyAvKiBEb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IERvd25sb2FkUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvd25sb2FkUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RDYx
ODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQUI3RDcyQTEyODhDQUFEMDBDRkQwOEMgLyogV2ViRG93bmxv
YWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRG93bmxvYWRD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCN0Q3MkIxMjg4Q0FBRDAw
Q0ZEMDhDIC8qIFdlYkRvd25sb2FkQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkRvd25sb2FkQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rvd25sb2FkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUIxODQwMDgwOTAwRTlBRTY5IC8qIFdL
UGFnZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Bh
Z2VMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTEsNiAr
MjIwOCw3IEBACiAJCTFGMzM1QkJGMTg1Qjg0RDgwMDFBMjAxQSAvKiBXS1dlYlByb2Nlc3NQbHVn
SW5Mb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQ
cm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFGNjA0QkE2MTg4OUZBNzQwMEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY2MDRCQTcxODg5RkE3NDAwRUUw
Mzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUY3RDM2QzAxOERBNTEzRjAwRDlENjU5IC8q
IEFQSURvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SURvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGODcyNEIz
MThENzYzMUQwMDc2RDRCNCAvKiBXZWJSZXNvdXJjZUxvYWRlcklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVySU9TLm1tOyBwYXRo
ID0gaW9zL1dlYlJlc291cmNlTG9hZGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxRkIwMEFDNDE4NUY3NjQ2MDAxOTE0MkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luUGFnZUdy
b3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJ
blBhZ2VHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRkIwMEFDNTE4NUY3
NjQ2MDAxOTE0MkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luUGFnZUdyb3VwLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luUGFnZUdyb3Vw
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMxMSw4ICs1MzA5LDYgQEAKIAkJ
CQlGNjJBNzY1QjEyQjFBQkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gKi8sCiAJCQkJQkNBQzExMUUxMkM5MkMxRjAwQjA4RUVFIC8qIFdlYkRhdGFiYXNl
TWFuYWdlclByb3h5Q2xpZW50LmNwcCAqLywKIAkJCQlCQ0FDMTExRDEyQzkyQzFGMDBCMDhFRUUg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCAqLywKLQkJCQkxQUI3RDcyQjEyODhD
QUFEMDBDRkQwOEMgLyogV2ViRG93bmxvYWRDbGllbnQuY3BwICovLAotCQkJCTFBQjdENzJBMTI4
OENBQUQwMENGRDA4QyAvKiBXZWJEb3dubG9hZENsaWVudC5oICovLAogCQkJCUJDQTBFRjlFMTIz
MzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCAqLywKIAkJCQlCQ0EwRUY5
RDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oICovLAogCQkJCTFBM0RE
MUZDMTI1RTU5RjMwMDQ1MTVFNiAvKiBXZWJGaW5kQ2xpZW50LmNwcCAqLywKQEAgLTUzODksNiAr
NTM4NSw3IEBACiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVu
dC5oICovLAogCQkJCTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQu
aCAqLywKIAkJCQkxQTRENjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCAqLywK
KwkJCQkxRjdEMzZDMDE4REE1MTNGMDBEOUQ2NTkgLyogQVBJRG93bmxvYWRDbGllbnQuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTY4
NjIsNyArNjg1OSw2IEBACiAJCQkJMUFDMTMzODYxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9i
amVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUMxMTFGMTJDOTJD
MUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjYyQTc2QjkxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjdENzJDMTI4OENBQUQwMENGRDA4
QyAvKiBXZWJEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2NTRGMDAxODRF
RjM0QTAwN0RDODM3IC8qIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzAzMkQ3QjEwRjQzNzhEMDA1OEMxNUEgLyogV2ViRHJhZ0NsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNBMEVGOUYxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21t
YW5kUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtNjg5Myw2ICs2ODg5LDcgQEAKIAkJCQlCQzBF
NUZFNTEyRDY5NzE2MDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzBFNjA2MjEyRDZCQTkxMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5h
Z2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTRDQUNCMTJENjQyOTEwMDVDNjdC
MCAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3
RDM2QzExOERBNTEzRjAwRDlENjU5IC8qIEFQSURvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzBFNjE4MzEyRDZDQjFEMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwRTYwNzMxMkQ2QkMyMDAwMTJB
NzJBIC8qIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUJF
MUYyMTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTgyOTIsNyArODI4OSw2IEBACiAJCQkJQkNBQzExMjAxMkM5MkMxRjAwQjA4RUVF
IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUY2MkE3NkI4MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdERDVDNTE4MERDM0UxMDA4MTY2
MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQUI3
RDcyRDEyODhDQUFEMDBDRkQwOEMgLyogV2ViRG93bmxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkMxMTFBNUQxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkRyYWdDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4IC8qIFdlYkRyYWdDbGll
bnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0EwRUZBMDEyMzMyNjQyMDA3RDNDRkIgLyog
V2ViRWRpdENvbW1hbmRQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="251734"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227483</attachid>
            <date>2014-03-21 13:35:30 -0700</date>
            <delta_ts>2014-03-21 13:59:43 -0700</delta_ts>
            <desc>[Webkit2] Add APIDownloadClient for download support.</desc>
            <filename>bug-130484-20140321133506.patch</filename>
            <type>text/plain</type>
            <size>32619</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzZjYjg1NzU2ODc2NzU3
YjQ0NGUyYjA1NWJkMDhjZmRhMDhmNzY0ZS4uODExNGRjMWMxODcyZDFlNzRiZmIyN2JhZWIwNTA5
OTk5OWIwNjBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTAzLTIxICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Via2l0Ml0gQWRkIEFQSURv
d25sb2FkQ2xpZW50IGZvciBkb3dubG9hZCBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2V0IHJpZCBvZiBXZWJEb3dubG9hZENsaWVudCBh
bmQgY3JlYXRlIGFuIEFQSTo6RG93bmxvYWRDbGllbnQgaW5zdGVhZC4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6
RG93bmxvYWRDbGllbnQ6On5Eb3dubG9hZENsaWVudCk6CisgICAgICAgIChBUEk6OkRvd25sb2Fk
Q2xpZW50OjpkaWRTdGFydCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OnNob3VsZERlY29k
ZVNvdXJjZURhdGFPZk1JTUVUeXBlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKEFQSTo6RG93
bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKEFQSTo6RG93bmxv
YWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRG
YWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAg
IChBUEk6OkRvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjpzZXREb3dubG9hZENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
bnRleHQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZG93bmxvYWRDbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEb3dubG9hZENsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE0LTAzLTIxICBSeXVhbiBD
aG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFJlbW92
ZSBFd2tfRXJyb3IgcGFyYW1ldGVyIGZyb20gc29tZSBhc3luYyBjYWxsYmFja3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKaW5kZXggNTA5NmRkNjdlZGZiNjBmMzk3Y2VmZDYxYmZjNDI1ZTcwODQ5MDE4OS4u
YmVkNTg1MGZjMzNjNDdlNzRlNmIwNzljMzZjNjUxNmY2ZjVkMjE4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTMxNSw3ICszMTUsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5jcHAKICAgICBVSVByb2Nlc3MvV2ViRGF0
YWJhc2VNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclBy
b3h5Q2xpZW50LmNwcAotICAgIFVJUHJvY2Vzcy9XZWJEb3dubG9hZENsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2ViRmluZENs
aWVudC5jcHAKICAgICBVSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGRlY2Y3MDFiYjYzYjJlYzc0OWI1ZmRmNjc4NjYzYzEzMzViODBl
NGMuLmI4ODlhOWE2ODc3NDk2ODM1YjRmNDk5MjE2YWJmNDA1OTg0MjVmMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTIwLDggKzkyMCw2IEBAIHdlYmtpdDJfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xp
ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94
eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94
eS5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuY3BwIFwK
LQlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRmluZENsaWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4OWM0YzgyYTE2ZDNhZjBh
YWFkN2NkMjhiYmNhMGI2Y2JjMTliMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQVBJRG93bmxvYWRDbGllbnRfaAorI2RlZmluZSBBUElEb3dubG9h
ZENsaWVudF9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eTsKK2NsYXNzIERvd25sb2FkUHJveHk7CitjbGFzcyBXZWJDb250ZXh0OworfQorCituYW1l
c3BhY2UgQVBJIHsKKworY2xhc3MgRG93bmxvYWRDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2Vi
S2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpEb3dubG9hZFByb3h5KikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYkNvbnRl
eHQqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktp
dDo6V2ViQ29udGV4dCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vi
S2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3Ro
KQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7CisgICAgfQorICAgIHZpcnR1
YWwgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJLaXQ6OldlYkNvbnRl
eHQqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUp
CisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpEb3dubG9h
ZFByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0
ZSkKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTShmaWxlbmFtZSk7CisgICAgICAgIFVOVVNF
RF9QQVJBTShhbGxvd092ZXJ3cml0ZSk7CisgICAgICAgIHJldHVybiBXVEY6OlN0cmluZ3t9Owor
ICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJD
b250ZXh0KiwgV2ViS2l0OjpEb3dubG9hZFByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgp
CisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisgICAgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2goV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2Vi
S2l0OjpEb3dubG9hZFByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJL
aXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gQVBJRG93bmxvYWRDbGllbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCA0MDJhMGY0NzAxN2Uy
NWFjNDVjMDFmYmE3MmI2Y2ZlNDZiYjMyN2I4Li42OWY2NjA5NDVjYTg2MDViNzU1NGMwODQxYTI0
OTU5NzgxNDI5MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcApAQCAtMjcsMTAgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5o
IgogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQu
aCIKICNpbmNsdWRlICJBUElIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlv
bkRhdGEuaCIKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01
Niw2ICs1OCw5IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEFQSSB7Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBDbGllbnRUcmFpdHM8V0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlPiB7CisgICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjA+IFZlcnNpb25zOworfTsKIHRl
bXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZT4g
ewogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRIaXN0b3J5Q2xpZW50VjA+IFZlcnNp
b25zOwogfTsKQEAgLTE1NSw3ICsxNjAsMTA0IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAK
IHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9J
bXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplRG93bmxvYWRDbGllbnQod2tDbGllbnQpOworICAg
IGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4
dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERv
d25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpbml0aWFs
aXplKGNsaWVudCk7CisgICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGRpZFN0
YXJ0KFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkU3RhcnQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRTdGFydCh0b0FQSSh3
ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0b0FQSSh3
ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93
bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3Bv
bnNlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVJlc3BvbnNlKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwg
dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5nZXQoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHks
IHVpbnQ2NF90IGxlbmd0aCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFBy
b3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAg
ICAgICAgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJDb250ZXh0KiB3
ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNob3VsZERlY29k
ZVNvdXJjZURhdGFPZk1JTUVUeXBlKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5
cGUodG9BUEkod2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShtaW1lVHlw
ZS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAg
ICAgU3RyaW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYkNvbnRl
eHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQor
ICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGRlc3RpbmF0aW9uKEFkb3B0V0ssIG1fY2xpZW50LmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3du
bG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIHJldHVybiB0b1dURlN0cmluZyhk
ZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZENyZWF0ZURl
c3RpbmF0aW9uKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIG1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKHRvQVBJKHdlYkNvbnRl
eHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2Vi
Q29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2gpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2godG9BUEkod2ViQ29u
dGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGYWlsKFdlYkNvbnRleHQqIHdlYkNvbnRleHQs
IERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsKHRvQVBJKHdl
YkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZXJyb3IpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2Vi
Q29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwodG9BUEkod2ViQ29u
dGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViQ29udGV4dCogd2Vi
Q29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2godG9BUEkod2ViQ29u
dGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICB9CisgICAgfTsKKworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAog
dm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApp
bmRleCAwMWY1M2JiZTgyYjcyYjI3ZmRmMzJmNjdhZDZjNTQwNmU0YTk3ZGE4Li4xZDI5MjYxYjRi
OTFmYmFhNjg0Zjk3OTAxZWRhNzdkM2JmOTQxYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAKICNpbmNsdWRlICJBUElEYXRhLmgiCisj
aW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRv
d25sb2FkUHJveHlNYXAuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApp
bmRleCAxN2Q5NzI0YWMyNTFmNTE1NDgzYTVkZGZmYTVlYTcxOTc0ZDI1Njk4Li5iMTcxYmJiZGQ2
OWI1NzBjMjI0NjVjOTM0Mjg4ZWEwYzU1ZDBhZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dC5o
IgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0yODIsOSArMjgzLDEy
IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpIaXN0b3J5Q2xpZW50PiBoaXN0b3J5Q2xpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhtX2hpc3RvcnlDbGll
bnQtPnNob3VsZFRyYWNrVmlzaXRlZExpbmtzKCkpKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0Ojpp
bml0aWFsaXplRG93bmxvYWRDbGllbnQoY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNl
KiBjbGllbnQpCit2b2lkIFdlYkNvbnRleHQ6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBkb3dubG9hZENsaWVudCkKIHsKLSAgICBtX2Rvd25s
b2FkQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWRvd25sb2FkQ2xpZW50KQor
ICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2Fk
Q2xpZW50PigpOworICAgIGVsc2UKKyAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bW92
ZShkb3dubG9hZENsaWVudCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6c2V0UHJvY2Vzc01vZGVs
KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaAppbmRleCA3ODkyMWRkZWU5YjExMzdhNGM3MDI1NGViMDM2OTQzOTE4OWQxMDgxLi4yYmVk
OTBlYzUyNTYxZjViMDZkNGE3MjhkNzNlOTdkMDkxODBlYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmgKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJEb3du
bG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTGlua0hhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgpAQCAtNjgs
NiArNjcsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkg
eworY2xhc3MgRG93bmxvYWRDbGllbnQ7CiBjbGFzcyBIaXN0b3J5Q2xpZW50OwogfQogCkBAIC0x
MzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxl
Q2xpZW50KGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSopOwogICAgIHZv
aWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudEJhc2UqKTsKICAgICB2b2lkIHNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SGlzdG9yeUNsaWVudD4pOwotICAgIHZvaWQgaW5pdGlhbGl6ZURvd25sb2FkQ2xpZW50KGNv
bnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSopOworICAgIHZvaWQgc2V0RG93bmxvYWRD
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKIAogICAgIHZvaWQg
c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVu
IHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAgICBQcm9jZXNzTW9kZWwgcHJvY2Vz
c01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTW9kZWw7IH0KQEAgLTIxOSw3ICsyMTks
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gRG93bmxvYWRzLgogICAgIERvd25sb2FkUHJveHkq
IGNyZWF0ZURvd25sb2FkUHJveHkoKTsKLSAgICBXZWJEb3dubG9hZENsaWVudCYgZG93bmxvYWRD
bGllbnQoKSB7IHJldHVybiBtX2Rvd25sb2FkQ2xpZW50OyB9CisgICAgQVBJOjpEb3dubG9hZENs
aWVudCYgZG93bmxvYWRDbGllbnQoKSB7IHJldHVybiAqbV9kb3dubG9hZENsaWVudDsgfQogCiAg
ICAgQVBJOjpIaXN0b3J5Q2xpZW50JiBoaXN0b3J5Q2xpZW50KCkgeyByZXR1cm4gKm1faGlzdG9y
eUNsaWVudDsgfQogICAgIFdlYkNvbnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50OyB9CkBAIC00NDYsNyArNDQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvbnRleHRDbGll
bnQgbV9jbGllbnQ7CiAgICAgV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQgbV9jb25uZWN0aW9u
Q2xpZW50OwotICAgIFdlYkRvd25sb2FkQ2xpZW50IG1fZG93bmxvYWRDbGllbnQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fZG93bmxvYWRDbGllbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkRvd25sb2FkQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NThiODQ1MDdhMmNmYzY0ZWNhYmU5NTk3NjY1NTExMzZiYmE5ODkzZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRG93bmxvYWRDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViRG93bmxvYWRDbGll
bnQuaCIKLQotI2luY2x1ZGUgIkFQSVVSTFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0
LmgiCi0jaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYkRvd25sb2FkQ2xpZW50OjpkaWRTdGFy
dChXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQot
ewotICAgIGlmICghbV9jbGllbnQuZGlkU3RhcnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
Y2xpZW50LmRpZFN0YXJ0KHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJEb3dubG9hZENsaWVudDo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvbnRleHQqIHdlYkNvbnRleHQs
IERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0b0FQSSh3ZWJDb250
ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYkRvd25sb2Fk
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxv
YWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
Ci17Ci0gICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSh0b0FQSSh3ZWJDb250ZXh0KSwg
dG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNw
b25zZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYkRv
d25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBEb3du
bG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpCi17Ci0gICAgaWYgKCFt
X2NsaWVudC5kaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGEodG9BUEkod2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBs
ZW5ndGgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLWJvb2wgV2ViRG93bmxvYWRD
bGllbnQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKFdlYkNvbnRleHQqIHdlYkNv
bnRleHQsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGUodG9BUEkod2ViQ29udGV4dCksIHRvQVBJKGRvd25sb2Fk
UHJveHkpLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotfQotCi1TdHJpbmcgV2ViRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRl
KQotewotICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBkZXN0aW5hdGlvbihBZG9wdFdLLCBtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94
eSksIHRvQVBJKGZpbGVuYW1lLmltcGwoKSksICZhbGxvd092ZXJ3cml0ZSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKSk7Ci0gICAgcmV0dXJuIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgp
KTsKLX0KLQotdm9pZCBXZWJEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oV2Vi
Q29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBwYXRoKQotewotICAgIGlmICghbV9jbGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKHRv
QVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkocGF0aC5pbXBsKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYkRvd25sb2FkQ2xpZW50
OjpkaWRGaW5pc2goV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93bmxv
YWRQcm94eSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaCkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIG1fY2xpZW50LmRpZEZpbmlzaCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEko
ZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2Vi
RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQ
cm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAg
aWYgKCFtX2NsaWVudC5kaWRGYWlsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC5k
aWRGYWlsKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZXJy
b3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYkRvd25sb2FkQ2xp
ZW50OjpkaWRDYW5jZWwoV2ViQ29udGV4dCogd2ViQ29udGV4dCwgRG93bmxvYWRQcm94eSogZG93
bmxvYWRQcm94eSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZENhbmNlbCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9jbGllbnQuZGlkQ2FuY2VsKHRvQVBJKHdlYkNvbnRleHQpLCB0b0FQSShk
b3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJE
b3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIERv
d25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5wcm9jZXNz
RGlkQ3Jhc2gpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LnByb2Nlc3NEaWRDcmFz
aCh0b0FQSSh3ZWJDb250ZXh0KSwgdG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWM3MGM4NDY4Y2U3MGJkMTQwOTU1NWRmMzc1ZjkyZTdlYzhlMDg1MS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRG93bmxvYWRDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkRvd25sb2FkQ2xpZW50X2gKLSNkZWZpbmUgV2ViRG93
bmxvYWRDbGllbnRfaAotCi0jaW5jbHVkZSAiQVBJQ2xpZW50LmgiCi0jaW5jbHVkZSAiV0tDb250
ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci10ZW1w
bGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlPiB7
Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjA+IFZlcnNp
b25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFJlc291cmNlRXJy
b3I7Ci0gICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7Ci1jbGFzcyBEb3dubG9hZFBy
b3h5OwotY2xhc3MgV2ViQ29udGV4dDsKLQotY2xhc3MgV2ViRG93bmxvYWRDbGllbnQgOiBwdWJs
aWMgQVBJOjpDbGllbnQ8V0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0g
ICAgdm9pZCBkaWRTdGFydChXZWJDb250ZXh0KiwgRG93bmxvYWRQcm94eSopOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvbnRleHQqLCBEb3dubG9hZFBy
b3h5KiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopOwotICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvbnRleHQqLCBEb3dubG9hZFByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29udGV4dCosIERv
d25sb2FkUHJveHkqLCB1aW50NjRfdCBsZW5ndGgpOwotICAgIGJvb2wgc2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGUoV2ViQ29udGV4dCosIERvd25sb2FkUHJveHkqLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKLSAgICBTdHJpbmcgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViQ29udGV4dCosIERvd25sb2FkUHJveHkqLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXZWJDb250ZXh0KiwgRG93bmxvYWRQcm94eSosIGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAg
dm9pZCBkaWRGaW5pc2goV2ViQ29udGV4dCosIERvd25sb2FkUHJveHkqKTsKLSAgICB2b2lkIGRp
ZEZhaWwoV2ViQ29udGV4dCosIERvd25sb2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7Ci0gICAgdm9pZCBkaWRDYW5jZWwoV2ViQ29udGV4dCosIERvd25sb2FkUHJveHkq
KTsKLSAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJDb250ZXh0KiwgRG93bmxvYWRQcm94eSop
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJEb3dubG9hZENs
aWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOGRmNjE1MWJmZjRlYWRmYWFjYjY3ZGEwZjJiNTgxOTJmNjQyZWEyMi4uNzQ3
Zjc3MzI3ZDhkNTE3NjU1YjY5MzZkODE1MTIyOTE2NDk0YjFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzMwLDggKzMzMCw2
IEBACiAJCTFBQjdENENCMTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENEM5MTI4OEFB
QTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCAqLzsgfTsKIAkJMUFCN0Q2MTkxMjg4QjlE
OTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q2MTcxMjg4QjlEOTAwQ0ZE
MDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQUI3RDYx
QTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDYxODEyODhCOUQ5MDBDRkQw
OEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFBQjdENzJDMTI4OENBQUQw
MENGRDA4QyAvKiBXZWJEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q3MkExMjg4Q0FBRDAwQ0ZEMDhDIC8qIFdlYkRvd25s
b2FkQ2xpZW50LmggKi87IH07Ci0JCTFBQjdENzJEMTI4OENBQUQwMENGRDA4QyAvKiBXZWJEb3du
bG9hZENsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUI3RDcyQjEyODhDQUFEMDBDRkQwOEMgLyogV2ViRG93bmxvYWRDbGllbnQuY3BwICov
OyB9OwogCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q3OEIxMjg4Q0Q5QTAw
Q0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQUI3RDc4RTEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDc4
QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5jcHAgKi87IH07CiAJCTFBQjhBMUVDMTg0
MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVCMTg0MDA4MDkwMEU5QUU2OSAvKiBX
S1BhZ2VMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtOTg3LDYgKzk4NSw3IEBACiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgx
QSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Q
cm9jZXNzTWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8q
IFdLQ29udGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFBy
aXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFBNEZFNTUxOERD
QkY5RDAwQjVFQThBIC8qIEFQSURvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU1NDE4RENCRjlEMDBCNUVBOEEgLyogQVBJ
RG93bmxvYWRDbGllbnQuaCAqLzsgfTsKIAkJQTVFRkQzOEMxNkIwRTg4QzAwQjJGMEU4IC8qIFdL
UGFnZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTVFRkQzOEIxNkIwRTg4QzAwQjJGMEU4IC8qIFdLUGFnZVZpc2liaWxpdHlU
eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE3RDc5MkQ2MTc2N0NCNkUwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2VydGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q3OTJENTE3NjdDQjZF
MDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uY3BwICovOyB9OwogCQlBN0Q3OTJEODE3NjdD
Q0EzMDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDc5MkQ0MTc2N0NCMDkwMDg4MUNCRSAvKiBBY3Rp
dml0eUFzc2VydGlvbi5oICovOyB9OwpAQCAtMjA3OSw4ICsyMDc4LDYgQEAKIAkJMUFCN0Q1RTkx
Mjg4QjhDMDAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUFCN0Q2MTcxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG93
bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQjdENjE4MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG93bmxvYWRQcm94eU1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQjdENzJBMTI4OENBQUQwMENGRDA4QyAv
KiBXZWJEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUI3RDcy
QjEyODhDQUFEMDBDRkQwOEMgLyogV2ViRG93bmxvYWRDbGllbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRG93bmxvYWRDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9h
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rv
d25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRG93bmxv
YWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI4QTFFQjE4NDAwODA5MDBF
OUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUGFnZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjgwNCw2ICsyODAxLDcgQEAKIAkJOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdp
blByb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbTsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJp
dmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0NvbnRleHRQcml2
YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMUE0RkU1NDE4RENCRjlEMDBCNUVBOEEgLyogQVBJRG93bmxvYWRD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRG93bmxvYWRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFREQyRDkxODg0QUNFMDAwQkJG
RTk4IC8qIEFsbC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBBbGwueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRUREMkRCMTg4NEI5NjQwMEJCRkU5OCAvKiBQbHVnaW5Q
cm9jZXNzU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQbHVnaW5Qcm9jZXNzU2hpbS54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFREQyREMxODg0QjlCNTAwQkJG
RTk4IC8qIFNlY0l0ZW1TaGltLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFNlY0l0ZW1TaGltLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMwMiw4ICs1MzAwLDYgQEAK
IAkJCQlGNjJBNzY1QjEyQjFBQkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gKi8sCiAJCQkJQkNBQzExMUUxMkM5MkMxRjAwQjA4RUVFIC8qIFdlYkRhdGFi
YXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCAqLywKIAkJCQlCQ0FDMTExRDEyQzkyQzFGMDBCMDhF
RUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCAqLywKLQkJCQkxQUI3RDcyQjEy
ODhDQUFEMDBDRkQwOEMgLyogV2ViRG93bmxvYWRDbGllbnQuY3BwICovLAotCQkJCTFBQjdENzJB
MTI4OENBQUQwMENGRDA4QyAvKiBXZWJEb3dubG9hZENsaWVudC5oICovLAogCQkJCUJDQTBFRjlF
MTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29tbWFuZFByb3h5LmNwcCAqLywKIAkJCQlCQ0Ew
RUY5RDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5oICovLAogCQkJCTFB
M0REMUZDMTI1RTU5RjMwMDQ1MTVFNiAvKiBXZWJGaW5kQ2xpZW50LmNwcCAqLywKQEAgLTUzNzYs
NiArNTM3Miw3IEBACiAJCQkJQkM4QTUwMTMxMTc2NUY0NTAwNzU3NTczIC8qIGNwcCAqLywKIAkJ
CQkyREE5NDQ3NzE4ODRFM0FCMDBFRDg2REIgLyogaW9zICovLAogCQkJCUJDMTExQjQ3MTEyRjYx
NjkwMDMzN0JBQiAvKiBtYWMgKi8sCisJCQkJQTFBNEZFNTQxOERDQkY5RDAwQjVFQThBIC8qIEFQ
SURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJMUE2NjM3RDYxOEIyODMxRjAwQzBCQ0YzIC8qIEFQ
SUhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJ
TG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJMUFGREQzMTQxODkxQjU0MDAwMTUzOTcwIC8qIEFQSVBv
bGljeUNsaWVudC5oICovLApAQCAtNjY3OCw2ICs2Njc1LDcgQEAKIAkJCQkxQTIxNjJCMTExRjM4
OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUI4QTFFQzE4NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTJEODRBMzEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTFBNEZFNTUxOERDQkY5RDAwQjVFQThBIC8qIEFQSURvd25sb2Fk
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBQ0ExMzE2NjcwRDg5MDA0QzE5NDEgLyog
T2JqQ09iamVjdEdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA2RDdDNDE4QkRCRTczMDAw
QUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4
QUNBMTUxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaENvZGVycy5oIGluIEhlYWRl
cnMgKi8sCkBAIC02ODUzLDcgKzY4NTEsNiBAQAogCQkJCTFBQzEzMzg2MTg1OTBDNDYwMEYzRUMw
NSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0FDMTExRjEyQzkyQzFGMDBCMDhFRUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NkI5MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRh
YmFzZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQUI3RDcyQzEy
ODhDQUFEMDBDRkQwOEMgLyogV2ViRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNjU0RjAwMTg0RUYzNEEwMDdEQzgzNyAvKiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEN0IxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkRy
YWdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTBFRjlGMTIzMzI2NDIwMDdEM0NGQiAv
KiBXZWJFZGl0Q29tbWFuZFByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTgyODAsNyArODI3Nyw2
IEBACiAJCQkJQkNBQzExMjAxMkM5MkMxRjAwQjA4RUVFIC8qIFdlYkRhdGFiYXNlTWFuYWdlclBy
b3h5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2MkE3NkI4MTJCMUIyNUYwMDA1RjFC
NiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTdERDVDNTE4MERDM0UxMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJv
eHlNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQUI3RDcyRDEyODhDQUFEMDBDRkQwOEMgLyog
V2ViRG93bmxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBNUQxMTJGNEZC
QjAwMzM3QkFCIC8qIFdlYkRyYWdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU3NEEz
NzcxMkU2MDk5RDAwMkRGRTk4IC8qIFdlYkRyYWdDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0EwRUZBMDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAg
aW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>