<?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>128582</bug_id>
          
          <creation_ts>2014-02-10 23:15:58 -0800</creation_ts>
          <short_desc>Stop using PLATFORM(MAC) in WebKit2/Shared except where it means “OS X but not iOS”</short_desc>
          <delta_ts>2014-02-11 09:56:00 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979295</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-10 23:15:58 -0800</bug_when>
    <thetext>Same deal as bug 128513.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979302</commentid>
    <comment_count>1</comment_count>
      <attachid>223815</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-10 23:28:31 -0800</bug_when>
    <thetext>Created attachment 223815
Replace PLATFORM(MAC)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979463</commentid>
    <comment_count>2</comment_count>
      <attachid>223815</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-11 09:31:40 -0800</bug_when>
    <thetext>Comment on attachment 223815
Replace PLATFORM(MAC)

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

&gt; Source/WebKit2/Shared/NativeWebKeyboardEvent.h:47
&gt; +#if PLATFORM(GTK)
&gt;  #include &lt;WebCore/CompositionResults.h&gt;
&gt;  #include &lt;WebCore/GUniquePtrGtk.h&gt;
&gt;  #include &lt;WebCore/GtkInputMethodFilter.h&gt;
&gt;  typedef union _GdkEvent GdkEvent;
&gt; -#elif PLATFORM(EFL)
&gt; +#endif
&gt; +
&gt; +#if PLATFORM(EFL)
&gt;  #include &lt;Evas.h&gt;
&gt;  #endif

I would put EFL before GTK because I like alphabetical order rather than arbitrary order for such things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979483</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-11 09:56:00 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r163886&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223815</attachid>
            <date>2014-02-10 23:28:31 -0800</date>
            <delta_ts>2014-02-11 09:31:39 -0800</delta_ts>
            <desc>Replace PLATFORM(MAC)</desc>
            <filename>bug-128582-20140210232832.patch</filename>
            <type>text/plain</type>
            <size>95152</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Mzg2NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE0LTAyLTEwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQTEFURk9STShN
QUMpIGluIFdlYktpdDIvU2hhcmVkIGV4Y2VwdCB3aGVyZSBpdCBtZWFucyDigJxPUyBYIGJ1dCBu
b3QgaU9T4oCdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjg1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHA6IFJlbW92ZWQgd29ya2Fyb3Vu
ZCBmb3IgTWFjIFNhZmFyaSA2IGNvbXBhdGliaWxpdHkuCisgICAgICAgIChXS0NvbnRleHRNZW51
SXRlbUdldFRhZyk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9u
cy5jcHA6IEFkZGVkICYmICFQTEFURk9STShJT1MpLCBiZWNhdXNlIHRoZXNlIGZ1bmN0aW9ucwor
ICAgICAgICBhcmUgbm90IG5lZWRlZCBvbiBpT1MuCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0Ep
LgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgIChXZWJLaXQ6OnRvSW1wbCk6Cisg
ICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQ2hp
bGRQcm9jZXNzLmNwcDogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOiBD
aGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0EpIGFyb3VuZAorICAgICAgICBz
ZXRBcHBsaWNhdGlvbklzRGFlbW9uIGFuZCBzZXRRT1MuIENoYW5nZWQgaXQgdG8gVVNFKEFQUEtJ
VCkgYXJvdW5kIHN0b3BOU0FwcFJ1bkxvb3AuCisgICAgICAgICogU2hhcmVkL0NvbW1hbmRMaW5l
Lmg6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0byBPUyhVTklYKSBhcm91bmQgcGFyc2UoKS4KKyAg
ICAgICAgKiBTaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHA6IENoYW5nZWQgUExBVEZPUk0o
TUFDKSB0byBQTEFURk9STShDT0NPQSkuCisgICAgICAgIChXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1
cEluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1cEluZm86OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaDogQ2hhbmdlZCBQ
TEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBTaGFyZWQvRG93bmxv
YWRzL0Rvd25sb2FkLmg6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9EcmF3aW5nQXJlYUluZm8u
aDogQ2hhbmdlZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBT
aGFyZWQvRm9udEluZm8uY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExBVEZPUk0oQ09D
T0EpLgorICAgICAgICAoV2ViS2l0OjpGb250SW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6Rm9udEluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0ZvbnRJbmZvLmg6IERpdHRv
LgorICAgICAgICAqIFNoYXJlZC9MYXllclRyZWVDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAq
IFNoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmg6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0
byBVU0UoQVBQS0lUKSBhcm91bmQKKyAgICAgICAgZm9yd2FyZC1kZWNsYXJhdGlvbiBvZiBOU1Zp
ZXcuCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDogRGl0dG8uCisgICAg
ICAgICogU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaDogRGl0dG8uCisgICAgICAgICogU2hh
cmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hOiBSZW5hbWVkIGZyb20gbWFjLgorICAg
ICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJDb2NvYS5tbTogUmVuYW1lZCBmcm9tIEN1c3RvbVByb3RvY29sTWFuYWdlck1hYy5t
bS4KKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyTWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaDogQ2hhbmdlZCBQTEFURk9S
TShNQUMpIHRvCisgICAgICAgIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBTaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwOiAgQ2hhbmdl
ZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBv
cHVwTWVudURhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51
RGF0YS5oOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5J
bmZvcm1hdGlvbi5jcHA6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpbk1v
ZHVsZUluZm8uaDogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDogRGl0dG8uCisgICAgICAg
ICogU2hhcmVkL1ByaW50SW5mby5oOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gVVNFKEFQUEtJ
VCkgYXJvdW5kIGZvcndhcmQgZGVjbGFyYXRpb24gb2YKKyAgICAgICAgTlNQcmludEluZm8uCisg
ICAgICAgICogU2hhcmVkL1NhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaDogQ2hhbmdl
ZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBTaGFyZWQvVGV4
dENoZWNrZXJTdGF0ZS5oOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gVVNFKEFQUEtJVCkuCisg
ICAgICAgICogU2hhcmVkL1dlYkFyY2hpdmUuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8g
UExBVEZPUk0oQ09DT0EpLgorICAgICAgICAqIFNoYXJlZC9XZWJBcmNoaXZlLmg6IERpdHRvLgor
ICAgICAgICAqIFNoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBTaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmg6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOiBE
aXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQ6OldlYktpdDJQbGF0Zm9y
bVdoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHA6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0Mik6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5oOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOiBEaXR0by4KKyAgICAgICAg
KiBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJX
aGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVu
dDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudDo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHA6IENoYW5nZWQgUExBVEZPUk0o
TUFDKSB0byBVU0UoRk9VTkRBVElPTikuCisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL21hYy9Db21tYW5kTGluZU1hYy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2hh
cmVkL21hYy9QREZLaXRJbXBvcnRzLmg6IFJlbW92ZWQgUExBVEZPUk0oTUFDKQorICAgICAgICAq
IFNoYXJlZC9wb3NpeDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL3Bvc2l4L0NvbW1hbmRMaW5l
UE9TSVguY3BwOiBSZW5hbWVkIGZyb20gbWFjL0NvbW1hbmRMaW5lTWFjLmNwcCBhbmQgcmVtb3Zl
ZAorICAgICAgICBjb21tZW50LgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogVXBkYXRlZCBmb3IgbW92ZXMgYW5kIHJlbmFtZXMuCisKIDIwMTQtMDItMTAgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGhvb2tzIGZv
ciB3cmFwcGluZyBDcnlwdG9LZXlzIGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZQpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gMTYzODYxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNCArMzEsMTQgQEAK
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVk
ZSAiV0tGb3VuZGF0aW9uLmgiCiAjaWZkZWYgX19PQkpDX18KICNpbmNsdWRlICJXS09iamVjdC5o
IgogI2VuZGlmCiAjZW5kaWYKIAotI2RlZmluZSBERUxFR0FURV9SRUZfQ09VTlRJTkdfVE9fQ09D
T0EgKFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQpCisjZGVmaW5lIERFTEVHQVRFX1JF
Rl9DT1VOVElOR19UT19DT0NPQSAoUExBVEZPUk0oQ09DT0EpICYmIFdLX0FQSV9FTkFCTEVEKQog
CiAjaWYgREVMRUdBVEVfUkVGX0NPVU5USU5HX1RPX0NPQ09BCiBPQkpDX0NMQVNTIE5TT2JqZWN0
OwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE2
Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0ZSgp
CiAgICAgc3RvcFJ1bkxvb3AoKTsKIH0KIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRG
T1JNKENPQ09BKQogdm9pZCBDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCShyZXZpc2lvbiAxNjM4NjEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZChib29sKTsKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiAhbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZC5pc0FjdGl2ZSgpOyB9CiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzZXRBcHBs
aWNhdGlvbklzRGFlbW9uKCk7CiAgICAgdm9pZCBzZXRRT1MoaW50IGxhdGVuY3lRT1MsIGludCB0
aHJvdWdocHV0UU9TKTsKICNlbmRpZgpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcFJ1bkxvb3AoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBV
U0UoQVBQS0lUKQogICAgIHN0YXRpYyB2b2lkIHN0b3BOU0FwcFJ1bkxvb3AoKTsKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29tbWFuZExpbmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29tbWFuZExpbmUuaAkocmV2aXNpb24gMTYzODYxKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbW1hbmRMaW5lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIENvbW1hbmRMaW5lIHsK
IHB1YmxpYzoKLSNpZiBQTEFURk9STShNQUMpCisjaWYgT1MoVU5JWCkKICAgICBib29sIHBhcnNl
KGludCBhcmdjLCBjaGFyKiogYXJndik7CiAjZW5kaWYKICAgICBTdHJpbmcgb3BlcmF0b3JbXShj
b25zdCBTdHJpbmcmIGtleSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0
aW9uYXJ5UG9wdXBJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RGljdGlvbmFyeVBvcHVwSW5mby5jcHAJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnNDRi5oIgogI2VuZGlmCiAKQEAgLTM4LDcgKzM4LDcgQEAgdm9pZCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvOjplbmNvZGUoSVBDOjpBcgogewogICAgIGVuY29kZXIgPDwgb3JpZ2luOwogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgaGFkT3B0aW9ucyA9IG9w
dGlvbnM7CiAgICAgZW5jb2RlciA8PCBoYWRPcHRpb25zOwogICAgIGlmIChoYWRPcHRpb25zKQpA
QCAtNTAsNyArNTAsNyBAQCBib29sIERpY3Rpb25hcnlQb3B1cEluZm86OmRlY29kZShJUEM6OkFy
CiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2luKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBi
b29sIGhhZE9wdGlvbnM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYWRPcHRpb25zKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25h
cnlQb3B1cEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlv
bmFyeVBvcHVwSW5mby5oCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYK
IApAQCAtNDQsNyArNDQsNyBAQCBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbyB7CiAgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgRGljdGlvbmFyeVBvcHVwSW5m
byYpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW47Ci0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG9w
dGlvbnM7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRHJhd2luZ0Fy
ZWFJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdpbmdBcmVh
SW5mby5oCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRHJhd2lu
Z0FyZWFJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBlbnVtIERyYXdpbmdBcmVhVHlwZSB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogI2lmICFQTEFURk9STShJT1MpCiAgICAgRHJhd2luZ0FyZWFUeXBl
VGlsZWRDb3JlQW5pbWF0aW9uLAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Rm9udEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5m
by5jcHAJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5m
by5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKICNlbmRpZgogCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIEZvbnRJbmZvOjplbmNvZGUoSVBDOjpB
cmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oZm9udEF0
dHJpYnV0ZURpY3Rpb25hcnkpOwogICAgIGlmIChmb250QXR0cmlidXRlRGljdGlvbmFyeSkKICAg
ICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCkp
OwpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEZvbnRJbmZvOjplbmNvZGUoSVBDOjpBcmd1bWVudEVu
Y29kCiAKIGJvb2wgRm9udEluZm86OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgRm9udEluZm8mIGZvbnRJbmZvKQogeyAgICAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgYm9vbCBoYXNGb250QXR0cmlidXRlRGljdGlvbmFyeTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0ZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmgJKHJldmlzaW9uIDE2
Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEZvbnRJbmZvX2gKICNkZWZpbmUgRm9udEluZm9f
aAogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBGb250SW5m
byB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBGb250SW5mbyYpOwogICAg
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBmb250QXR0cmlidXRlRGljdGlvbmFyeTsKICNlbmRpZgogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9MYXllclRyZWVDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAkocmV2aXNpb24gMTYz
ODYxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50
MzJfdCBjb250ZXh0SUQ7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgdWludDY0X3Qgd2luZG93
SGFuZGxlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudC5oCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOSArMzAsMjQgQEAK
IAogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgVVNFKEFQ
UEtJVCkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIE5TVmlldzsKLSNl
bGlmIFBMQVRGT1JNKEdUSykKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUg
PFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVl
UHRyR3RrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtJbnB1dE1ldGhvZEZpbHRlci5oPgogdHlw
ZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7Ci0jZWxpZiBQTEFURk9STShFRkwpCisjZW5k
aWYKKworI2lmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxFdmFzLmg+CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIFdl
YklPU0V2ZW50OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVX
ZWJNb3VzZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYk1vdXNlRXZlbnQuaAkocmV2aXNpb24gMTYzODYxKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDE3
IEBACiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVT
RShBUFBLSVQpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19DTEFTUyBOU1ZpZXc7
Ci0jZWxpZiBQTEFURk9STShHVEspCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdk
a0V2ZW50OwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShFRkwp
CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZl
bnQuaAkocmV2aXNpb24gMTYzODYxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
YldoZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDE3IEBACiAKICNpbmNs
dWRlICJXZWJFdmVudC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShBUFBLSVQpCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19DTEFTUyBOU1ZpZXc7Ci0jZWxpZiBQTEFU
Rk9STShHVEspCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxXZWJDb3Jl
L0dVbmlxdWVQdHJHdGsuaD4KIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwotI2Vs
aWYgUExBVEZPUk0oRUZMKQorI2VuZGlmCisKKyNpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8
RXZhcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3Bw
CShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBQbGF0Zm9ybVBv
cHVwTWVudURhdGE6OlBsYXRmb3JtUG9wdXBNZW51CiAKIHZvaWQgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwgZm9udElu
Zm87CiAgICAgZW5jb2RlciA8PCBzaG91bGRQb3BPdmVyOwogI2Vsc2UKQEAgLTQ2LDcgKzQ2LDcg
QEAgdm9pZCBQbGF0Zm9ybVBvcHVwTWVudURhdGE6OmVuY29kZShJUEM6OgogCiBib29sIFBsYXRm
b3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQ
bGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5mb250SW5mbykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2hvdWxk
UG9wT3ZlcikpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBN
ZW51RGF0YS5oCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3Ry
dWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVu
dEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBGb250SW5mbyBmb250SW5mbzsKICAgICBib29sIHNob3Vs
ZFBvcE92ZXI7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QcmludEluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJpbnRJbmZvLmgJKHJldmlz
aW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QcmludEluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBQcmludEluZm9faAogI2RlZmluZSBQ
cmludEluZm9faAogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShBUFBLSVQpCiBPQkpDX0NM
QVNTIE5TUHJpbnRJbmZvOwogI2VsaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBzdHJ1Y3QgX0d0
a1ByaW50U2V0dGluZ3MgR3RrUHJpbnRTZXR0aW5nczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9TYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaAkocmV2
aXNpb24gMTYzODYxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
CiAjZW5kaWYKIApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgU2FuZGJveEluaXRpYWxp
emF0aW9uUGFyYW1ldGVycygpOwogICAgIH5TYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
KCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gTmFt
ZSBtdXN0IGJlIGEgbGl0ZXJhbC4KICAgICB2b2lkIGFkZENvbmZEaXJlY3RvcnlQYXJhbWV0ZXIo
Y29uc3QgY2hhciogbmFtZSwgaW50IGNvbmZJRCk7CiAgICAgdm9pZCBhZGRQYXRoUGFyYW1ldGVy
KGNvbnN0IGNoYXIqIG5hbWUsIE5TU3RyaW5nICpwYXRoKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgYXBwZW5kUGF0aEludGVybmFsKGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IGNoYXIqIHBhdGgpOwogCiAgICAgbXV0YWJsZSBWZWN0b3I8Y29uc3QgY2hhcio+IG1fbmFt
ZWRQYXJhbWV0ZXJzOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAK
LSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShDT0NPQSkKIFNhbmRib3hJbml0aWFs
aXphdGlvblBhcmFtZXRlcnM6OlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMoKQogewog
fQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRDaGVja2VyU3RhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4dENoZWNrZXJTdGF0ZS5oCShyZXZpc2lv
biAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4dENoZWNrZXJTdGF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBUZXh0Q2hlY2tlclN0YXRlIHsK
ICAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOwogICAgIGJvb2wgaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShBUFBL
SVQpCiAgICAgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ7CiAgICAg
Ym9vbCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDsKICAgICBib29sIGlzQXV0
b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkFyY2hpdmUuY3BwCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQXJjaGl2ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJBcmNoaXZlLmgiCiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUg
IkFQSURhdGEuaCIKQEAgLTE1Nyw0ICsxNTcsNCBAQCBMZWdhY3lXZWJBcmNoaXZlKiBXZWJBcmNo
aXZlOjpjb3JlTGVnYWN5CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkFyY2hpdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQXJjaGl2ZS5oCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQXJjaGl2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVm
IFdlYkFyY2hpdmVfaAogI2RlZmluZSBXZWJBcmNoaXZlX2gKIAotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShDT0NPQSkKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC03Niw2ICs3Niw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQogCiAjZW5kaWYgLy8gV2ViQXJjaGl2ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmNwcAkocmV2aXNpb24gMTYzODYxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJB
cmNoaXZlUmVzb3VyY2UuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKIAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNv
dXJjZS5oPgpAQCAtOTksNCArOTksNCBAQCBBcmNoaXZlUmVzb3VyY2UqIFdlYkFyY2hpdmVSZXNv
dXJjZTo6Y29yCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuaAkocmV2aXNpb24gMTYzODYxKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIFdlYkFyY2hpdmVSZXNvdXJjZV9oCiAjZGVmaW5lIFdlYkFyY2hp
dmVSZXNvdXJjZV9oCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjcs
NiArNjcsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2VuZGlmIC8vIFdl
YkFyY2hpdmVSZXNvdXJjZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTYzODYxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
NCw3ICs1NzQsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjCiAK
IHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkK
IHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBzaG91
bGRTZXJpYWxpemVXZWJDb3JlRGF0YSA9ICFyZXNvdXJjZVJlc3BvbnNlLnBsYXRmb3JtUmVzcG9u
c2VJc1VwVG9EYXRlKCk7CiAgICAgZW5jb2RlciA8PCBzaG91bGRTZXJpYWxpemVXZWJDb3JlRGF0
YTsKICNlbHNlCkBAIC02MDMsNyArNjAzLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVzcG9uc2U+OjplbgogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRl
Y29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNl
UmVzcG9uc2UpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgaGFzU2VyaWFsaXplZFdlYkNvcmVEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzU2VyaWFsaXplZFdlYkNvcmVEYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNp
b24gMTYzODYxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHN0cnVjdCBWaWV3cG9ydEF0dHJp
YnV0ZXM7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisj
aWYgUExBVEZPUk0oQ09DT0EpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgS2V5cHJlc3ND
b21tYW5kOwogfQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZToKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHN0YXRpYyBjb25zdCBib29sIGtTaG91bGRTZXJpYWxpemVXZWJDb3JlRGF0
YSA9IGZhbHNlOwogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2hvdWxkU2VyaWFsaXpl
V2ViQ29yZURhdGEgPSB0cnVlOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4gewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgY29uc3QgYm9vbCBrU2hvdWxkU2VyaWFsaXplV2Vi
Q29yZURhdGEgPSBmYWxzZTsKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wga1Nob3VsZFNl
cmlhbGl6ZVdlYkNvcmVEYXRhID0gdHJ1ZTsKQEAgLTI1Niw3ICsyNTYsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OkNvbG9yJik7CiB9OwogCi0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJik7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OktleXByZXNzQ29tbWFuZCYp
OwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyAr
MTUwLDcgQEAgcHVibGljOgogICAgICAgICBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudAogICAgIH07
CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBQaGFz
ZSB7CiAgICAgICAgIFBoYXNlTm9uZSAgICAgICAgPSAwLAogICAgICAgICBQaGFzZUJlZ2FuICAg
ICAgID0gMSA8PCAwLApAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICBXZWJXaGVlbEV2
ZW50KCkgeyB9CiAKICAgICBXZWJXaGVlbEV2ZW50KFR5cGUsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHdoZWVsVGlja3MsIEdyYW51bGFyaXR5LCBNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBXZWJXaGVlbEV2ZW50
KFR5cGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRh
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5LCBib29s
IGRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSwgUGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2Us
IGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcywgdWludDMyX3Qgc2Nyb2xsQ291bnQsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhLCBNb2Rp
ZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwogI2VuZGlmCiAKQEAgLTE3NSw3ICsxNzUsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplIHdoZWVsVGlja3MoKSBjb25zdCB7
IHJldHVybiBtX3doZWVsVGlja3M7IH0KICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdyYW51bGFyaXR5PihtX2dyYW51bGFyaXR5KTsgfQog
ICAgIGJvb2wgZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2U7IH0KLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUGhhc2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxQaGFzZT4obV9waGFzZSk7IH0KICAgICBQaGFzZSBtb21lbnR1bVBoYXNlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UGhhc2U+KG1fbW9tZW50dW1QaGFzZSk7IH0KICAgICBib29sIGhh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJldHVybiBtX2hhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXM7IH0KQEAgLTE5NSw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBtX3doZWVsVGlja3M7CiAgICAgdWludDMyX3QgbV9ncmFudWxhcml0eTsgLy8g
R3JhbnVsYXJpdHkKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOwotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB1aW50MzJfdCBtX3BoYXNl
OyAvLyBQaGFzZQogICAgIHVpbnQzMl90IG1fbW9tZW50dW1QaGFzZTsgLy8gUGhhc2UKICAgICBi
b29sIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93aGVlbFRpY2tzWSA9IHdlYkV2
ZW50LndoZWVsVGlja3MoKS5oZWlnaHQoKTsKICAgICAgICAgbV9ncmFudWxhcml0eSA9ICh3ZWJF
dmVudC5ncmFudWxhcml0eSgpID09IFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGFnZVdoZWVsRXZl
bnQpID8gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlV2hlZWxFdmVudCA6IFdlYkNvcmU6OlNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50OwogICAgICAgICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSA9
IHdlYkV2ZW50LmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSgpOwotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgbV9waGFzZSA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPih3ZWJFdmVudC5waGFzZSgpKTsKICAgICAg
ICAgbV9tb21lbnR1bVBoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2U+KHdlYkV2ZW50Lm1vbWVudHVtUGhhc2UoKSk7CiAgICAgICAgIG1faGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcyA9IHdlYkV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAkocmV2
aXNpb24gMTYzODYxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXpl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNl
bmRpZgogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHZvaWQgSW5pdGlhbGl6ZVdlYktpdDIoKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTYzODYxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKEkKICAgICBlbmNvZGVyIDw8IGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTsK
ICAgICBlbmNvZGVyLmVuY29kZUVudW0obGF5ZXJIb3N0aW5nTW9kZSk7CiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwog
I2VuZGlmCiB9CkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMubGF5
ZXJIb3N0aW5nTW9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmNvbG9yU3BhY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMTYzODYxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvVmlld1N0YXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29s
b3JTcGFjZURhdGEuaCIKICNlbmRpZgogCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3Rp
bmdNb2RlOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIENv
bG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZGVmaW5lIERFRkFVTFRfU0NS
RUVOX0ZPTlRfU1VCU1RJVFVUSU9OX0VOQUJMRUQgdHJ1ZQogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjZGVmaW5lIERFRkFVTFRfSElEREVOX1BBR0Vf
RE9NX1RJTUVSX1RIUk9UVExJTkdfRU5BQkxFRCB0cnVlCiAjZGVmaW5lIERFRkFVTFRfSElEREVO
X1BBR0VfQ1NTX0FOSU1BVElPTl9TVVNQRU5TSU9OX0VOQUJMRUQgdHJ1ZQogI2RlZmluZSBERUZB
VUxUX1BERlBMVUdJTl9FTkFCTEVEIHRydWUKQEAgLTIxNiw3ICsyMTYsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICBtYWNybyhJbnNwZWN0b3JBdHRhY2htZW50U2lkZSwgaW5zcGVjdG9yQXR0
YWNobWVudFNpZGUsIFVJbnQzMiwgdWludDMyX3QsIDApIFwKICAgICBcCiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0ZP
TlRfRkFNSUxZX1BSRUZFUkVOQ0UobWFjcm8pIFwKICAgICBtYWNybyhTdGFuZGFyZEZvbnRGYW1p
bHksIHN0YW5kYXJkRm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJUaW1lcyIpIFwKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsNyBAQCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpXZWJQcm9jZXNzCiAgICAgLCBz
aG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKGZhbHNlKQogICAgICwgc2hvdWxkVXNl
Rm9udFNtb290aGluZyh0cnVlKQogICAgICwgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwo
SU5UX01BWCkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBu
c1VSTENhY2hlTWVtb3J5Q2FwYWNpdHkoMCkKICAgICAsIG5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHko
MCkKICAgICAsIHNob3VsZEZvcmNlU2NyZWVuRm9udFN1YnN0aXR1dGlvbihmYWxzZSkKQEAgLTk2
LDEwICs5NiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAg
ICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwogICAgIGVuY29kZXIgPDwgZnVsbEtleWJv
YXJkQWNjZXNzRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGRlZmF1bHRSZXF1ZXN0VGltZW91dElu
dGVydmFsOwotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRs
ZUlkZW50aWZpZXI7CiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZW5jb2RlciA8PCBwcmVzZW50ZXJBcHBsaWNhdGlvblBpZDsKICAgICBlbmNvZGVy
IDw8IGFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkOwogICAgIGVuY29k
ZXIgPDwgbnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5OwpAQCAtMjA5LDEyICsyMDksMTIgQEAgYm9v
bCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRlZmF1bHRSZXF1ZXN0VGlt
ZW91dEludGVydmFsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRp
ZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlcklu
dGVyZmFjZUVuYWJsZWQpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIk1hY2hQb3J0LmgiCiAjZW5kaWYKIApAQCAt
MTEyLDExICsxMTIsMTEgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewog
CiAgICAgZG91YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsOwogCi0jaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQogICAgIFN0cmluZyB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGlkX3QgcHJlc2Vu
dGVyQXBwbGljYXRpb25QaWQ7CiAKICAgICBib29sIGFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJ
bnRlcmZhY2VFbmFibGVkOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZEZvcmNlU2NyZWVuRm9udFN1YnN0aXR1
dGlvbjsKICAgICBib29sIHNob3VsZEVuYWJsZUtlcm5pbmdBbmRMaWdhdHVyZXNCeURlZmF1bHQ7
CiAgICAgYm9vbCBzaG91bGRFbmFibGVGVEw7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90
aWZpY2F0aW9uUGVybWlzc2lvbnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViV2hl
ZWxFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYldoZWVs
RXZlbnQuY3BwCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
V2hlZWxFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgV2ViV2hlZWxF
dmVudDo6V2ViV2hlZWxFdmVudChUeXBlIHR5cGUsIAogICAgICwgbV93aGVlbFRpY2tzKHdoZWVs
VGlja3MpCiAgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQogICAgICwgbV9kaXJlY3Rp
b25JbnZlcnRlZEZyb21EZXZpY2UoZmFsc2UpCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgICwgbV9waGFzZShQaGFzZU5vbmUpCiAgICAgLCBtX2hhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXMoZmFsc2UpCiAgICAgLCBtX3Njcm9sbENvdW50KDApCkBAIC01MCw3ICs1
MCw3IEBAIFdlYldoZWVsRXZlbnQ6OldlYldoZWVsRXZlbnQoVHlwZSB0eXBlLCAKICAgICBBU1NF
UlQoaXNXaGVlbEV2ZW50VHlwZSh0eXBlKSk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiBXZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwg
Y29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgR3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlLCBQ
aGFzZSBwaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5n
RGVsdGFzLCB1aW50MzJfdCBzY3JvbGxDb3VudCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB1
bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEsIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0
aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKICAg
ICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViV2hlZWxF
dmVudDo6ZW5jb2RlKElQQzo6QXJndW1lbnQKICAgICBlbmNvZGVyIDw8IG1fd2hlZWxUaWNrczsK
ICAgICBlbmNvZGVyIDw8IG1fZ3JhbnVsYXJpdHk7CiAgICAgZW5jb2RlciA8PCBtX2RpcmVjdGlv
bkludmVydGVkRnJvbURldmljZTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgZW5jb2RlciA8PCBtX3BoYXNlOwogICAgIGVuY29kZXIgPDwgbV9tb21lbnR1bVBo
YXNlOwogICAgIGVuY29kZXIgPDwgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOwpAQCAtMTA0
LDcgKzEwNCw3IEBAIGJvb2wgV2ViV2hlZWxFdmVudDo6ZGVjb2RlKElQQzo6QXJndW1lbnQKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodC5tX2RpcmVjdGlv
bkludmVydGVkRnJvbURldmljZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0Lm1f
cGhhc2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
Lm1fbW9tZW50dW1QaGFzZSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tD
b250ZXh0TWVudUl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tD
b250ZXh0TWVudUl0ZW1UeXBlcy5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2ltcG9ydCA8bWFj
aC1vL2R5bGQuaD4KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTk0LDM4ICs5MCwxMCBAQCBXS0NvbnRleHRNZW51SXRlbVJl
ZiBXS0NvbnRleHRNZW51SXRlbVNlCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQotI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBXS0NvbnRleHRNZW51SXRlbVRhZyBjb21w
YXRpYmxlQ29udGV4dE1lbnVJdGVtVGFnKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZykKLXsKLSAg
ICBzdGF0aWMgYm9vbCBuZWVkc1dvcmthcm91bmQgPSBeYm9vbCB7Ci0gICAgICAgIGNvbnN0IGlu
dDMyX3Qgc2FmYXJpRnJhbWV3b3JrVmVyc2lvbldpdGhJbmNvbXBhdGlibGVDb250ZXh0TWVudUl0
ZW1UYWdzID0gMHgwMjE4MTkwMDsgLy8gNTM2LjI1LjAgKFNhZmFyaSA2LjApCi0gICAgICAgIHJl
dHVybiBOU1ZlcnNpb25PZlJ1blRpbWVMaWJyYXJ5KCJTYWZhcmkiKSA9PSBzYWZhcmlGcmFtZXdv
cmtWZXJzaW9uV2l0aEluY29tcGF0aWJsZUNvbnRleHRNZW51SXRlbVRhZ3M7Ci0gICAgfSgpOwot
Ci0gICAgaWYgKCFuZWVkc1dvcmthcm91bmQpCi0gICAgICAgIHJldHVybiB0YWc7Ci0KLSAgICAv
LyBrV0tDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZSB3YXMgaW5zZXJ0ZWQg
YmVmb3JlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50LgotICAgIC8vIERpY3Rh
dGlvbkFsdGVybmF0aXZlIGlzIG5vdyBhdCB0aGUgZW5kIGxpa2UgaXQgc2hvdWxkIGhhdmUgYmVl
bi4gVG8gYmUgY29tcGF0aWJsZSB3ZSBuZWVkIHRvIHJldHVybgotICAgIC8vIEluc3BlY3RFbGVt
ZW50IGZvciBEaWN0YXRpb25BbHRlcm5hdGl2ZSBhbmQgc2hpZnQgSW5zcGVjdEVsZW1lbnQgYW5k
IGFmdGVyIGJ5IG9uZS4KLSAgICBpZiAodGFnID09IGtXS0NvbnRleHRNZW51SXRlbVRhZ0RpY3Rh
dGlvbkFsdGVybmF0aXZlKQotICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnSW5z
cGVjdEVsZW1lbnQ7Ci0gICAgaWYgKHRhZyA+PSBrV0tDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0
RWxlbWVudCAmJiB0YWcgPCBrV0tDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpCi0g
ICAgICAgIHJldHVybiB0YWcgKyAxOwotICAgIHJldHVybiB0YWc7Ci19Ci0jZW5kaWYKLSNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLQogV0tDb250ZXh0TWVudUl0ZW1UYWcgV0tDb250
ZXh0TWVudUl0ZW1HZXRUYWcoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIGNvbXBh
dGlibGVDb250ZXh0TWVudUl0ZW1UYWcodG9BUEkodG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCktPmFj
dGlvbigpKSk7Ci0jZWxzZQogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaXRlbVJlZiktPmRhdGEo
KS0+YWN0aW9uKCkpOwotI2VuZGlmCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsK
ICAgICByZXR1cm4gdG9BUEkoQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pOwpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGVwcmVjYXRlZEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0RlcHJlY2F0ZWRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiV0tNdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJ
Q2FzdC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRG
T1JNKElPUykKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlTWFjLmgiCiAjZW5kaWYKIApAQCAt
NDcsNyArNDcsNyBAQCBXS19FWFBPUlQgYm9vbCBXS0RpY3Rpb25hcnlBZGRJdGVtKFdLTXV0CiBX
S19FWFBPUlQgYm9vbCBXS0RpY3Rpb25hcnlJc011dGFibGUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rp
b25hcnkpOwogV0tfRVhQT1JUIHZvaWQgV0tEaWN0aW9uYXJ5UmVtb3ZlSXRlbShXS011dGFibGVE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIFdLU3RyaW5nUmVmIGtleSk7CiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogV0tfRVhQT1JUIENH
Q29udGV4dFJlZiBXS0dyYXBoaWNzQ29udGV4dEdldENHQ29udGV4dChXS0dyYXBoaWNzQ29udGV4
dFJlZiBncmFwaGljc0NvbnRleHQpOwogI2VuZGlmCiB9CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQg
V0tEaWN0aW9uYXJ5UmVtb3ZlSXRlbShXS011dGFibGVEaWMKICAgICB0b0ltcGwoZGljdGlvbmFy
eVJlZiktPnJlbW92ZSh0b0ltcGwoa2V5UmVmKS0+c3RyaW5nKCkpOwogfQogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKIENHQ29udGV4dFJl
ZiBXS0dyYXBoaWNzQ29udGV4dEdldENHQ29udGV4dChXS0dyYXBoaWNzQ29udGV4dFJlZiBncmFw
aGljc0NvbnRleHQpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiAxNjM4NjEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tTZXNzaW9uUmVm
LCBBUEk6OlNlCiAKIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLTXV0YWJsZUFycmF5
UmVmPiB7IHR5cGVkZWYgQVBJOjpBcnJheSogSW1wbFR5cGU7IH07CiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJBcmNoaXZl
UmVmLCBXZWJBcmNoaXZlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2ViQXJjaGl2ZVJlc291cmNl
UmVmLCBXZWJBcmNoaXZlUmVzb3VyY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tPYmpDVHlwZVdy
YXBwZXJSZWYsIE9iakNPYmplY3RHcmFwaCkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBpbmxpbmUgV0tD
b250ZXh0TWVudUl0ZW1UYWcgdG9BUEkoV2ViQ29yCiAgICAgICAgIHJldHVybiBrV0tDb250ZXh0
TWVudUl0ZW1UYWdNZWRpYVBsYXlQYXVzZTsKICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ01lZGlhTXV0ZToKICAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ01l
ZGlhTXV0ZTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY2Fz
ZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5
OgogICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0
b21hdGljYWxseTsKICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1
dGlvbnNNZW51OgpAQCAtNjc2LDcgKzY3Niw3IEBAIGlubGluZSBXZWJDb3JlOjpDb250ZXh0TWVu
dUFjdGlvbiB0b0ltcGwKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z01lZGlhUGxheVBhdXNlOwogICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRl
OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlOwot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBjYXNlIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk6CiAgICAgICAgIHJldHVy
biBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5
OwogICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCShyZXZpc2lvbiAx
NjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0jaWYgUExBVEZPUk0o
TUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
T0JKQ19DTEFTUyBOU1VSTERvd25sb2FkOwpAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU1VSTERv
d25sb2FkPiBtX25zVVJMRG93bmxvYWQ7CiAgICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVn
YXRlPiBtX2RlbGVnYXRlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVBy
b3RvY29sTWFuYWdlci5oCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNzEsNyArNzEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wg
c3VwcG9ydHNTY2hlbWUoY29uc3QgU3RyaW5nJik7CiAgICAgCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgYWRkQ3VzdG9tUHJvdG9jb2woV0tDdXN0b21Q
cm90b2NvbCAqKTsKICAgICB2b2lkIHJlbW92ZUN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9j
b2wgKik7CiAjZW5kaWYKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBDaGlsZFByb2Nl
c3MqIG1fY2hpbGRQcm9jZXNzOwogICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fbWVzc2FnZVF1ZXVl
OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOwogICAgIE11dGV4IG1fcmVnaXN0ZXJlZFNjaGVt
ZXNNdXRleDsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90
b2NvbE1hbmFnZXJNYWMubW0JKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKLQot
I2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotCi0jaW1wb3J0ICJDaGlsZFByb2Nlc3MuaCIK
LSNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJEYXRhUmVmZXJlbmNl
LmgiCi0jaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbXBvcnQgIldlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLQotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi0jaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgotI2VuZGlmCi0KLSNpZmRlZiBfX2hhc19pbmNsdWRlCi0jaWYgX19oYXNfaW5jbHVk
ZSg8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+KQotI2ltcG9ydCA8Rm91bmRh
dGlvbi9OU1VSTENvbm5lY3Rpb25Qcml2YXRlLmg+Ci0jZW5kaWYKLSNlbmRpZgotCi1AaW50ZXJm
YWNlIE5TVVJMQ29ubmVjdGlvbiAoRGV0YWlscykKLSsgKENGUnVuTG9vcFJlZilyZXNvdXJjZUxv
YWRlclJ1bkxvb3A7Ci1AZW5kCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1zdGF0aWMgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKiBzaGFyZWRDdXN0b21Q
cm90b2NvbE1hbmFnZXI7Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUN1c3RvbVByb3RvY29s
SUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDdXN0b21Qcm90b2NvbElEID0gMDsK
LSAgICByZXR1cm4gKyt1bmlxdWVDdXN0b21Qcm90b2NvbElEOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotQGludGVyZmFjZSBXS0N1c3RvbVByb3RvY29sIDogTlNVUkxQcm90b2NvbCB7
Ci1AcHJpdmF0ZQotICAgIHVpbnQ2NF90IF9jdXN0b21Qcm90b2NvbElEOwotfQotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEOwotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gV0tDdXN0b21Qcm90b2NvbAotCi1Ac3ludGhlc2l6ZSBjdXN0b21Q
cm90b2NvbElEID0gX2N1c3RvbVByb3RvY29sSUQ7Ci0KLSsgKEJPT0wpY2FuSW5pdFdpdGhSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0Ci17Ci0gICAgcmV0dXJuIHNoYXJlZEN1c3RvbVBy
b3RvY29sTWFuYWdlci0+c3VwcG9ydHNTY2hlbWUoW1tbcmVxdWVzdCBVUkxdIHNjaGVtZV0gbG93
ZXJjYXNlU3RyaW5nXSk7Ci19Ci0KLSsgKE5TVVJMUmVxdWVzdCAqKWNhbm9uaWNhbFJlcXVlc3RG
b3JSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0Ci17Ci0gICAgcmV0dXJuIHJlcXVlc3Q7
Ci19Ci0KLSsgKEJPT0wpcmVxdWVzdElzQ2FjaGVFcXVpdmFsZW50OihOU1VSTFJlcXVlc3QgKilh
IHRvUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopYgotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAo
aWQpaW5pdFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNhY2hlZFJlc3BvbnNl
OihOU0NhY2hlZFVSTFJlc3BvbnNlICopY2FjaGVkUmVzcG9uc2UgY2xpZW50OihpZDxOU1VSTFBy
b3RvY29sQ2xpZW50PiljbGllbnQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoUmVxdWVz
dDpyZXF1ZXN0IGNhY2hlZFJlc3BvbnNlOmNhY2hlZFJlc3BvbnNlIGNsaWVudDpjbGllbnRdOwot
ICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBfY3VzdG9tUHJv
dG9jb2xJRCA9IGdlbmVyYXRlQ3VzdG9tUHJvdG9jb2xJRCgpOwotICAgIHNoYXJlZEN1c3RvbVBy
b3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2woc2VsZik7Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS0gKHZvaWQpc3RhcnRMb2FkaW5nCi17Ci0gICAgc2hhcmVkQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLT5jaGlsZFByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OlN0YXJ0TG9hZGluZyhzZWxmLmN1c3RvbVByb3RvY29sSUQsIFtzZWxmIHJlcXVl
c3RdKSwgMCk7Ci19Ci0KLS0gKHZvaWQpc3RvcExvYWRpbmcKLXsKLSAgICBzaGFyZWRDdXN0b21Q
cm90b2NvbE1hbmFnZXItPmNoaWxkUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eTo6U3RvcExvYWRpbmcoc2VsZi5jdXN0b21Qcm90b2NvbElEKSwgMCk7
Ci0gICAgc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5yZW1vdmVDdXN0b21Qcm90b2NvbChz
ZWxmKTsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY29uc3QgY2hhciogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJDdXN0
b21Qcm90b2NvbE1hbmFnZXIiOwotfQotCi1DdXN0b21Qcm90b2NvbE1hbmFnZXI6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcihDaGlsZFByb2Nlc3MqIGNoaWxkUHJvY2VzcykKLSAgICA6IG1fY2hpbGRQ
cm9jZXNzKGNoaWxkUHJvY2VzcykKLSAgICAsIG1fbWVzc2FnZVF1ZXVlKFdvcmtRdWV1ZTo6Y3Jl
YXRlKCJjb20uYXBwbGUuV2ViS2l0LkN1c3RvbVByb3RvY29sTWFuYWdlciIpKQotewotICAgIEFT
U0VSVCghc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTsKLSAgICBzaGFyZWRDdXN0b21Qcm90
b2NvbE1hbmFnZXIgPSB0aGlzOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5p
dGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQotewotICAgIGNv
bm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fbWVzc2FnZVF1ZXVlLmdldCgp
LCB0aGlzKTsKLX0KLQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmluaXRpYWxpemUoY29u
c3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLXsKLSNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdp
c3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmlzRW1wdHkoKSB8fCAhcGFyYW1ldGVycy51c2VzTmV0
d29ya1Byb2Nlc3MpOwotICAgIGlmIChwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2Vzcykgewot
ICAgICAgICBtX2NoaWxkUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3Zl
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7Ci0gICAgICAgIG1fbWVzc2FnZVF1ZXVlID0gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgW05TVVJMUHJvdG9jb2wg
cmVnaXN0ZXJDbGFzczpbV0tDdXN0b21Qcm90b2NvbCBjbGFzc11dOwotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzLnNpemUoKTsgKytpKQotICAgICAgICByZWdpc3RlclNjaGVtZShwYXJhbWV0ZXJzLnVy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsKLX0KLQotI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6
ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLXsK
LSAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNz
XV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1Jl
Z2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlZ2lzdGVy
U2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNb
aV0pOwotfQotI2VuZGlmCi0KLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjphZGRDdXN0b21Q
cm90b2NvbChXS0N1c3RvbVByb3RvY29sICpjdXN0b21Qcm90b2NvbCkKLXsKLSAgICBBU1NFUlQo
Y3VzdG9tUHJvdG9jb2wpOwotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2N1c3RvbVByb3RvY29s
TWFwTXV0ZXgpOwotICAgIG1fY3VzdG9tUHJvdG9jb2xNYXAuYWRkKGN1c3RvbVByb3RvY29sLmN1
c3RvbVByb3RvY29sSUQsIGN1c3RvbVByb3RvY29sKTsKLX0KLQotdm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OnJlbW92ZUN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKmN1c3RvbVBy
b3RvY29sKQotewotICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbCk7Ci0gICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7Ci0gICAgbV9jdXN0b21Qcm90b2NvbE1h
cC5yZW1vdmUoY3VzdG9tUHJvdG9jb2wuY3VzdG9tUHJvdG9jb2xJRCk7Ci19Ci0gICAgCi12b2lk
IEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWUpCi17Ci0gICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3JlZ2lzdGVyZWRTY2hlbWVzTXV0ZXgpOwotICAgIG1fcmVnaXN0ZXJlZFNjaGVtZXMu
YWRkKHNjaGVtZSk7Ci19Ci0gICAgCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6dW5yZWdp
c3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBBU1NFUlQoIXNjaGVtZS5p
c051bGwoKSk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRl
eCk7Ci0gICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5yZW1vdmUoc2NoZW1lKTsKLX0KLQotYm9vbCBD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQotewotICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3JlZ2lzdGVyZWRTY2hlbWVzTXV0ZXgpOwotICAgIHJl
dHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgdm9pZCBkaXNwYXRjaE9uUmVzb3VyY2VMb2FkZXJSdW5Mb29wKHZvaWQgKF5ibG9jayko
KSkKLXsKLSAgICBDRlJ1bkxvb3BQZXJmb3JtQmxvY2soW05TVVJMQ29ubmVjdGlvbiByZXNvdXJj
ZUxvYWRlclJ1bkxvb3BdLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIGJsb2NrKTsKLSAgICBDRlJ1
bkxvb3BXYWtlVXAoW05TVVJMQ29ubmVjdGlvbiByZXNvdXJjZUxvYWRlclJ1bkxvb3BdKTsKLX0K
LQotdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17
Ci0gICAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IHByb3RvY29sID0gcHJvdG9jb2xGb3JJ
RChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBpZiAoIXByb3RvY29sKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvciA9IGVycm9yLm5zRXJyb3IoKTsKLQot
ICAgIGRpc3BhdGNoT25SZXNvdXJjZUxvYWRlclJ1bkxvb3AoXiB7Ci0gICAgICAgIFtbcHJvdG9j
b2wgY2xpZW50XSBVUkxQcm90b2NvbDpwcm90b2NvbC5nZXQoKSBkaWRGYWlsV2l0aEVycm9yOm5z
RXJyb3IuZ2V0KCldOwotICAgIH0pOwotCi0gICAgcmVtb3ZlQ3VzdG9tUHJvdG9jb2wocHJvdG9j
b2wuZ2V0KCkpOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkTG9hZERhdGEo
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
KQotewotICAgIFJldGFpblB0cjxXS0N1c3RvbVByb3RvY29sPiBwcm90b2NvbCA9IHByb3RvY29s
Rm9ySUQoY3VzdG9tUHJvdG9jb2xJRCk7Ci0gICAgaWYgKCFwcm90b2NvbCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKLQot
ICAgIGRpc3BhdGNoT25SZXNvdXJjZUxvYWRlclJ1bkxvb3AoXiB7Ci0gICAgICAgIFtbcHJvdG9j
b2wgY2xpZW50XSBVUkxQcm90b2NvbDpwcm90b2NvbC5nZXQoKSBkaWRMb2FkRGF0YTpuc0RhdGEu
Z2V0KCldOwotICAgIH0pOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1aW50MzJfdCBjYWNoZVN0b3JhZ2VQb2xpY3kpCi17
Ci0gICAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IHByb3RvY29sID0gcHJvdG9jb2xGb3JJ
RChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBpZiAoIXByb3RvY29sKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gbnNSZXNwb25zZSA9IHJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKTsKLQotICAgIGRpc3BhdGNoT25SZXNvdXJjZUxvYWRlclJ1bkxvb3AoXiB7
Ci0gICAgICAgIFtbcHJvdG9jb2wgY2xpZW50XSBVUkxQcm90b2NvbDpwcm90b2NvbC5nZXQoKSBk
aWRSZWNlaXZlUmVzcG9uc2U6bnNSZXNwb25zZS5nZXQoKSBjYWNoZVN0b3JhZ2VQb2xpY3k6c3Rh
dGljX2Nhc3Q8TlNVUkxDYWNoZVN0b3JhZ2VQb2xpY3k+KGNhY2hlU3RvcmFnZVBvbGljeSldOwot
ICAgIH0pOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIFJldGFpblB0cjxXS0N1c3RvbVBy
b3RvY29sPiBwcm90b2NvbCA9IHByb3RvY29sRm9ySUQoY3VzdG9tUHJvdG9jb2xJRCk7Ci0gICAg
aWYgKCFwcm90b2NvbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZGlzcGF0Y2hPblJlc291cmNl
TG9hZGVyUnVuTG9vcCheIHsKLSAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29s
RGlkRmluaXNoTG9hZGluZzpwcm90b2NvbC5nZXQoKV07Ci0gICAgfSk7Ci0KLSAgICByZW1vdmVD
dXN0b21Qcm90b2NvbChwcm90b2NvbC5nZXQoKSk7Ci19Ci0KLVJldGFpblB0cjxXS0N1c3RvbVBy
b3RvY29sPiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnByb3RvY29sRm9ySUQodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2Nv
bE1hcE11dGV4KTsKLQotICAgIEN1c3RvbVByb3RvY29sTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fY3VzdG9tUHJvdG9jb2xNYXAuZmluZChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBpZiAoaXQg
PT0gbV9jdXN0b21Qcm90b2NvbE1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBBU1NFUlQoaXQtPnZhbHVlKTsKLSAgICByZXR1cm4gaXQtPnZhbHVlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29h
L0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1h
bmFnZXJDb2NvYS5tbQkocmV2aXNpb24gMTYzODYxKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5t
bToxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCisKKyNpbXBvcnQgIkNoaWxkUHJvY2Vzcy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
TWVzc2FnZXMuaCIKKyNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJv
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNp
bXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjZW5kaWYKKworI2lm
ZGVmIF9faGFzX2luY2x1ZGUKKyNpZiBfX2hhc19pbmNsdWRlKDxGb3VuZGF0aW9uL05TVVJMQ29u
bmVjdGlvblByaXZhdGUuaD4pCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ29ubmVjdGlvblBy
aXZhdGUuaD4KKyNlbmRpZgorI2VuZGlmCisKK0BpbnRlcmZhY2UgTlNVUkxDb25uZWN0aW9uIChE
ZXRhaWxzKQorKyAoQ0ZSdW5Mb29wUmVmKXJlc291cmNlTG9hZGVyUnVuTG9vcDsKK0BlbmQKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBD
dXN0b21Qcm90b2NvbE1hbmFnZXIqIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlcjsKKworc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlQ3VzdG9tUHJvdG9jb2xJRCgpCit7CisgICAgc3RhdGljIHVp
bnQ2NF90IHVuaXF1ZUN1c3RvbVByb3RvY29sSUQgPSAwOworICAgIHJldHVybiArK3VuaXF1ZUN1
c3RvbVByb3RvY29sSUQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCitAaW50ZXJmYWNl
IFdLQ3VzdG9tUHJvdG9jb2wgOiBOU1VSTFByb3RvY29sIHsKK0Bwcml2YXRlCisgICAgdWludDY0
X3QgX2N1c3RvbVByb3RvY29sSUQ7Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0N1
c3RvbVByb3RvY29sCisKK0BzeW50aGVzaXplIGN1c3RvbVByb3RvY29sSUQgPSBfY3VzdG9tUHJv
dG9jb2xJRDsKKworKyAoQk9PTCljYW5Jbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QKK3sKKyAgICByZXR1cm4gc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdXBwb3J0
c1NjaGVtZShbW1tyZXF1ZXN0IFVSTF0gc2NoZW1lXSBsb3dlcmNhc2VTdHJpbmddKTsKK30KKwor
KyAoTlNVUkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QKK3sKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KKworKyAoQk9PTClyZXF1ZXN0
SXNDYWNoZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVzdCAqKWEgdG9SZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKiliCit7CisgICAgcmV0dXJuIE5POworfQorCistIChpZClpbml0V2l0aFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QgY2FjaGVkUmVzcG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2Ug
KiljYWNoZWRSZXNwb25zZSBjbGllbnQ6KGlkPE5TVVJMUHJvdG9jb2xDbGllbnQ+KWNsaWVudAor
eworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgY2FjaGVkUmVzcG9u
c2U6Y2FjaGVkUmVzcG9uc2UgY2xpZW50OmNsaWVudF07CisgICAgaWYgKCFzZWxmKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIAorICAgIF9jdXN0b21Qcm90b2NvbElEID0gZ2VuZXJhdGVDdXN0
b21Qcm90b2NvbElEKCk7CisgICAgc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0
b21Qcm90b2NvbChzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzdGFydExv
YWRpbmcKK3sKKyAgICBzaGFyZWRDdXN0b21Qcm90b2NvbE1hbmFnZXItPmNoaWxkUHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RhcnRMb2FkaW5n
KHNlbGYuY3VzdG9tUHJvdG9jb2xJRCwgW3NlbGYgcmVxdWVzdF0pLCAwKTsKK30KKworLSAodm9p
ZClzdG9wTG9hZGluZworeworICAgIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlci0+Y2hpbGRQ
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdG9w
TG9hZGluZyhzZWxmLmN1c3RvbVByb3RvY29sSUQpLCAwKTsKKyAgICBzaGFyZWRDdXN0b21Qcm90
b2NvbE1hbmFnZXItPnJlbW92ZUN1c3RvbVByb3RvY29sKHNlbGYpOworfQorCitAZW5kCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjb25zdCBjaGFyKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1
cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIkN1c3RvbVByb3RvY29sTWFuYWdlciI7Cit9
CisKK0N1c3RvbVByb3RvY29sTWFuYWdlcjo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKENoaWxkUHJv
Y2VzcyogY2hpbGRQcm9jZXNzKQorICAgIDogbV9jaGlsZFByb2Nlc3MoY2hpbGRQcm9jZXNzKQor
ICAgICwgbV9tZXNzYWdlUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQu
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIikpCit7CisgICAgQVNTRVJUKCFzaGFyZWRDdXN0b21Qcm90
b2NvbE1hbmFnZXIpOworICAgIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlciA9IHRoaXM7Cit9
CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCit7CisgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9tZXNzYWdlUXVldWUuZ2V0KCksIHRoaXMpOworfQorCit2b2lkIEN1
c3RvbVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisg
ICAgQVNTRVJUKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHMuaXNFbXB0eSgpIHx8ICFwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2Vzcyk7CisgICAgaWYg
KHBhcmFtZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzKSB7CisgICAgICAgIG1fY2hpbGRQcm9jZXNz
LT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUgPSBudWxscHRyOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKKyAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3Rv
bVByb3RvY29sIGNsYXNzXV07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JD
dXN0b21Qcm90b2NvbHNbaV0pOworfQorCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKK3Zv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIFtOU1VSTFByb3RvY29sIHJl
Z2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxT
Y2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tpXSk7Cit9CisjZW5kaWYKKwordm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFkZEN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9j
b2wgKmN1c3RvbVByb3RvY29sKQoreworICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbCk7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7CisgICAgbV9jdXN0
b21Qcm90b2NvbE1hcC5hZGQoY3VzdG9tUHJvdG9jb2wuY3VzdG9tUHJvdG9jb2xJRCwgY3VzdG9t
UHJvdG9jb2wpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVtb3ZlQ3VzdG9t
UHJvdG9jb2woV0tDdXN0b21Qcm90b2NvbCAqY3VzdG9tUHJvdG9jb2wpCit7CisgICAgQVNTRVJU
KGN1c3RvbVByb3RvY29sKTsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2Nv
bE1hcE11dGV4KTsKKyAgICBtX2N1c3RvbVByb3RvY29sTWFwLnJlbW92ZShjdXN0b21Qcm90b2Nv
bC5jdXN0b21Qcm90b2NvbElEKTsKK30KKyAgICAKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpyZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBBU1NFUlQoIXNj
aGVtZS5pc051bGwoKSk7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVt
ZXNNdXRleCk7CisgICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5hZGQoc2NoZW1lKTsKK30KKyAgICAK
K3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQoreworICAgIEFTU0VSVCghc2NoZW1lLmlzTnVsbCgpKTsKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011dGV4KTsKKyAgICBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLnJlbW92ZShzY2hlbWUpOworfQorCitib29sIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6
c3VwcG9ydHNTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleCk7CisgICAgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVt
ZXMuY29udGFpbnMoc2NoZW1lKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGRpc3BhdGNoT25S
ZXNvdXJjZUxvYWRlclJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgpKQoreworICAgIENGUnVuTG9vcFBl
cmZvcm1CbG9jayhbTlNVUkxDb25uZWN0aW9uIHJlc291cmNlTG9hZGVyUnVuTG9vcF0sIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSwgYmxvY2spOworICAgIENGUnVuTG9vcFdha2VVcChbTlNVUkxDb25u
ZWN0aW9uIHJlc291cmNlTG9hZGVyUnVuTG9vcF0pOworfQorCit2b2lkIEN1c3RvbVByb3RvY29s
TWFuYWdlcjo6ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBSZXRhaW5QdHI8V0tDdXN0
b21Qcm90b2NvbD4gcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOwor
ICAgIGlmICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxOU0Vy
cm9yPiBuc0Vycm9yID0gZXJyb3IubnNFcnJvcigpOworCisgICAgZGlzcGF0Y2hPblJlc291cmNl
TG9hZGVyUnVuTG9vcCheIHsKKyAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29s
OnByb3RvY29sLmdldCgpIGRpZEZhaWxXaXRoRXJyb3I6bnNFcnJvci5nZXQoKV07CisgICAgfSk7
CisKKyAgICByZW1vdmVDdXN0b21Qcm90b2NvbChwcm90b2NvbC5nZXQoKSk7Cit9CisKK3ZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgUmV0YWluUHRyPFdL
Q3VzdG9tUHJvdG9jb2w+IHByb3RvY29sID0gcHJvdG9jb2xGb3JJRChjdXN0b21Qcm90b2NvbElE
KTsKKyAgICBpZiAoIXByb3RvY29sKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8
TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRh
dGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pOworCisgICAgZGlzcGF0Y2hPblJlc291cmNl
TG9hZGVyUnVuTG9vcCheIHsKKyAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29s
OnByb3RvY29sLmdldCgpIGRpZExvYWREYXRhOm5zRGF0YS5nZXQoKV07CisgICAgfSk7Cit9CisK
K3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKK3sKKyAgICBSZXRhaW5QdHI8V0tDdXN0
b21Qcm90b2NvbD4gcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOwor
ICAgIGlmICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxOU1VS
TFJlc3BvbnNlPiBuc1Jlc3BvbnNlID0gcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpOworCisgICAg
ZGlzcGF0Y2hPblJlc291cmNlTG9hZGVyUnVuTG9vcCheIHsKKyAgICAgICAgW1twcm90b2NvbCBj
bGllbnRdIFVSTFByb3RvY29sOnByb3RvY29sLmdldCgpIGRpZFJlY2VpdmVSZXNwb25zZTpuc1Jl
c3BvbnNlLmdldCgpIGNhY2hlU3RvcmFnZVBvbGljeTpzdGF0aWNfY2FzdDxOU1VSTENhY2hlU3Rv
cmFnZVBvbGljeT4oY2FjaGVTdG9yYWdlUG9saWN5KV07CisgICAgfSk7Cit9CisKK3ZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQpCit7CisgICAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IHByb3RvY29sID0gcHJv
dG9jb2xGb3JJRChjdXN0b21Qcm90b2NvbElEKTsKKyAgICBpZiAoIXByb3RvY29sKQorICAgICAg
ICByZXR1cm47CisKKyAgICBkaXNwYXRjaE9uUmVzb3VyY2VMb2FkZXJSdW5Mb29wKF4geworICAg
ICAgICBbW3Byb3RvY29sIGNsaWVudF0gVVJMUHJvdG9jb2xEaWRGaW5pc2hMb2FkaW5nOnByb3Rv
Y29sLmdldCgpXTsKKyAgICB9KTsKKworICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKHByb3RvY29s
LmdldCgpKTsKK30KKworUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IEN1c3RvbVByb3RvY29s
TWFuYWdlcjo6cHJvdG9jb2xGb3JJRCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOworCisgICAgQ3Vz
dG9tUHJvdG9jb2xNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jdXN0b21Qcm90b2NvbE1hcC5m
aW5kKGN1c3RvbVByb3RvY29sSUQpOworICAgIGlmIChpdCA9PSBtX2N1c3RvbVByb3RvY29sTWFw
LmVuZCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIEFTU0VSVChpdC0+dmFsdWUp
OworICAgIHJldHVybiBpdC0+dmFsdWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0JKHJldmlzaW9uIDE2
Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9D
b2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMjc4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkN1c3RvbVByb3RvY29sTWFuYWdlci5oIgotCi0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMp
Ci0KLSNpbXBvcnQgIkNoaWxkUHJvY2Vzcy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyTWVzc2FnZXMuaCIKLSNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCIKLSNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgot
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbXBvcnQg
Ik5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jZW5kaWYKLQotI2lmZGVmIF9f
aGFzX2luY2x1ZGUKLSNpZiBfX2hhc19pbmNsdWRlKDxGb3VuZGF0aW9uL05TVVJMQ29ubmVjdGlv
blByaXZhdGUuaD4pCi0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ29ubmVjdGlvblByaXZhdGUu
aD4KLSNlbmRpZgotI2VuZGlmCi0KLUBpbnRlcmZhY2UgTlNVUkxDb25uZWN0aW9uIChEZXRhaWxz
KQotKyAoQ0ZSdW5Mb29wUmVmKXJlc291cmNlTG9hZGVyUnVuTG9vcDsKLUBlbmQKLQotdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBDdXN0b21Q
cm90b2NvbE1hbmFnZXIqIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlcjsKLQotc3RhdGljIHVp
bnQ2NF90IGdlbmVyYXRlQ3VzdG9tUHJvdG9jb2xJRCgpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90
IHVuaXF1ZUN1c3RvbVByb3RvY29sSUQgPSAwOwotICAgIHJldHVybiArK3VuaXF1ZUN1c3RvbVBy
b3RvY29sSUQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1AaW50ZXJmYWNlIFdLQ3Vz
dG9tUHJvdG9jb2wgOiBOU1VSTFByb3RvY29sIHsKLUBwcml2YXRlCi0gICAgdWludDY0X3QgX2N1
c3RvbVByb3RvY29sSUQ7Ci19Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQ7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0N1c3RvbVBy
b3RvY29sCi0KLUBzeW50aGVzaXplIGN1c3RvbVByb3RvY29sSUQgPSBfY3VzdG9tUHJvdG9jb2xJ
RDsKLQotKyAoQk9PTCljYW5Jbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QK
LXsKLSAgICByZXR1cm4gc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdXBwb3J0c1NjaGVt
ZShbW1tyZXF1ZXN0IFVSTF0gc2NoZW1lXSBsb3dlcmNhc2VTdHJpbmddKTsKLX0KLQotKyAoTlNV
UkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QKLXsKLSAgICByZXR1cm4gcmVxdWVzdDsKLX0KLQotKyAoQk9PTClyZXF1ZXN0SXNDYWNo
ZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVzdCAqKWEgdG9SZXF1ZXN0OihOU1VSTFJlcXVlc3QgKili
Ci17Ci0gICAgcmV0dXJuIE5POwotfQotCi0tIChpZClpbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QgY2FjaGVkUmVzcG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNo
ZWRSZXNwb25zZSBjbGllbnQ6KGlkPE5TVVJMUHJvdG9jb2xDbGllbnQ+KWNsaWVudAotewotICAg
IHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgY2FjaGVkUmVzcG9uc2U6Y2Fj
aGVkUmVzcG9uc2UgY2xpZW50OmNsaWVudF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIAotICAgIF9jdXN0b21Qcm90b2NvbElEID0gZ2VuZXJhdGVDdXN0b21Qcm90
b2NvbElEKCk7Ci0gICAgc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90
b2NvbChzZWxmKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClzdGFydExvYWRpbmcK
LXsKLSAgICBzaGFyZWRDdXN0b21Qcm90b2NvbE1hbmFnZXItPmNoaWxkUHJvY2VzcygpLT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RhcnRMb2FkaW5nKHNlbGYu
Y3VzdG9tUHJvdG9jb2xJRCwgW3NlbGYgcmVxdWVzdF0pLCAwKTsKLX0KLQotLSAodm9pZClzdG9w
TG9hZGluZwotewotICAgIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlci0+Y2hpbGRQcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdG9wTG9hZGlu
ZyhzZWxmLmN1c3RvbVByb3RvY29sSUQpLCAwKTsKLSAgICBzaGFyZWRDdXN0b21Qcm90b2NvbE1h
bmFnZXItPnJlbW92ZUN1c3RvbVByb3RvY29sKHNlbGYpOwotfQotCi1AZW5kCi0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jb25zdCBjaGFyKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKLXsKLSAgICByZXR1cm4gIkN1c3RvbVByb3RvY29sTWFuYWdlciI7Ci19Ci0KLUN1
c3RvbVByb3RvY29sTWFuYWdlcjo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKENoaWxkUHJvY2Vzcyog
Y2hpbGRQcm9jZXNzKQotICAgIDogbV9jaGlsZFByb2Nlc3MoY2hpbGRQcm9jZXNzKQotICAgICwg
bV9tZXNzYWdlUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyIikpCi17Ci0gICAgQVNTRVJUKCFzaGFyZWRDdXN0b21Qcm90b2NvbE1h
bmFnZXIpOwotICAgIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlciA9IHRoaXM7Ci19Ci0KLXZv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24pCi17Ci0gICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9tZXNzYWdlUXVldWUuZ2V0KCksIHRoaXMpOwotfQotCi12b2lkIEN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgQVNT
RVJUKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuaXNF
bXB0eSgpIHx8ICFwYXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0gICAgaWYgKHBhcmFt
ZXRlcnMudXNlc05ldHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAg
ICAgICAgbV9tZXNzYWdlUXVldWUgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3Rv
Y29sIGNsYXNzXV07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJs
U2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IHJlZ2lzdGVyU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHNbaV0pOwotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLXZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVy
Q2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5z
aXplKCk7ICsraSkKLSAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sc1tpXSk7Ci19Ci0jZW5kaWYKLQotdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmFkZEN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKmN1
c3RvbVByb3RvY29sKQotewotICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbCk7Ci0gICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7Ci0gICAgbV9jdXN0b21Qcm90
b2NvbE1hcC5hZGQoY3VzdG9tUHJvdG9jb2wuY3VzdG9tUHJvdG9jb2xJRCwgY3VzdG9tUHJvdG9j
b2wpOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVtb3ZlQ3VzdG9tUHJvdG9j
b2woV0tDdXN0b21Qcm90b2NvbCAqY3VzdG9tUHJvdG9jb2wpCi17Ci0gICAgQVNTRVJUKGN1c3Rv
bVByb3RvY29sKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11
dGV4KTsKLSAgICBtX2N1c3RvbVByb3RvY29sTWFwLnJlbW92ZShjdXN0b21Qcm90b2NvbC5jdXN0
b21Qcm90b2NvbElEKTsKLX0KLSAgICAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdp
c3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBBU1NFUlQoIXNjaGVtZS5p
c051bGwoKSk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRl
eCk7Ci0gICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5hZGQoc2NoZW1lKTsKLX0KLSAgICAKLXZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2No
ZW1lKQotewotICAgIEFTU0VSVCghc2NoZW1lLmlzTnVsbCgpKTsKLSAgICBNdXRleExvY2tlciBs
b2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011dGV4KTsKLSAgICBtX3JlZ2lzdGVyZWRTY2hlbWVz
LnJlbW92ZShzY2hlbWUpOwotfQotCi1ib29sIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcG9y
dHNTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgaWYgKHNjaGVtZS5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcmVn
aXN0ZXJlZFNjaGVtZXNNdXRleCk7Ci0gICAgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29u
dGFpbnMoc2NoZW1lKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGRpc3BhdGNoT25SZXNvdXJj
ZUxvYWRlclJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgpKQotewotICAgIENGUnVuTG9vcFBlcmZvcm1C
bG9jayhbTlNVUkxDb25uZWN0aW9uIHJlc291cmNlTG9hZGVyUnVuTG9vcF0sIGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSwgYmxvY2spOwotICAgIENGUnVuTG9vcFdha2VVcChbTlNVUkxDb25uZWN0aW9u
IHJlc291cmNlTG9hZGVyUnVuTG9vcF0pOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
cjo6ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBSZXRhaW5QdHI8V0tDdXN0b21Qcm90
b2NvbD4gcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOwotICAgIGlm
ICghcHJvdG9jb2wpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxOU0Vycm9yPiBu
c0Vycm9yID0gZXJyb3IubnNFcnJvcigpOwotCi0gICAgZGlzcGF0Y2hPblJlc291cmNlTG9hZGVy
UnVuTG9vcCheIHsKLSAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29sOnByb3Rv
Y29sLmdldCgpIGRpZEZhaWxXaXRoRXJyb3I6bnNFcnJvci5nZXQoKV07Ci0gICAgfSk7Ci0KLSAg
ICByZW1vdmVDdXN0b21Qcm90b2NvbChwcm90b2NvbC5nZXQoKSk7Ci19Ci0KLXZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCi17Ci0gICAgUmV0YWluUHRyPFdLQ3VzdG9t
UHJvdG9jb2w+IHByb3RvY29sID0gcHJvdG9jb2xGb3JJRChjdXN0b21Qcm90b2NvbElEKTsKLSAg
ICBpZiAoIXByb3RvY29sKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8TlNEYXRh
PiBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEuZGF0
YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pOwotCi0gICAgZGlzcGF0Y2hPblJlc291cmNlTG9hZGVy
UnVuTG9vcCheIHsKLSAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29sOnByb3Rv
Y29sLmdldCgpIGRpZExvYWREYXRhOm5zRGF0YS5nZXQoKV07Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVp
bnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKLXsKLSAgICBSZXRhaW5QdHI8V0tDdXN0b21Qcm90
b2NvbD4gcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOwotICAgIGlm
ICghcHJvdG9jb2wpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxOU1VSTFJlc3Bv
bnNlPiBuc1Jlc3BvbnNlID0gcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpOwotCi0gICAgZGlzcGF0
Y2hPblJlc291cmNlTG9hZGVyUnVuTG9vcCheIHsKLSAgICAgICAgW1twcm90b2NvbCBjbGllbnRd
IFVSTFByb3RvY29sOnByb3RvY29sLmdldCgpIGRpZFJlY2VpdmVSZXNwb25zZTpuc1Jlc3BvbnNl
LmdldCgpIGNhY2hlU3RvcmFnZVBvbGljeTpzdGF0aWNfY2FzdDxOU1VSTENhY2hlU3RvcmFnZVBv
bGljeT4oY2FjaGVTdG9yYWdlUG9saWN5KV07Ci0gICAgfSk7Ci19Ci0KLXZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQp
Ci17Ci0gICAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IHByb3RvY29sID0gcHJvdG9jb2xG
b3JJRChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBpZiAoIXByb3RvY29sKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBkaXNwYXRjaE9uUmVzb3VyY2VMb2FkZXJSdW5Mb29wKF4gewotICAgICAgICBb
W3Byb3RvY29sIGNsaWVudF0gVVJMUHJvdG9jb2xEaWRGaW5pc2hMb2FkaW5nOnByb3RvY29sLmdl
dCgpXTsKLSAgICB9KTsKLQotICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKHByb3RvY29sLmdldCgp
KTsKLX0KLQotUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IEN1c3RvbVByb3RvY29sTWFuYWdl
cjo6cHJvdG9jb2xGb3JJRCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOwotCi0gICAgQ3VzdG9tUHJv
dG9jb2xNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jdXN0b21Qcm90b2NvbE1hcC5maW5kKGN1
c3RvbVByb3RvY29sSUQpOwotICAgIGlmIChpdCA9PSBtX2N1c3RvbVByb3RvY29sTWFwLmVuZCgp
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIEFTU0VSVChpdC0+dmFsdWUpOwotICAg
IHJldHVybiBpdC0+dmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQkocmV2aXNpb24gMTYzODYxKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMjc4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkN1c3RvbVByb3Rv
Y29sTWFuYWdlci5oIgotCi0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0KLSNpbXBvcnQg
IkNoaWxkUHJvY2Vzcy5oIgotI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCIKLSNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbXBv
cnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgot
I2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jZW5kaWYKLQotI2lmZGVmIF9faGFzX2luY2x1ZGUK
LSNpZiBfX2hhc19pbmNsdWRlKDxGb3VuZGF0aW9uL05TVVJMQ29ubmVjdGlvblByaXZhdGUuaD4p
Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ29ubmVjdGlvblByaXZhdGUuaD4KLSNlbmRpZgot
I2VuZGlmCi0KLUBpbnRlcmZhY2UgTlNVUkxDb25uZWN0aW9uIChEZXRhaWxzKQotKyAoQ0ZSdW5M
b29wUmVmKXJlc291cmNlTG9hZGVyUnVuTG9vcDsKLUBlbmQKLQotdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXIqIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlcjsKLQotc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlQ3VzdG9tUHJvdG9jb2xJRCgpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUN1c3Rv
bVByb3RvY29sSUQgPSAwOwotICAgIHJldHVybiArK3VuaXF1ZUN1c3RvbVByb3RvY29sSUQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1AaW50ZXJmYWNlIFdLQ3VzdG9tUHJvdG9jb2wg
OiBOU1VSTFByb3RvY29sIHsKLUBwcml2YXRlCi0gICAgdWludDY0X3QgX2N1c3RvbVByb3RvY29s
SUQ7Ci19Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQ7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0N1c3RvbVByb3RvY29sCi0KLUBz
eW50aGVzaXplIGN1c3RvbVByb3RvY29sSUQgPSBfY3VzdG9tUHJvdG9jb2xJRDsKLQotKyAoQk9P
TCljYW5Jbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKLXsKLSAgICByZXR1
cm4gc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdXBwb3J0c1NjaGVtZShbW1tyZXF1ZXN0
IFVSTF0gc2NoZW1lXSBsb3dlcmNhc2VTdHJpbmddKTsKLX0KLQotKyAoTlNVUkxSZXF1ZXN0ICop
Y2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKLXsKLSAg
ICByZXR1cm4gcmVxdWVzdDsKLX0KLQotKyAoQk9PTClyZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6
KE5TVVJMUmVxdWVzdCAqKWEgdG9SZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiliCi17Ci0gICAgcmV0
dXJuIE5POwotfQotCi0tIChpZClpbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QgY2FjaGVkUmVzcG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRSZXNwb25zZSBj
bGllbnQ6KGlkPE5TVVJMUHJvdG9jb2xDbGllbnQ+KWNsaWVudAotewotICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgY2FjaGVkUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2Ug
Y2xpZW50OmNsaWVudF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIF9jdXN0b21Qcm90b2NvbElEID0gZ2VuZXJhdGVDdXN0b21Qcm90b2NvbElEKCk7Ci0g
ICAgc2hhcmVkQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChzZWxmKTsK
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClzdGFydExvYWRpbmcKLXsKLSAgICBzaGFy
ZWRDdXN0b21Qcm90b2NvbE1hbmFnZXItPmNoaWxkUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RhcnRMb2FkaW5nKHNlbGYuY3VzdG9tUHJvdG9j
b2xJRCwgW3NlbGYgcmVxdWVzdF0pLCAwKTsKLX0KLQotLSAodm9pZClzdG9wTG9hZGluZwotewot
ICAgIHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlci0+Y2hpbGRQcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpTdG9wTG9hZGluZyhzZWxmLmN1c3Rv
bVByb3RvY29sSUQpLCAwKTsKLSAgICBzaGFyZWRDdXN0b21Qcm90b2NvbE1hbmFnZXItPnJlbW92
ZUN1c3RvbVByb3RvY29sKHNlbGYpOwotfQotCi1AZW5kCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jb25zdCBjaGFyKiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKLXsK
LSAgICByZXR1cm4gIkN1c3RvbVByb3RvY29sTWFuYWdlciI7Ci19Ci0KLUN1c3RvbVByb3RvY29s
TWFuYWdlcjo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKENoaWxkUHJvY2VzcyogY2hpbGRQcm9jZXNz
KQotICAgIDogbV9jaGlsZFByb2Nlc3MoY2hpbGRQcm9jZXNzKQotICAgICwgbV9tZXNzYWdlUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyIikpCi17Ci0gICAgQVNTRVJUKCFzaGFyZWRDdXN0b21Qcm90b2NvbE1hbmFnZXIpOwotICAg
IHNoYXJlZEN1c3RvbVByb3RvY29sTWFuYWdlciA9IHRoaXM7Ci19Ci0KLXZvaWQgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24pCi17Ci0gICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9t
ZXNzYWdlUXVldWUuZ2V0KCksIHRoaXMpOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
cjo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQotewotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgQVNTRVJUKHBhcmFtZXRl
cnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuaXNFbXB0eSgpIHx8ICFw
YXJhbWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2Vzcyk7Ci0gICAgaWYgKHBhcmFtZXRlcnMudXNlc05l
dHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgIG1fY2hpbGRQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5yZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKLSAgICAgICAgbV9tZXNz
YWdlUXVldWUgPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNzXV07
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lz
dGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlZ2lzdGVyU2No
ZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHNbaV0p
OwotfQotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLXZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQotewotICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6W1dLQ3Vz
dG9tUHJvdG9jb2wgY2xhc3NdXTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkK
LSAgICAgICAgcmVnaXN0ZXJTY2hlbWUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29sc1tpXSk7Ci19Ci0jZW5kaWYKLQotdm9pZCBDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OmFkZEN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKmN1c3RvbVByb3RvY29s
KQotewotICAgIEFTU0VSVChjdXN0b21Qcm90b2NvbCk7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7Ci0gICAgbV9jdXN0b21Qcm90b2NvbE1hcC5hZGQo
Y3VzdG9tUHJvdG9jb2wuY3VzdG9tUHJvdG9jb2xJRCwgY3VzdG9tUHJvdG9jb2wpOwotfQotCi12
b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVtb3ZlQ3VzdG9tUHJvdG9jb2woV0tDdXN0b21Q
cm90b2NvbCAqY3VzdG9tUHJvdG9jb2wpCi17Ci0gICAgQVNTRVJUKGN1c3RvbVByb3RvY29sKTsK
LSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsKLSAgICBt
X2N1c3RvbVByb3RvY29sTWFwLnJlbW92ZShjdXN0b21Qcm90b2NvbC5jdXN0b21Qcm90b2NvbElE
KTsKLX0KLSAgICAKLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShj
b25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBBU1NFUlQoIXNjaGVtZS5pc051bGwoKSk7Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleCk7Ci0gICAgbV9y
ZWdpc3RlcmVkU2NoZW1lcy5hZGQoc2NoZW1lKTsKLX0KLSAgICAKLXZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAg
IEFTU0VSVCghc2NoZW1lLmlzTnVsbCgpKTsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9yZWdp
c3RlcmVkU2NoZW1lc011dGV4KTsKLSAgICBtX3JlZ2lzdGVyZWRTY2hlbWVzLnJlbW92ZShzY2hl
bWUpOwotfQotCi1ib29sIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcG9ydHNTY2hlbWUoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgaWYgKHNjaGVtZS5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVt
ZXNNdXRleCk7Ci0gICAgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1l
KTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGRpc3BhdGNoT25SZXNvdXJjZUxvYWRlclJ1bkxv
b3Aodm9pZCAoXmJsb2NrKSgpKQotewotICAgIENGUnVuTG9vcFBlcmZvcm1CbG9jayhbTlNVUkxD
b25uZWN0aW9uIHJlc291cmNlTG9hZGVyUnVuTG9vcF0sIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwg
YmxvY2spOwotICAgIENGUnVuTG9vcFdha2VVcChbTlNVUkxDb25uZWN0aW9uIHJlc291cmNlTG9h
ZGVyUnVuTG9vcF0pOwotfQotCi12b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmFpbFdp
dGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvcikKLXsKLSAgICBSZXRhaW5QdHI8V0tDdXN0b21Qcm90b2NvbD4gcHJvdG9j
b2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOwotICAgIGlmICghcHJvdG9jb2wp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxOU0Vycm9yPiBuc0Vycm9yID0gZXJy
b3IubnNFcnJvcigpOwotCi0gICAgZGlzcGF0Y2hPblJlc291cmNlTG9hZGVyUnVuTG9vcCheIHsK
LSAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29sOnByb3RvY29sLmdldCgpIGRp
ZEZhaWxXaXRoRXJyb3I6bnNFcnJvci5nZXQoKV07Ci0gICAgfSk7Ci0KLSAgICByZW1vdmVDdXN0
b21Qcm90b2NvbChwcm90b2NvbC5nZXQoKSk7Ci19Ci0KLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCi17Ci0gICAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IHBy
b3RvY29sID0gcHJvdG9jb2xGb3JJRChjdXN0b21Qcm90b2NvbElEKTsKLSAgICBpZiAoIXByb3Rv
Y29sKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgPSBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpk
YXRhLnNpemUoKV0pOwotCi0gICAgZGlzcGF0Y2hPblJlc291cmNlTG9hZGVyUnVuTG9vcCheIHsK
LSAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29sOnByb3RvY29sLmdldCgpIGRp
ZExvYWREYXRhOm5zRGF0YS5nZXQoKV07Ci0gICAgfSk7Ci19Ci0KLXZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVpbnQzMl90IGNhY2hl
U3RvcmFnZVBvbGljeSkKLXsKLSAgICBSZXRhaW5QdHI8V0tDdXN0b21Qcm90b2NvbD4gcHJvdG9j
b2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOwotICAgIGlmICghcHJvdG9jb2wp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBuc1Jlc3Bv
bnNlID0gcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpOwotCi0gICAgZGlzcGF0Y2hPblJlc291cmNl
TG9hZGVyUnVuTG9vcCheIHsKLSAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29s
OnByb3RvY29sLmdldCgpIGRpZFJlY2VpdmVSZXNwb25zZTpuc1Jlc3BvbnNlLmdldCgpIGNhY2hl
U3RvcmFnZVBvbGljeTpzdGF0aWNfY2FzdDxOU1VSTENhY2hlU3RvcmFnZVBvbGljeT4oY2FjaGVT
dG9yYWdlUG9saWN5KV07Ci0gICAgfSk7Ci19Ci0KLXZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0gICAgUmV0
YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IHByb3RvY29sID0gcHJvdG9jb2xGb3JJRChjdXN0b21Q
cm90b2NvbElEKTsKLSAgICBpZiAoIXByb3RvY29sKQotICAgICAgICByZXR1cm47Ci0KLSAgICBk
aXNwYXRjaE9uUmVzb3VyY2VMb2FkZXJSdW5Mb29wKF4gewotICAgICAgICBbW3Byb3RvY29sIGNs
aWVudF0gVVJMUHJvdG9jb2xEaWRGaW5pc2hMb2FkaW5nOnByb3RvY29sLmdldCgpXTsKLSAgICB9
KTsKLQotICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKHByb3RvY29sLmdldCgpKTsKLX0KLQotUmV0
YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cHJvdG9jb2xG
b3JJRCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOwotCi0gICAgQ3VzdG9tUHJvdG9jb2xNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9jdXN0b21Qcm90b2NvbE1hcC5maW5kKGN1c3RvbVByb3RvY29s
SUQpOwotICAgIGlmIChpdCA9PSBtX2N1c3RvbVByb3RvY29sTWFwLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIEFTU0VSVChpdC0+dmFsdWUpOwotICAgIHJldHVybiBpdC0+
dmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKENV
U1RPTV9QUk9UT0NPTFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVn
aW5Nb2R1bGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvUGx1Z2luTW9kdWxlSW5mby5oCShyZXZpc2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Nb2R1bGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPG1hY2gvbWFjaGluZS5o
PgogI2VuZGlmCiAKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IFBsdWdpbk1vZHVsZUluZm8gewog
ICAgIFN0cmluZyBwYXRoOwogICAgIFdlYkNvcmU6OlBsdWdpbkluZm8gaW5mbzsKIAotI2lmIFBM
QVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBjcHVfdHlwZV90IHBsdWdpbkFy
Y2hpdGVjdHVyZTsKICAgICBTdHJpbmcgYnVuZGxlSWRlbnRpZmllcjsKICAgICBTdHJpbmcgdmVy
c2lvblN0cmluZzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZp
c2lvbiAxNjM4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBA
QCB2b2lkIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuCiAgICAgZW5jb2RlciA8
PCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogICAgIGVuY29kZXIg
PDwgbWluaW11bUxpZmV0aW1lOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0Owot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IGFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0OwogI2VuZGlmCiB9CkBAIC01OCw3ICs1OCw3IEBAIGJv
b2wgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRlcm1pbmF0aW9uVGltZW91dCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1BvcnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0F0dHJp
YnV0ZXMuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNs
dWRlICJNYWNoUG9ydC5oIgogI2VuZGlmCiAKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFBsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGRvdWJsZSBtaW5pbXVtTGlmZXRpbWU7
CiAgICAgZG91YmxlIHRlcm1pbmF0aW9uVGltZW91dDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBJUEM6Ok1hY2hQb3J0IGFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdQb3J0OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcAkocmV2aXNp
b24gMTYzODYxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1
Z2luSW5mb3JtYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUGFz
c1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbAogICAgIHJldHVybiBJbW11dGFi
bGVEaWN0aW9uYXJ5OjpjcmVhdGUoc3RkOjptb3ZlKG1hcCkpOwogfQogCi0jaWYgIVBMQVRGT1JN
KE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIGdldFBsYXRmb3JtUGx1Z2luTW9kdWxl
SW5mb3JtYXRpb24oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIEltbXV0YWJsZURpY3Rpb25hcnk6
Ok1hcFR5cGUmKQogewogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2NmL0FyZ3VtZW50
Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZi9Bcmd1
bWVudENvZGVyc0NGLmNwcAkocmV2aXNpb24gMTYzODYxKQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DRlVSTEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBVU0UoRk9VTkRBVElPTikKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2VuZGlmCiAKQEAgLTUyNCw3ICs1MjQsNyBAQCBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh1cmxCeXRlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIFBMQVRGT1JN
KE1BQykKKyNpZiBVU0UoRk9VTkRBVElPTikKICAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIEFy
Z3VtZW50Q29kZXJzQ0ZNYWMubW0gYW5kIGNoYW5nZSB0aGlzIGZpbGUgYmFjayB0byBiZSBDKysK
ICAgICAvLyBpbnN0ZWFkIG9mIE9iamVjdGl2ZS1DKysuCiAgICAgaWYgKHVybEJ5dGVzLmlzRW1w
dHkoKSkgewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db21tYW5kTGluZU1hYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db21tYW5kTGluZU1h
Yy5jcHAJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ29t
bWFuZExpbmVNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ29tbWFuZExpbmUuaCIKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEZJWE1FOiBUaGVyZSdzIG5vdGhpbmcgTWFjIHNwZWNpZmlj
IGFib3V0IHRoaXMgY29tbWFuZCBsaW5lIHBhcnNlci4KLS8vIE1heWJlIHdlIHNob3VsZCBtb3Zl
IGl0IHRvIENvbW1hbmRMaW5lUG9zaXguY3BwIGluc3RlYWQuCi0KLWJvb2wgQ29tbWFuZExpbmU6
OnBhcnNlKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsKLSAgICBpZiAoKGFyZ2MgJSAyKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChpbnQgaSA9IDI7IGkgPCBhcmdjOyBpICs9
IDIpIHsKLSAgICAgICAgaWYgKCFhcmd2W2ldIHx8ICphcmd2W2ldICE9ICctJykKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5nOjpmcm9tVVRG
OChhcmd2W2ldICsgMSk7Ci0gICAgICAgIGlmIChrZXkuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIFN0cmluZyB2YWx1ZSA9IFN0cmluZzo6ZnJvbVVURjgo
YXJndltpICsgMV0pOwotICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgaWYgKCFtX2FyZ3MuYWRkKGtleSwgdmFs
dWUpLmlzTmV3RW50cnkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9QREZLaXRJbXBvcnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9QREZLaXRJbXBvcnRzLmgJKHJldmlzaW9uIDE2Mzg2MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUERGS2l0SW1wb3J0cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFBERktpdEltcG9ydHNfaAogI2RlZmluZSBQREZLaXRJ
bXBvcnRzX2gKIAotI2lmIFBMQVRGT1JNKE1BQykKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIE5T
U3RyaW5nICpwZGZLaXRGcmFtZXdvcmtQYXRoKCk7CkBAIC00Myw2ICs0MSw0IEBAIENsYXNzIHBk
ZkFubm90YXRpb25DaG9pY2VXaWRnZXRDbGFzcygpOwogCiB9CiAKLSNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCi0KICNlbmRpZiAvLyBQREZLaXRJbXBvcnRzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9wb3NpeC9Db21tYW5kTGluZVBPU0lYLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvcG9zaXgvQ29tbWFuZExpbmVQT1NJWC5jcHAJKHJldmlzaW9uIDE2Mzg2
MSkJKGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db21tYW5kTGluZU1hYy5jcHA6MTYz
ODYxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL3Bvc2l4L0NvbW1hbmRMaW5lUE9TSVguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQ29tbWFuZExpbmUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKKy8vIEZJWE1FOiBUaGVyZSdzIG5vdGhpbmcgTWFjIHNwZWNpZmljIGFib3V0IHRoaXMgY29t
bWFuZCBsaW5lIHBhcnNlci4KKy8vIE1heWJlIHdlIHNob3VsZCBtb3ZlIGl0IHRvIENvbW1hbmRM
aW5lUG9zaXguY3BwIGluc3RlYWQuCisKK2Jvb2wgQ29tbWFuZExpbmU6OnBhcnNlKGludCBhcmdj
LCBjaGFyKiogYXJndikKK3sKKyAgICBpZiAoKGFyZ2MgJSAyKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgZm9yIChpbnQgaSA9IDI7IGkgPCBhcmdjOyBpICs9IDIpIHsKKyAgICAgICAg
aWYgKCFhcmd2W2ldIHx8ICphcmd2W2ldICE9ICctJykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5nOjpmcm9tVVRGOChhcmd2W2ldICsgMSk7
CisgICAgICAgIGlmIChrZXkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIFN0cmluZyB2YWx1ZSA9IFN0cmluZzo6ZnJvbVVURjgoYXJndltpICsgMV0pOwor
ICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICAgICAgaWYgKCFtX2FyZ3MuYWRkKGtleSwgdmFsdWUpLmlzTmV3RW50cnkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL3Bv
c2l4L0NvbW1hbmRMaW5lUE9TSVguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9wb3NpeC9Db21tYW5kTGluZVBPU0lYLmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL3Bvc2l4L0NvbW1hbmRMaW5lUE9TSVguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw5ICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0vLyBGSVhNRTogVGhl
cmUncyBub3RoaW5nIE1hYyBzcGVjaWZpYyBhYm91dCB0aGlzIGNvbW1hbmQgbGluZSBwYXJzZXIu
Ci0vLyBNYXliZSB3ZSBzaG91bGQgbW92ZSBpdCB0byBDb21tYW5kTGluZVBvc2l4LmNwcCBpbnN0
ZWFkLgotCiBib29sIENvbW1hbmRMaW5lOjpwYXJzZShpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7
CiAgICAgaWYgKChhcmdjICUgMikpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjM4NjIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTIwMSw3ICsyMDEsNyBAQAogCQkxQTY0MjQ1RjEyREUyOUExMDBDQUFFMkMgLyogVXBkYXRl
SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTY0MjQ1RDEyREUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5mby5jcHAgKi87IH07CiAJCTFBNjZC
RjhGMThBMDUyRUQwMDIwNzFCNCAvKiBXS1dlYlZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2NkJGOEUxOEEwNTJFRDAwMjA3MUI0
IC8qIFdLV2ViVmlld0ludGVybmFsLmggKi87IH07CiAJCTFBNkY5RjkwMTFFMTNFRkMwMERCMTM3
MSAvKiBDb21tYW5kTGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE2RjlGOEUxMUUxM0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmggKi87IH07
Ci0JCTFBNkY5RkI3MTFFMTQwODUwMERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTZGOUZCNjExRTE0MDg1
MDBEQjEzNzEgLyogQ29tbWFuZExpbmVNYWMuY3BwICovOyB9OworCQkxQTZGOUZCNzExRTE0MDg1
MDBEQjEzNzEgLyogQ29tbWFuZExpbmVQT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTZGOUZCNjExRTE0MDg1MDBEQjEzNzEgLyogQ29tbWFu
ZExpbmVQT1NJWC5jcHAgKi87IH07CiAJCTFBNkZCN0FFMTFFNjRCNjgwMERCMTM3MSAvKiBQbHVn
aW5WaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNkZCN0FDMTFFNjRCNjgwMERCMTM3MSAvKiBQbHVnaW5WaWV3LmNwcCAqLzsgfTsKIAkJMUE2
RkI3QUYxMUU2NEI2ODAwREIxMzcxIC8qIFBsdWdpblZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZCN0FEMTFFNjRCNjgwMERCMTM3MSAvKiBQ
bHVnaW5WaWV3LmggKi87IH07CiAJCTFBNkZCN0QyMTFFNjUxRTIwMERCMTM3MSAvKiBQbHVnaW4u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2RkI3
RDAxMUU2NTFFMjAwREIxMzcxIC8qIFBsdWdpbi5jcHAgKi87IH07CkBAIC00MTUsNyArNDE1LDcg
QEAKIAkJMjk4NEY1N0QxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5ODRGNTdCMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eU1lc3NhZ2VzLmggKi87IH07CiAJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4NEY1ODYxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3Rv
bVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTI5ODRGNTg5MTY0
QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4NEY1ODcxNjRCQTA5NTAw
NEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmggKi87IH07Ci0JCTI5ODlB
NDExMTY3RDE4MzQwMDRGOTZEMiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg5QTQxMDE2N0QxODM0
MDA0Rjk2RDIgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tICovOyB9OworCQkyOTg5QTQx
MTE2N0QxODM0MDA0Rjk2RDIgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg5QTQxMDE2N0QxODM0
MDA0Rjk2RDIgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gKi87IH07CiAJCTI5ODlB
NDE0MTY3RDE4NEIwMDRGOTZEMiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODlBNDEyMTY3RDE4NEIwMDRG
OTZEMiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLzsgfTsKIAkJMjlBRDMwOTMxNjRCNEM1
RDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJMjlBRDMwOTYxNjRCNEM5
MzAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBRDMwOTUxNjRCNEM5MzAwNzJE
RUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tICovOyB9OwpAQCAtMTg3MCw3
ICsxODcwLDcgQEAKIAkJMUE2NDI0NUQxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXBkYXRlSW5mby5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjZCRjhFMThBMDUyRUQwMDIwNzFCNCAvKiBX
S1dlYlZpZXdJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dl
YlZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZGOUY4RTEx
RTEzRUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbWFuZExpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE2
RjlGQjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaW5lTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5l
UE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExp
bmVQT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNkZCN0FDMTFFNjRC
NjgwMERCMTM3MSAvKiBQbHVnaW5WaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBsdWdpblZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QTZGQjdBRDExRTY0QjY4MDBEQjEzNzEgLyogUGx1Z2luVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5WaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBNkZCN0QwMTFFNjUxRTIwMERCMTM3MSAvKiBQbHVnaW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxMDMsNyArMjEwMyw3IEBACiAJCTI5ODRGNTdCMTY0QjkxNUYwMDRCQzBDNiAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4NEY1ODYxNjRCQTA5NTAwNEJDMEM2IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTg0RjU4NzE2NEJBMDk1MDA0QkMw
QzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjk4OUE0MTAxNjdEMTgzNDAwNEY5NkQyIC8qIEN1c3RvbVBy
b3RvY29sTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbTsgcGF0aCA9IE5ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTI5ODlBNDEwMTY3RDE4MzQwMDRGOTZEMiAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1
c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTg5QTQxMjE2N0QxODRCMDA0Rjk2RDIgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlci5oOyBw
YXRoID0gTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODlBNDEzMTY3RDE4NEIwMDRGOTZEMiAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzgxNiw2
ICszODE2LDcgQEAKIAkJCQlCQzExMUI1QTExMkY2MjgyMDAzMzdCQUIgLyogbWFjICovLAogCQkJ
CTUxQThBNjBEMTYyN0YyQUMwMDBEOTBFOSAvKiBOZXR3b3JrICovLAogCQkJCTFBQUUwNThDMTI3
OURDRDQwMDg1MjQxOCAvKiBQbHVnaW5zICovLAorCQkJCTM3MDk1MDQ5MThBOUZBRDIwMDg3QUU1
RCAvKiBwb3NpeCAqLywKIAkJCQkwRjU5NDdBMDE4N0IzQjcxMDA0Mzc4NTcgLyogU2Nyb2xsaW5n
ICovLAogCQkJCUJDNjQ2OTZEMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5jcHAgKi8sCiAJ
CQkJQkM2NDY5NkUxMURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFycmF5LmggKi8sCkBAIC00MTI3LDE5
ICs0MTI4LDIwIEBACiAJCTI5ODlBNDBFMTY3RDE4MTMwMDRGOTZEMiAvKiBDdXN0b21Qcm90b2Nv
bHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTI5ODlB
NDBGMTY3RDE4MUIwMDRGOTZEMiAvKiBtYWMgKi8sCisJCQkJMjk4OUE0MEYxNjdEMTgxQjAwNEY5
NkQyIC8qIENvY29hICovLAogCQkJCTI5ODlBNDEyMTY3RDE4NEIwMDRGOTZEMiAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXIuaCAqLywKIAkJCQkyOTg5QTQxMzE2N0QxODRCMDA0Rjk2RDIgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJKTsKIAkJCW5hbWUgPSBDdXN0
b21Qcm90b2NvbHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQkyOTg5QTQw
RjE2N0QxODFCMDA0Rjk2RDIgLyogbWFjICovID0geworCQkyOTg5QTQwRjE2N0QxODFCMDA0Rjk2
RDIgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTI5ODlBNDEwMTY3RDE4MzQwMDRGOTZEMiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMu
bW0gKi8sCisJCQkJMjk4OUE0MTAxNjdEMTgzNDAwNEY5NkQyIC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tICovLAogCQkJKTsKLQkJCW5hbWUgPSBtYWM7CisJCQluYW1lID0gQ29jb2E7
CisJCQlwYXRoID0gTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2E7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwogCQkyOUFEMzA5MTE2NEI0QzEwMDA3MkRFQTkgLyogQ3VzdG9t
UHJvdG9jb2xzICovID0gewpAQCAtNDM0OCw2ICs0MzUwLDE0IEBACiAJCQlwYXRoID0gZm91bmRh
dGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTM3MDk1MDQ5MThBOUZB
RDIwMDg3QUU1RCAvKiBwb3NpeCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lUE9TSVgu
Y3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBwb3NpeDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTM3QzRDMDgzMTgxNDlDMkEwMDM2ODhCOSAvKiBDb2NvYSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC01MzQxLDcgKzUzNTEsNiBAQAog
CQkJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8sCiAJ
CQkJMUEyQTRBRkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCiAJCQkJ
MUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAotCQkJCTFB
NkY5RkI2MTFFMTQwODUwMERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgKi8sCiAJCQkJQ0RD
MzgzMEQxNzIxMjQyRDAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltLm1tICovLAogCQkJCUNE
QzM4MzBFMTcyMTI0MkQwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5oICovLAogCQkJCUNE
QzM4MkY5MTcyMTE2RDMwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnkuY3BwICov
LApAQCAtNzY2Miw3ICs3NjcxLDcgQEAKIAkJCQk5RjU0Rjg4RjE2NDg4RTg3MDA3REY4MUEgLyog
Q2hpbGRQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1MTNDNjYxNjZFQUJCMjAw
MTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkE0
QjBFMTU4NkEyMjQwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSBpbiBTb3VyY2VzICovLAot
CQkJCTFBNkY5RkI3MTFFMTQwODUwMERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkxQTZGOUZCNzExRTE0MDg1MDBEQjEzNzEgLyogQ29tbWFuZExpbmVQT1NJ
WC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAzMkRBQTEwRjQzN0QxMDA1OEMxNUEgLyogQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRBMzE4ODRFNEYwMDBFRDg2REIg
LyogV2ViVG91Y2hFdmVudElPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMwRUFDNjExNUQ3
REEzMDA1M0U5MzcgLyogQ29ubmVjdGlvbk1hYy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2NzUs
NyArNzY4NCw3IEBACiAJCQkJMkRBMDQ5QjMxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREMzODMxMDE3MjEyNDQwMDA4QTJG
QzMgLyogQ29va2llU3RvcmFnZVNoaW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQlCODc4QjYxNjEz
MzQyOERDMDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
Mjk4OUE0MTExNjdEMTgzNDAwNEY5NkQyIC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTI5ODlBNDExMTY3RDE4MzQwMDRGOTZEMiAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5ODRGNTg4MTY0QkEwOTUw
MDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjlBRDMwOTYxNjRCNEM5MzAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQxODc5RTRCQzAw
M0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="247887"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>