<?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>138466</bug_id>
          
          <creation_ts>2014-11-06 07:42:00 -0800</creation_ts>
          <short_desc>Add API::ContextMenuClient and API::InjectedBundle::PageContextMenuClient classes</short_desc>
          <delta_ts>2015-01-21 23:53:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>138467</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1046805</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-06 07:42:00 -0800</bug_when>
    <thetext>Add API::ContextMenuClient and API::InjectedBundle::PageContextMenuClient classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046807</commentid>
    <comment_count>1</comment_count>
      <attachid>241107</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-06 07:48:18 -0800</bug_when>
    <thetext>Created attachment 241107
Patch

I&apos;ve removed the deleted files from the pbxproj file, but as usual I need help with the new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046820</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-11-06 08:48:23 -0800</bug_when>
    <thetext>Is this just cleanup with no functionality change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046826</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-06 09:09:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Is this just cleanup with no functionality change?

Yes, I did it to simplify the GTK+ implementation, see bug #138467.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048166</commentid>
    <comment_count>4</comment_count>
      <attachid>241428</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-12 09:19:10 -0800</bug_when>
    <thetext>Created attachment 241428
Updated patch

Now with the (hopefully correct) xcodeproj file changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048361</commentid>
    <comment_count>5</comment_count>
      <attachid>241474</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-11-12 23:10:32 -0800</bug_when>
    <thetext>Created attachment 241474
Try to fix mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058697</commentid>
    <comment_count>6</comment_count>
      <attachid>243973</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-05 05:30:11 -0800</bug_when>
    <thetext>Created attachment 243973
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062773</commentid>
    <comment_count>7</comment_count>
      <attachid>244995</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-20 09:25:57 -0800</bug_when>
    <thetext>Created attachment 244995
Rebased and updated to use references instead of pointers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063063</commentid>
    <comment_count>8</comment_count>
      <attachid>244995</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-21 08:51:49 -0800</bug_when>
    <thetext>Comment on attachment 244995
Rebased and updated to use references instead of pointers

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

&gt; Source/WebKit2/ChangeLog:1
&gt; +2014-11-12  Carlos Garcia Campos  &lt;carlos@Carloss-Mac.local&gt;

Please fix your e-mail address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063310</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-21 23:53:04 -0800</bug_when>
    <thetext>Committed r178889: &lt;http://trac.webkit.org/changeset/178889&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241107</attachid>
            <date>2014-11-06 07:48:18 -0800</date>
            <delta_ts>2014-11-12 09:19:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-api-context-menu-client.diff</filename>
            <type>text/plain</type>
            <size>43346</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNDJmZTNmZi4uNTM0NjNkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTMzNCw3ICszMzQsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkuY3BwCi0gICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5j
cHAKICAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDBlNjZjMTcuLjEyMDZkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1NiBAQAogMjAxNC0xMS0w
NiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAgICAg
QWRkIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgYW5kIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VD
b250ZXh0TWVudUNsaWVudCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzg0NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIENvbnRleHRNZW51Q2xpZW50IHRvIHVzZSBBUEkgY2xhc3Nl
cyBpbiBib3RoIFVJIGFuZCBJbmplY3RlZAorICAgICAgICBCdW5kbGUgQVBJcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OiBSZW1vdmUgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmgu
CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50Ojp+Q29udGV4dE1lbnVDbGllbnQpOgor
ICAgICAgICAoQVBJOjpDb250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51KToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OmN1c3RvbUNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OmNvbnRl
eHRNZW51RGlzbWlzc2VkKToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OnNob3dD
b250ZXh0TWVudSk6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50OjpoaWRlQ29udGV4
dE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplQ29udGV4dE1lbnVDbGllbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oLgorICAgICAgICAoQVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50Ojp+UGFnZUNvbnRleHRNZW51Q2xpZW50KToK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0
Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50OjpwcmVwYXJlRm9yQWN0aW9uTWVudSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAg
ICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21E
ZWZhdWx0SXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudDo6cHJlcGFyZUZvckFjdGlvbk1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0TWVudTo6bWVudUl0ZW1zV2l0aFVzZXJEYXRhKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRs
ZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDb250ZXh0
TWVudUNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudCk6CisKKzIwMTQtMTEtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIEFkZCBjb250ZXh0IG1lbnUgQVBJIHRvIFdlYiBQ
cm9jZXNzIEV4dGVuc2lvbnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzODMxMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRleHRNZW51Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZDgzMGQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQVBJQ29udGV4dE1l
bnVDbGllbnRfaAorI2RlZmluZSBBUElDb250ZXh0TWVudUNsaWVudF9oCisKKyNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFBvaW50Owor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7Citj
bGFzcyBXZWJGcmFtZVByb3h5OworY2xhc3MgV2ViUGFnZVByb3h5OworfQorCituYW1lc3BhY2Ug
QVBJIHsKKworY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwg
fkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1l
bnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFdl
YktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIC8qIHByb3Bvc2VkTWVudSAqLywgVmVjdG9y
PFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIC8qIGN1c3RvbU1lbnUgKi8sIGNvbnN0
IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0
YSAqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY3VzdG9tQ29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJLaXQ6OldlYkNv
bnRleHRNZW51SXRlbURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEaXNt
aXNzZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvd0Nv
bnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhpZGVDb250ZXh0TWVudShXZWJLaXQ6OldlYlBh
Z2VQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKwor
I2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmIC8vIEFQSUNvbnRleHRNZW51
Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXgg
MzUyMTdlOC4uMTIzMjlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXS1BhZ2VQcml2YXRlLmgiCiAKICNp
bmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCiAj
aW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIkFQSUZpbmRDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElMb2FkZXJDbGllbnQuaCIKQEAgLTc3LDYgKzc4LDEyIEBAIHRlbXBsYXRlPD4gc3RydWN0
IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwg
V0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWND4gVmVyc2lvbnM7CiB9OwogCisjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQ
YWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFn
ZUNvbnRleHRNZW51Q2xpZW50VjAsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjEsIFdLUGFnZUNv
bnRleHRNZW51Q2xpZW50VjIsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjM+IFZlcnNpb25zOwor
fTsKKyNlbmRpZgorCiB9CiAKIFdLVHlwZUlEIFdLUGFnZUdldFR5cGVJRCgpCkBAIC03MTQsNyAr
NzIxLDk3IEBAIHZvaWQgV0tQYWdlQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1N0cmluZ1JlZiBzdHJpbmcsIFdLRmluZE9wdGlvCiB2b2lkIFdLUGFnZVNldFBhZ2VDb250
ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVD
bGllbnRCYXNlKiB3a0NsaWVudCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0
b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudCh3a0NsaWVudCk7Cisg
ICAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQ
YWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVDbGllbnQoY29uc3Qg
V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiBjbGllbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgdmlydHVhbCBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJv
eHkqIHBhZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRN
ZW51VmVjdG9yLCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGN1c3RvbU1lbnUsIGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0
TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNp
b24gPj0gMiAmJiAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxB
UEk6Ok9iamVjdD4+IHByb3Bvc2VkTWVudUl0ZW1zOworICAgICAgICAgICAgcHJvcG9zZWRNZW51
SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwcm9wb3NlZE1lbnVWZWN0b3Iuc2l6ZSgpKTsK
KworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtZW51SXRlbSA6IHByb3Bvc2VkTWVudVZl
Y3RvcikKKyAgICAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQo
V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUobWVudUl0ZW0pKTsKKworICAgICAgICAgICAgV0tB
cnJheVJlZiBuZXdNZW51ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNl
LnZlcnNpb24gPj0gMikgeworICAgICAgICAgICAgICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0
PiB3ZWJIaXRUZXN0UmVzdWx0ID0gV2ViSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1
bHREYXRhKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUodG9BUEkocGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUo
cHJvcG9zZWRNZW51SXRlbXMpKS5nZXQoKSksICZuZXdNZW51LCB0b0FQSSh3ZWJIaXRUZXN0UmVz
dWx0LmdldCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1l
bnVGcm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRv
QVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5nZXQo
KSksICZuZXdNZW51LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisKKyAgICAgICAgICAgIFJlZlB0cjxBUEk6OkFycmF5PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1w
bChuZXdNZW51KSk7CisKKyAgICAgICAgICAgIGN1c3RvbU1lbnUuY2xlYXIoKTsKKworICAgICAg
ICAgICAgc2l6ZV90IG5ld1NpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkgOiAwOworICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdTaXplOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBXZWJDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJ
dGVtPihpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgTE9HKENvbnRleHRNZW51LCAiTmV3IG1lbnUgZW50cnkgYXQgaW5kZXggJWkgaXMgbm90IGEg
V2ViQ29udGV4dE1lbnVJdGVtIiwgKGludClpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBl
bmQoKml0ZW0tPmRhdGEoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51
SXRlbVNlbGVjdGVkKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYgaXRlbURhdGEpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9j
bGllbnQuY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCh0b0FQSShwYWdlKSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURhdGEp
LmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURpc21pc3NlZChXZWJQYWdlUHJveHkqIHBhZ2UpIG92
ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuY29udGV4dE1lbnVE
aXNtaXNzZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVu
dC5jb250ZXh0TWVudURpc21pc3NlZCh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG93Q29udGV4dE1lbnUo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9u
LCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG1lbnVJdGVtc1ZlY3Rvcikg
b3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG93Q29udGV4
dE1lbnUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBWZWN0
b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gbWVudUl0ZW1zOworICAgICAgICAgICAgbWVudUl0ZW1z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWVudUl0ZW1zVmVjdG9yLnNpemUoKSk7CisKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgbWVudUl0ZW0gOiBtZW51SXRlbXNWZWN0b3IpCisgICAg
ICAgICAgICAgICAgbWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06
OmNyZWF0ZShtZW51SXRlbSkpOworCisgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1l
bnUodG9BUEkocGFnZSksIHRvQVBJKG1lbnVMb2NhdGlvbiksIHRvQVBJKEFQSTo6QXJyYXk6OmNy
ZWF0ZShXVEY6Om1vdmUobWVudUl0ZW1zKSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZp
cnR1YWwgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmhpZGVDb250ZXh0TWVudSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIG1fY2xpZW50LmhpZGVD
b250ZXh0TWVudSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51
Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAg
ICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFhZWNlYzIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotCi0jaW5jbHVkZSAiV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCi0KLSNp
bmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJD
b250ZXh0TWVudUl0ZW0uaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1No
YXJlZEFQSUNhc3QuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWJvb2wgV2ViUGFnZUNvbnRl
eHRNZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5
KiBwYWdlLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVu
dVZlY3RvciwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBjdXN0b21NZW51LCBjb25z
dCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQotewotICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1fY2xp
ZW50LmJhc2UudmVyc2lvbiA+PSAyICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVBJ
OjpPYmplY3Q+PiBwcm9wb3NlZE1lbnVJdGVtczsKLSAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwotCi0gICAgZm9y
IChjb25zdCBhdXRvJiBtZW51SXRlbSA6IHByb3Bvc2VkTWVudVZlY3RvcikKLSAgICAgICAgcHJv
cG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRl
KG1lbnVJdGVtKSk7Ci0KLSAgICBXS0FycmF5UmVmIG5ld01lbnUgPSBudWxscHRyOwotICAgIGlm
IChtX2NsaWVudC5iYXNlLnZlcnNpb24gPj0gMikgewotICAgICAgICBSZWZQdHI8V2ViSGl0VGVz
dFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IFdlYkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRU
ZXN0UmVzdWx0RGF0YSk7Ci0gICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bv
c2VkTWVudSh0b0FQSShwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShw
cm9wb3NlZE1lbnVJdGVtcykpLmdldCgpKSwgJm5ld01lbnUsIHRvQVBJKHdlYkhpdFRlc3RSZXN1
bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6OkFycmF5Ojpj
cmVhdGUoV1RGOjptb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgUmVmUHRyPEFQ
STo6QXJyYXk+IGFycmF5ID0gYWRvcHRSZWYodG9JbXBsKG5ld01lbnUpKTsKLSAgICAKLSAgICBj
dXN0b21NZW51LmNsZWFyKCk7Ci0gICAgCi0gICAgc2l6ZV90IG5ld1NpemUgPSBhcnJheSA/IGFy
cmF5LT5zaXplKCkgOiAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3U2l6ZTsgKytp
KSB7Ci0gICAgICAgIFdlYkNvbnRleHRNZW51SXRlbSogaXRlbSA9IGFycmF5LT5hdDxXZWJDb250
ZXh0TWVudUl0ZW0+KGkpOwotICAgICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgICAgIExPRyhD
b250ZXh0TWVudSwgIk5ldyBtZW51IGVudHJ5IGF0IGluZGV4ICVpIGlzIG5vdCBhIFdlYkNvbnRl
eHRNZW51SXRlbSIsIChpbnQpaSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgY3VzdG9tTWVudS5hcHBlbmQoKml0ZW0tPmRhdGEoKSk7Ci0gICAg
fQotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYlBhZ2VDb250ZXh0TWVudUNs
aWVudDo6Y3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtRGF0YSkKLXsKLSAgICBpZiAoIW1fY2xp
ZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPiBpdGVtID0gV2ViQ29udGV4dE1lbnVJdGVtOjpj
cmVhdGUoaXRlbURhdGEpOwotICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKHRvQVBJKHBhZ2UpLCB0b0FQSShpdGVtLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLX0KLQotdm9pZCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51RGlz
bWlzc2VkKFdlYlBhZ2VQcm94eSogcGFnZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmNvbnRleHRN
ZW51RGlzbWlzc2VkKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9jbGllbnQuY29udGV4
dE1lbnVEaXNtaXNzZWQodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19
Ci0KLWJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG1lbnVJdGVtc1ZlY3RvcikKLXsKLSAg
ICBpZiAoIW1fY2xpZW50LnNob3dDb250ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IG1lbnVJdGVtczsKLSAgICBtZW51SXRl
bXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtZW51SXRlbXNWZWN0b3Iuc2l6ZSgpKTsKLQotICAg
IGZvciAoY29uc3QgYXV0byYgbWVudUl0ZW0gOiBtZW51SXRlbXNWZWN0b3IpCi0gICAgICAgIG1l
bnVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUobWVudUl0
ZW0pKTsKLQotICAgIG1fY2xpZW50LnNob3dDb250ZXh0TWVudSh0b0FQSShwYWdlKSwgdG9BUEko
bWVudUxvY2F0aW9uKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShtZW51SXRl
bXMpKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmhpZGVDb250ZXh0TWVudShX
ZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5oaWRlQ29udGV4dE1lbnUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fY2xpZW50LmhpZGVDb250ZXh0TWVudSh0
b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLQotICAgIHJldHVybiB0cnVl
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4
dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI5NjcxMi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnRfaAotI2RlZmluZSBXZWJQYWdlQ29udGV4dE1lbnVDbGll
bnRfaAotCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0KLSNpbmNsdWRlICJBUElDbGllbnQu
aCIKLSNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiV0tQYWdlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIEFQSSB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlQ29u
dGV4dE1lbnVDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUNvbnRl
eHRNZW51Q2xpZW50VjAsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjEsIFdLUGFnZUNvbnRleHRN
ZW51Q2xpZW50VjIsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjM+IFZlcnNpb25zOwotfTsKLX0K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7Ci1j
bGFzcyBXZWJQYWdlUHJveHk7Ci0KLWNsYXNzIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudCA6IHB1
YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2U+IHsKLXB1YmxpYzoK
LSAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqLCBj
b25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudSwgVmVjdG9y
PFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVz
dWx0OjpEYXRhJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKTsKLSAgICB2b2lkIGN1c3RvbUNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmKTsKLSAgICB2b2lkIGNvbnRleHRNZW51RGlzbWlzc2VkKFdlYlBhZ2VQcm94eSopOwot
ICAgIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7Ci0gICAgYm9v
bCBoaWRlQ29udGV4dE1lbnUoV2ViUGFnZVByb3h5Kik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQotI2VuZGlmIC8vIFdlYlBh
Z2VDb250ZXh0TWVudUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDhjNWMyNjEuLjNiMjIxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSUNvbnRleHRNZW51
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRmluZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUZvcm1D
bGllbnQuaCIKICNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKQEAgLTI2Miw2ICsyNjMsOSBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpKQogICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6VUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkZpbmRDbGllbnQ+KCkpCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgLCBt
X2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVu
dD4oKSkKKyNlbmRpZgogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91
cCgqY29uZmlndXJhdGlvbi5wYWdlR3JvdXApCiAgICAgLCBtX3ByZWZlcmVuY2VzKCpjb25maWd1
cmF0aW9uLnByZWZlcmVuY2VzKQpAQCAtNTM5LDkgKzU0MywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5pdGlhbGl6ZUZpbmRNYXRjaGVzQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xp
ZW50QmFzZQogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIFdlYlBhZ2VQcm94
eTo6aW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50KGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xp
ZW50QmFzZSogY2xpZW50KQordm9pZCBXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiBjb250ZXh0TWVudUNsaWVu
dCkKIHsKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBp
ZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gV1RGOjptb3ZlKGNvbnRleHRN
ZW51Q2xpZW50KTsKIH0KICNlbmRpZgogCkBAIC02ODAsNyArNjg5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNsb3NlKCkKICAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
RmluZENsaWVudD4oKTsKICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50LmluaXRpYWxpemUoMCk7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNsaWVudC5pbml0aWFs
aXplKDApOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOwpAQCAtMzc3NCw5ICszNzgzLDkgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50
JiBtZW51TG9jYXRpb24sIGNvbnN0IEMKIAogICAgIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0
RGF0YSA9IGNvbnRleHRNZW51Q29udGV4dERhdGE7CiAKLSAgICBpZiAoIW1fY29udGV4dE1lbnVD
bGllbnQuaGlkZUNvbnRleHRNZW51KHRoaXMpICYmIG1fYWN0aXZlQ29udGV4dE1lbnUpIHsKKyAg
ICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQtPmhpZGVDb250ZXh0TWVudSh0aGlzKSAmJiBtX2Fj
dGl2ZUNvbnRleHRNZW51KSB7CiAgICAgICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250
ZXh0TWVudSgpOwotICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0gMDsKKyAgICAgICAgbV9h
Y3RpdmVDb250ZXh0TWVudSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9hY3RpdmVDb250ZXh0
TWVudSA9IG1fcGFnZUNsaWVudC5jcmVhdGVDb250ZXh0TWVudVByb3h5KHRoaXMpOwpAQCAtMzc5
NSwyMSArMzgwNCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1l
bnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQwogICAgICAgICBhc2tDbGll
bnRUb0NoYW5nZU1lbnUgPSBmYWxzZTsKICNlbmRpZgogCi0gICAgaWYgKGFza0NsaWVudFRvQ2hh
bmdlTWVudSAmJiBtX2NvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2Vk
TWVudSh0aGlzLCBwcm9wb3NlZEl0ZW1zLCBpdGVtcywgY29udGV4dE1lbnVDb250ZXh0RGF0YS53
ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCB1c2VyRGF0YS5nZXQoKSkpCisgICAgaWYgKGFza0NsaWVu
dFRvQ2hhbmdlTWVudSAmJiBtX2NvbnRleHRNZW51Q2xpZW50LT5nZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGNvbnRleHRNZW51Q29udGV4
dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKSwgdXNlckRhdGEuZ2V0KCkpKQogICAgICAgICB1
c2VQcm9wb3NlZEl0ZW1zID0gZmFsc2U7CiAKICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4mIGl0ZW1zVG9TaG93ID0gdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkSXRl
bXMgOiBpdGVtczsKLSAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRNZW51
KHRoaXMsIG1lbnVMb2NhdGlvbiwgaXRlbXNUb1Nob3cpKQorICAgIGlmICghbV9jb250ZXh0TWVu
dUNsaWVudC0+c2hvd0NvbnRleHRNZW51KHRoaXMsIG1lbnVMb2NhdGlvbiwgaXRlbXNUb1Nob3cp
KQogICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0
aW9uLCBpdGVtc1RvU2hvdywgY29udGV4dE1lbnVDb250ZXh0RGF0YSk7CiAKLSAgICBtX2NvbnRl
eHRNZW51Q2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2VkKHRoaXMpOworICAgIG1fY29udGV4dE1l
bnVDbGllbnQtPmNvbnRleHRNZW51RGlzbWlzc2VkKHRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0
YSYgaXRlbSkKIHsKICAgICAvLyBBcHBsaWNhdGlvbiBjdXN0b20gaXRlbXMgZG9uJ3QgbmVlZCB0
byByb3VuZC10cmlwIHRocm91Z2ggdG8gV2ViQ29yZSBpbiB0aGUgV2ViUHJvY2Vzcy4KICAgICBp
ZiAoaXRlbS5hY3Rpb24oKSA+PSBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpIHsK
LSAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZCh0aGlzLCBpdGVtKTsKKyAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudC0+Y3VzdG9tQ29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQodGhpcywgaXRlbSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlYjIyNDkxLi4xZDRk
MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01Myw3ICs1
Myw2IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
RmluZENsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fs
dGVybmF0aXZlVGV4dENsaWVudC5oPiAvLyBGSVhNRTogTmVlZGVkIGJ5IFdlYlBhZ2VQcm94eU1l
c3NhZ2VzLmggZm9yIERJQ1RBVElPTl9BTFRFUk5BVElWRVMuCkBAIC0xMDQsNiArMTAzLDcgQEAK
ICNlbmRpZgogCiBuYW1lc3BhY2UgQVBJIHsKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xh
c3MgRmluZENsaWVudDsKIGNsYXNzIEZvcm1DbGllbnQ7CiBjbGFzcyBMb2FkZXJDbGllbnQ7CkBA
IC0yODIsNyArMjgyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKLSAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1BhZ2VD
b250ZXh0TWVudUNsaWVudEJhc2UqKTsKKyAgICB2b2lkIHNldENvbnRleHRNZW51Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50Pik7CiAjZW5kaWYKICAgICBBUEk6
OkZpbmRDbGllbnQmIGZpbmRDbGllbnQoKSB7IHJldHVybiAqbV9maW5kQ2xpZW50OyB9CiAgICAg
dm9pZCBzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+KTsKQEAg
LTEzMzAsNyArMTMzMCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rmlu
ZENsaWVudD4gbV9maW5kQ2xpZW50OwogICAgIFdlYkZpbmRNYXRjaGVzQ2xpZW50IG1fZmluZE1h
dGNoZXNDbGllbnQ7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViUGFnZUNvbnRl
eHRNZW51Q2xpZW50IG1fY29udGV4dE1lbnVDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6Q29udGV4dE1lbnVDbGllbnQ+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAjZW5kaWYKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYz
ZGZlM2IuLmE2ZjRiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTg3MSw4ICs4NzEsNiBAQAogCQk1MTRCREVEMzE2Qzk4RURE
MDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0
aWNzUmVxdWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2Vydmlj
ZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi87
IH07CiAJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTREOUY1NjE5
MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovOyB9OwotCQk1MTUzNTY5
QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTM1NjlBMTI5MUIxRDIw
MDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovOyB9OwotCQk1MTUzNTY5
RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTUzNTY5QjEyOTFCMUQyMDAw
NzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTUxNTc4QjgzMTIw
OUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICov
OyB9OwogCQk1MTVFNzcyNzE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI1MTgzREQ2
RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovOyB9OwogCQk1MTVFNzcyODE4M0RENkY2
MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0
LmggKi87IH07CkBAIC0yOTAyLDggKzI5MDAsNiBAQAogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUy
NUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RhdGlzdGljc1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0
RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29u
dHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZp
Y2VzQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE1MzU2OUEx
MjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMg
LyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNSZXF1ZXN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RTc3MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5j
UmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY1JlcXVlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4NzksOCArNTg3NSw2IEBACiAJCQkJ
NzU1NDIyQkYxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCAq
LywKIAkJCQk3NTU0MjJCRTE4MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eS5jcHAgKi8sCiAJCQkJNzU1NDIyQzAxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRh
dGFNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCi0JCQkJNTE1MzU2OUExMjkxQjFEMjAwMDc0
OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8sCi0JCQkJNTE1MzU2OUIxMjkx
QjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovLAogCQkJCUJDN0I2
MjA1MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuY3BwICovLAogCQkJCUJDN0I2MjA0
MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAuaCAqLywKIAkJCQlCQzExMUIwQjExMkY1
RTRGMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5LmNwcCAqLywKQEAgLTc1NTQsNyArNzU0OCw2IEBA
CiAJCQkJQkM4NTdGODUxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFERkVBNDEyQjMxRjg3MDA1REY3MzAgLyogV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJE
OEYxMEY0MzdBMDAwNThDMTVBIC8qIFdlYlBhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNTM1
NjlEMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTNGODg5RDE1MTg4Nzc4QzkwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MjA2MTI5QTBBNjcwMEQx
NzRBNCAvKiBXZWJQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MjUyMTJBNDND
OTYwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTkyMjQs
NyArOTIxNyw2IEBACiAJCQkJQkM4NTdGN0UxMkI4MkNFRTAwRURFQjJFIC8qIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NjNENkIxMTNE
RDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNDkx
OEJCRTA0NDAwMEZDRkM5IC8qIFdLQWN0aW9uU2hlZXQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1
MTUzNTY5QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMwNkM2MDk1MTI0QzE0NEIwMDAxNjgyRiAvKiBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1OUM0QTU4MThCODExNzQw
MDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzdCNjIwNzEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzgzNmQ4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
X2gKKyNkZWZpbmUgQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRfaAorCisj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRleHRNZW51SXRlbTsKK2NsYXNzIEhpdFRlc3RS
ZXN1bHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YTsKK2NsYXNzIFdlYkZyYW1lOworY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlNlY3VyaXR5
T3JpZ2luOworfQorCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIE9iamVjdDsKKworbmFtZXNwYWNl
IEluamVjdGVkQnVuZGxlIHsKKworY2xhc3MgUGFnZUNvbnRleHRNZW51Q2xpZW50IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5QYWdlQ29udGV4dE1lbnVDbGllbnQoKSB7IH0KKworICAgIHZpcnR1
YWwgYm9vbCBnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJLaXQ6OldlYlBhZ2UqLCBj
b25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbT4mIC8qIGRlZmF1bHRNZW51ICovLCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0
TWVudUl0ZW1EYXRhPiYgLyogbmV3TWVudSAqLywgUmVmUHRyPEFQSTo6T2JqZWN0PiYgLyogdXNl
ckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JB
Y3Rpb25NZW51KFdlYktpdDo6V2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQm
LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiAvKiB1c2VyRGF0YSAqLykgeyB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBJbmplY3RlZEJ1bmRsZQorCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8v
IEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmIC8vIEFQSUluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBjNmU2
ZTVhLi40NGZiYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpCiB2b2lkIFdLQnVuZGxlUGFn
ZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQotICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlQ29u
dGV4dE1lbnVDbGllbnQod2tDbGllbnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0
ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggMGEz
YzI3NC4uYWZhZDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTQxLDE5ICs0MSwyNSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBh
Z2UqIHBhZ2UsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBkZWZhdWx0TWVudSwgVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+JiBuZXdNZW51LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2Vy
RGF0YSkKK0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudChjb25zdCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dEJhc2UqIGNsaWVudCkKK3sKKyAgICBpbml0aWFsaXplKGNsaWVudCk7Cit9CisKK2Jvb2wgSW5q
ZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVs
dEl0ZW1zKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQs
IGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBwcm9wb3NlZE1lbnUsIFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3TWVudSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRh
dGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21EZWZhdWx0TWVudSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURh
dGE+IGRlZmF1bHRNZW51ID0ga2l0SXRlbXMocHJvcG9zZWRNZW51KTsKICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gZGVmYXVsdE1lbnVJdGVtczsKICAgICBkZWZhdWx0TWVudUl0ZW1z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGVmYXVsdE1lbnUuc2l6ZSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGl0ZW0gOiBkZWZhdWx0TWVudSkKICAgICAgICAgZGVmYXVsdE1lbnVJdGVtcy51
bmNoZWNrZWRBcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbSkpOwogCi0gICAg
V0tBcnJheVJlZiBuZXdNZW51V0sgPSAwOwotICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9
IDA7Ci0gICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tRGVmYXVsdE1lbnUodG9BUEkocGFn
ZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjpt
b3ZlKGRlZmF1bHRNZW51SXRlbXMpKS5nZXQoKSksICZuZXdNZW51V0ssICZ1c2VyRGF0YVRvUGFz
cywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICBXS0FycmF5UmVmIG5ld01lbnVXSyA9
IG51bGxwdHI7CisgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gbnVsbHB0cjsKKyAgICBt
X2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21EZWZhdWx0TWVudSh0b0FQSShwYWdlKSwgdG9BUEko
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdCkuZ2V0KCkp
LCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKGRlZmF1bHRNZW51SXRlbXMpKS5n
ZXQoKSksICZuZXdNZW51V0ssICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICBSZWZQdHI8QVBJOjpBcnJheT4gYXJyYXkgPSBhZG9wdFJlZih0b0ltcGwobmV3
TWVudVdLKSk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3Mp
KTsKICAgICAKQEAgLTc2LDEzICs4MiwxMyBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKgogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50OjpwcmVwYXJlRm9yQWN0aW9uTWVudShXZWJQYWdlKiBwYWdlLCBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRh
KQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6cHJlcGFyZUZvckFj
dGlvbk1lbnUoV2ViUGFnZSogcGFnZSwgY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3Vs
dCwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5w
cmVwYXJlRm9yQWN0aW9uTWVudSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVz
ZXJEYXRhVG9QYXNzID0gbnVsbHB0cjsKLSAgICBtX2NsaWVudC5wcmVwYXJlRm9yQWN0aW9uTWVu
dSh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdCksICZ1c2VyRGF0YVRvUGFzcywgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5wcmVwYXJlRm9yQWN0aW9uTWVu
dSh0b0FQSShwYWdlKSwgdG9BUEkoSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUo
aGl0VGVzdFJlc3VsdCkuZ2V0KCkpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3Mp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudC5oCmluZGV4IGU0YWE5OWMuLmZjYWM2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTI5LDggKzI5LDggQEAK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2lu
Y2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiV0tCdW5kbGVQYWdlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIE9iamVjdDsKQEAgLTQxLDE5ICs0MSwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiB7CiB9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRleHRNZW51OworY2xhc3MgQ29udGV4dE1l
bnVJdGVtOworY2xhc3MgSGl0VGVzdFJlc3VsdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFdlYkNvbnRleHRNZW51
SXRlbURhdGE7CiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudEJhc2U+IHsKK2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZT4s
IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQgewogcHVi
bGljOgotICAgIGJvb2wgZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoV2ViUGFnZSosIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCosIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiYgZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3
TWVudSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpOwotICAgIHZvaWQgcHJlcGFyZUZv
ckFjdGlvbk1lbnUoV2ViUGFnZSosIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCosIFJlZlB0
cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKTsKKyAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudChjb25zdCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJh
c2UqKTsKKworcHJpdmF0ZToKKyAgICBib29sIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1z
KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbT4mIGRlZmF1bHRNZW51LCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4mIG5ld01lbnUsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHByZXBhcmVGb3JBY3Rpb25NZW51KFdlYlBhZ2UqLCBjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0JiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJy
aWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAppbmRleCAyOGNkMzRkLi5m
NDY1YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5jcHAKQEAgLTI2LDEwICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4
dE1lbnUuaCIKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKLSNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4
dE1lbnUuaD4KQEAgLTkyLDEyICs5MCw5IEBAIHZvaWQgV2ViQ29udGV4dE1lbnU6Om1lbnVJdGVt
c1dpdGhVc2VyRGF0YShWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gJm1lbnVJCiAgICAg
VmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29yZUl0ZW1zID0gY29udGV4dE1lbnVJdGVtVmVjdG9y
KG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW1EYXRhPiBwcm9wb3NlZE1lbnUgPSBraXRJdGVtcyhjb3JlSXRlbXMpOwot
ICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBuZXdNZW51OwotICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShjb250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKSk7Ci0gICAg
aWYgKG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpLmdldEN1c3RvbU1l
bnVGcm9tRGVmYXVsdEl0ZW1zKG1fcGFnZSwgaGl0VGVzdFJlc3VsdC5nZXQoKSwgcHJvcG9zZWRN
ZW51LCBuZXdNZW51LCB1c2VyRGF0YSkpCi0gICAgICAgIHByb3Bvc2VkTWVudSA9IG5ld01lbnU7
Ci0gICAgbWVudUl0ZW1zID0gcHJvcG9zZWRNZW51OworICAgIGlmIChtX3BhZ2UtPmluamVjdGVk
QnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKS5nZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyht
X3BhZ2UsIGNvbnRyb2xsZXIuaGl0VGVzdFJlc3VsdCgpLCBjb3JlSXRlbXMsIG1lbnVJdGVtcywg
dXNlckRhdGEpKQorICAgICAgICByZXR1cm47CisgICAgbWVudUl0ZW1zID0ga2l0SXRlbXMoY29y
ZUl0ZW1zKTsKIH0KIAogVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRN
ZW51OjppdGVtcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggZmM5NTZlZC4uOWU1MGJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjcxLDYgKzI3MSw5IEBAIFdlYlBh
Z2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCiAj
ZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQorI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkKKyNlbmRpZgogICAg
ICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9y
bUNsaWVudD4oKSkKICAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKHRoaXMp
CkBAIC01NTIsOSArNTU1LDE0IEBAIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotdm9pZCBXZWJQYWdl
Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VD
b250ZXh0TWVudUNsaWVudEJhc2UqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiBjb250ZXh0TWVudUNsaWVudCkKIHsKLSAgICBtX2Nv
bnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWNvbnRleHRNZW51
Q2xpZW50KSB7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBXVEY6Om1vdmUoY29u
dGV4dE1lbnVDbGllbnQpOwogfQogI2VuZGlmCiAKQEAgLTk1OSw3ICs5NjcsNyBAQCB2b2lkIFdl
YlBhZ2U6OmNsb3NlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
bV9jb250ZXh0TWVudUNsaWVudC5pbml0aWFsaXplKDApOworICAgIG1fY29udGV4dE1lbnVDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVu
dUNsaWVudD4oKTsKICNlbmRpZgogICAgIG1fZWRpdG9yQ2xpZW50LmluaXRpYWxpemUoMCk7CiAg
ICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpG
b3JtQ2xpZW50PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggNDRmNmFjYmMuLjhiYjE2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQYWdlX2gK
IAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlRm9ybUNsaWVudC5oIgorI2luY2x1ZGUgIkFQ
SUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlICJGaW5kQ29udHJvbGxlci5oIgpAQCAtMjc3LDcgKzI3OCw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIC0tIEluamVjdGVkQnVuZGxlIG1ldGhvZHMKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KFdLQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSopOworICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5k
bGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZUNvbnRleHRNZW51Q2xpZW50Pik7CiAjZW5kaWYKICAgICB2b2lkIGluaXRpYWxpemVJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlKik7CiAg
ICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KTsKQEAgLTI5MSw3ICsyOTIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dChXS0J1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqKTsKIAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQotICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
JiBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gbV9jb250ZXh0TWVu
dUNsaWVudDsgfQorICAgIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVu
dCYgaW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpIHsgcmV0dXJuICptX2NvbnRleHRN
ZW51Q2xpZW50LmdldCgpOyB9CiAjZW5kaWYKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQmIGluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkgeyByZXR1cm4gbV9lZGl0b3JDbGll
bnQ7IH0KICAgICBBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50JiBpbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQoKSB7IHJldHVybiAqbV9mb3JtQ2xpZW50LmdldCgpOyB9CkBAIC0xMTQ1LDcg
KzExNDYsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFNpemUgbV93aW5kb3dSZXNpemVy
U2l6ZTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIEluamVjdGVkQnVuZGxlUGFn
ZUNvbnRleHRNZW51Q2xpZW50IG1fY29udGV4dE1lbnVDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4gbV9jb250ZXh0
TWVudUNsaWVudDsKICNlbmRpZgogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCBt
X2VkaXRvckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
Rm9ybUNsaWVudD4gbV9mb3JtQ2xpZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241428</attachid>
            <date>2014-11-12 09:19:10 -0800</date>
            <delta_ts>2014-11-12 23:10:32 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-api-context-menu-client.diff</filename>
            <type>text/plain</type>
            <size>47251</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZGUwYjVlZi4uMTI3OWFkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTMzNyw3ICszMzcsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkuY3BwCi0gICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5j
cHAKICAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDhmNTA3MTcuLmIzYTU2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxNC0xMS0w
NiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
QWRkIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgYW5kIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VD
b250ZXh0TWVudUNsaWVudCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzg0NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIENvbnRleHRNZW51Q2xpZW50IHRvIHVzZSBBUEkgY2xhc3Nl
cyBpbiBib3RoIFVJIGFuZCBJbmplY3RlZAorICAgICAgICBCdW5kbGUgQVBJcy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OiBSZW1vdmUgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmgu
CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50Ojp+Q29udGV4dE1lbnVDbGllbnQpOgor
ICAgICAgICAoQVBJOjpDb250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51KToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OmN1c3RvbUNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OmNvbnRl
eHRNZW51RGlzbWlzc2VkKToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OnNob3dD
b250ZXh0TWVudSk6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50OjpoaWRlQ29udGV4
dE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplQ29udGV4dE1lbnVDbGllbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oLgorICAgICAgICAoQVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50Ojp+UGFnZUNvbnRleHRNZW51Q2xpZW50KToK
KyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0
Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50OjpwcmVwYXJlRm9yQWN0aW9uTWVudSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAg
ICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21E
ZWZhdWx0SXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudDo6cHJlcGFyZUZvckFjdGlvbk1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0TWVudTo6bWVudUl0ZW1zV2l0aFVzZXJEYXRhKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRs
ZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDb250ZXh0
TWVudUNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudCk6CisKIDIwMTQtMTEtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdmUgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cgZnJvbSBwbGF0Zm9ybSB0byBXZWJLaXQyIGxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDgzMGQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQVBJQ29udGV4dE1lbnVDbGllbnRfaAorI2RlZmluZSBBUElDb250ZXh0TWVudUNsaWVudF9o
CisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1
bHQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIEludFBvaW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkNvbnRleHRN
ZW51SXRlbURhdGE7CitjbGFzcyBXZWJGcmFtZVByb3h5OworY2xhc3MgV2ViUGFnZVByb3h5Owor
fQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
Y29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIC8qIHByb3Bvc2Vk
TWVudSAqLywgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIC8qIGN1c3Rv
bU1lbnUgKi8sIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIEFQSTo6T2Jq
ZWN0KiAvKiB1c2VyRGF0YSAqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25z
dCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dE1lbnVEaXNtaXNzZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhpZGVDb250ZXh0TWVu
dShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmIC8v
IEFQSUNvbnRleHRNZW51Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKaW5kZXggZDczOTQwOC4uZmZkNDY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXS1BhZ2VQ
cml2YXRlLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSUNvbnRleHRN
ZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIkFQSUZpbmRDbGll
bnQuaCIKICNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKQEAgLTc3LDYgKzc4LDEyIEBAIHRl
bXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKICAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQ
YWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdl
VUlDbGllbnRWNT4gVmVyc2lvbnM7CiB9OwogCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCit0
ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNl
PiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjAsIFdL
UGFnZUNvbnRleHRNZW51Q2xpZW50VjEsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjIsIFdLUGFn
ZUNvbnRleHRNZW51Q2xpZW50VjM+IFZlcnNpb25zOworfTsKKyNlbmRpZgorCiB9CiAKIFdLVHlw
ZUlEIFdLUGFnZUdldFR5cGVJRCgpCkBAIC03MTQsNyArNzIxLDk3IEBAIHZvaWQgV0tQYWdlQ291
bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmcsIFdL
RmluZE9wdGlvCiB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxp
emVDb250ZXh0TWVudUNsaWVudCh3a0NsaWVudCk7CisgICAgY2xhc3MgQ29udGV4dE1lbnVDbGll
bnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNl
PiwgcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAg
ZXhwbGljaXQgQ29udGV4dE1lbnVDbGllbnQoY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRC
YXNlKiBjbGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBib29sIGdldENvbnRl
eHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFZlY3RvcjxX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRNZW51VmVjdG9yLCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4mIGN1c3RvbU1lbnUsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRh
dGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJv
cG9zZWRNZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24gPj0gMiAmJiAhbV9jbGllbnQuZ2V0
Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHByb3Bvc2VkTWVu
dUl0ZW1zOworICAgICAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShwcm9wb3NlZE1lbnVWZWN0b3Iuc2l6ZSgpKTsKKworICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBtZW51SXRlbSA6IHByb3Bvc2VkTWVudVZlY3RvcikKKyAgICAgICAgICAgICAgICBw
cm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVh
dGUobWVudUl0ZW0pKTsKKworICAgICAgICAgICAgV0tBcnJheVJlZiBuZXdNZW51ID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24gPj0gMikgeworICAgICAg
ICAgICAgICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiB3ZWJIaXRUZXN0UmVzdWx0ID0gV2Vi
SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKKyAgICAgICAgICAgICAg
ICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodG9BUEkocGFnZSksIHRv
QVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5nZXQo
KSksICZuZXdNZW51LCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShX
VEY6Om1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5nZXQoKSksICZuZXdNZW51LCB0b0FQSSh1c2Vy
RGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisKKyAgICAgICAgICAgIFJlZlB0cjxB
UEk6OkFycmF5PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1wbChuZXdNZW51KSk7CisKKyAgICAgICAg
ICAgIGN1c3RvbU1lbnUuY2xlYXIoKTsKKworICAgICAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBh
cnJheSA/IGFycmF5LT5zaXplKCkgOiAwOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBuZXdTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBXZWJDb250ZXh0TWVudUl0ZW0q
IGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJdGVtPihpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWl0ZW0pIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HKENvbnRleHRNZW51LCAiTmV3
IG1lbnUgZW50cnkgYXQgaW5kZXggJWkgaXMgbm90IGEgV2ViQ29udGV4dE1lbnVJdGVtIiwgKGlu
dClpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBlbmQoKml0ZW0tPmRhdGEoKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYlBhZ2VQcm94
eSogcGFnZSwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbURhdGEpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuY3VzdG9tQ29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCh0b0FQSShwYWdlKSwgdG9BUEkoV2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURhdGEpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVu
dURpc21pc3NlZChXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5jb250ZXh0TWVudURpc21pc3NlZCh0
b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG93Q29udGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mIG1lbnVJdGVtc1ZlY3Rvcikgb3ZlcnJpZGUKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG93Q29udGV4dE1lbnUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
bWVudUl0ZW1zOworICAgICAgICAgICAgbWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bWVudUl0ZW1zVmVjdG9yLnNpemUoKSk7CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
bWVudUl0ZW0gOiBtZW51SXRlbXNWZWN0b3IpCisgICAgICAgICAgICAgICAgbWVudUl0ZW1zLnVu
Y2hlY2tlZEFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShtZW51SXRlbSkpOworCisg
ICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUodG9BUEkocGFnZSksIHRvQVBJKG1l
bnVMb2NhdGlvbiksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUobWVudUl0ZW1z
KSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBoaWRlQ29udGV4dE1l
bnUoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmhpZGVDb250ZXh0TWVudSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIG1fY2xpZW50LmhpZGVDb250ZXh0TWVudSh0b0FQSShwYWdlKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVudUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVu
dUNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZWNlYzIuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVu
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotCi0jaW5jbHVkZSAi
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCi0KLSNpbmNsdWRlICJBUElBcnJheS5oIgotI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKLSNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDb250ZXh0
TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFdlYkNvbnRl
eHRNZW51SXRlbURhdGE+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRh
JiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQotewotICAgIGlmICgh
bV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51ICYmICFtX2NsaWVudC5nZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA+PSAyICYm
ICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBwcm9wb3NlZE1lbnVJ
dGVtczsKLSAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByb3Bv
c2VkTWVudVZlY3Rvci5zaXplKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBtZW51SXRlbSA6
IHByb3Bvc2VkTWVudVZlY3RvcikKLSAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKG1lbnVJdGVtKSk7Ci0KLSAgICBXS0Fy
cmF5UmVmIG5ld01lbnUgPSBudWxscHRyOwotICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24g
Pj0gMikgewotICAgICAgICBSZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3Vs
dCA9IFdlYkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0RGF0YSk7Ci0gICAgICAg
IG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQSShwYWdlKSwgdG9B
UEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLmdldCgp
KSwgJm5ld01lbnUsIHRvQVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0
YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY2xp
ZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHByb3Bvc2Vk
TWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotCi0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gYWRvcHRS
ZWYodG9JbXBsKG5ld01lbnUpKTsKLSAgICAKLSAgICBjdXN0b21NZW51LmNsZWFyKCk7Ci0gICAg
Ci0gICAgc2l6ZV90IG5ld1NpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkgOiAwOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3U2l6ZTsgKytpKSB7Ci0gICAgICAgIFdlYkNvbnRleHRN
ZW51SXRlbSogaXRlbSA9IGFycmF5LT5hdDxXZWJDb250ZXh0TWVudUl0ZW0+KGkpOwotICAgICAg
ICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgICAgIExPRyhDb250ZXh0TWVudSwgIk5ldyBtZW51IGVu
dHJ5IGF0IGluZGV4ICVpIGlzIG5vdCBhIFdlYkNvbnRleHRNZW51SXRlbSIsIChpbnQpaSk7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY3VzdG9t
TWVudS5hcHBlbmQoKml0ZW0tPmRhdGEoKSk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Y3VzdG9tQ29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhJiBpdGVtRGF0YSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8V2ViQ29udGV4dE1lbnVJ
dGVtPiBpdGVtID0gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURhdGEpOwotICAgIG1f
Y2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKHRvQVBJKHBhZ2UpLCB0b0FQSShp
dGVtLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJQYWdl
Q29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51RGlzbWlzc2VkKFdlYlBhZ2VQcm94eSogcGFn
ZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2VkKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgbV9jbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQodG9BUEkocGFn
ZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLWJvb2wgV2ViUGFnZUNvbnRleHRN
ZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mIG1lbnVJdGVtc1ZlY3RvcikKLXsKLSAgICBpZiAoIW1fY2xpZW50LnNob3dDb250
ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBUEk6
Ok9iamVjdD4+IG1lbnVJdGVtczsKLSAgICBtZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtZW51SXRlbXNWZWN0b3Iuc2l6ZSgpKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgbWVudUl0
ZW0gOiBtZW51SXRlbXNWZWN0b3IpCi0gICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQo
V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUobWVudUl0ZW0pKTsKLQotICAgIG1fY2xpZW50LnNo
b3dDb250ZXh0TWVudSh0b0FQSShwYWdlKSwgdG9BUEkobWVudUxvY2F0aW9uKSwgdG9BUEkoQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShtZW51SXRlbXMpKS5nZXQoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQ6OmhpZGVDb250ZXh0TWVudShXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0g
ICAgaWYgKCFtX2NsaWVudC5oaWRlQ29udGV4dE1lbnUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIG1fY2xpZW50LmhpZGVDb250ZXh0TWVudSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWI5NjcxMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnRf
aAotI2RlZmluZSBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnRfaAotCi0jaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCi0KLSNpbmNsdWRlICJBUElDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJIaXRUZXN0
UmVzdWx0LmgiCi0jaW5jbHVkZSAiV0tQYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2lu
dC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiB7Ci0g
ICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjAsIFdLUGFnZUNv
bnRleHRNZW51Q2xpZW50VjEsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjIsIFdLUGFnZUNvbnRl
eHRNZW51Q2xpZW50VjM+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7Ci1jbGFzcyBXZWJQYWdlUHJveHk7Ci0KLWNs
YXNzIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VD
b250ZXh0TWVudUNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICBib29sIGdldENvbnRleHRNZW51
RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+
JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKTsKLSAgICB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKLSAgICB2b2lkIGNvbnRl
eHRNZW51RGlzbWlzc2VkKFdlYlBhZ2VQcm94eSopOwotICAgIGJvb2wgc2hvd0NvbnRleHRNZW51
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+Jik7Ci0gICAgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViUGFn
ZVByb3h5Kik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJM
RShDT05URVhUX01FTlVTKQotI2VuZGlmIC8vIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQzZjBkNmMuLjBm
NmYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJBUElB
cnJheS5oIgorI2luY2x1ZGUgIkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
RmluZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUZvcm1DbGllbnQuaCIKICNpbmNsdWRlICJBUElM
b2FkZXJDbGllbnQuaCIKQEAgLTI2Myw2ICsyNjQsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVp
bgogICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50Pigp
KQogICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCkpCiAg
ICAgLCBtX2ZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCkpCisj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKKyNlbmRpZgogICAgICwgbV9w
cm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgqY29uZmlndXJhdGlvbi5wYWdlR3Jv
dXApCiAgICAgLCBtX3ByZWZlcmVuY2VzKCpjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzKQpAQCAt
NTQxLDkgKzU0NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRNYXRjaGVz
Q2xpZW50KGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZQogfQogCiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRNZW51
Q2xpZW50KGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSogY2xpZW50KQordm9pZCBX
ZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNv
bnRleHRNZW51Q2xpZW50PiBjb250ZXh0TWVudUNsaWVudCkKIHsKLSAgICBtX2NvbnRleHRNZW51
Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7
CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29u
dGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRl
eHRNZW51Q2xpZW50ID0gV1RGOjptb3ZlKGNvbnRleHRNZW51Q2xpZW50KTsKIH0KICNlbmRpZgog
CkBAIC02ODIsNyArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2Zp
bmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKICAgICBtX2Zp
bmRNYXRjaGVzQ2xpZW50LmluaXRpYWxpemUoMCk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgbV9jb250ZXh0TWVudUNsaWVudC5pbml0aWFsaXplKDApOworICAgIG1fY29udGV4dE1l
bnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAj
ZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwg
bV9wYWdlSUQpOwpAQCAtMzc4NCw5ICszNzkzLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludGVy
bmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IEMK
IAogICAgIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YSA9IGNvbnRleHRNZW51Q29udGV4
dERhdGE7CiAKLSAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuaGlkZUNvbnRleHRNZW51KHRo
aXMpICYmIG1fYWN0aXZlQ29udGV4dE1lbnUpIHsKKyAgICBpZiAoIW1fY29udGV4dE1lbnVDbGll
bnQtPmhpZGVDb250ZXh0TWVudSh0aGlzKSAmJiBtX2FjdGl2ZUNvbnRleHRNZW51KSB7CiAgICAg
ICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVudSgpOwotICAgICAgICBtX2Fj
dGl2ZUNvbnRleHRNZW51ID0gMDsKKyAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG51bGxw
dHI7CiAgICAgfQogCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFnZUNsaWVudC5jcmVh
dGVDb250ZXh0TWVudVByb3h5KHRoaXMpOwpAQCAtMzgwNSwyMSArMzgxNCwyMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVM
b2NhdGlvbiwgY29uc3QgQwogICAgICAgICBhc2tDbGllbnRUb0NoYW5nZU1lbnUgPSBmYWxzZTsK
ICNlbmRpZgogCi0gICAgaWYgKGFza0NsaWVudFRvQ2hhbmdlTWVudSAmJiBtX2NvbnRleHRNZW51
Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3NlZEl0ZW1z
LCBpdGVtcywgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCB1
c2VyRGF0YS5nZXQoKSkpCisgICAgaWYgKGFza0NsaWVudFRvQ2hhbmdlTWVudSAmJiBtX2NvbnRl
eHRNZW51Q2xpZW50LT5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9z
ZWRJdGVtcywgaXRlbXMsIGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERh
dGEoKSwgdXNlckRhdGEuZ2V0KCkpKQogICAgICAgICB1c2VQcm9wb3NlZEl0ZW1zID0gZmFsc2U7
CiAKICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zVG9TaG93
ID0gdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkSXRlbXMgOiBpdGVtczsKLSAgICBpZiAoIW1f
Y29udGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRNZW51KHRoaXMsIG1lbnVMb2NhdGlvbiwgaXRl
bXNUb1Nob3cpKQorICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC0+c2hvd0NvbnRleHRNZW51
KHRoaXMsIG1lbnVMb2NhdGlvbiwgaXRlbXNUb1Nob3cpKQogICAgICAgICBtX2FjdGl2ZUNvbnRl
eHRNZW51LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtc1RvU2hvdywgY29udGV4
dE1lbnVDb250ZXh0RGF0YSk7CiAKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50LmNvbnRleHRNZW51
RGlzbWlzc2VkKHRoaXMpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQtPmNvbnRleHRNZW51RGlz
bWlzc2VkKHRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKIHsKICAgICAvLyBBcHBs
aWNhdGlvbiBjdXN0b20gaXRlbXMgZG9uJ3QgbmVlZCB0byByb3VuZC10cmlwIHRocm91Z2ggdG8g
V2ViQ29yZSBpbiB0aGUgV2ViUHJvY2Vzcy4KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA+PSBDb250
ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpIHsKLSAgICAgICAgbV9jb250ZXh0TWVudUNs
aWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCh0aGlzLCBpdGVtKTsKKyAgICAgICAg
bV9jb250ZXh0TWVudUNsaWVudC0+Y3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQodGhpcywg
aXRlbSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCAzMDdkOGNiLi5mMTQ4YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRmluZENsaWVudC5oIgogI2luY2x1ZGUg
IldlYkZyYW1lUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJl
ZmVyZW5jZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPiAv
LyBGSVhNRTogTmVlZGVkIGJ5IFdlYlBhZ2VQcm94eU1lc3NhZ2VzLmggZm9yIERJQ1RBVElPTl9B
TFRFUk5BVElWRVMuCkBAIC0xMDUsNiArMTA0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgQVBJ
IHsKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgRmluZENsaWVudDsKIGNsYXNzIEZv
cm1DbGllbnQ7CiBjbGFzcyBMb2FkZXJDbGllbnQ7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB2b2lkIGluaXRpYWxp
emVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqKTsK
KyAgICB2b2lkIHNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRl
eHRNZW51Q2xpZW50Pik7CiAjZW5kaWYKICAgICBBUEk6OkZpbmRDbGllbnQmIGZpbmRDbGllbnQo
KSB7IHJldHVybiAqbV9maW5kQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRGaW5kQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+KTsKQEAgLTEzMzYsNyArMTMzNiw3IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4gbV9maW5kQ2xpZW50Owog
ICAgIFdlYkZpbmRNYXRjaGVzQ2xpZW50IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCi0gICAgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50IG1fY29udGV4dE1l
bnVDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+IG1f
Y29udGV4dE1lbnVDbGllbnQ7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5n
QXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc4YTYxZGUuLmM4NWE3NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc0
LDYgKzc0LDcgQEAKIAkJMDBCOTY2MTYxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE1
MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi87IH07CiAJCTAwQjk2NjE5MThF
MjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGll
bnQubW0gKi87IH07CiAJCTAwQjk2NjFBMThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxODE4
RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oICovOyB9OworCQkwNzZFODg0RTFBMTNDQURG
MDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElD
b250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkwRjBDMzY1ODE4QzA1MUJBMDBGNjA3RDcgLyog
UmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRy
ZWVIb3N0SU9TLm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBGNjA3RDcgLyogTGF5ZXJS
ZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCAq
LzsgfTsKIAkJMEYwQzM2NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBDMzY1QjE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTg3OSw4ICs4ODAsNiBAQAogCQk1MTRCREVEMzE2
Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBT
dGF0aXN0aWNzUmVxdWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyog
U2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVy
LmggKi87IH07CiAJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRE
OUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1tICovOyB9OwotCQk1
MTUzNTY5QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTM1NjlBMTI5
MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovOyB9OwotCQk1
MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTUzNTY5QjEyOTFC
MUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTUxNTc4
QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0
YS5oICovOyB9OwogCQk1MTVFNzcyNzE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI1
MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovOyB9OwogCQk1MTVFNzcyODE4
M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNS
ZXF1ZXN0LmggKi87IH07CkBAIC0yMDI3LDYgKzIwMjYsOCBAQAogCQkwMEI5NjYxNTE4RTI0Q0JB
MDBDRTFGODggLyogQVBJRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjk2
NjE3MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc2RTg4NEYxQTEzQ0JDNjAw
NUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjdENkE1RkU4NDAz
MDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBLaXQu
ZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMDg5QzE2NjdGRTg0MTE1OEMw
MkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBF
bmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQzM2NTcxOEMwNTFCQTAwRjYwN0Q3IC8qIFJlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOyBwYXRoID0gaW9zL1JlbW90ZUxheWVyVHJlZUhv
c3RJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI4LDggKzI5MjksNiBA
QAogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc1JlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZp
Y2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNl
c0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTYxOTEx
OUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250
ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTU3OEI4MjEyMDlFQ0VGMDBBMzdD
NEEgLyogQVBJRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElEYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3NzI1MTgzREQ2RjYwMDA3MjAz
RiAvKiBBc3luY1JlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXN5bmNSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1RTc3
MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBc3luY1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU5MzEsOCArNTkzMCw2IEBACiAJCQkJNzU1NDIyQkYxODA2MkJFNDAwNDZGNkE4IC8qIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQk3NTU0MjJCRTE4MDYyQkU0MDA0NkY2
QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJNzU1NDIyQzAxODA2
MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8s
Ci0JCQkJNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVu
dC5jcHAgKi8sCi0JCQkJNTE1MzU2OUIxMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0
TWVudUNsaWVudC5oICovLAogCQkJCUJDN0I2MjA1MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdl
R3JvdXAuY3BwICovLAogCQkJCUJDN0I2MjA0MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3Jv
dXAuaCAqLywKIAkJCQlCQzExMUIwQjExMkY1RTRGMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5LmNw
cCAqLywKQEAgLTU5NzAsNiArNTk2Nyw3IEBACiAJCQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZB
IC8qIEFQSVNlc3Npb25TdGF0ZS5jcHAgKi8sCiAJCQkJMUFGREU2NjAxOTU0RTlCMTAwQzQ4RkZB
IC8qIEFQSVNlc3Npb25TdGF0ZS5oICovLAogCQkJCTFBNEQ2NjQ3MThBMkQ5MUEwMEQ4MkUyMSAv
KiBBUElVSUNsaWVudC5oICovLAorCQkJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElD
b250ZXh0TWVudUNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBBUEk7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNjI2NSw2ICs2MjYzLDcgQEAKIAkJQkMyMDRFRTcxMUM4M0VB
RDAwOEYzMzc1IC8qIEFQSSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJMUYwMTgxNjgxODU4REMxNTAwRjkyODg0IC8q
IENvY29hICovLAogCQkJCUJDMjA0RUU4MTFDODNFQjcwMDhGMzM3NSAvKiBjICovLAogCQkJCUJD
OTg5RDQ1MTYxODE2OTEwMDBENDZEMyAvKiBtYWMgKi8sCkBAIC03NjI5LDcgKzc2MjgsNiBAQAog
CQkJCUJDODU3Rjg1MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREZFQTQxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDhG
MTBGNDM3QTAwMDU4QzE1QSAvKiBXZWJQYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTUzNTY5
RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzRjg4OUQxNTE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdCNjIwNjEyOUEwQTY3MDBEMTc0
QTQgLyogV2ViUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdCNjI1MjEyQTQzQzk2
MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzEzLDYg
Kzc3MTEsNyBAQAogCQkJCTBGRjI0QTJFMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzE3
MTI0RUJEMTMwMDQ4RDEzQyAvKiBXS0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDVFQkJC
MTc0NkE4M0UwMDBDMUM0NSAvKiBXS0Jhc2VNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3NkU4
ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNCQUFDNzQxNDRFNjFBNTAwNTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzg4QTA1QzE0NzQzQzkwMDA2
MzE5RTUgLyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLywKQEAgLTkzMDgsNyArOTMwNyw2IEBACiAJCQkJQkM4NTdGN0Ux
MkI4MkNFRTAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM5NjNENkIxMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNDkxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQWN0aW9u
U2hlZXQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MTUzNTY5QzEyOTFCMUQyMDAwNzQ5REMgLyog
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwNkM2MDk1
MTI0QzE0NEIwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUM1OUM0QTU4MThCODExNzQwMDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjIwNzEyOUEwQTY3MDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgzNmQ4YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQSUluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50X2gKKyNkZWZpbmUgQVBJSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnRfaAorCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENv
bnRleHRNZW51SXRlbTsKK2NsYXNzIEhpdFRlc3RSZXN1bHQ7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkZyYW1lOworY2xh
c3MgV2ViUGFnZTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworfQorCituYW1lc3BhY2UgQVBJ
IHsKK2NsYXNzIE9iamVjdDsKKworbmFtZXNwYWNlIEluamVjdGVkQnVuZGxlIHsKKworY2xhc3Mg
UGFnZUNvbnRleHRNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QYWdlQ29udGV4
dE1lbnVDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBnZXRDdXN0b21NZW51RnJvbURl
ZmF1bHRJdGVtcyhXZWJLaXQ6OldlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4mIC8qIGRlZmF1bHRNZW51
ICovLCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgLyogbmV3TWVudSAq
LywgUmVmUHRyPEFQSTo6T2JqZWN0PiYgLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JBY3Rpb25NZW51KFdlYktpdDo6V2ViUGFnZSos
IGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiAvKiB1
c2VyRGF0YSAqLykgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbmplY3RlZEJ1bmRsZQorCit9
IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2Vu
ZGlmIC8vIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBjNmU2ZTVhLi40NGZiYTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFn
ZUdldFR5cGVJRCgpCiB2b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIHdr
Q2xpZW50KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHRvSW1wbChwYWdlUmVm
KS0+aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQod2tDbGllbnQpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0Ns
aWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BB
UkFNKHdrQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VD
b250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggMGEzYzI3NC4uYWZhZDNhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKQEAg
LTQxLDE5ICs0MSwyNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1
c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqIHBhZ2UsIEluamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+JiBkZWZhdWx0TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBuZXdN
ZW51LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKK0luamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudChjb25z
dCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIGNsaWVudCkKK3sKKyAgICBpbml0
aWFsaXplKGNsaWVudCk7Cit9CisKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0
IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0
ZW0+JiBwcm9wb3NlZE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3TWVu
dSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5n
ZXRDb250ZXh0TWVudUZyb21EZWZhdWx0TWVudSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRlZmF1bHRNZW51ID0ga2l0SXRlbXMo
cHJvcG9zZWRNZW51KTsKICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGVmYXVsdE1l
bnVJdGVtczsKICAgICBkZWZhdWx0TWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGVm
YXVsdE1lbnUuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBkZWZhdWx0TWVu
dSkKICAgICAgICAgZGVmYXVsdE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29udGV4dE1l
bnVJdGVtOjpjcmVhdGUoaXRlbSkpOwogCi0gICAgV0tBcnJheVJlZiBuZXdNZW51V0sgPSAwOwot
ICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZ2V0Q29udGV4
dE1lbnVGcm9tRGVmYXVsdE1lbnUodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQpLCB0
b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKGRlZmF1bHRNZW51SXRlbXMpKS5nZXQo
KSksICZuZXdNZW51V0ssICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICBXS0FycmF5UmVmIG5ld01lbnVXSyA9IG51bGxwdHI7CisgICAgV0tUeXBlUmVmIHVz
ZXJEYXRhVG9QYXNzID0gbnVsbHB0cjsKKyAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21E
ZWZhdWx0TWVudSh0b0FQSShwYWdlKSwgdG9BUEkoSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
OjpjcmVhdGUoaGl0VGVzdFJlc3VsdCkuZ2V0KCkpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUo
V1RGOjptb3ZlKGRlZmF1bHRNZW51SXRlbXMpKS5nZXQoKSksICZuZXdNZW51V0ssICZ1c2VyRGF0
YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICBSZWZQdHI8QVBJOjpBcnJh
eT4gYXJyYXkgPSBhZG9wdFJlZih0b0ltcGwobmV3TWVudVdLKSk7CiAgICAgdXNlckRhdGEgPSBh
ZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKICAgICAKQEAgLTc2LDEzICs4MiwxMyBA
QCBib29sIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51
RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpwcmVwYXJlRm9yQWN0aW9uTWVudShX
ZWJQYWdlKiBwYWdlLCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQs
IFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VD
b250ZXh0TWVudUNsaWVudDo6cHJlcGFyZUZvckFjdGlvbk1lbnUoV2ViUGFnZSogcGFnZSwgY29u
c3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNl
ckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5wcmVwYXJlRm9yQWN0aW9uTWVudSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gbnVsbHB0cjsKLSAg
ICBtX2NsaWVudC5wcmVwYXJlRm9yQWN0aW9uTWVudSh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVz
dFJlc3VsdCksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICBtX2NsaWVudC5wcmVwYXJlRm9yQWN0aW9uTWVudSh0b0FQSShwYWdlKSwgdG9BUEkoSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdCkuZ2V0KCkpLCAmdXNl
ckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgdXNlckRhdGEgPSBh
ZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGU0YWE5OWMuLmZj
YWM2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50LmgKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
IAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKQEAgLTQx
LDE5ICs0MSwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnRCYXNlPiB7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IENvbnRleHRNZW51OworY2xhc3MgQ29udGV4dE1lbnVJdGVtOworY2xhc3MgSGl0VGVzdFJlc3Vs
dDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIEluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdDsKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CiBjbGFzcyBXZWJQYWdlOwog
Ci1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBBUEk6
OkNsaWVudDxXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2U+IHsKK2NsYXNzIEluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgotICAgIGJvb2wgZ2V0Q3VzdG9tTWVu
dUZyb21EZWZhdWx0SXRlbXMoV2ViUGFnZSosIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCos
IGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgZGVmYXVsdE1lbnUsIFZlY3Rv
cjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3TWVudSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYg
dXNlckRhdGEpOwotICAgIHZvaWQgcHJlcGFyZUZvckFjdGlvbk1lbnUoV2ViUGFnZSosIEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKTsK
KyAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudChjb25zdCBX
S0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqKTsKKworcHJpdmF0ZToKKyAgICBib29s
IGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4mIGRl
ZmF1bHRNZW51LCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG5ld01lbnUsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKSBvdmVycmlkZTsKKyAgICB2b2lkIHByZXBhcmVGb3JB
Y3Rpb25NZW51KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
bnRleHRNZW51LmNwcAppbmRleCAyOGNkMzRkLi5mNDY1YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKQEAgLTI2LDEw
ICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKIAogI2luY2x1ZGUgIkNvbnRl
eHRNZW51Q29udGV4dERhdGEuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3Vs
dC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KQEAgLTkyLDEyICs5MCw5IEBA
IHZvaWQgV2ViQ29udGV4dE1lbnU6Om1lbnVJdGVtc1dpdGhVc2VyRGF0YShWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4gJm1lbnVJCiAgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29y
ZUl0ZW1zID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24o
KSk7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBwcm9wb3Nl
ZE1lbnUgPSBraXRJdGVtcyhjb3JlSXRlbXMpOwotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiBuZXdNZW51OwotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+
IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShjb250
cm9sbGVyLmhpdFRlc3RSZXN1bHQoKSk7Ci0gICAgaWYgKG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVD
b250ZXh0TWVudUNsaWVudCgpLmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKG1fcGFnZSwg
aGl0VGVzdFJlc3VsdC5nZXQoKSwgcHJvcG9zZWRNZW51LCBuZXdNZW51LCB1c2VyRGF0YSkpCi0g
ICAgICAgIHByb3Bvc2VkTWVudSA9IG5ld01lbnU7Ci0gICAgbWVudUl0ZW1zID0gcHJvcG9zZWRN
ZW51OworICAgIGlmIChtX3BhZ2UtPmluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKS5n
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhtX3BhZ2UsIGNvbnRyb2xsZXIuaGl0VGVzdFJl
c3VsdCgpLCBjb3JlSXRlbXMsIG1lbnVJdGVtcywgdXNlckRhdGEpKQorICAgICAgICByZXR1cm47
CisgICAgbWVudUl0ZW1zID0ga2l0SXRlbXMoY29yZUl0ZW1zKTsKIH0KIAogVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRNZW51OjppdGVtcygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggN2U4MDU1MC4u
ZDg5Y2M0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMjcyLDYgKzI3Miw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV9h
Y2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRN
ZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVk
aWFUaW1lckZpcmVkKQorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgICwgbV9jb250ZXh0
TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250
ZXh0TWVudUNsaWVudD4oKSkKKyNlbmRpZgogICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKICAgICAsIG1fdWlDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkp
CiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKHRoaXMpCkBAIC01NTksOSArNTYyLDE0IEBAIHVpbnQ2
NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkKIH0KIAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQotdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVD
b250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIGNsaWVu
dCkKK3ZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiBj
b250ZXh0TWVudUNsaWVudCkKIHsKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUo
Y2xpZW50KTsKKyAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7CisgICAgICAgIG1fY29udGV4
dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VD
b250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29u
dGV4dE1lbnVDbGllbnQgPSBXVEY6Om1vdmUoY29udGV4dE1lbnVDbGllbnQpOwogfQogI2VuZGlm
CiAKQEAgLTk2Niw3ICs5NzQsNyBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKICNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNsaWVudC5pbml0aWFs
aXplKDApOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRpZgogICAgIG1f
ZWRpdG9yQ2xpZW50LmluaXRpYWxpemUoMCk7CiAgICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWI3MjcxOC4uZGY2ZTAyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBhZ2VfaAogCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5k
bGVGb3JtQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCIKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkZpbmRDb250cm9sbGVyLmgiCkBAIC0y
NzgsNyArMjc5LDcgQEAgcHVibGljOgogCiAgICAgLy8gLS0gSW5qZWN0ZWRCdW5kbGUgbWV0aG9k
cwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlQ29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNl
Kik7CisgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KTsKICNl
bmRpZgogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KFdLQnVu
ZGxlUGFnZUVkaXRvckNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlRm9y
bUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4p
OwpAQCAtMjkyLDcgKzI5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3Rl
ZEJ1bmRsZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLQnVuZGxlUGFnZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50QmFzZSopOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQmIGluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVD
bGllbnQoKSB7IHJldHVybiBtX2NvbnRleHRNZW51Q2xpZW50OyB9CisgICAgQVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50JiBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51
Q2xpZW50KCkgeyByZXR1cm4gKm1fY29udGV4dE1lbnVDbGllbnQuZ2V0KCk7IH0KICNlbmRpZgog
ICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCYgaW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQogICAgIEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkZvcm1DbGllbnQmIGluamVjdGVkQnVuZGxlRm9ybUNsaWVudCgpIHsgcmV0dXJuICptX2Zv
cm1DbGllbnQuZ2V0KCk7IH0KQEAgLTExNTQsNyArMTE1NSw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBtX3dpbmRvd1Jlc2l6ZXJTaXplOwogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCi0gICAgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgbV9jb250ZXh0
TWVudUNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUNvbnRleHRNZW51Q2xpZW50PiBtX2NvbnRleHRNZW51Q2xpZW50OwogI2VuZGlmCiAgICAgSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50IG1fZWRpdG9yQ2xpZW50OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PiBtX2Zvcm1DbGllbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241474</attachid>
            <date>2014-11-12 23:10:32 -0800</date>
            <delta_ts>2015-01-05 05:30:11 -0800</delta_ts>
            <desc>Try to fix mac build</desc>
            <filename>wk2-api-context-menu-client.diff</filename>
            <type>text/plain</type>
            <size>48346</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZGUwYjVlZi4uMTI3OWFkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTMzNyw3ICszMzcsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkuY3BwCi0gICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5j
cHAKICAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDhmNTA3MTcuLjVjNWI0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxNC0xMS0x
MiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjYXJsb3NAQ2FybG9zcy1NYWMubG9jYWw+CisKKyAg
ICAgICAgQWRkIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgYW5kIEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VDb250ZXh0TWVudUNsaWVudCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg0NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIENvbnRleHRNZW51Q2xpZW50IHRvIHVzZSBBUEkg
Y2xhc3NlcyBpbiBib3RoIFVJIGFuZCBJbmplY3RlZAorICAgICAgICBCdW5kbGUgQVBJcy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBSZW1vdmUgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
LmNwcC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmguCisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50Ojp+Q29udGV4dE1lbnVDbGll
bnQpOgorICAgICAgICAoQVBJOjpDb250ZXh0TWVudUNsaWVudDo6Z2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51KToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OmN1c3RvbUNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6
OmNvbnRleHRNZW51RGlzbWlzc2VkKToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6
OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50OjpoaWRl
Q29udGV4dE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAg
ICAgICAoV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRN
ZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppbml0aWFsaXplQ29udGV4dE1lbnVDbGllbnQp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBkZWxldGVkIGZpbGVz
IGFuZCBhZGQKKyAgICAgICAgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaC4KKyAgICAgICAg
KEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudDo6flBhZ2VDb250ZXh0
TWVudUNsaWVudCk6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1l
bnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudDo6cHJlcGFyZUZvckFjdGlvbk1l
bnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1
c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6OnByZXBhcmVGb3JBY3Rpb25NZW51KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6Om1lbnVJdGVtc1dpdGhVc2VyRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlQ29udGV4dE1lbnVDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmluamVjdGVkQnVu
ZGxlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1l
bnVIaXRUZXN0QXRMb2NhdGlvbik6CisKIDIwMTQtMTEtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdmUgUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3cgZnJvbSBwbGF0Zm9ybSB0byBXZWJLaXQyIGxheWVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgzMGQ5ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQVBJQ29udGV4dE1lbnVDbGllbnRfaAorI2RlZmluZSBBUElDb250ZXh0
TWVudUNsaWVudF9oCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIldl
YkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEludFBvaW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJGcmFtZVByb3h5OworY2xhc3MgV2Vi
UGFnZVByb3h5OworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgQ29udGV4dE1lbnVDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IC8qIHByb3Bvc2VkTWVudSAqLywgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4mIC8qIGN1c3RvbU1lbnUgKi8sIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0
YSYsIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBjb25zdCBXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEaXNtaXNzZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5
KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhp
ZGVDb250ZXh0TWVudShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgcmV0dXJuIGZhbHNlOyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVT
KQorI2VuZGlmIC8vIEFQSUNvbnRleHRNZW51Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggZDczOTQwOC4uZmZkNDY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJXS1BhZ2VQcml2YXRlLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUg
IkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUg
IkFQSUZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKQEAgLTc3LDYg
Kzc4LDEyIEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJh
c2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlD
bGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGll
bnRWNCwgV0tQYWdlVUlDbGllbnRWNT4gVmVyc2lvbnM7CiB9OwogCisjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1l
bnVDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUNvbnRleHRNZW51
Q2xpZW50VjAsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjEsIFdLUGFnZUNvbnRleHRNZW51Q2xp
ZW50VjIsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjM+IFZlcnNpb25zOworfTsKKyNlbmRpZgor
CiB9CiAKIFdLVHlwZUlEIFdLUGFnZUdldFR5cGVJRCgpCkBAIC03MTQsNyArNzIxLDk3IEBAIHZv
aWQgV0tQYWdlQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBzdHJpbmcsIFdLRmluZE9wdGlvCiB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3
a0NsaWVudCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0ltcGwocGFnZVJl
ZiktPmluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudCh3a0NsaWVudCk7CisgICAgY2xhc3MgQ29u
dGV4dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlQ29udGV4dE1l
bnVDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVDbGllbnQoY29uc3QgV0tQYWdlQ29udGV4
dE1lbnVDbGllbnRCYXNlKiBjbGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxp
emUoY2xpZW50KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBi
b29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRNZW51VmVjdG9yLCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGN1c3RvbU1lbnUsIGNvbnN0IFdlYkhpdFRl
c3RSZXN1bHQ6OkRhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
IG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4
dE1lbnVGcm9tUHJvcG9zZWRNZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnVfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24gPj0gMiAmJiAh
bV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IHByb3Bvc2VkTWVudUl0ZW1zOworICAgICAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShwcm9wb3NlZE1lbnVWZWN0b3Iuc2l6ZSgpKTsKKworICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBtZW51SXRlbSA6IHByb3Bvc2VkTWVudVZlY3RvcikKKyAgICAg
ICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29udGV4dE1l
bnVJdGVtOjpjcmVhdGUobWVudUl0ZW0pKTsKKworICAgICAgICAgICAgV0tBcnJheVJlZiBuZXdN
ZW51ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24gPj0g
MikgeworICAgICAgICAgICAgICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiB3ZWJIaXRUZXN0
UmVzdWx0ID0gV2ViSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKKyAg
ICAgICAgICAgICAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodG9B
UEkocGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUocHJvcG9zZWRNZW51
SXRlbXMpKS5nZXQoKSksICZuZXdNZW51LCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKEFQSTo6QXJy
YXk6OmNyZWF0ZShXVEY6Om1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5nZXQoKSksICZuZXdNZW51
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisKKyAgICAgICAg
ICAgIFJlZlB0cjxBUEk6OkFycmF5PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1wbChuZXdNZW51KSk7
CisKKyAgICAgICAgICAgIGN1c3RvbU1lbnUuY2xlYXIoKTsKKworICAgICAgICAgICAgc2l6ZV90
IG5ld1NpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkgOiAwOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBuZXdTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBXZWJDb250
ZXh0TWVudUl0ZW0qIGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJdGVtPihpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HKENvbnRl
eHRNZW51LCAiTmV3IG1lbnUgZW50cnkgYXQgaW5kZXggJWkgaXMgbm90IGEgV2ViQ29udGV4dE1l
bnVJdGVtIiwgKGludClpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBlbmQoKml0ZW0tPmRh
dGEoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbURh
dGEpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuY3VzdG9t
Q29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBtX2NsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCh0b0FQSShwYWdl
KSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURhdGEpLmdldCgpKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjb250ZXh0TWVudURpc21pc3NlZChXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5jb250ZXh0TWVu
dURpc21pc3NlZCh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG93Q29udGV4dE1lbnUoV2ViUGFnZVByb3h5
KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG1lbnVJdGVtc1ZlY3Rvcikgb3ZlcnJpZGUKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG93Q29udGV4dE1lbnUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFQ
STo6T2JqZWN0Pj4gbWVudUl0ZW1zOworICAgICAgICAgICAgbWVudUl0ZW1zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobWVudUl0ZW1zVmVjdG9yLnNpemUoKSk7CisKKyAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgbWVudUl0ZW0gOiBtZW51SXRlbXNWZWN0b3IpCisgICAgICAgICAgICAgICAg
bWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShtZW51
SXRlbSkpOworCisgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUodG9BUEkocGFn
ZSksIHRvQVBJKG1lbnVMb2NhdGlvbiksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1v
dmUobWVudUl0ZW1zKSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBo
aWRlQ29udGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmhpZGVDb250ZXh0TWVudSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIG1fY2xpZW50LmhpZGVDb250ZXh0TWVudSh0
b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRD
b250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0Ns
aWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BB
UkFNKHdrQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VDb250ZXh0TWVudUNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFh
ZWNlYzIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250
ZXh0TWVudUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQot
Ci0jaW5jbHVkZSAiV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCi0KLSNpbmNsdWRlICJBUElB
cnJheS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0
ZW0uaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3Qu
aCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
OjpnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25z
dCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0
UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQot
ewotICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51ICYmICFt
X2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1fY2xpZW50LmJhc2UudmVy
c2lvbiA+PSAyICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBw
cm9wb3NlZE1lbnVJdGVtczsKLSAgICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRv
JiBtZW51SXRlbSA6IHByb3Bvc2VkTWVudVZlY3RvcikKLSAgICAgICAgcHJvcG9zZWRNZW51SXRl
bXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKG1lbnVJdGVtKSk7
Ci0KLSAgICBXS0FycmF5UmVmIG5ld01lbnUgPSBudWxscHRyOwotICAgIGlmIChtX2NsaWVudC5i
YXNlLnZlcnNpb24gPj0gMikgewotICAgICAgICBSZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4gd2Vi
SGl0VGVzdFJlc3VsdCA9IFdlYkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0RGF0
YSk7Ci0gICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQ
SShwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShwcm9wb3NlZE1lbnVJ
dGVtcykpLmdldCgpKSwgJm5ld01lbnUsIHRvQVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0
b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjpt
b3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudSwgdG9BUEkodXNlckRhdGEp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFy
cmF5ID0gYWRvcHRSZWYodG9JbXBsKG5ld01lbnUpKTsKLSAgICAKLSAgICBjdXN0b21NZW51LmNs
ZWFyKCk7Ci0gICAgCi0gICAgc2l6ZV90IG5ld1NpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkg
OiAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3U2l6ZTsgKytpKSB7Ci0gICAgICAg
IFdlYkNvbnRleHRNZW51SXRlbSogaXRlbSA9IGFycmF5LT5hdDxXZWJDb250ZXh0TWVudUl0ZW0+
KGkpOwotICAgICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgICAgIExPRyhDb250ZXh0TWVudSwg
Ik5ldyBtZW51IGVudHJ5IGF0IGluZGV4ICVpIGlzIG5vdCBhIFdlYkNvbnRleHRNZW51SXRlbSIs
IChpbnQpaSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgY3VzdG9tTWVudS5hcHBlbmQoKml0ZW0tPmRhdGEoKSk7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Y3VzdG9t
Q29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb250
ZXh0TWVudUl0ZW1EYXRhJiBpdGVtRGF0YSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmN1c3RvbUNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8V2Vi
Q29udGV4dE1lbnVJdGVtPiBpdGVtID0gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURh
dGEpOwotICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKHRvQVBJKHBh
Z2UpLCB0b0FQSShpdGVtLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQot
dm9pZCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51RGlzbWlzc2VkKFdlYlBh
Z2VQcm94eSogcGFnZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2Vk
KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9jbGllbnQuY29udGV4dE1lbnVEaXNtaXNz
ZWQodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLWJvb2wgV2Vi
UGFnZUNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdl
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mIG1lbnVJdGVtc1ZlY3RvcikKLXsKLSAgICBpZiAoIW1fY2xp
ZW50LnNob3dDb250ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IG1lbnVJdGVtczsKLSAgICBtZW51SXRlbXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtZW51SXRlbXNWZWN0b3Iuc2l6ZSgpKTsKLQotICAgIGZvciAoY29uc3Qg
YXV0byYgbWVudUl0ZW0gOiBtZW51SXRlbXNWZWN0b3IpCi0gICAgICAgIG1lbnVJdGVtcy51bmNo
ZWNrZWRBcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUobWVudUl0ZW0pKTsKLQotICAg
IG1fY2xpZW50LnNob3dDb250ZXh0TWVudSh0b0FQSShwYWdlKSwgdG9BUEkobWVudUxvY2F0aW9u
KSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShtZW51SXRlbXMpKS5nZXQoKSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmhpZGVDb250ZXh0TWVudShXZWJQYWdlUHJveHkq
IHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5oaWRlQ29udGV4dE1lbnUpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIG1fY2xpZW50LmhpZGVDb250ZXh0TWVudSh0b0FQSShwYWdlKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI5NjcxMi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJQYWdlQ29udGV4
dE1lbnVDbGllbnRfaAotI2RlZmluZSBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnRfaAotCi0jaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCi0KLSNpbmNsdWRlICJBUElDbGllbnQuaCIKLSNpbmNsdWRl
ICJXZWJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiV0tQYWdlLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9JbnRQb2ludC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEFQ
SSB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVDbGll
bnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUNvbnRleHRNZW51Q2xpZW50
VjAsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjEsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjIs
IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjM+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7Ci1jbGFzcyBXZWJQYWdl
UHJveHk7Ci0KLWNsYXNzIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBBUEk6OkNs
aWVudDxXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICBib29sIGdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudSwgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhKTsKLSAgICB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKLSAg
ICB2b2lkIGNvbnRleHRNZW51RGlzbWlzc2VkKFdlYlBhZ2VQcm94eSopOwotICAgIGJvb2wgc2hv
d0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7Ci0gICAgYm9vbCBoaWRlQ29udGV4
dE1lbnUoV2ViUGFnZVByb3h5Kik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQotI2VuZGlmIC8vIFdlYlBhZ2VDb250ZXh0TWVu
dUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDQzZjBkNmMuLjBmNmYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKICNp
bmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCiAj
aW5jbHVkZSAiQVBJRmluZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUZvcm1DbGllbnQuaCIKICNp
bmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKQEAgLTI2Myw2ICsyNjQsOSBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIHVpbgogICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpG
b3JtQ2xpZW50PigpKQogICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlD
bGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRD
bGllbnQ+KCkpCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgLCBtX2NvbnRleHRNZW51
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKKyNlbmRp
ZgogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgqY29uZmlndXJh
dGlvbi5wYWdlR3JvdXApCiAgICAgLCBtX3ByZWZlcmVuY2VzKCpjb25maWd1cmF0aW9uLnByZWZl
cmVuY2VzKQpAQCAtNTQxLDkgKzU0NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6
ZUZpbmRNYXRjaGVzQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZQogfQog
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6
ZUNvbnRleHRNZW51Q2xpZW50KGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSogY2xp
ZW50KQordm9pZCBXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiBjb250ZXh0TWVudUNsaWVudCkKIHsKLSAgICBt
X2NvbnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWNvbnRleHRN
ZW51Q2xpZW50KSB7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gV1RGOjptb3ZlKGNvbnRleHRNZW51Q2xpZW50KTsK
IH0KICNlbmRpZgogCkBAIC02ODIsNyArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3Nl
KCkKICAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4o
KTsKICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50LmluaXRpYWxpemUoMCk7CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNsaWVudC5pbml0aWFsaXplKDApOworICAg
IG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVD
bGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOwpAQCAtMzc4NCw5ICszNzkzLDkgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRp
b24sIGNvbnN0IEMKIAogICAgIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YSA9IGNvbnRl
eHRNZW51Q29udGV4dERhdGE7CiAKLSAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuaGlkZUNv
bnRleHRNZW51KHRoaXMpICYmIG1fYWN0aXZlQ29udGV4dE1lbnUpIHsKKyAgICBpZiAoIW1fY29u
dGV4dE1lbnVDbGllbnQtPmhpZGVDb250ZXh0TWVudSh0aGlzKSAmJiBtX2FjdGl2ZUNvbnRleHRN
ZW51KSB7CiAgICAgICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVudSgpOwot
ICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0gMDsKKyAgICAgICAgbV9hY3RpdmVDb250ZXh0
TWVudSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFn
ZUNsaWVudC5jcmVhdGVDb250ZXh0TWVudVByb3h5KHRoaXMpOwpAQCAtMzgwNSwyMSArMzgxNCwy
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50
UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQwogICAgICAgICBhc2tDbGllbnRUb0NoYW5nZU1l
bnUgPSBmYWxzZTsKICNlbmRpZgogCi0gICAgaWYgKGFza0NsaWVudFRvQ2hhbmdlTWVudSAmJiBt
X2NvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBw
cm9wb3NlZEl0ZW1zLCBpdGVtcywgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpLCB1c2VyRGF0YS5nZXQoKSkpCisgICAgaWYgKGFza0NsaWVudFRvQ2hhbmdlTWVu
dSAmJiBtX2NvbnRleHRNZW51Q2xpZW50LT5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUo
dGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0
VGVzdFJlc3VsdERhdGEoKSwgdXNlckRhdGEuZ2V0KCkpKQogICAgICAgICB1c2VQcm9wb3NlZEl0
ZW1zID0gZmFsc2U7CiAKICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IGl0ZW1zVG9TaG93ID0gdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkSXRlbXMgOiBpdGVtczsK
LSAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRNZW51KHRoaXMsIG1lbnVM
b2NhdGlvbiwgaXRlbXNUb1Nob3cpKQorICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC0+c2hv
d0NvbnRleHRNZW51KHRoaXMsIG1lbnVMb2NhdGlvbiwgaXRlbXNUb1Nob3cpKQogICAgICAgICBt
X2FjdGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtc1Rv
U2hvdywgY29udGV4dE1lbnVDb250ZXh0RGF0YSk7CiAKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50
LmNvbnRleHRNZW51RGlzbWlzc2VkKHRoaXMpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQtPmNv
bnRleHRNZW51RGlzbWlzc2VkKHRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKIHsK
ICAgICAvLyBBcHBsaWNhdGlvbiBjdXN0b20gaXRlbXMgZG9uJ3QgbmVlZCB0byByb3VuZC10cmlw
IHRocm91Z2ggdG8gV2ViQ29yZSBpbiB0aGUgV2ViUHJvY2Vzcy4KICAgICBpZiAoaXRlbS5hY3Rp
b24oKSA+PSBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpIHsKLSAgICAgICAgbV9j
b250ZXh0TWVudUNsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCh0aGlzLCBpdGVt
KTsKKyAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudC0+Y3VzdG9tQ29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQodGhpcywgaXRlbSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzMDdkOGNiLi5mMTQ4YTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NCw3ICs1NCw2IEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRmluZENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oPiAvLyBGSVhNRTogTmVlZGVkIGJ5IFdlYlBhZ2VQcm94eU1lc3NhZ2VzLmggZm9y
IERJQ1RBVElPTl9BTFRFUk5BVElWRVMuCkBAIC0xMDUsNiArMTA0LDcgQEAKICNlbmRpZgogCiBu
YW1lc3BhY2UgQVBJIHsKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgRmluZENsaWVu
dDsKIGNsYXNzIEZvcm1DbGllbnQ7CiBjbGFzcyBMb2FkZXJDbGllbnQ7CkBAIC0yODQsNyArMjg0
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB2
b2lkIGluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNs
aWVudEJhc2UqKTsKKyAgICB2b2lkIHNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50Pik7CiAjZW5kaWYKICAgICBBUEk6OkZpbmRDbGllbnQm
IGZpbmRDbGllbnQoKSB7IHJldHVybiAqbV9maW5kQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRGaW5k
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+KTsKQEAgLTEzMzYsNyArMTMz
Niw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4gbV9m
aW5kQ2xpZW50OwogICAgIFdlYkZpbmRNYXRjaGVzQ2xpZW50IG1fZmluZE1hdGNoZXNDbGllbnQ7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
IG1fY29udGV4dE1lbnVDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1l
bnVDbGllbnQ+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc4YTYxZGUuLmM4NWE3
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTc0LDYgKzc0LDcgQEAKIAkJMDBCOTY2MTYxOEUyNENCQTAwQ0UxRjg4IC8qIEFQ
SUZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi87IH07CiAJ
CTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4
IC8qIEZpbmRDbGllbnQubW0gKi87IH07CiAJCTAwQjk2NjFBMThFMjVBRTEwMENFMUY4OCAvKiBG
aW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oICovOyB9OworCQkwNzZF
ODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYwMDVF
OTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkwRjBDMzY1ODE4QzA1MUJB
MDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAvKiBS
ZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBGNjA3
RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVwcmVz
ZW50YXRpb24uaCAqLzsgfTsKIAkJMEYwQzM2NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1QjE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTg3OSw4ICs4ODAsNiBAQAog
CQk1MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQw
MEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1
MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2Vydmlj
ZXNDb250cm9sbGVyLmggKi87IH07CiAJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2
aWNlc0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLm1t
ICovOyB9OwotCQk1MTUzNTY5QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3Bw
ICovOyB9OwotCQk1MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87
IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdD
NEEgLyogQVBJRGF0YS5oICovOyB9OwogCQk1MTVFNzcyNzE4M0RENkY2MDAwNzIwM0YgLyogQXN5
bmNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovOyB9Owog
CQk1MTVFNzcyODE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNjE4M0RENkY2MDAwNzIw
M0YgLyogQXN5bmNSZXF1ZXN0LmggKi87IH07CkBAIC0yMDI3LDYgKzIwMjYsOCBAQAogCQkwMEI5
NjYxNTE4RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTAwQjk2NjE3MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZENsaWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJ
Q29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
Q29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc2RTg4
NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
NjdENkE1RkU4NDAzMDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5h
bWUgPSBBcHBLaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMDg5QzE2
NjdGRTg0MTE1OEMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmlu
Z3M7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5n
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQzM2NTcxOEMwNTFCQTAwRjYwN0Q3
IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOyBwYXRoID0gaW9zL1JlbW90
ZUxheWVyVHJlZUhvc3RJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI4
LDggKzI5MjksNiBAQAogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1Jl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc1JlcXVl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUxOTExOUQzNTAwMDA2
M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8q
IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRN
ZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VDb250
ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTU3OEI4MjEy
MDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3NzI1MTgz
REQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQXN5bmNSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE1RTc3MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY1JlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU5MzEsOCArNTkzMCw2IEBACiAJCQkJNzU1NDIyQkYxODA2MkJFNDAw
NDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQk3NTU0MjJCRTE4
MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJ
NzU1NDIyQzAxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gKi8sCi0JCQkJNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250
ZXh0TWVudUNsaWVudC5jcHAgKi8sCi0JCQkJNTE1MzU2OUIxMjkxQjFEMjAwMDc0OURDIC8qIFdl
YlBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovLAogCQkJCUJDN0I2MjA1MTI5QTBBNjcwMEQxNzRB
NCAvKiBXZWJQYWdlR3JvdXAuY3BwICovLAogCQkJCUJDN0I2MjA0MTI5QTBBNjcwMEQxNzRBNCAv
KiBXZWJQYWdlR3JvdXAuaCAqLywKIAkJCQlCQzExMUIwQjExMkY1RTRGMDAzMzdCQUIgLyogV2Vi
UGFnZVByb3h5LmNwcCAqLywKQEAgLTU5NzAsNiArNTk2Nyw3IEBACiAJCQkJMUFGREU2NUYxOTU0
RTlCMTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5jcHAgKi8sCiAJCQkJMUFGREU2NjAxOTU0
RTlCMTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5oICovLAogCQkJCTFBNEQ2NjQ3MThBMkQ5
MUEwMEQ4MkUyMSAvKiBBUElVSUNsaWVudC5oICovLAorCQkJCTA3NkU4ODREMUExM0NBREYwMDVF
OTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBBUEk7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjI2NSw2ICs2MjYzLDcgQEAKIAkJQkMy
MDRFRTcxMUM4M0VBRDAwOEYzMzc1IC8qIEFQSSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMDc2RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJMUYwMTgxNjgxODU4REMx
NTAwRjkyODg0IC8qIENvY29hICovLAogCQkJCUJDMjA0RUU4MTFDODNFQjcwMDhGMzM3NSAvKiBj
ICovLAogCQkJCUJDOTg5RDQ1MTYxODE2OTEwMDBENDZEMyAvKiBtYWMgKi8sCkBAIC03NjI5LDcg
Kzc2MjgsNiBAQAogCQkJCUJDODU3Rjg1MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREZFQTQxMkIzMUY4NzAwNURG
NzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMDMyRDhGMTBGNDM3QTAwMDU4QzE1QSAvKiBXZWJQYWdlLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzRjg4OUQxNTE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdCNjIwNjEy
OUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdC
NjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03NzEzLDYgKzc3MTEsNyBAQAogCQkJCTBGRjI0QTJFMTg3OUU0QkMwMDNBQkYwQyAvKiBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRERCMzE3MTI0RUJEMTMwMDQ4RDEzQyAvKiBXS0Jhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDRDVFQkJCMTc0NkE4M0UwMDBDMUM0NSAvKiBXS0Jhc2VNYWMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQUFDNzQxNDRFNjFBNTAwNTNGODJGIC8qIFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzg4QTA1
QzE0NzQzQzkwMDA2MzE5RTUgLyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKQEAgLTkzMDgsNyArOTMwNyw2IEBACiAJ
CQkJQkM4NTdGN0UxMkI4MkNFRTAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NjNENkIxMTNERDE5MjAwNTc0QkUyIC8q
IFdlYlBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNDkxOEJCRTA0NDAwMEZDRkM5
IC8qIFdLQWN0aW9uU2hlZXQubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MTUzNTY5QzEyOTFCMUQy
MDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMwNkM2MDk1MTI0QzE0NEIwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1OUM0QTU4MThCODExNzQwMDdCRENCNiAvKiBBc3Np
c3RlZE5vZGVJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjIwNzEyOUEw
QTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgzNmQ4YQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50X2gKKyNkZWZpbmUgQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRfaAorCisjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIENvbnRleHRNZW51SXRlbTsKK2NsYXNzIEhpdFRlc3RSZXN1bHQ7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdl
YkZyYW1lOworY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworfQorCitu
YW1lc3BhY2UgQVBJIHsKK2NsYXNzIE9iamVjdDsKKworbmFtZXNwYWNlIEluamVjdGVkQnVuZGxl
IHsKKworY2xhc3MgUGFnZUNvbnRleHRNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5QYWdlQ29udGV4dE1lbnVDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBnZXRDdXN0
b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJLaXQ6OldlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4mIC8q
IGRlZmF1bHRNZW51ICovLCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYg
LyogbmV3TWVudSAqLywgUmVmUHRyPEFQSTo6T2JqZWN0PiYgLyogdXNlckRhdGEgKi8pIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JBY3Rpb25NZW51KFdlYktp
dDo6V2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBSZWZQdHI8QVBJOjpP
YmplY3Q+JiAvKiB1c2VyRGF0YSAqLykgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbmplY3Rl
ZEJ1bmRsZQorCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQorI2VuZGlmIC8vIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBjNmU2ZTVhLi40NGZiYTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFdLVHlwZUlE
IFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpCiB2b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51
Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNs
aWVudEJhc2UqIHdrQ2xpZW50KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHRv
SW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQo
d2tDbGllbnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0
TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAg
ICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggMGEzYzI3NC4uYWZhZDNhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNs
aWVudC5jcHAKQEAgLTQxLDE5ICs0MSwyNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqIHBhZ2UsIEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgY29uc3QgVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbURhdGE+JiBkZWZhdWx0TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+JiBuZXdNZW51LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKK0luamVjdGVk
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudChjb25zdCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIGNsaWVudCkK
K3sKKyAgICBpbml0aWFsaXplKGNsaWVudCk7Cit9CisKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2Uq
IHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQsIGNvbnN0IFZlY3RvcjxD
b250ZXh0TWVudUl0ZW0+JiBwcm9wb3NlZE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYgbmV3TWVudSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21EZWZhdWx0TWVudSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRlZmF1bHRNZW51
ID0ga2l0SXRlbXMocHJvcG9zZWRNZW51KTsKICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0
Pj4gZGVmYXVsdE1lbnVJdGVtczsKICAgICBkZWZhdWx0TWVudUl0ZW1zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZGVmYXVsdE1lbnUuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0g
OiBkZWZhdWx0TWVudSkKICAgICAgICAgZGVmYXVsdE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQo
V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbSkpOwogCi0gICAgV0tBcnJheVJlZiBuZXdN
ZW51V0sgPSAwOwotICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGll
bnQuZ2V0Q29udGV4dE1lbnVGcm9tRGVmYXVsdE1lbnUodG9BUEkocGFnZSksIHRvQVBJKGhpdFRl
c3RSZXN1bHQpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKGRlZmF1bHRNZW51
SXRlbXMpKS5nZXQoKSksICZuZXdNZW51V0ssICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICBXS0FycmF5UmVmIG5ld01lbnVXSyA9IG51bGxwdHI7CisgICAg
V0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gbnVsbHB0cjsKKyAgICBtX2NsaWVudC5nZXRDb250
ZXh0TWVudUZyb21EZWZhdWx0TWVudSh0b0FQSShwYWdlKSwgdG9BUEkoSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdCkuZ2V0KCkpLCB0b0FQSShBUEk6OkFy
cmF5OjpjcmVhdGUoV1RGOjptb3ZlKGRlZmF1bHRNZW51SXRlbXMpKS5nZXQoKSksICZuZXdNZW51
V0ssICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICBSZWZQ
dHI8QVBJOjpBcnJheT4gYXJyYXkgPSBhZG9wdFJlZih0b0ltcGwobmV3TWVudVdLKSk7CiAgICAg
dXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKICAgICAKQEAgLTc2
LDEzICs4MiwxMyBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Ojpn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKgogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpwcmVwYXJlRm9y
QWN0aW9uTWVudShXZWJQYWdlKiBwYWdlLCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQqIGhp
dFRlc3RSZXN1bHQsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQordm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6cHJlcGFyZUZvckFjdGlvbk1lbnUoV2ViUGFn
ZSogcGFnZSwgY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5wcmVwYXJlRm9yQWN0aW9u
TWVudSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0g
bnVsbHB0cjsKLSAgICBtX2NsaWVudC5wcmVwYXJlRm9yQWN0aW9uTWVudSh0b0FQSShwYWdlKSwg
dG9BUEkoaGl0VGVzdFJlc3VsdCksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICBtX2NsaWVudC5wcmVwYXJlRm9yQWN0aW9uTWVudSh0b0FQSShwYWdlKSwg
dG9BUEkoSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdCku
Z2V0KCkpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAg
dXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCmluZGV4
IGU0YWE5OWMuLmZjYWM2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKIAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSUluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdl
LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9i
amVjdDsKQEAgLTQxLDE5ICs0MSwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8
V0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiB7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLWNsYXNzIENvbnRleHRNZW51OworY2xhc3MgQ29udGV4dE1lbnVJdGVtOworY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CiBjbGFz
cyBXZWJQYWdlOwogCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2U+IHsK
K2NsYXNzIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIEFQSTo6
Q2xpZW50PFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgotICAgIGJvb2wg
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoV2ViUGFnZSosIEluamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdCosIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgZGVmYXVs
dE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3TWVudSwgUmVmUHRyPEFQ
STo6T2JqZWN0PiYgdXNlckRhdGEpOwotICAgIHZvaWQgcHJlcGFyZUZvckFjdGlvbk1lbnUoV2Vi
UGFnZSosIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4m
IHVzZXJEYXRhKTsKKyAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNs
aWVudChjb25zdCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqKTsKKworcHJpdmF0
ZToKKyAgICBib29sIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqLCBjb25z
dCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbT4mIGRlZmF1bHRNZW51LCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG5l
d01lbnUsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKSBvdmVycmlkZTsKKyAgICB2b2lk
IHByZXBhcmVGb3JBY3Rpb25NZW51KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAppbmRleCAyOGNkMzRkLi5mNDY1YWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5j
cHAKQEAgLTI2LDEwICsyNiw4IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKIAogI2lu
Y2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2Vi
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KQEAgLTky
LDEyICs5MCw5IEBAIHZvaWQgV2ViQ29udGV4dE1lbnU6Om1lbnVJdGVtc1dpdGhVc2VyRGF0YShW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gJm1lbnVJCiAgICAgVmVjdG9yPENvbnRleHRN
ZW51SXRlbT4gY29yZUl0ZW1zID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUtPnBsYXRmb3Jt
RGVzY3JpcHRpb24oKSk7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiBwcm9wb3NlZE1lbnUgPSBraXRJdGVtcyhjb3JlSXRlbXMpOwotICAgIFZlY3RvcjxXZWJD
b250ZXh0TWVudUl0ZW1EYXRhPiBuZXdNZW51OwotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6
OmNyZWF0ZShjb250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKSk7Ci0gICAgaWYgKG1fcGFnZS0+aW5q
ZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpLmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0
ZW1zKG1fcGFnZSwgaGl0VGVzdFJlc3VsdC5nZXQoKSwgcHJvcG9zZWRNZW51LCBuZXdNZW51LCB1
c2VyRGF0YSkpCi0gICAgICAgIHByb3Bvc2VkTWVudSA9IG5ld01lbnU7Ci0gICAgbWVudUl0ZW1z
ID0gcHJvcG9zZWRNZW51OworICAgIGlmIChtX3BhZ2UtPmluamVjdGVkQnVuZGxlQ29udGV4dE1l
bnVDbGllbnQoKS5nZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhtX3BhZ2UsIGNvbnRyb2xs
ZXIuaGl0VGVzdFJlc3VsdCgpLCBjb3JlSXRlbXMsIG1lbnVJdGVtcywgdXNlckRhdGEpKQorICAg
ICAgICByZXR1cm47CisgICAgbWVudUl0ZW1zID0ga2l0SXRlbXMoY29yZUl0ZW1zKTsKIH0KIAog
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRNZW51OjppdGVtcygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggN2U4MDU1MC4uZDg5Y2M0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMjcyLDYgKzI3Miw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1f
c2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNl
dENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAg
ICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkKKyNlbmRpZgogICAgICwgbV9mb3JtQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKICAg
ICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
VUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKHRoaXMpCkBAIC01NTksOSArNTYy
LDE0IEBAIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkKIH0K
IAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5q
ZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dEJhc2UqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRN
ZW51Q2xpZW50PiBjb250ZXh0TWVudUNsaWVudCkKIHsKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50
LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7CisgICAg
ICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBXVEY6Om1vdmUoY29udGV4dE1lbnVDbGllbnQp
OwogfQogI2VuZGlmCiAKQEAgLTk2Niw3ICs5NzQsNyBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNs
aWVudC5pbml0aWFsaXplKDApOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICNl
bmRpZgogICAgIG1fZWRpdG9yQ2xpZW50LmluaXRpYWxpemUoMCk7CiAgICAgbV9mb3JtQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWI3Mjcx
OC4uZGY2ZTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBhZ2VfaAogCiAjaW5jbHVkZSAiQVBJ
SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkZpbmRDb250cm9s
bGVyLmgiCkBAIC0yNzgsNyArMjc5LDcgQEAgcHVibGljOgogCiAgICAgLy8gLS0gSW5qZWN0ZWRC
dW5kbGUgbWV0aG9kcwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHZvaWQgaW5pdGlh
bGl6ZUluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnRCYXNlKik7CisgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVD
bGllbnQ+KTsKICNlbmRpZgogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2UqKTsKICAgICB2b2lkIHNldEluamVj
dGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
Rm9ybUNsaWVudD4pOwpAQCAtMjkyLDcgKzI5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRp
YWxpemVJbmplY3RlZEJ1bmRsZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLQnVuZGxlUGFnZURp
YWdub3N0aWNMb2dnaW5nQ2xpZW50QmFzZSopOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQmIGluamVjdGVkQnVuZGxl
Q29udGV4dE1lbnVDbGllbnQoKSB7IHJldHVybiBtX2NvbnRleHRNZW51Q2xpZW50OyB9CisgICAg
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50JiBpbmplY3RlZEJ1bmRs
ZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gKm1fY29udGV4dE1lbnVDbGllbnQuZ2V0KCk7
IH0KICNlbmRpZgogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCYgaW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQogICAgIEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQmIGluamVjdGVkQnVuZGxlRm9ybUNsaWVudCgpIHsg
cmV0dXJuICptX2Zvcm1DbGllbnQuZ2V0KCk7IH0KQEAgLTExNTQsNyArMTE1NSw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3dpbmRvd1Jlc2l6ZXJTaXplOwogCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGll
bnQgbV9jb250ZXh0TWVudUNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiBtX2NvbnRleHRNZW51Q2xpZW50OwogI2Vu
ZGlmCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50IG1fZWRpdG9yQ2xpZW50Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PiBtX2Zv
cm1DbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KaW5kZXggZGU1YmVmZS4uOTI3YmIyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTExMywx
MCArMTExMyw4IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2Nh
dGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoIWhhbmRsZWQpIHsKLSAgICAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdD4gaW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdCk7Ci0gICAgICAgIGluamVjdGVkQnVuZGxl
Q29udGV4dE1lbnVDbGllbnQoKS5wcmVwYXJlRm9yQWN0aW9uTWVudSh0aGlzLCBpbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuZ2V0KCksIHVzZXJEYXRhKTsKLSAgICB9CisgICAgaWYgKCFoYW5k
bGVkKQorICAgICAgICBpbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkucHJlcGFyZUZv
ckFjdGlvbk1lbnUodGhpcywgaGl0VGVzdFJlc3VsdCwgdXNlckRhdGEpOwogCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3QoYWN0aW9u
TWVudVJlc3VsdCwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0
KCkpKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243973</attachid>
            <date>2015-01-05 05:30:11 -0800</date>
            <delta_ts>2015-01-20 09:25:57 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-context-menu-client.diff</filename>
            <type>text/plain</type>
            <size>48486</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNGZkYWUzYy4uZDBhMmEyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTM0Niw3ICszNDYsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkuY3BwCi0gICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5j
cHAKICAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCAyYTk0NzA4Li5mYzMyM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTUt
MDEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIEFkZCBBUEk6OkNvbnRleHRNZW51Q2xpZW50IGFuZCBBUEk6OkluamVjdGVkQnVuZGxlOjpQ
YWdlQ29udGV4dE1lbnVDbGllbnQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZSBDb250ZXh0TWVudUNsaWVudCB0byB1c2UgQVBJIGNs
YXNzZXMgaW4gYm90aCBVSSBhbmQgSW5qZWN0ZWQKKyAgICAgICAgQnVuZGxlIEFQSXMuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5j
cHAuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVu
dC5oLgorICAgICAgICAoQVBJOjpDb250ZXh0TWVudUNsaWVudDo6fkNvbnRleHRNZW51Q2xpZW50
KToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6OmdldENvbnRleHRNZW51RnJvbVBy
b3Bvc2VkTWVudSk6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50OjpjdXN0b21Db250
ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50Ojpj
b250ZXh0TWVudURpc21pc3NlZCk6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51Q2xpZW50Ojpz
aG93Q29udGV4dE1lbnUpOgorICAgICAgICAoQVBJOjpDb250ZXh0TWVudUNsaWVudDo6aGlkZUNv
bnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVu
dUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmUgZGVsZXRlZCBmaWxlcyBh
bmQgYWRkCisgICAgICAgIG5ldyBmaWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmguCisgICAgICAgIChB
UEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ6On5QYWdlQ29udGV4dE1l
bnVDbGllbnQpOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51
Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgIChBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ6OnByZXBhcmVGb3JBY3Rpb25NZW51
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0
b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50OjpwcmVwYXJlRm9yQWN0aW9uTWVudSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjptZW51SXRlbXNXaXRoVXNlckRhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldElu
amVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1
bmRsZUNvbnRleHRNZW51Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbmplY3RlZEJ1bmRs
ZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51
SGl0VGVzdEF0TG9jYXRpb24pOgorCiAyMDE1LTAxLTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBvZiB0aGUgSVBDIGNvZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGll
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODMwZDlmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNs
aWVudC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBUElDb250ZXh0TWVudUNsaWVudF9oCisjZGVmaW5l
IEFQSUNvbnRleHRNZW51Q2xpZW50X2gKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisj
aW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UG9pbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkZyYW1lUHJveHk7
CitjbGFzcyBXZWJQYWdlUHJveHk7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBDb250
ZXh0TWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQo
KSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUo
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiYgLyogcHJvcG9zZWRNZW51ICovLCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0
TWVudUl0ZW1EYXRhPiYgLyogY3VzdG9tTWVudSAqLywgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0OjpEYXRhJiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBjdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURpc21pc3NlZChXZWJLaXQ6OldlYlBh
Z2VQcm94eSopIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG93Q29udGV4dE1lbnUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaGlkZUNvbnRleHRNZW51KFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyByZXR1cm4g
ZmFsc2U7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKENP
TlRFWFRfTUVOVVMpCisjZW5kaWYgLy8gQVBJQ29udGV4dE1lbnVDbGllbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAxZmQzYjg2Li4yNDNiNjA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIldLUGFnZVByaXZhdGUuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5Lmgi
CisjaW5jbHVkZSAiQVBJQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBUElEYXRhLmgi
CiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkFQSUZpbmRDbGllbnQuaCIK
QEAgLTgzLDYgKzg0LDEyIEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VV
SUNsaWVudEJhc2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwg
V0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQ
YWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNT4gVmVyc2lvbnM7CiB9OwogCisjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdl
Q29udGV4dE1lbnVDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZUNv
bnRleHRNZW51Q2xpZW50VjAsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjEsIFdLUGFnZUNvbnRl
eHRNZW51Q2xpZW50VjIsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjM+IFZlcnNpb25zOworfTsK
KyNlbmRpZgorCiB9CiAKIFdLVHlwZUlEIFdLUGFnZUdldFR5cGVJRCgpCkBAIC03MjAsNyArNzI3
LDk3IEBAIHZvaWQgV0tQYWdlQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1N0cmluZ1JlZiBzdHJpbmcsIFdLRmluZE9wdGlvCiB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0
TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGll
bnRCYXNlKiB3a0NsaWVudCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0lt
cGwocGFnZVJlZiktPmluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudCh3a0NsaWVudCk7CisgICAg
Y2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdl
Q29udGV4dE1lbnVDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ29udGV4dE1lbnVDbGllbnQoY29uc3QgV0tQ
YWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiBjbGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
dmlydHVhbCBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRNZW51
VmVjdG9yLCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGN1c3RvbU1lbnUsIGNvbnN0
IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVu
dUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24g
Pj0gMiAmJiAhbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6
Ok9iamVjdD4+IHByb3Bvc2VkTWVudUl0ZW1zOworICAgICAgICAgICAgcHJvcG9zZWRNZW51SXRl
bXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShwcm9wb3NlZE1lbnVWZWN0b3Iuc2l6ZSgpKTsKKwor
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtZW51SXRlbSA6IHByb3Bvc2VkTWVudVZlY3Rv
cikKKyAgICAgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUobWVudUl0ZW0pKTsKKworICAgICAgICAgICAgV0tBcnJh
eVJlZiBuZXdNZW51ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZl
cnNpb24gPj0gMikgeworICAgICAgICAgICAgICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiB3
ZWJIaXRUZXN0UmVzdWx0ID0gV2ViSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHRE
YXRhKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3Nl
ZE1lbnUodG9BUEkocGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUocHJv
cG9zZWRNZW51SXRlbXMpKS5nZXQoKSksICZuZXdNZW51LCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0
LmdldCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVG
cm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJ
KEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5nZXQoKSks
ICZuZXdNZW51LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisK
KyAgICAgICAgICAgIFJlZlB0cjxBUEk6OkFycmF5PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1wbChu
ZXdNZW51KSk7CisKKyAgICAgICAgICAgIGN1c3RvbU1lbnUuY2xlYXIoKTsKKworICAgICAgICAg
ICAgc2l6ZV90IG5ld1NpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkgOiAwOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBXZWJDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJdGVt
PihpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHsKKyAgICAgICAgICAgICAgICAgICAg
TE9HKENvbnRleHRNZW51LCAiTmV3IG1lbnUgZW50cnkgYXQgaW5kZXggJWkgaXMgbm90IGEgV2Vi
Q29udGV4dE1lbnVJdGVtIiwgKGludClpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY3VzdG9tTWVudS5hcHBlbmQo
Kml0ZW0tPmRhdGEoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0
YSYgaXRlbURhdGEpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGll
bnQuY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBtX2NsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCh0
b0FQSShwYWdlKSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURhdGEpLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0TWVudURpc21pc3NlZChXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJy
aWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuY29udGV4dE1lbnVEaXNt
aXNzZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5j
b250ZXh0TWVudURpc21pc3NlZCh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG93Q29udGV4dE1lbnUoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBj
b25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG1lbnVJdGVtc1ZlY3Rvcikgb3Zl
cnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG93Q29udGV4dE1l
bnUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4gbWVudUl0ZW1zOworICAgICAgICAgICAgbWVudUl0ZW1zLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobWVudUl0ZW1zVmVjdG9yLnNpemUoKSk7CisKKyAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgbWVudUl0ZW0gOiBtZW51SXRlbXNWZWN0b3IpCisgICAgICAg
ICAgICAgICAgbWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNy
ZWF0ZShtZW51SXRlbSkpOworCisgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUo
dG9BUEkocGFnZSksIHRvQVBJKG1lbnVMb2NhdGlvbiksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0
ZShXVEY6Om1vdmUobWVudUl0ZW1zKSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1
YWwgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmhpZGVDb250ZXh0TWVudSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIG1fY2xpZW50LmhpZGVDb250
ZXh0TWVudSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xp
ZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAg
VU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDMzNDZiNWQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQotCi0jaW5jbHVkZSAiV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCi0KLSNpbmNs
dWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKLSNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJDb250ZXh0
TWVudUl0ZW0uaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4mIHByb3Bvc2VkTWVudVZlY3RvciwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+JiBjdXN0b21NZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0
UmVzdWx0RGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQotewotICAgIGlmICghbV9jbGllbnQu
Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVu
dUZyb21Qcm9wb3NlZE1lbnVfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA+PSAyICYmICFtX2NsaWVu
dC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBwcm9wb3NlZE1lbnVJdGVtczsKLSAg
ICBwcm9wb3NlZE1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZl
Y3Rvci5zaXplKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBtZW51SXRlbSA6IHByb3Bvc2Vk
TWVudVZlY3RvcikKLSAgICAgICAgcHJvcG9zZWRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKFdl
YkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKG1lbnVJdGVtKSk7Ci0KLSAgICBXS0FycmF5UmVmIG5l
d01lbnUgPSBudWxscHRyOwotICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24gPj0gMikgewot
ICAgICAgICBSZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IFdlYkhp
dFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0RGF0YSk7Ci0gICAgICAgIG1fY2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQSShwYWdlKSwgdG9BUEkoQVBJOjpB
cnJheTo6Y3JlYXRlKFdURjo6bW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLmdldCgpKSwgJm5ld01l
bnUsIHRvQVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY2xpZW50LmdldENv
bnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKHBh
Z2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHByb3Bvc2VkTWVudUl0ZW1z
KSkuZ2V0KCkpLCAmbmV3TWVudSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotCi0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gYWRvcHRSZWYodG9JbXBs
KG5ld01lbnUpKTsKLSAgICAKLSAgICBjdXN0b21NZW51LmNsZWFyKCk7Ci0gICAgCi0gICAgc2l6
ZV90IG5ld1NpemUgPSBhcnJheSA/IGFycmF5LT5zaXplKCkgOiAwOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbmV3U2l6ZTsgKytpKSB7Ci0gICAgICAgIFdlYkNvbnRleHRNZW51SXRlbSog
aXRlbSA9IGFycmF5LT5hdDxXZWJDb250ZXh0TWVudUl0ZW0+KGkpOwotICAgICAgICBpZiAoIWl0
ZW0pIHsKLSAgICAgICAgICAgIExPRyhDb250ZXh0TWVudSwgIk5ldyBtZW51IGVudHJ5IGF0IGlu
ZGV4ICVpIGlzIG5vdCBhIFdlYkNvbnRleHRNZW51SXRlbSIsIChpbnQpaSk7Ci0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY3VzdG9tTWVudS5hcHBl
bmQoKml0ZW0tPmRhdGEoKSk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Y3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVt
RGF0YSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPiBpdGVt
ID0gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURhdGEpOwotICAgIG1fY2xpZW50LmN1
c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKHRvQVBJKHBhZ2UpLCB0b0FQSShpdGVtLmdldCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQ6OmNvbnRleHRNZW51RGlzbWlzc2VkKFdlYlBhZ2VQcm94eSogcGFnZSkKLXsKLSAg
ICBpZiAoIW1fY2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2VkKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgbV9jbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQodG9BUEkocGFnZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLWJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
OjpzaG93Q29udGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IG1lbnVJdGVtc1ZlY3RvcikKLXsKLSAgICBpZiAoIW1fY2xpZW50LnNob3dDb250ZXh0TWVudSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IG1lbnVJdGVtczsKLSAgICBtZW51SXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtZW51SXRl
bXNWZWN0b3Iuc2l6ZSgpKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgbWVudUl0ZW0gOiBtZW51
SXRlbXNWZWN0b3IpCi0gICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29udGV4
dE1lbnVJdGVtOjpjcmVhdGUobWVudUl0ZW0pKTsKLQotICAgIG1fY2xpZW50LnNob3dDb250ZXh0
TWVudSh0b0FQSShwYWdlKSwgdG9BUEkobWVudUxvY2F0aW9uKSwgdG9BUEkoQVBJOjpBcnJheTo6
Y3JlYXRlKFdURjo6bW92ZShtZW51SXRlbXMpKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXZWJQYWdlQ29udGV4dE1lbnVD
bGllbnQ6OmhpZGVDb250ZXh0TWVudShXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFt
X2NsaWVudC5oaWRlQ29udGV4dE1lbnUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1f
Y2xpZW50LmhpZGVDb250ZXh0TWVudSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLSNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZWI5NjcxMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnRfaAotI2RlZmlu
ZSBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnRfaAotCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0KLSNpbmNsdWRlICJBUElDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0Lmgi
Ci0jaW5jbHVkZSAiV0tQYWdlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBDbGllbnRUcmFpdHM8V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjAsIFdLUGFnZUNvbnRleHRNZW51
Q2xpZW50VjEsIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjIsIFdLUGFnZUNvbnRleHRNZW51Q2xp
ZW50VjM+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdl
YkNvbnRleHRNZW51SXRlbURhdGE7Ci1jbGFzcyBXZWJQYWdlUHJveHk7Ci0KLWNsYXNzIFdlYlBh
Z2VDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VDb250ZXh0TWVu
dUNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bv
c2VkTWVudShXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4mIHByb3Bvc2VkTWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBjdXN0b21N
ZW51LCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KTsKLSAgICB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKLSAgICB2b2lkIGNvbnRleHRNZW51RGlz
bWlzc2VkKFdlYlBhZ2VQcm94eSopOwotICAgIGJvb2wgc2hvd0NvbnRleHRNZW51KFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+Jik7Ci0gICAgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViUGFnZVByb3h5Kik7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQotI2VuZGlmIC8vIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDAyODJlOTQuLmU5NzVjYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgor
I2luY2x1ZGUgIkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRmluZENsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSUZvcm1DbGllbnQuaCIKICNpbmNsdWRlICJBUElHZW9tZXRyeS5o
IgpAQCAtMjYyLDYgKzI2Myw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAgLCBtX2Zv
cm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCiAgICAgLCBtX3Vp
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKICAgICAsIG1fZmluZENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKKyNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkNvbnRleHRNZW51Q2xpZW50PigpKQorI2VuZGlmCiAgICAgLCBtX3Byb2Nlc3MocHJvY2Vz
cykKICAgICAsIG1fcGFnZUdyb3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKICAgICAsIG1f
cHJlZmVyZW5jZXMoKmNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCkBAIC01NDcsOSArNTUxLDE0
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplRmluZE1hdGNoZXNDbGllbnQoY29uc3Qg
V0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLXZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplQ29udGV4dE1lbnVDbGllbnQoY29uc3Qg
V0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiBjbGllbnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ+IGNvbnRleHRNZW51Q2xpZW50KQogewotICAgIG1fY29udGV4dE1lbnVDbGllbnQuaW5pdGlh
bGl6ZShjbGllbnQpOworICAgIGlmICghY29udGV4dE1lbnVDbGllbnQpIHsKKyAgICAgICAgbV9j
b250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVu
dD4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGV4dE1lbnVDbGllbnQg
PSBXVEY6Om1vdmUoY29udGV4dE1lbnVDbGllbnQpOwogfQogI2VuZGlmCiAKQEAgLTY4Myw3ICs2
OTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1fZmluZENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwogICAgIG1fZmluZE1hdGNoZXNDbGll
bnQuaW5pdGlhbGl6ZSgwKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRl
eHRNZW51Q2xpZW50LmluaXRpYWxpemUoMCk7CisgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRpZgogCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2VJRCk7CkBA
IC0zNzU4LDkgKzM3NjcsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4
dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQwogewogICAgIG1fYWN0
aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YSA9IGNvbnRleHRNZW51Q29udGV4dERhdGE7CiAKLSAg
ICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuaGlkZUNvbnRleHRNZW51KHRoaXMpICYmIG1fYWN0
aXZlQ29udGV4dE1lbnUpIHsKKyAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQtPmhpZGVDb250
ZXh0TWVudSh0aGlzKSAmJiBtX2FjdGl2ZUNvbnRleHRNZW51KSB7CiAgICAgICAgIG1fYWN0aXZl
Q29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVudSgpOwotICAgICAgICBtX2FjdGl2ZUNvbnRleHRN
ZW51ID0gMDsKKyAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG51bGxwdHI7CiAgICAgfQog
CiAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFnZUNsaWVudC5jcmVhdGVDb250ZXh0TWVu
dVByb3h5KHRoaXMpOwpAQCAtMzc3OSwyMSArMzc4OCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29u
c3QgQwogICAgICAgICBhc2tDbGllbnRUb0NoYW5nZU1lbnUgPSBmYWxzZTsKICNlbmRpZgogCi0g
ICAgaWYgKGFza0NsaWVudFRvQ2hhbmdlTWVudSAmJiBtX2NvbnRleHRNZW51Q2xpZW50LmdldENv
bnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3NlZEl0ZW1zLCBpdGVtcywgY29u
dGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCBtX3Byb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKSkKKyAgICBp
ZiAoYXNrQ2xpZW50VG9DaGFuZ2VNZW51ICYmIG1fY29udGV4dE1lbnVDbGllbnQtPmdldENvbnRl
eHRNZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3NlZEl0ZW1zLCBpdGVtcywgY29udGV4
dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKSkKICAgICAgICAg
dXNlUHJvcG9zZWRJdGVtcyA9IGZhbHNlOwogCiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiBpdGVtc1RvU2hvdyA9IHVzZVByb3Bvc2VkSXRlbXMgPyBwcm9wb3NlZEl0
ZW1zIDogaXRlbXM7Ci0gICAgaWYgKCFtX2NvbnRleHRNZW51Q2xpZW50LnNob3dDb250ZXh0TWVu
dSh0aGlzLCBtZW51TG9jYXRpb24sIGl0ZW1zVG9TaG93KSkKKyAgICBpZiAoIW1fY29udGV4dE1l
bnVDbGllbnQtPnNob3dDb250ZXh0TWVudSh0aGlzLCBtZW51TG9jYXRpb24sIGl0ZW1zVG9TaG93
KSkKICAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0NvbnRleHRNZW51KG1lbnVMb2Nh
dGlvbiwgaXRlbXNUb1Nob3csIGNvbnRleHRNZW51Q29udGV4dERhdGEpOwogCi0gICAgbV9jb250
ZXh0TWVudUNsaWVudC5jb250ZXh0TWVudURpc21pc3NlZCh0aGlzKTsKKyAgICBtX2NvbnRleHRN
ZW51Q2xpZW50LT5jb250ZXh0TWVudURpc21pc3NlZCh0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURh
dGEmIGl0ZW0pCiB7CiAgICAgLy8gQXBwbGljYXRpb24gY3VzdG9tIGl0ZW1zIGRvbid0IG5lZWQg
dG8gcm91bmQtdHJpcCB0aHJvdWdoIHRvIFdlYkNvcmUgaW4gdGhlIFdlYlByb2Nlc3MuCiAgICAg
aWYgKGl0ZW0uYWN0aW9uKCkgPj0gQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKSB7
Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQuY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQodGhpcywgaXRlbSk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQtPmN1c3RvbUNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKHRoaXMsIGl0ZW0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2YzYjA3ZDcuLjU1
NDczMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU1LDcg
KzU1LDYgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgotI2luY2x1ZGUgIldl
YlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+IC8vIEZJWE1FOiBOZWVkZWQgYnkgV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCBmb3IgRElDVEFUSU9OX0FMVEVSTkFUSVZFUy4KQEAgLTExMSw2ICsxMTAsNyBA
QAogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgeworY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBj
bGFzcyBGaW5kQ2xpZW50OwogY2xhc3MgRm9ybUNsaWVudDsKIGNsYXNzIExvYWRlckNsaWVudDsK
QEAgLTI5OSw3ICsyOTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50KGNvbnN0IFdLUGFn
ZUNvbnRleHRNZW51Q2xpZW50QmFzZSopOworICAgIHZvaWQgc2V0Q29udGV4dE1lbnVDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KTsKICNlbmRpZgogICAgIEFQ
STo6RmluZENsaWVudCYgZmluZENsaWVudCgpIHsgcmV0dXJuICptX2ZpbmRDbGllbnQ7IH0KICAg
ICB2b2lkIHNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4pOwpA
QCAtMTM1NSw3ICsxMzU1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpG
aW5kQ2xpZW50PiBtX2ZpbmRDbGllbnQ7CiAgICAgV2ViRmluZE1hdGNoZXNDbGllbnQgbV9maW5k
TWF0Y2hlc0NsaWVudDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBXZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQgbV9jb250ZXh0TWVudUNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpDb250ZXh0TWVudUNsaWVudD4gbV9jb250ZXh0TWVudUNsaWVudDsKICNlbmRpZgogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MjI5YjdjOC4uZTY1OWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQsNiArNzQsNyBAQAogCQkwMEI5NjYxNjE4RTI0Q0JB
MDBDRTFGODggLyogQVBJRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGll
bnQuaCAqLzsgfTsKIAkJMDBCOTY2MTkxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxNzE4
RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5tbSAqLzsgfTsKIAkJMDBCOTY2MUExOEUyNUFF
MTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lmgg
Ki87IH07CisJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4
NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTBG
MEMzNjU4MThDMDUxQkEwMEY2MDdENyAvKiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NTcxOEMwNTFC
QTAwRjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gKi87IH07CiAJCTBGMEMzNjVB
MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1OTE4QzA1NTU4MDBGNjA3RDcg
LyogTGF5ZXJSZXByZXNlbnRhdGlvbi5oICovOyB9OwogCQkwRjBDMzY1QzE4QzA1Q0ExMDBGNjA3
RDcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjVCMThDMDVDQTEwMEY2MDdE
NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tICovOyB9OwpAQCAtODg0
LDggKzg4NSw2IEBACiAJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0
QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi87IH07CiAJCTUx
NEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU1MTkxMTlEMzUwMDAw
NjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNTE0RDlGNTgxOTExOUQzNTAw
MDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNl
c0NvbnRyb2xsZXIubW0gKi87IH07Ci0JCTUxNTM1NjlDMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0
TWVudUNsaWVudC5jcHAgKi87IH07Ci0JCTUxNTM1NjlEMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCAqLzsgfTsKIAkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTc4Qjgy
MTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi87IH07CiAJCTUxNUU3NzI3MTgzREQ2RjYw
MDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MjUxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVz
dC5jcHAgKi87IH07CiAJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzI2
MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLzsgfTsKQEAgLTIwNDUsNiArMjA0
NCw4IEBACiAJCTAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTY2MTcxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGll
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaW5kQ2xpZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5NjYxODE4RTI1QUUxMDBDRTFG
ODggLyogRmluZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5k
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NkU4ODREMUExM0NBREYw
MDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzZFODg0RjFBMTNDQkM2MDA1RTkwRkMgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4i
OyB9OwogCQkwODlDMTY2N0ZFODQxMTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0lu
Zm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDMzY1NzE4
QzA1MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW07IHBh
dGggPSBpb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI5NTEsOCArMjk1Miw2IEBACiAJCTUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAv
KiBTdGF0aXN0aWNzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dGF0aXN0aWNzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTREOUY1
NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VydmljZXND
b250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTUzNTY5QTEyOTFC
MUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE1RTc3MjUxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jUmVxdWVzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk3OCw4ICs1OTc3LDYgQEAKIAkJCQk3NTU0
MjJCRTE4MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi8s
CiAJCQkJNzU1NDIyQkYxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHkuaCAqLywKIAkJCQk3NTU0MjJDMDE4MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKLQkJCQk1MTUzNTY5QTEyOTFCMUQyMDAwNzQ5REMg
LyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLywKLQkJCQk1MTUzNTY5QjEyOTFCMUQy
MDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJQkM3QjYyMDUx
MjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi8sCiAJCQkJQkM3QjYyMDQxMjlB
MEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oICovLAogCQkJCUJDMTExQjBCMTEyRjVFNEYw
MDMzN0JBQiAvKiBXZWJQYWdlUHJveHkuY3BwICovLApAQCAtNjAyNSw2ICs2MDIyLDcgQEAKIAkJ
CQkxQTRENjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCAqLywKIAkJCQkxQTM2
MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8sCiAJCQkJ
MUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8q
IEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02MzE2LDYgKzYzMTQsNyBAQAogCQlCQzIwNEVFNzEx
QzgzRUFEMDA4RjMzNzUgLyogQVBJICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDc2RTg4NEYxQTEzQ0JD
NjAwNUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8s
CiAJCQkJQkMyMDRFRTgxMUM4M0VCNzAwOEYzMzc1IC8qIGMgKi8sCiAJCQkJMUYwMTgxNjgxODU4
REMxNTAwRjkyODg0IC8qIENvY29hICovLAogCQkJCUJDOTg5RDQ1MTYxODE2OTEwMDBENDZEMyAv
KiBtYWMgKi8sCkBAIC03NjY5LDcgKzc2NjgsNiBAQAogCQkJCTc1OUNDRDVBMTgwOEY2MTYwMDc4
RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
NUU3NDlFQzE4MERCQjk4MDAwODhCQTYgLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkQ4RjEwRjQzN0EwMDA1OEMxNUEgLyogV2Vi
UGFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE1MzU2OUQxMjkxQjFEMjAwMDc0OURDIC8qIFdl
YlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyMDYxMjlB
MEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYy
NTIxMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDN0I2MjE1MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oIGluIEhl
YWRlcnMgKi8sCkBAIC03NzQ2LDYgKzc3NDQsNyBAQAogCQkJCUJDNjQ2QzFCMTFERDM5OUYwMDY0
NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEREIz
MTcxMjRFQkQxMzAwNDhEMTNDIC8qIFdLQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NENUVC
QkIxNzQ2QTgzRTAwMEMxQzQ1IC8qIFdLQmFzZU1hYy5oIGluIEhlYWRlcnMgKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElD
b250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQUFDNzMxNDRFNjE5RTAw
NTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNCQUFDNzQxNDRFNjFBNTAwNTNGODJGIC8qIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzg4QTA1QzE0NzQzQzkwMDA2MzE5RTUg
LyogV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC05Mzk5LDcgKzkzOTgsNiBAQAogCQkJCTc1NTQyMkM0MTgwNjJCRjkwMDQ2RjZBOCAvKiBXZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1RTc0OUVCMTgw
REJCOTgwMDA4OEJBNiAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTYzRDZCMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQ
YWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNTM1NjlDMTI5MUIxRDIwMDA3NDlEQyAvKiBX
ZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzA2QzYwOTUx
MjRDMTQ0QjAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM3QjYyMDcxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjI1MzEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdy
b3VwRGF0YS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MzZkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBUElJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudF9oCisjZGVmaW5lIEFQSUluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50X2gKKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250ZXh0TWVu
dUl0ZW07CitjbGFzcyBIaXRUZXN0UmVzdWx0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYlBh
Z2U7CitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKK30KKworbmFtZXNwYWNlIEFQSSB7CitjbGFz
cyBPYmplY3Q7CisKK25hbWVzcGFjZSBJbmplY3RlZEJ1bmRsZSB7CisKK2NsYXNzIFBhZ2VDb250
ZXh0TWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGFnZUNvbnRleHRNZW51Q2xp
ZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRl
bXMoV2ViS2l0OjpXZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+JiAvKiBkZWZhdWx0TWVudSAqLywgVmVj
dG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIC8qIG5ld01lbnUgKi8sIFJlZlB0
cjxBUEk6Ok9iamVjdD4mIC8qIHVzZXJEYXRhICovKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlRm9yQWN0aW9uTWVudShXZWJLaXQ6OldlYlBhZ2UqLCBjb25zdCBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgLyogdXNlckRhdGEg
Ki8pIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSW5qZWN0ZWRCdW5kbGUKKworfSAvLyBuYW1l
c3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyNlbmRpZiAvLyBB
UElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKaW5kZXggYmEyMzI5Ni4uYjk5NDVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcApAQCAtNzEsNyArNzEsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VHZXRUeXBl
SUQoKQogdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkK
IHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRp
YWxpemVJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTSh3a0Ns
aWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwCmluZGV4IDI5Y2ZlY2EuLjg0NDg2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC00MiwxOSAr
NDIsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1ib29sIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51
RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiBwYWdlLCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQqIGhpdFRlc3RSZXN1bHQsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYg
ZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3TWVudSwgUmVm
UHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCitJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQoY29uc3QgV0tCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiBjbGllbnQpCit7CisgICAgaW5pdGlhbGl6ZShj
bGllbnQpOworfQorCitib29sIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Ojpn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiBwYWdlLCBjb25zdCBIaXRUZXN0
UmVzdWx0JiBoaXRUZXN0UmVzdWx0LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgcHJv
cG9zZWRNZW51LCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG5ld01lbnUsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4
dE1lbnVGcm9tRGVmYXVsdE1lbnUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIFZlY3Rv
cjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBkZWZhdWx0TWVudSA9IGtpdEl0ZW1zKHByb3Bvc2Vk
TWVudSk7CiAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGRlZmF1bHRNZW51SXRlbXM7
CiAgICAgZGVmYXVsdE1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRlZmF1bHRNZW51
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogZGVmYXVsdE1lbnUpCiAgICAg
ICAgIGRlZmF1bHRNZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6
Y3JlYXRlKGl0ZW0pKTsKIAotICAgIFdLQXJyYXlSZWYgbmV3TWVudVdLID0gMDsKLSAgICBXS1R5
cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJv
bURlZmF1bHRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0KSwgdG9BUEkoQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShkZWZhdWx0TWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3
TWVudVdLLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
V0tBcnJheVJlZiBuZXdNZW51V0sgPSBudWxscHRyOworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRv
UGFzcyA9IG51bGxwdHI7CisgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tRGVmYXVsdE1l
bnUodG9BUEkocGFnZSksIHRvQVBJKEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRl
KGhpdFRlc3RSZXN1bHQpLmdldCgpKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92
ZShkZWZhdWx0TWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudVdLLCAmdXNlckRhdGFUb1Bhc3Ms
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5
ID0gYWRvcHRSZWYodG9JbXBsKG5ld01lbnVXSykpOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYo
dG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiAgICAgCkBAIC03NywxMyArODMsMTMgQEAgYm9vbCBJ
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZh
dWx0SXRlbXMoV2ViUGFnZSoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6cHJlcGFyZUZvckFjdGlvbk1lbnUoV2ViUGFnZSog
cGFnZSwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0LCBSZWZQdHI8
QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQ6OnByZXBhcmVGb3JBY3Rpb25NZW51KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IEhpdFRl
c3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQog
ewogICAgIGlmICghbV9jbGllbnQucHJlcGFyZUZvckFjdGlvbk1lbnUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IG51bGxwdHI7Ci0gICAgbV9jbGll
bnQucHJlcGFyZUZvckFjdGlvbk1lbnUodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQp
LCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgbV9jbGll
bnQucHJlcGFyZUZvckFjdGlvbk1lbnUodG9BUEkocGFnZSksIHRvQVBJKEluamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHQpLmdldCgpKSwgJnVzZXJEYXRhVG9Q
YXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYo
dG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBlNGFhOTljLi5mY2FjNmYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5oCkBAIC0yOSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKICNpbmNs
dWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldLQnVuZGxlUGFnZS5oIgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CkBAIC00MSwxOSArNDEs
MjEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50QmFzZT4gewogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250ZXh0
TWVudTsKK2NsYXNzIENvbnRleHRNZW51SXRlbTsKK2NsYXNzIEhpdFRlc3RSZXN1bHQ7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7
CiBjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8
V0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiB7CitjbGFzcyBJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VD
b250ZXh0TWVudUNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNv
bnRleHRNZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBib29sIGdldEN1c3RvbU1lbnVGcm9tRGVm
YXVsdEl0ZW1zKFdlYlBhZ2UqLCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQqLCBjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGRlZmF1bHRNZW51LCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4mIG5ld01lbnUsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRh
KTsKLSAgICB2b2lkIHByZXBhcmVGb3JBY3Rpb25NZW51KFdlYlBhZ2UqLCBJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgZXhw
bGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQoY29uc3QgV0tCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBnZXRDdXN0
b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+JiBkZWZhdWx0TWVu
dSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBuZXdNZW51LCBSZWZQdHI8QVBJOjpP
YmplY3Q+JiB1c2VyRGF0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJlRm9yQWN0aW9uTWVu
dShXZWJQYWdlKiwgY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYsIFJlZlB0cjxBUEk6Ok9i
amVjdD4mIHVzZXJEYXRhKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRN
ZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVu
dS5jcHAKaW5kZXggMzA4NGVlMi4uZWViYmYyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcApAQCAtMjYsMTAgKzI2LDgg
QEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgogCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVD
b250ZXh0RGF0YS5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgog
I2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
QEAgLTkzLDEyICs5MSw5IEBAIHZvaWQgV2ViQ29udGV4dE1lbnU6Om1lbnVJdGVtc1dpdGhVc2Vy
RGF0YShWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gJm1lbnVJCiAgICAgVmVjdG9yPENv
bnRleHRNZW51SXRlbT4gY29yZUl0ZW1zID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUtPnBs
YXRmb3JtRGVzY3JpcHRpb24oKSk7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiBwcm9wb3NlZE1lbnUgPSBraXRJdGVtcyhjb3JlSXRlbXMpOwotICAgIFZlY3Rv
cjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBuZXdNZW51OwotICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ6OmNyZWF0ZShjb250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKSk7Ci0gICAgaWYgKG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpLmdldEN1c3RvbU1lbnVGcm9tRGVm
YXVsdEl0ZW1zKG1fcGFnZSwgaGl0VGVzdFJlc3VsdC5nZXQoKSwgcHJvcG9zZWRNZW51LCBuZXdN
ZW51LCB1c2VyRGF0YSkpCi0gICAgICAgIHByb3Bvc2VkTWVudSA9IG5ld01lbnU7Ci0gICAgbWVu
dUl0ZW1zID0gcHJvcG9zZWRNZW51OworICAgIGlmIChtX3BhZ2UtPmluamVjdGVkQnVuZGxlQ29u
dGV4dE1lbnVDbGllbnQoKS5nZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhtX3BhZ2UsIGNv
bnRyb2xsZXIuaGl0VGVzdFJlc3VsdCgpLCBjb3JlSXRlbXMsIG1lbnVJdGVtcywgdXNlckRhdGEp
KQorICAgICAgICByZXR1cm47CisgICAgbWVudUl0ZW1zID0ga2l0SXRlbXMoY29yZUl0ZW1zKTsK
IH0KIAogVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRNZW51OjppdGVt
cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggNDEzZjdjZi4uZTJmNWJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjc1LDYgKzI3NSw5IEBAIFdlYlBhZ2U6OldlYlBh
Z2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCiAjZW5kaWYKICAg
ICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBh
Z2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQorI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkKKyNlbmRpZgogICAgICwgbV9mb3Jt
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4o
KSkKICAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlVUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKHRoaXMpCkBAIC01OTEs
OSArNTk0LDE0IEBAIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotdm9pZCBXZWJQYWdlOjppbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudEJhc2UqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250
ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNv
bnRleHRNZW51Q2xpZW50PiBjb250ZXh0TWVudUNsaWVudCkKIHsKLSAgICBtX2NvbnRleHRNZW51
Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7
CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBXVEY6Om1vdmUoY29udGV4dE1lbnVD
bGllbnQpOwogfQogI2VuZGlmCiAKQEAgLTk5OCw3ICsxMDA2LDcgQEAgdm9pZCBXZWJQYWdlOjpj
bG9zZSgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIG1fY29udGV4
dE1lbnVDbGllbnQuaW5pdGlhbGl6ZSgwKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+
KCk7CiAjZW5kaWYKICAgICBtX2VkaXRvckNsaWVudC5pbml0aWFsaXplKDApOwogICAgIG1fZm9y
bUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVu
dD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGQ0YTUyYzcuLjdmMzQ5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQYWdlX2gKIAogI2luY2x1
ZGUgIkFQSUluamVjdGVkQnVuZGxlRm9ybUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSUluamVjdGVk
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJEaWN0
aW9uYXJ5UG9wdXBJbmZvLmgiCkBAIC0yODMsNyArMjg0LDcgQEAgcHVibGljOgogCiAgICAgLy8g
LS0gSW5qZWN0ZWRCdW5kbGUgbWV0aG9kcwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
IHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKik7CisgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNv
bnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
Q29udGV4dE1lbnVDbGllbnQ+KTsKICNlbmRpZgogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2UqKTsKICAgICB2
b2lkIHNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4pOwpAQCAtMjk3LDcgKzI5OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdL
QnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50QmFzZSopOwogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0gICAgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQmIGlu
amVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKSB7IHJldHVybiBtX2NvbnRleHRNZW51Q2xp
ZW50OyB9CisgICAgQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50JiBp
bmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gKm1fY29udGV4dE1lbnVD
bGllbnQuZ2V0KCk7IH0KICNlbmRpZgogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dCYgaW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsg
fQogICAgIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQmIGluamVjdGVkQnVuZGxlRm9y
bUNsaWVudCgpIHsgcmV0dXJuICptX2Zvcm1DbGllbnQuZ2V0KCk7IH0KQEAgLTExODQsNyArMTE4
NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3dpbmRvd1Jlc2l6ZXJTaXpl
OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgSW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQgbV9jb250ZXh0TWVudUNsaWVudDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiBtX2NvbnRleHRNZW51
Q2xpZW50OwogI2VuZGlmCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50IG1fZWRp
dG9yQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3Jt
Q2xpZW50PiBtX2Zvcm1DbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYWM0MWVhZS4uZjRmNGZhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQpAQCAtMTA3OSw4ICsxMDc5LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhp
dFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblYKICAgICB9CiAK
ICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQ+IGluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCA9IEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHQpOwotICAgIGluamVjdGVk
QnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKS5wcmVwYXJlRm9yQWN0aW9uTWVudSh0aGlzLCBpbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuZ2V0KCksIHVzZXJEYXRhKTsKKyAgICBpbmplY3RlZEJ1
bmRsZUNvbnRleHRNZW51Q2xpZW50KCkucHJlcGFyZUZvckFjdGlvbk1lbnUodGhpcywgaGl0VGVz
dFJlc3VsdCwgdXNlckRhdGEpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3QoYWN0aW9uTWVudVJlc3VsdCwgZm9ySW1tZWRpYXRl
QWN0aW9uLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaGFyZWQoKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244995</attachid>
            <date>2015-01-20 09:25:57 -0800</date>
            <delta_ts>2015-01-21 08:51:00 -0800</delta_ts>
            <desc>Rebased and updated to use references instead of pointers</desc>
            <filename>wk2-context-menu-client.diff</filename>
            <type>text/plain</type>
            <size>48492</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggM2YxNzAzNS4uNDM1NmQzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTM0OSw3ICszNDksNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkuY3BwCi0gICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5j
cHAKICAgICBVSVByb2Nlc3MvV2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcAogICAg
IFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBhYjVjNzJjLi44YTU5YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTcgQEAKKzIwMTQtMTEtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2FybG9zQENhcmxvc3Mt
TWFjLmxvY2FsPgorCisgICAgICAgIEFkZCBBUEk6OkNvbnRleHRNZW51Q2xpZW50IGFuZCBBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQgY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NDY2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBDb250ZXh0TWVudUNs
aWVudCB0byB1c2UgQVBJIGNsYXNzZXMgaW4gYm90aCBVSSBhbmQgSW5qZWN0ZWQKKyAgICAgICAg
QnVuZGxlIEFQSXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlIFdlYlBhZ2VD
b250ZXh0TWVudUNsaWVudC5jcHAuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0
TWVudUNsaWVudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VDb250ZXh0TWVudUNsaWVudC5oLgorICAgICAgICAoQVBJOjpDb250ZXh0TWVudUNsaWVudDo6
fkNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKEFQSTo6Q29udGV4dE1lbnVDbGllbnQ6Omdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgIChBUEk6OkNvbnRleHRNZW51
Q2xpZW50OjpjdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChBUEk6OkNv
bnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudURpc21pc3NlZCk6CisgICAgICAgIChBUEk6OkNv
bnRleHRNZW51Q2xpZW50OjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoQVBJOjpDb250ZXh0
TWVudUNsaWVudDo6aGlkZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0Nv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUNv
bnRleHRNZW51Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1v
dmUgZGVsZXRlZCBmaWxlcyBhbmQgYWRkCisgICAgICAgIG5ldyBmaWxlcyB0byBjb21waWxhdGlv
bi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmguCisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGll
bnQ6On5QYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6
CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ6OnBy
ZXBhcmVGb3JBY3Rpb25NZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRDb250ZXh0
TWVudUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpwcmVwYXJlRm9yQWN0aW9u
TWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjptZW51
SXRlbXNXaXRoVXNlckRhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlu
aXRpYWxpemVJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjppbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24pOgorCiAyMDE1LTAxLTE5ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0ICJwbHVzLWRhcmtl
ciIgaW4gbWl4LWJsZW5kIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41N2VjODM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBUElDb250ZXh0
TWVudUNsaWVudF9oCisjZGVmaW5lIEFQSUNvbnRleHRNZW51Q2xpZW50X2gKKworI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UG9pbnQ7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIENvbnRl
eHRNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgp
IHsgfQorCisgICAgdmlydHVhbCBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51
SXRlbURhdGE+JiAvKiBwcm9wb3NlZE1lbnUgKi8sIFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRN
ZW51SXRlbURhdGE+JiAvKiBjdXN0b21NZW51ICovLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RS
ZXN1bHQ6OkRhdGEmLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCB2b2lkIGN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGlzbWlzc2VkKFdlYktpdDo6V2ViUGFn
ZVByb3h5JikgeyB9CisgICAgdmlydHVhbCBib29sIHNob3dDb250ZXh0TWVudShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBoaWRlQ29udGV4dE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBm
YWxzZTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKKyNlbmRpZiAvLyBBUElDb250ZXh0TWVudUNsaWVudF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDVkZjQ2N2EuLmI2YTVjZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiV0tQYWdlUHJpdmF0ZS5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIK
KyNpbmNsdWRlICJBUElDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURhdGEuaCIK
ICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJRmluZENsaWVudC5oIgpA
QCAtODMsNiArODQsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVVJ
Q2xpZW50QmFzZT4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBX
S1BhZ2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1Bh
Z2VVSUNsaWVudFY0LCBXS1BhZ2VVSUNsaWVudFY1PiBWZXJzaW9uczsKIH07CiAKKyNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VD
b250ZXh0TWVudUNsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlQ29u
dGV4dE1lbnVDbGllbnRWMCwgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRWMSwgV0tQYWdlQ29udGV4
dE1lbnVDbGllbnRWMiwgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRWMz4gVmVyc2lvbnM7Cit9Owor
I2VuZGlmCisKIH0KIAogV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCkKQEAgLTcyMCw3ICs3Mjcs
OTcgQEAgdm9pZCBXS1BhZ2VDb3VudFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2VSZWYsIFdL
U3RyaW5nUmVmIHN0cmluZywgV0tGaW5kT3B0aW8KIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRN
ZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHRvSW1w
bChwYWdlUmVmKS0+aW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50KHdrQ2xpZW50KTsKKyAgICBj
bGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VD
b250ZXh0TWVudUNsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpDb250ZXh0TWVudUNsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1Bh
Z2VDb250ZXh0TWVudUNsaWVudEJhc2UqIGNsaWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
aW5pdGlhbGl6ZShjbGllbnQpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSYg
cGFnZSwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBwcm9wb3NlZE1lbnVW
ZWN0b3IsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgY3VzdG9tTWVudSwgY29uc3Qg
V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5n
ZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUgJiYgIW1fY2xpZW50LmdldENvbnRleHRNZW51
RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA+
PSAyICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6
T2JqZWN0Pj4gcHJvcG9zZWRNZW51SXRlbXM7CisgICAgICAgICAgICBwcm9wb3NlZE1lbnVJdGVt
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCkpOworCisg
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogcHJvcG9zZWRNZW51VmVjdG9y
KQorICAgICAgICAgICAgICAgIHByb3Bvc2VkTWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJD
b250ZXh0TWVudUl0ZW06OmNyZWF0ZShtZW51SXRlbSkpOworCisgICAgICAgICAgICBXS0FycmF5
UmVmIG5ld01lbnUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVy
c2lvbiA+PSAyKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFdlYkhpdFRlc3RSZXN1bHQ+IHdl
YkhpdFRlc3RSZXN1bHQgPSBXZWJIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdERh
dGEpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2Vk
TWVudSh0b0FQSSgmcGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUocHJv
cG9zZWRNZW51SXRlbXMpKS5nZXQoKSksICZuZXdNZW51LCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0
LmdldCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVG
cm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQ
SShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkuZ2V0KCkp
LCAmbmV3TWVudSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
CisgICAgICAgICAgICBSZWZQdHI8QVBJOjpBcnJheT4gYXJyYXkgPSBhZG9wdFJlZih0b0ltcGwo
bmV3TWVudSkpOworCisgICAgICAgICAgICBjdXN0b21NZW51LmNsZWFyKCk7CisKKyAgICAgICAg
ICAgIHNpemVfdCBuZXdTaXplID0gYXJyYXkgPyBhcnJheS0+c2l6ZSgpIDogMDsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAg
ICAgV2ViQ29udGV4dE1lbnVJdGVtKiBpdGVtID0gYXJyYXktPmF0PFdlYkNvbnRleHRNZW51SXRl
bT4oaSk7CisgICAgICAgICAgICAgICAgaWYgKCFpdGVtKSB7CisgICAgICAgICAgICAgICAgICAg
IExPRyhDb250ZXh0TWVudSwgIk5ldyBtZW51IGVudHJ5IGF0IGluZGV4ICVpIGlzIG5vdCBhIFdl
YkNvbnRleHRNZW51SXRlbSIsIChpbnQpaSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGN1c3RvbU1lbnUuYXBwZW5k
KCppdGVtLT5kYXRhKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBjdXN0b21Db250ZXh0TWVudUl0
ZW1TZWxlY3RlZChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURh
dGEmIGl0ZW1EYXRhKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgbV9jbGllbnQuY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
dG9BUEkoJnBhZ2UpLCB0b0FQSShXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShpdGVtRGF0YSku
Z2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGlzbWlzc2VkKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3Zl
cnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5jb250ZXh0TWVudURp
c21pc3NlZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50
LmNvbnRleHRNZW51RGlzbWlzc2VkKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG93Q29udGV4dE1lbnUo
V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9u
LCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG1lbnVJdGVtc1ZlY3Rvcikg
b3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG93Q29udGV4
dE1lbnUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBWZWN0
b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gbWVudUl0ZW1zOworICAgICAgICAgICAgbWVudUl0ZW1z
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWVudUl0ZW1zVmVjdG9yLnNpemUoKSk7CisKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgbWVudUl0ZW0gOiBtZW51SXRlbXNWZWN0b3IpCisgICAg
ICAgICAgICAgICAgbWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06
OmNyZWF0ZShtZW51SXRlbSkpOworCisgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1l
bnUodG9BUEkoJnBhZ2UpLCB0b0FQSShtZW51TG9jYXRpb24pLCB0b0FQSShBUEk6OkFycmF5Ojpj
cmVhdGUoV1RGOjptb3ZlKG1lbnVJdGVtcykpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2
aXJ0dWFsIGJvb2wgaGlkZUNvbnRleHRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5oaWRlQ29udGV4dE1lbnUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBtX2NsaWVudC5oaWRl
Q29udGV4dE1lbnUodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1l
bnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsK
ICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzM0NmI1ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0KLSNpbmNsdWRlICJXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKLQot
I2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51SXRlbS5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotYm9vbCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldENvbnRleHRNZW51
RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRNZW51VmVjdG9yLCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4mIGN1c3RvbU1lbnUsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIGhp
dFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCi17Ci0gICAgaWYgKCFtX2Ns
aWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUgJiYgIW1fY2xpZW50LmdldENvbnRl
eHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9jbGllbnQuYmFzZS52ZXJzaW9uID49IDIgJiYgIW1f
Y2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHByb3Bvc2VkTWVudUl0ZW1z
OwotICAgIHByb3Bvc2VkTWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocHJvcG9zZWRN
ZW51VmVjdG9yLnNpemUoKSk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1lbnVJdGVtIDogcHJv
cG9zZWRNZW51VmVjdG9yKQotICAgICAgICBwcm9wb3NlZE1lbnVJdGVtcy51bmNoZWNrZWRBcHBl
bmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUobWVudUl0ZW0pKTsKLQotICAgIFdLQXJyYXlS
ZWYgbmV3TWVudSA9IG51bGxwdHI7Ci0gICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA+PSAy
KSB7Ci0gICAgICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0PiB3ZWJIaXRUZXN0UmVzdWx0ID0g
V2ViSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHREYXRhKTsKLSAgICAgICAgbV9j
bGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQSShB
UEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkuZ2V0KCkpLCAm
bmV3TWVudSwgdG9BUEkod2ViSGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9jbGllbnQu
Z2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9B
UEkocGFnZSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUocHJvcG9zZWRNZW51
SXRlbXMpKS5nZXQoKSksICZuZXdNZW51LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0KLSAgICBSZWZQdHI8QVBJOjpBcnJheT4gYXJyYXkgPSBhZG9wdFJlZih0
b0ltcGwobmV3TWVudSkpOwotICAgIAotICAgIGN1c3RvbU1lbnUuY2xlYXIoKTsKLSAgICAKLSAg
ICBzaXplX3QgbmV3U2l6ZSA9IGFycmF5ID8gYXJyYXktPnNpemUoKSA6IDA7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBuZXdTaXplOyArK2kpIHsKLSAgICAgICAgV2ViQ29udGV4dE1lbnVJ
dGVtKiBpdGVtID0gYXJyYXktPmF0PFdlYkNvbnRleHRNZW51SXRlbT4oaSk7Ci0gICAgICAgIGlm
ICghaXRlbSkgewotICAgICAgICAgICAgTE9HKENvbnRleHRNZW51LCAiTmV3IG1lbnUgZW50cnkg
YXQgaW5kZXggJWkgaXMgbm90IGEgV2ViQ29udGV4dE1lbnVJdGVtIiwgKGludClpKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjdXN0b21NZW51
LmFwcGVuZCgqaXRlbS0+ZGF0YSgpKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXZvaWQgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpjdXN0b21Db250ZXh0TWVudUl0ZW1T
ZWxlY3RlZChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEm
IGl0ZW1EYXRhKQotewotICAgIGlmICghbV9jbGllbnQuY3VzdG9tQ29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+
IGl0ZW0gPSBXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShpdGVtRGF0YSk7Ci0gICAgbV9jbGll
bnQuY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQodG9BUEkocGFnZSksIHRvQVBJKGl0ZW0u
Z2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlBhZ2VDb250
ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVEaXNtaXNzZWQoV2ViUGFnZVByb3h5KiBwYWdlKQot
ewotICAgIGlmICghbV9jbGllbnQuY29udGV4dE1lbnVEaXNtaXNzZWQpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBtX2NsaWVudC5jb250ZXh0TWVudURpc21pc3NlZCh0b0FQSShwYWdlKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotYm9vbCBXZWJQYWdlQ29udGV4dE1lbnVD
bGllbnQ6OnNob3dDb250ZXh0TWVudShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYgbWVudUl0ZW1zVmVjdG9yKQotewotICAgIGlmICghbV9jbGllbnQuc2hvd0NvbnRleHRN
ZW51KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2Jq
ZWN0Pj4gbWVudUl0ZW1zOwotICAgIG1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1l
bnVJdGVtc1ZlY3Rvci5zaXplKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBtZW51SXRlbSA6
IG1lbnVJdGVtc1ZlY3RvcikKLSAgICAgICAgbWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJD
b250ZXh0TWVudUl0ZW06OmNyZWF0ZShtZW51SXRlbSkpOwotCi0gICAgbV9jbGllbnQuc2hvd0Nv
bnRleHRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQSShtZW51TG9jYXRpb24pLCB0b0FQSShBUEk6OkFy
cmF5OjpjcmVhdGUoV1RGOjptb3ZlKG1lbnVJdGVtcykpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFdlYlBhZ2VDb250ZXh0
TWVudUNsaWVudDo6aGlkZUNvbnRleHRNZW51KFdlYlBhZ2VQcm94eSogcGFnZSkKLXsKLSAgICBp
ZiAoIW1fY2xpZW50LmhpZGVDb250ZXh0TWVudSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgbV9jbGllbnQuaGlkZUNvbnRleHRNZW51KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlYjk2NzEyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudF9oCi0j
ZGVmaW5lIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudF9oCi0KLSNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgotI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1
bHQuaCIKLSNpbmNsdWRlICJXS1BhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLXRlbXBsYXRlPD4g
c3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VDb250ZXh0TWVudUNsaWVudEJhc2U+IHsKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlQ29udGV4dE1lbnVDbGllbnRWMCwgV0tQYWdlQ29udGV4
dE1lbnVDbGllbnRWMSwgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRWMiwgV0tQYWdlQ29udGV4dE1l
bnVDbGllbnRWMz4gVmVyc2lvbnM7Ci19OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQotY2xhc3Mg
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUNvbnRl
eHRNZW51Q2xpZW50QmFzZT4gewotcHVibGljOgotICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiYgcHJvcG9zZWRNZW51LCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGN1
c3RvbU1lbnUsIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpOwotICAgIHZvaWQgY3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViUGFnZVBy
b3h5KiwgY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwotICAgIHZvaWQgY29udGV4dE1l
bnVEaXNtaXNzZWQoV2ViUGFnZVByb3h5Kik7Ci0gICAgYm9vbCBzaG93Q29udGV4dE1lbnUoV2Vi
UGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4mKTsKLSAgICBib29sIGhpZGVDb250ZXh0TWVudShXZWJQYWdlUHJv
eHkqKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0jZW5kaWYgLy8gV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggM2Q4MzljOS4uZGFlOTRh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5
LmgiCisjaW5jbHVkZSAiQVBJQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBUElGaW5k
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRm9ybUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUdlb21l
dHJ5LmgiCkBAIC0yNjUsNiArMjY2LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAs
IG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQogICAgICwgbV9m
aW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQogICAgICwgbV9k
aWFnbm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ+KCkpCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgLCBtX2NvbnRl
eHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkK
KyNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZp
Z2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKICAgICAsIG1fcGFnZUdy
b3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKQEAgLTU2OSw5ICs1NzMsMTQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkRpYWdub3N0aWNMb2cKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotdm9pZCBX
ZWJQYWdlUHJveHk6OmluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1BhZ2VDb250
ZXh0TWVudUNsaWVudEJhc2UqIGNsaWVudCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250ZXh0
TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4gY29udGV4
dE1lbnVDbGllbnQpCiB7Ci0gICAgbV9jb250ZXh0TWVudUNsaWVudC5pbml0aWFsaXplKGNsaWVu
dCk7CisgICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkgeworICAgICAgICBtX2NvbnRleHRNZW51
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IFdURjo6bW92
ZShjb250ZXh0TWVudUNsaWVudCk7CiB9CiAjZW5kaWYKIApAQCAtNzI4LDcgKzczNyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgbV9maW5kTWF0Y2hlc0NsaWVudC5pbml0aWFs
aXplKG51bGxwdHIpOwogICAgIG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNsaWVudC5pbml0aWFsaXplKG51bGxwdHIpOwor
ICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1l
bnVDbGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fd2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5w
YWdlV2FzSW52YWxpZGF0ZWQoKTsKQEAgLTM4NTcsOSArMzg2Niw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9u
LCBjb25zdCBDCiB7CiAgICAgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4
dE1lbnVDb250ZXh0RGF0YTsKIAotICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC5oaWRlQ29u
dGV4dE1lbnUodGhpcykgJiYgbV9hY3RpdmVDb250ZXh0TWVudSkgeworICAgIGlmICghbV9jb250
ZXh0TWVudUNsaWVudC0+aGlkZUNvbnRleHRNZW51KCp0aGlzKSAmJiBtX2FjdGl2ZUNvbnRleHRN
ZW51KSB7CiAgICAgICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVudSgpOwot
ICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0gMDsKKyAgICAgICAgbV9hY3RpdmVDb250ZXh0
TWVudSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFn
ZUNsaWVudC5jcmVhdGVDb250ZXh0TWVudVByb3h5KHRoaXMpOwpAQCAtMzg3OCwyMSArMzg4Nywy
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50
UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQwogICAgICAgICBhc2tDbGllbnRUb0NoYW5nZU1l
bnUgPSBmYWxzZTsKICNlbmRpZgogCi0gICAgaWYgKGFza0NsaWVudFRvQ2hhbmdlTWVudSAmJiBt
X2NvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBw
cm9wb3NlZEl0ZW1zLCBpdGVtcywgY29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKSkKKyAgICBpZiAoYXNrQ2xpZW50VG9DaGFuZ2VNZW51ICYmIG1fY29u
dGV4dE1lbnVDbGllbnQtPmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSgqdGhpcywgcHJv
cG9zZWRJdGVtcywgaXRlbXMsIGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3Vs
dERhdGEoKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSkpCiAgICAgICAgIHVzZVByb3Bvc2VkSXRlbXMgPSBmYWxzZTsKIAogICAg
IGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXNUb1Nob3cgPSB1c2VQ
cm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRJdGVtcyA6IGl0ZW1zOwotICAgIGlmICghbV9jb250ZXh0
TWVudUNsaWVudC5zaG93Q29udGV4dE1lbnUodGhpcywgbWVudUxvY2F0aW9uLCBpdGVtc1RvU2hv
dykpCisgICAgaWYgKCFtX2NvbnRleHRNZW51Q2xpZW50LT5zaG93Q29udGV4dE1lbnUoKnRoaXMs
IG1lbnVMb2NhdGlvbiwgaXRlbXNUb1Nob3cpKQogICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51
LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtc1RvU2hvdywgY29udGV4dE1lbnVD
b250ZXh0RGF0YSk7CiAKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50LmNvbnRleHRNZW51RGlzbWlz
c2VkKHRoaXMpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQtPmNvbnRleHRNZW51RGlzbWlzc2Vk
KCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiB7CiAgICAgLy8gQXBwbGljYXRp
b24gY3VzdG9tIGl0ZW1zIGRvbid0IG5lZWQgdG8gcm91bmQtdHJpcCB0aHJvdWdoIHRvIFdlYkNv
cmUgaW4gdGhlIFdlYlByb2Nlc3MuCiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPj0gQ29udGV4dE1l
bnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQu
Y3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQodGhpcywgaXRlbSk7CisgICAgICAgIG1fY29u
dGV4dE1lbnVDbGllbnQtPmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKCp0aGlzLCBpdGVt
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDRhMzcxOTAuLjNhOTQ2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTU1LDcgKzU1LDYgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVQcm94eS5oIgotI2luY2x1ZGUgIldlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAt
MTEzLDYgKzExMiw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBDb250ZXh0
TWVudUNsaWVudDsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGb3JtQ2xpZW50OwogY2xhc3Mg
TG9hZGVyQ2xpZW50OwpAQCAtMzA3LDcgKzMwNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgdm9pZCBpbml0aWFsaXplQ29udGV4dE1lbnVDbGll
bnQoY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKik7CisgICAgdm9pZCBzZXRDb250
ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4pOwog
I2VuZGlmCiAgICAgQVBJOjpGaW5kQ2xpZW50JiBmaW5kQ2xpZW50KCkgeyByZXR1cm4gKm1fZmlu
ZENsaWVudDsgfQogICAgIHZvaWQgc2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpG
aW5kQ2xpZW50Pik7CkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBwcml2YXRlOgogICAgIFdlYkZpbmRN
YXRjaGVzQ2xpZW50IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50IG1f
Y29udGV4dE1lbnVDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVD
bGllbnQ+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJOYXZpZ2F0aW9uU3RhdGU+IG1fbmF2aWdhdGlvblN0YXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJhM2U4NmQuLjY3
MzA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc0LDYgKzc0LDcgQEAKIAkJMDBCOTY2MTYxOEUyNENCQTAwQ0UxRjg4IC8q
IEFQSUZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDAwQjk2NjE1MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggKi87IH07
CiAJCTAwQjk2NjE5MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTY2MTcxOEUyNUFFMTAwQ0Ux
Rjg4IC8qIEZpbmRDbGllbnQubW0gKi87IH07CiAJCTAwQjk2NjFBMThFMjVBRTEwMENFMUY4OCAv
KiBGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwMEI5NjYxODE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oICovOyB9OworCQkw
NzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkU4ODREMUExM0NBREYw
MDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oICovOyB9OwogCQkwRjBDMzY1ODE4QzA1
MUJBMDBGNjA3RDcgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU3MThDMDUxQkEwMEY2MDdENyAv
KiBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tICovOyB9OwogCQkwRjBDMzY1QTE4QzA1NTU4MDBG
NjA3RDcgLyogTGF5ZXJSZXByZXNlbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NTkxOEMwNTU1ODAwRjYwN0Q3IC8qIExheWVyUmVw
cmVzZW50YXRpb24uaCAqLzsgfTsKIAkJMEYwQzM2NUMxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1QjE4QzA1Q0ExMDBGNjA3RDcgLyogUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbSAqLzsgfTsKQEAgLTg4OSw4ICs4OTAsNiBA
QAogCQk1MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThF
REQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5
RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2Vy
dmljZXNDb250cm9sbGVyLmggKi87IH07CiAJCTUxNEQ5RjU4MTkxMTlEMzUwMDAwNjNBNyAvKiBT
ZXJ2aWNlc0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTREOUY1NjE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVy
Lm1tICovOyB9OwotCQk1MTUzNTY5QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRN
ZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQu
Y3BwICovOyB9OwotCQk1MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRN
ZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmgg
Ki87IH07CiAJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBB
MzdDNEEgLyogQVBJRGF0YS5oICovOyB9OwogCQk1MTVFNzcyNzE4M0RENkY2MDAwNzIwM0YgLyog
QXN5bmNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovOyB9
OwogCQk1MTVFNzcyODE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyNjE4M0RENkY2MDAw
NzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi87IH07CkBAIC0yMDg4LDYgKzIwODcsOCBAQAogCQkw
MEI5NjYxNTE4RTI0Q0JBMDBDRTFGODggLyogQVBJRmluZENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElGaW5kQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTAwQjk2NjE3MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZENsaWVudC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyog
QVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc2
RTg4NEYxQTEzQ0JDNjAwNUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4NjdENkE1RkU4NDAzMDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IG5hbWUgPSBBcHBLaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMDg5
QzE2NjdGRTg0MTE1OEMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0
cmluZ3M7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3Ry
aW5nczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQzM2NTcxOEMwNTFCQTAwRjYw
N0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBSZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOyBwYXRoID0gaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
OTk5LDggKzMwMDAsNiBAQAogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGlj
c1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc1Jl
cXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUxOTExOUQzNTAw
MDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE1MzU2OUExMjkxQjFEMjAwMDc0OURD
IC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRl
eHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VD
b250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTU3OEI4
MjEyMDlFQ0VGMDBBMzdDNEEgLyogQVBJRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUU3NzI1
MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE1RTc3MjYxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY1JlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTYwNjEsOCArNjA2MCw2IEBACiAJCQkJNzU1NDIyQkUxODA2MkJF
NDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTc1NTQy
MkJGMTgwNjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmggKi8sCiAJ
CQkJNzU1NDIyQzAxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gKi8sCi0JCQkJNTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VD
b250ZXh0TWVudUNsaWVudC5jcHAgKi8sCi0JCQkJNTE1MzU2OUIxMjkxQjFEMjAwMDc0OURDIC8q
IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovLAogCQkJCTgzNzJEQjI2MUE2NzU2MjgwMEM2
OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwICovLAogCQkJCTgzNzJE
QjI3MUE2NzU2MjgwMEM2OTdDNSAvKiBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAq
LywKIAkJCQlCQzdCNjIwNTEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmNwcCAqLywK
QEAgLTYxMjksNiArNjEyNiw3IEBACiAJCQkJN0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQ
SVVzZXJTY3JpcHQuaCAqLywKIAkJCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgKi8sCiAJCQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKKwkJCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyog
QVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQVBJOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTY0MjksNiArNjQyNyw3IEBACiAJCUJDMjA0RUU3MTFD
ODNFQUQwMDhGMzM3NSAvKiBBUEkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTA3NkU4ODRGMUExM0NCQzYwMDVFOTBGQyAvKiBBUElJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovLAogCQkJCUJDMjA0RUU4MTFDODNFQjcwMDhGMzM3
NSAvKiBjICovLAogCQkJCTFGMDE4MTY4MTg1OERDMTUwMEY5Mjg4NCAvKiBDb2NvYSAqLywKIAkJ
CQlCQzk4OUQ0NTE2MTgxNjkxMDAwRDQ2RDMgLyogbWFjICovLApAQCAtNzgyNSw3ICs3ODI0LDYg
QEAKIAkJCQk3NTlDQ0Q1QTE4MDhGNjE2MDA3OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzVFNzQ5RUMxODBEQkI5ODAwMDg4QkE2IC8qIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMw
MzJEOEYxMEY0MzdBMDAwNThDMTVBIC8qIFdlYlBhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
NTM1NjlEMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDN0I2MjA2MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MjUyMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdl
R3JvdXBEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdCNjIxNTEyQTQyMTlBMDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtNzkwNSw2ICs3OTAzLDcg
QEAKIAkJCQlCQ0REQjMxNzEyNEVCRDEzMDA0OEQxM0MgLyogV0tCYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3Q0Q1RUJCQjE3NDZBODNFMDAwQzFDNDUgLyogV0tCYXNlTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0JBQUM3MzE0NEU2MTlFMDA1M0Y4MkYgLyogV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzZFODg0RTFBMTNDQURGMDA1RTkwRkMg
LyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkFBQzc0MTQ0
RTYxQTUwMDUzRjgyRiAvKiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzc4OEEwNUMxNDc0M0M5MDAwNjMxOUU1IC8qIFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkFBQ0Y0MTQ1
MjMyNEYwMDUzRjgyRiAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmggaW4gSGVhZGVycyAqLywK
QEAgLTk1NjgsNyArOTU2Nyw2IEBACiAJCQkJNzU1NDIyQzQxODA2MkJGOTAwNDZGNkE4IC8qIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzVFNzQ5RUIx
ODBEQkI5ODAwMDg4QkE2IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NjNENkIxMTNERDE5MjAwNTc0QkUyIC8qIFdl
YlBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE1MzU2OUMxMjkxQjFEMjAwMDc0OURDIC8q
IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDZDNjA5
NTEyNEMxNDRCMDAwMTY4MkYgLyogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzdCNjIwNzEyOUEwQTY3MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDN0I2MjUzMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdl
R3JvdXBEYXRhLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4MzE3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQSUluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50X2gKKyNkZWZpbmUgQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnRfaAorCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbnRleHRN
ZW51SXRlbTsKK2NsYXNzIEhpdFRlc3RSZXN1bHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKK2NsYXNzIFdlYkZyYW1lOworY2xhc3MgV2Vi
UGFnZTsKK2NsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworfQorCituYW1lc3BhY2UgQVBJIHsKK2Ns
YXNzIE9iamVjdDsKKworbmFtZXNwYWNlIEluamVjdGVkQnVuZGxlIHsKKworY2xhc3MgUGFnZUNv
bnRleHRNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QYWdlQ29udGV4dE1lbnVD
bGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJ
dGVtcyhXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbT4mIC8qIGRlZmF1bHRNZW51ICovLCBW
ZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgLyogbmV3TWVudSAqLywgUmVm
UHRyPEFQSTo6T2JqZWN0PiYgLyogdXNlckRhdGEgKi8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVGb3JBY3Rpb25NZW51KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiAvKiB1c2VyRGF0
YSAqLykgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbmplY3RlZEJ1bmRsZQorCit9IC8vIG5h
bWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmIC8v
IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcAppbmRleCBiYTIzMjk2Li5iOTk0NWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCkBAIC03MSw3ICs3MSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5
cGVJRCgpCiB2b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIHdrQ2xpZW50
KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHRvSW1wbChwYWdlUmVmKS0+aW5p
dGlhbGl6ZUluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQod2tDbGllbnQpOworICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdr
Q2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5jcHAKaW5kZXggMjljZmVjYS4uOTViMjM2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTQyLDE5
ICs0MiwyNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1l
bnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqIHBhZ2UsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdCogaGl0VGVzdFJlc3VsdCwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+
JiBkZWZhdWx0TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBuZXdNZW51LCBS
ZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKK0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudChjb25zdCBXS0J1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIGNsaWVudCkKK3sKKyAgICBpbml0aWFsaXpl
KGNsaWVudCk7Cit9CisKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6
OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IEhpdFRl
c3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBw
cm9wb3NlZE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3TWVudSwgUmVm
UHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5nZXRDb250
ZXh0TWVudUZyb21EZWZhdWx0TWVudSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGRlZmF1bHRNZW51ID0ga2l0SXRlbXMocHJvcG9z
ZWRNZW51KTsKICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGVmYXVsdE1lbnVJdGVt
czsKICAgICBkZWZhdWx0TWVudUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGVmYXVsdE1l
bnUuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBkZWZhdWx0TWVudSkKICAg
ICAgICAgZGVmYXVsdE1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVt
OjpjcmVhdGUoaXRlbSkpOwogCi0gICAgV0tBcnJheVJlZiBuZXdNZW51V0sgPSAwOwotICAgIFdL
VHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVG
cm9tRGVmYXVsdE1lbnUodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQpLCB0b0FQSShB
UEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKGRlZmF1bHRNZW51SXRlbXMpKS5nZXQoKSksICZu
ZXdNZW51V0ssICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICBXS0FycmF5UmVmIG5ld01lbnVXSyA9IG51bGxwdHI7CisgICAgV0tUeXBlUmVmIHVzZXJEYXRh
VG9QYXNzID0gbnVsbHB0cjsKKyAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21EZWZhdWx0
TWVudSh0b0FQSSgmcGFnZSksIHRvQVBJKEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3Jl
YXRlKGhpdFRlc3RSZXN1bHQpLmdldCgpKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6
bW92ZShkZWZhdWx0TWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudVdLLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFy
cmF5ID0gYWRvcHRSZWYodG9JbXBsKG5ld01lbnVXSykpOwogICAgIHVzZXJEYXRhID0gYWRvcHRS
ZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiAgICAgCkBAIC03NywxMyArODMsMTMgQEAgYm9v
bCBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21E
ZWZhdWx0SXRlbXMoV2ViUGFnZSoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6cHJlcGFyZUZvckFjdGlvbk1lbnUoV2ViUGFn
ZSogcGFnZSwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0LCBSZWZQ
dHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQ6OnByZXBhcmVGb3JBY3Rpb25NZW51KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IEhp
dFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRh
KQogewogICAgIGlmICghbV9jbGllbnQucHJlcGFyZUZvckFjdGlvbk1lbnUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IG51bGxwdHI7Ci0gICAgbV9j
bGllbnQucHJlcGFyZUZvckFjdGlvbk1lbnUodG9BUEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1
bHQpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgbV9j
bGllbnQucHJlcGFyZUZvckFjdGlvbk1lbnUodG9BUEkoJnBhZ2UpLCB0b0FQSShJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0KS5nZXQoKSksICZ1c2VyRGF0
YVRvUGFzcywgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0
UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggZTRhYTk5Yy4uMzQwMjM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQuaApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogCiAj
aW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwpAQCAtNDEsMTkg
KzQxLDIxIEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudEJhc2U+IHsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29u
dGV4dE1lbnU7CitjbGFzcyBDb250ZXh0TWVudUl0ZW07CitjbGFzcyBIaXRUZXN0UmVzdWx0Owog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0OwogY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNs
YXNzIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZT4geworY2xhc3MgSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VDb250ZXh0TWVudUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgYm9vbCBnZXRDdXN0b21NZW51RnJv
bURlZmF1bHRJdGVtcyhXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KiwgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBkZWZhdWx0TWVudSwgVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+JiBuZXdNZW51LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2Vy
RGF0YSk7Ci0gICAgdm9pZCBwcmVwYXJlRm9yQWN0aW9uTWVudShXZWJQYWdlKiwgSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0KiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpOworICAg
IGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50KGNvbnN0IFdLQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSopOworCitwcml2YXRlOgorICAgIGJvb2wgZ2V0
Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYgZGVmYXVs
dE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3TWVudSwgUmVmUHRyPEFQ
STo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgcHJlcGFyZUZvckFjdGlv
bk1lbnUoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250
ZXh0TWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4
dE1lbnUuY3BwCmluZGV4IDMwODRlZTIuLjU4MWVjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcApAQCAtMjYsMTAgKzI2
LDggQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgogCiAjaW5jbHVkZSAiQ29udGV4dE1l
bnVDb250ZXh0RGF0YS5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5o
IgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCi0jaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKQEAgLTkzLDEyICs5MSw5IEBAIHZvaWQgV2ViQ29udGV4dE1lbnU6Om1lbnVJdGVtc1dpdGhV
c2VyRGF0YShWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gJm1lbnVJCiAgICAgVmVjdG9y
PENvbnRleHRNZW51SXRlbT4gY29yZUl0ZW1zID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUt
PnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxXZWJDb250ZXh0
TWVudUl0ZW1EYXRhPiBwcm9wb3NlZE1lbnUgPSBraXRJdGVtcyhjb3JlSXRlbXMpOwotICAgIFZl
Y3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBuZXdNZW51OwotICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQ6OmNyZWF0ZShjb250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKSk7Ci0gICAgaWYgKG1f
cGFnZS0+aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpLmdldEN1c3RvbU1lbnVGcm9t
RGVmYXVsdEl0ZW1zKG1fcGFnZSwgaGl0VGVzdFJlc3VsdC5nZXQoKSwgcHJvcG9zZWRNZW51LCBu
ZXdNZW51LCB1c2VyRGF0YSkpCi0gICAgICAgIHByb3Bvc2VkTWVudSA9IG5ld01lbnU7Ci0gICAg
bWVudUl0ZW1zID0gcHJvcG9zZWRNZW51OworICAgIGlmIChtX3BhZ2UtPmluamVjdGVkQnVuZGxl
Q29udGV4dE1lbnVDbGllbnQoKS5nZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygqbV9wYWdl
LCBjb250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKSwgY29yZUl0ZW1zLCBtZW51SXRlbXMsIHVzZXJE
YXRhKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1lbnVJdGVtcyA9IGtpdEl0ZW1zKGNvcmVJdGVt
cyk7CiB9CiAKIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBXZWJDb250ZXh0TWVudTo6
aXRlbXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGRlNDkxMGQuLjc0ZDVhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI3Niw2ICsyNzYsOSBAQCBXZWJQYWdlOjpX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQogI2VuZGlm
CiAgICAgLCBtX3NldENhblN0YXJ0TWVkaWFUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZX
ZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCisjZW5kaWYKICAgICAsIG1f
Zm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGll
bnQ+KCkpCiAgICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZVVJQ2xpZW50PigpKQogICAgICwgbV9maW5kQ29udHJvbGxlcih0aGlzKQpAQCAt
NTkzLDkgKzU5NiwxNCBAQCB1aW50NjRfdCBXZWJQYWdlOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLXZvaWQgV2ViUGFnZTo6aW5p
dGlhbGl6ZUluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnRCYXNlKiBjbGllbnQpCit2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxl
Q29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VDb250ZXh0TWVudUNsaWVudD4gY29udGV4dE1lbnVDbGllbnQpCiB7Ci0gICAgbV9jb250ZXh0
TWVudUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CisgICAgaWYgKCFjb250ZXh0TWVudUNsaWVu
dCkgeworICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gV1RGOjptb3ZlKGNvbnRleHRN
ZW51Q2xpZW50KTsKIH0KICNlbmRpZgogCkBAIC0xMDEzLDcgKzEwMjEsNyBAQCB2b2lkIFdlYlBh
Z2U6OmNsb3NlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9j
b250ZXh0TWVudUNsaWVudC5pbml0aWFsaXplKDApOworICAgIG1fY29udGV4dE1lbnVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNs
aWVudD4oKTsKICNlbmRpZgogICAgIG1fZWRpdG9yQ2xpZW50LmluaXRpYWxpemUoMCk7CiAgICAg
bV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3Jt
Q2xpZW50PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggMmMxMzlhMi4uODUwNDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBhZ2VfaAogCiAj
aW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBUElJbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUg
IkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKQEAgLTI4Myw3ICsyODQsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyAtLSBJbmplY3RlZEJ1bmRsZSBtZXRob2RzCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChXS0J1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqKTsKKyAgICB2b2lkIHNldEluamVjdGVkQnVu
ZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VDb250ZXh0TWVudUNsaWVudD4pOwogI2VuZGlmCiAgICAgdm9pZCBpbml0aWFsaXplSW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZSopOwog
ICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50Pik7CkBAIC0yOTcsNyArMjk4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoV0tCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlKik7CiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKLSAgICBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dCYgaW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpIHsgcmV0dXJuIG1fY29udGV4dE1l
bnVDbGllbnQ7IH0KKyAgICBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGll
bnQmIGluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKSB7IHJldHVybiAqbV9jb250ZXh0
TWVudUNsaWVudC5nZXQoKTsgfQogI2VuZGlmCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50JiBpbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpIHsgcmV0dXJuIG1fZWRpdG9yQ2xp
ZW50OyB9CiAgICAgQVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudCYgaW5qZWN0ZWRCdW5k
bGVGb3JtQ2xpZW50KCkgeyByZXR1cm4gKm1fZm9ybUNsaWVudC5nZXQoKTsgfQpAQCAtMTE4NSw3
ICsxMTg2LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fd2luZG93UmVzaXpl
clNpemU7CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBJbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudCBtX2NvbnRleHRNZW51Q2xpZW50OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+IG1fY29udGV4
dE1lbnVDbGllbnQ7CiAjZW5kaWYKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQg
bV9lZGl0b3JDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OkZvcm1DbGllbnQ+IG1fZm9ybUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBhYzQxZWFlLi40ZGI2YWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCkBAIC0xMDc5LDggKzEwNzksNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25N
ZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbkluVgogICAg
IH0KIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0ID0gSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoaGl0VGVzdFJlc3VsdCk7Ci0gICAgaW5q
ZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpLnByZXBhcmVGb3JBY3Rpb25NZW51KHRoaXMs
IGluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5nZXQoKSwgdXNlckRhdGEpOworICAgIGluamVj
dGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoKS5wcmVwYXJlRm9yQWN0aW9uTWVudSgqdGhpcywg
aGl0VGVzdFJlc3VsdCwgdXNlckRhdGEpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3QoYWN0aW9uTWVudVJlc3VsdCwgZm9ySW1t
ZWRpYXRlQWN0aW9uLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaGFyZWQoKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0K
</data>
<flag name="review"
          id="269930"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>