<?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>195346</bug_id>
          
          <creation_ts>2019-03-05 17:19:12 -0800</creation_ts>
          <short_desc>[Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.</short_desc>
          <delta_ts>2019-03-10 12:42:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=181004</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1512916</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-05 17:19:12 -0800</bug_when>
    <thetext>[Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512925</commentid>
    <comment_count>1</comment_count>
      <attachid>363715</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-05 17:34:27 -0800</bug_when>
    <thetext>Created attachment 363715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512942</commentid>
    <comment_count>2</comment_count>
      <attachid>363719</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-05 18:22:14 -0800</bug_when>
    <thetext>Created attachment 363719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512947</commentid>
    <comment_count>3</comment_count>
      <attachid>363719</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-05 19:03:55 -0800</bug_when>
    <thetext>Comment on attachment 363719
Patch

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

&gt; Source/WTF/wtf/text/win/WCharStringExtras.h:40
&gt; +inline wchar_t* ucharAsWCharMutable(UChar* characters)

You can overload. 

const wchar_t* ucharAsWChar(const UChar* characters)
wchar_t* ucharAsWChar(UChar* characters)

And, I prefer wcharFrom.

&gt; Source/WebKitLegacy/win/DOMCSSClasses.cpp:95
&gt; +    WTF::String cssTextString = nullTerminatedWCharToString(cssText);

WTF::String has platform specific ctors, String(CFStringRef) and String(NSString *).
We should have String(BSTR).

&gt; Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.cpp:668
&gt; +        String file = nullTerminatedWCharToString(files);

Why do need nullTerminatedWCharToString here?
WTF::String has a ctor from UChar*.

    // Construct a string with UTF-16 data, from a null-terminated source.
    WTF_EXPORT_PRIVATE String(const UChar*);

First of all, nullTerminatedWCharToString  is needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512950</commentid>
    <comment_count>4</comment_count>
      <attachid>363719</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-05 19:11:04 -0800</bug_when>
    <thetext>Comment on attachment 363719
Patch

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

&gt;&gt; Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.cpp:668
&gt;&gt; +        String file = nullTerminatedWCharToString(files);
&gt; 
&gt; Why do need nullTerminatedWCharToString here?
&gt; WTF::String has a ctor from UChar*.
&gt; 
&gt;     // Construct a string with UTF-16 data, from a null-terminated source.
&gt;     WTF_EXPORT_PRIVATE String(const UChar*);
&gt; 
&gt; First of all, nullTerminatedWCharToString  is needed?

I understand. Ignore this comment. We need platfrom specific ctor, String(wchat_t*). But we can&apos;t have this until AppleWin port update ICU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512952</commentid>
    <comment_count>5</comment_count>
      <attachid>363719</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-05 19:14:21 -0800</bug_when>
    <thetext>Comment on attachment 363719
Patch

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

&gt;&gt; Source/WebKitLegacy/win/DOMCSSClasses.cpp:95
&gt;&gt; +    WTF::String cssTextString = nullTerminatedWCharToString(cssText);
&gt; 
&gt; WTF::String has platform specific ctors, String(CFStringRef) and String(NSString *).
&gt; We should have String(BSTR).

Oh, no. BSTR is just a typedef of wchar_t. We can&apos;t do that  until AppleWin port updates ICU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512956</commentid>
    <comment_count>6</comment_count>
      <attachid>363719</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-05 19:23:19 -0800</bug_when>
    <thetext>Comment on attachment 363719
Patch

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

&gt;&gt;&gt; Source/WebKitLegacy/win/DOMCSSClasses.cpp:95
&gt;&gt;&gt; +    WTF::String cssTextString = nullTerminatedWCharToString(cssText);
&gt;&gt; 
&gt;&gt; WTF::String has platform specific ctors, String(CFStringRef) and String(NSString *).
&gt;&gt; We should have String(BSTR).
&gt; 
&gt; Oh, no. BSTR is just a typedef of wchar_t. We can&apos;t do that  until AppleWin port updates ICU.

How about this idea?

#if OS(WINDOWS) &amp;&amp; U_ICU_VERSION_MAJOR_NUM &gt;= 59
    WTF_EXPORT_PRIVATE String(const wchar_t*)
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512966</commentid>
    <comment_count>7</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-05 19:50:31 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #6)
&gt; Comment on attachment 363719 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=363719&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKitLegacy/win/DOMCSSClasses.cpp:95
&gt; &gt;&gt;&gt; +    WTF::String cssTextString = nullTerminatedWCharToString(cssText);
&gt; &gt;&gt; 
&gt; &gt;&gt; WTF::String has platform specific ctors, String(CFStringRef) and String(NSString *).
&gt; &gt;&gt; We should have String(BSTR).
&gt; &gt; 
&gt; &gt; Oh, no. BSTR is just a typedef of wchar_t. We can&apos;t do that  until AppleWin port updates ICU.
&gt; 
&gt; How about this idea?
&gt; 
&gt; #if OS(WINDOWS) &amp;&amp; U_ICU_VERSION_MAJOR_NUM &gt;= 59
&gt;     WTF_EXPORT_PRIVATE String(const wchar_t*)
&gt; #endif

Damn, I did all this without realizing that AppleWin is still behind. That seems like a good plan though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513194</commentid>
    <comment_count>8</comment_count>
      <attachid>363792</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-06 14:24:34 -0800</bug_when>
    <thetext>Created attachment 363792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513262</commentid>
    <comment_count>9</comment_count>
      <attachid>363807</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-06 16:16:00 -0800</bug_when>
    <thetext>Created attachment 363807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513270</commentid>
    <comment_count>10</comment_count>
      <attachid>363811</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-06 16:19:47 -0800</bug_when>
    <thetext>Created attachment 363811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513276</commentid>
    <comment_count>11</comment_count>
      <attachid>363815</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-06 16:29:53 -0800</bug_when>
    <thetext>Created attachment 363815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513334</commentid>
    <comment_count>12</comment_count>
      <attachid>363815</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-06 18:13:58 -0800</bug_when>
    <thetext>Comment on attachment 363815
Patch

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

&gt; Source/WebKitLegacy/win/Plugins/PluginDatabaseWin.cpp:355
&gt; +    directories.append(String(macromediaDirectoryStr));

directories.append take a String as a argument. And, you added non-explicit ctor. So, you can omit explicit String ctor call.
directories.append(macromediaDirectoryStr);
I don&apos;t have a strong opinion.

&gt; Source/WebKitLegacy/win/WebFrame.cpp:735
&gt; +    Frame* foundFrame = coreFrame-&gt;tree().find(AtomicString(ucharFrom(name), SysStringLen(name)), *coreFrame);

Let&apos;s do same for AtomicString. Then, you can remove these patch hunks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513336</commentid>
    <comment_count>13</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-06 18:19:23 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #12)
&gt; Comment on attachment 363815 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=363815&amp;action=review
&gt; 
&gt; &gt; Source/WebKitLegacy/win/Plugins/PluginDatabaseWin.cpp:355
&gt; &gt; +    directories.append(String(macromediaDirectoryStr));
&gt; 
&gt; directories.append take a String as a argument. And, you added non-explicit
&gt; ctor. So, you can omit explicit String ctor call.
&gt; directories.append(macromediaDirectoryStr);
&gt; I don&apos;t have a strong opinion.

Sure, I can prune as many of these as possible.

&gt; &gt; Source/WebKitLegacy/win/WebFrame.cpp:735
&gt; &gt; +    Frame* foundFrame = coreFrame-&gt;tree().find(AtomicString(ucharFrom(name), SysStringLen(name)), *coreFrame);
&gt; 
&gt; Let&apos;s do same for AtomicString. Then, you can remove these patch hunks.

Will do -- looks like there are CFStringRef/NSString ctors for AtomicString after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513337</commentid>
    <comment_count>14</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-06 18:21:42 -0800</bug_when>
    <thetext>This is just my idea.
There are a lot of conversion code from WTF::String to wchar_t*.

&gt; wcharFrom(title.charactersWithNullTermination().data())

Looks very long. This can be simplified if we have, for example WinString class.

&gt; WinString(title)

class WinString {
        WinString(const String&amp;);
        operator wchar_t*() const;
};

WebCore already has WebCore::BString class.
But, it is using SysAllocString.
I think WinString should use fastMalloc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513349</commentid>
    <comment_count>15</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-06 19:12:25 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #14)
&gt; There are a lot of conversion code from WTF::String to wchar_t*.
&gt; 
&gt; &gt; wcharFrom(title.charactersWithNullTermination().data())
&gt; 
&gt; Looks very long.

I agree -- I&apos;ve removed stringToNullTerminatedWChar here (because it&apos;s a copy-paste of charactersWithNullTermination with a return type of  Vector&lt;wchar_t&gt; and I thought it would be bad to have the definitions get out of sync) but we still kind of need a replacement.

Since we&apos;re already adding String(const wchar_t*), I think it could be reasonable to add a Vector&lt;wchar_t&gt; method too, e.g.:
&gt; WTF_EXPORT_PRIVATE Vector&lt;wchar_t&gt; wideCharacters() const;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513352</commentid>
    <comment_count>16</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-06 19:50:33 -0800</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #15)
&gt; Since we&apos;re already adding String(const wchar_t*), I think it could be
&gt; reasonable to add a Vector&lt;wchar_t&gt; method too, e.g.:
&gt; &gt; WTF_EXPORT_PRIVATE Vector&lt;wchar_t&gt; wideCharacters() const;

Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513384</commentid>
    <comment_count>17</comment_count>
      <attachid>363841</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-06 20:57:52 -0800</bug_when>
    <thetext>Created attachment 363841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513389</commentid>
    <comment_count>18</comment_count>
      <attachid>363843</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-03-06 21:04:50 -0800</bug_when>
    <thetext>Created attachment 363843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513423</commentid>
    <comment_count>19</comment_count>
      <attachid>363843</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-06 23:32:03 -0800</bug_when>
    <thetext>Comment on attachment 363843
Patch

Clearing flags on attachment: 363843

Committed r242592: &lt;https://trac.webkit.org/changeset/242592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513424</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-06 23:32:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513426</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-06 23:34:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/48667048&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513903</commentid>
    <comment_count>22</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-07 20:41:01 -0800</bug_when>
    <thetext>Committed r242632: &lt;https://trac.webkit.org/changeset/242632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514564</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-10 12:42:55 -0700</bug_when>
    <thetext>I’m thinking we might want to move from UChar to char16_t across all of WebKit at some point.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363715</attachid>
            <date>2019-03-05 17:34:27 -0800</date>
            <delta_ts>2019-03-05 18:22:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195346-20190305173424.patch</filename>
            <type>text/plain</type>
            <size>126174</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhOWIxOWQ3MTE5NWVhNmI2YTA1Y2Zh
Njg3MjEyMjQ1ZGY3Y2U5NDAuLjg2NWQxYjIzM2YxMjYyOTM5MmFlZWJhY2UwNTNlNzUzYWI1MDNl
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTktMDMtMDUgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9
d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oOgorICAgICAgICAoV1RGOjp1Y2hhckFzV0NoYXIpOgorICAgICAg
ICAoV1RGOjp1Y2hhckFzV0NoYXJNdXRhYmxlKToKKyAgICAgICAgKFdURjo6d2NoYXJBc1VDaGFy
KToKKyAgICAgICAgKFdURjo6d2NoYXJBc1VDaGFyTXV0YWJsZSk6CisgICAgICAgIChXVEY6Ondj
aGFyVG9TdHJpbmcpOgorICAgICAgICBBZGQgc3RhdGljX2Fzc2VydC1ndWFyZGVkIHJlaW50ZXJw
cmV0X2Nhc3Qgd3JhcHBlcnMgZm9yIGdvaW5nIGJldHdlZW4gVUNoYXIqIGFuZCB3Y2hhcl90Ki4K
KworICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZp
bGVTeXN0ZW1JbXBsOjpnZXRGaW5hbFBhdGhOYW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogd3RmL3dpbi9MYW5ndWFnZVdp
bi5jcHA6CisgICAgICAgIChXVEY6OmxvY2FsZUluZm8pOgorICAgICAgICBVc2Ugd2NoYXIgaGVs
cGVycyB3aGVyZSBuZWVkZWQuCisKIDIwMTktMDItMjggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdlYWtIYXNoU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNlYmYy
MzQ5NTdkY2JlYzg4YzYzM2FjZDE2ZDU4ZGU2ZGNmODcxYS4uNDI1MWNkMmE1NTU1Yzc5NzEzY2Ex
NmI3N2EzYjAyZTJlMzRmMTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTAz
LTA1ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBb
V2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3RvcGdhcCBhbmQgbGVhcm4gdG8gbGl2
ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdseXBoUGFnZTo6ZmlsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2Ny
aWJlQ29udHJvbGxlcjo6aXRlbWl6ZVNoYXBlQW5kUGxhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
VW5pc2NyaWJlQ29udHJvbGxlcjo6c2hhcGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2lu
L0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmdldExvY2FsZUlu
Zm9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJTdHJpbmc6OkJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9y
VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6
CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJzIHdoZXJlIG5lZWRlZC4KKwogMjAxOS0wMy0wNSAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2hvdWxk
IG5vdCBzY3JvbGwgd2hlbiBjaGVja2JveCwgcmFkaW8sIHN1Ym1pdCwgcmVzZXQsIG9yIGJ1dHRv
biBpcyBzcGFjZWJhciBhY3RpdmF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTZhOWQ3YjJmM2I5ODgwNDBkMzgy
YjNlNzM4ZDEyYzc5NTliYjk1ZS4uZmZmMGFjZTUzZWQ3Njc5M2MyMWMzYmRmNDRkOWRhYjE2Zjg2
ZmFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0wMy0wNSAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNI
QVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMpOgorICAgICAgICAqIFBsYXRmb3JtL3dp
bi9Nb2R1bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpNb2R1bGU6OmxvYWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0
OjpjcmVhdGVNZW51SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6b25NZW51Q29tbWFuZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OnNldFRvb2xUaXApOgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVycyB3aGVy
ZSBuZWVkZWQuCisKIDIwMTktMDMtMDUgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlA
c29ueS5jb20+CiAKICAgICAgICAgW0N1cmxdIEltcGxlbWVudCBDb29raWUgQWNjZXB0IFBvbGlj
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA3ZTgyN2I1YmY3NDFjNGNjNzgzNmNl
MjdkNzUzNTAwNGQxNzhkZjUzLi5mZDBiYTU1ODg0NzEwMzg5Zjc3OTc4NWRmMmNiMjk5NGZkMmQ0
NzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUwIEBACisyMDE5
LTAzLTA1ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAg
ICBbV2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3RvcGdhcCBhbmQgbGVhcm4gdG8g
bGl2ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBBY2Nlc3NpYmxlQmFzZS5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlQmFz
ZTo6Z2V0X2F0dHJpYnV0ZSk6CisgICAgICAgICogQWNjZXNzaWJsZVRleHRJbXBsLmNwcDoKKyAg
ICAgICAgKEFjY2Vzc2libGVUZXh0OjppbnNlcnRUZXh0KToKKyAgICAgICAgKEFjY2Vzc2libGVU
ZXh0OjpyZXBsYWNlVGV4dCk6CisgICAgICAgICogQ09NUHJvcGVydHlCYWcuaDoKKyAgICAgICAg
KEhhc2hUeXBlPjo6UmVhZCk6CisgICAgICAgIChIYXNoVHlwZT46OkdldFByb3BlcnR5SW5mbyk6
CisgICAgICAgIChIYXNoVHlwZT46OkxvYWRPYmplY3QpOgorICAgICAgICAqIERPTUNTU0NsYXNz
ZXMuY3BwOgorICAgICAgICAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6Cisg
ICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAg
ICAgKERPTUNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBET01D
b3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKToKKyAg
ICAgICAgKERPTU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoRE9NRG9jdW1l
bnQ6OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlU
YWdOYW1lKToKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKToK
KyAgICAgICAgKERPTURvY3VtZW50OjpnZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChET01Eb2N1
bWVudDo6Z2V0Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6Y3JlYXRlRXZl
bnQpOgorICAgICAgICAoRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKERP
TVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01FbGVtZW50OjpnZXRB
dHRyaWJ1dGUpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2V0QXR0cmlidXRlKToKKyAgICAgICAg
KERPTUVsZW1lbnQ6OmZvbnQpOgorICAgICAgICAqIERPTUhUTUxDbGFzc2VzLmNwcDoKKyAgICAg
ICAgKERPTUhUTUxEb2N1bWVudDo6d3JpdGUpOgorICAgICAgICAoRE9NSFRNTERvY3VtZW50Ojp3
cml0ZWxuKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwpOgorICAgICAg
ICAoRE9NSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dCk6CisgICAgICAgIChET01IVE1MSW5wdXRF
bGVtZW50OjpzZXRUeXBlKToKKyAgICAgICAgKERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVl
Rm9yVXNlcik6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50OjpyZXBsYWNlQ2hhcmFjdGVy
c0luUmFuZ2UpOgorICAgICAgICAqIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHA6CisgICAgICAg
IChEZWZhdWx0UG9saWN5RGVsZWdhdGU6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgorICAgICAgICAoRGVmYXVsdFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JNSU1FVHlw
ZSk6CisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmNwcDoKKyAgICAgICAgKiBXZWJDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDYWNoZTo6c2V0Q2FjaGVGb2xkZXIpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChjcmVhdGVXaW5kb3dG
ZWF0dXJlc1Byb3BlcnR5QmFnKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNj
cmlwdFByb21wdCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
OjpnZXRHdWVzc2VzRm9yV29yZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxl
ZEVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IpOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJv
cik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9y
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGYWxsQmFjayk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdp
biBjb25zdCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAgICAg
ICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OnN1YnJlc291
cmNlRm9yVVJMKToKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViRGF0
YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFn
ZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRN
b2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogV2ViRG93bmxvYWQuY3BwOgorICAgICAgICAoV2Vi
RG93bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKToKKyAgICAgICAgKiBXZWJEb3dubG9h
ZEN1cmwuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVzdCk6CisgICAg
ICAgIChXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAqIFdlYkVycm9yLmNw
cDoKKyAgICAgICAgKFdlYkVycm9yOjppbml0KToKKyAgICAgICAgKFdlYkVycm9yOjppc1BvbGlj
eUNoYW5nZUVycm9yKToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViRnJhbWU6OmZpbmRGcmFtZU5hbWVkKToKKyAgICAg
ICAgKFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkZyYW1lOjpwYXVz
ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6cGF1c2VUcmFuc2l0aW9uKToKKyAgICAg
ICAgKFdlYkZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KToKKyAgICAgICAgKFdl
YkZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KToKKyAgICAgICAgKFdlYkZyYW1lOjpj
YW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UpOgorICAgICAgICAoV2ViRnJhbWU6OnN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKToKKyAgICAgICAgKiBXZWJIaXN0b3J5LmNw
cDoKKyAgICAgICAgKFdlYkhpc3Rvcnk6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViSGlzdG9y
eTo6YWRkSXRlbSk6CisgICAgICAgIChXZWJIaXN0b3J5OjppdGVtRm9yVVJMKToKKyAgICAgICAg
KiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6c2V0VGl0bGUp
OgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OnNldFJTU0ZlZWRSZWZlcnJlcik6CisgICAgICAg
IChXZWJIaXN0b3J5SXRlbTo6aW5pdFdpdGhVUkxTdHJpbmcpOgorICAgICAgICAoV2ViSGlzdG9y
eUl0ZW06OnNldEFsdGVybmF0ZVRpdGxlKToKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yOjpldmFsdWF0ZUluRnJvbnRlbmQpOgorICAgICAgICAqIFdl
YkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJh
dG9yIExQQ1RTVFIgY29uc3QpOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxlKToKKyAgICAg
ICAgKFdlYkxvY2FsaXplZFN0cmluZyk6CisgICAgICAgIChXZWJMb2NhbGl6ZWRMUENUU1RSKToK
KyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6dmFsdWVGb3JIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OmFkZFZhbHVlKToKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0Ojpz
ZXRIVFRQTWV0aG9kKToKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRWYWx1ZSk6
CisgICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYk5vdGlm
aWNhdGlvbkNlbnRlcjo6cG9zdE5vdGlmaWNhdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpyZW1vdmVPYnNlcnZlcik6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgor
ICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmdldEluc3RhbmNlRm9ySWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6c2V0SW5zdGFuY2UpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OnJlbW92ZVJlZmVyZW5jZUZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OnNldEFwcGxpY2F0aW9uSWQpOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYlJlc291cmNlOjppbml0V2l0aERhdGEpOgorICAgICAgICAqIFdlYlVSTENyZWRlbnRp
YWwuY3BwOgorICAgICAgICAoV2ViVVJMQ3JlZGVudGlhbDo6aW5pdFdpdGhVc2VyKToKKyAgICAg
ICAgKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwOgorICAgICAgICAoV2ViVVJMUHJvdGVjdGlv
blNwYWNlOjppbml0V2l0aEhvc3QpOgorICAgICAgICAoV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpp
bml0V2l0aFByb3h5SG9zdCk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAg
ICAoV2ViVVJMUmVzcG9uc2U6OmluaXRXaXRoVVJMKToKKyAgICAgICAgKiBXZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJz
ZSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgICh0b0F0b21pY1N0cmluZyk6Cisg
ICAgICAgICh0b1N0cmluZyk6CisgICAgICAgIChjcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyk6
CisgICAgICAgIChXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKToKKyAgICAgICAgKFdlYlZpZXc6OnNl
dFRvb2xUaXApOgorICAgICAgICAoV2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2V0R3JvdXBOYW1lKToKKyAgICAgICAg
KFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVz
ZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRWaXNpdGVkTGlua3Mp
OgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVycyB3aGVyZSBuZWVkZWQuCisKIDIwMTktMDMtMDIg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
UHJvZ3JhbW1hdGljIHBhc3RlIGFjY2VzcyBzaG91bGQgYmUgZ3JhbnRlZCB3aGVuIGNvcHlpbmcg
YW5kIHBhc3Rpbmcgd2l0aGluIHRoZSBzYW1lIG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
d2luL1dDaGFyU3RyaW5nRXh0cmFzLmgKaW5kZXggZDQxZjQ2Mjk0ZDM2MDRlYjYwNGNiNzQ3MDE2
Y2U1NDM2MTdlZGRkZi4uNWM3ZTM0NDBkM2I0ZTgwNjZiNmU5ZWUxM2NjNWQ4ODFmZTgwMTA3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBLb25zdGFudGluIFRva2FyZXYgPGFu
bnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDYgKzMxLDMwIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitpbmxpbmUgY29uc3Qgd2NoYXJfdCog
dWNoYXJBc1dDaGFyKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKQoreworICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBh
bmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgd2NoYXJfdCo+KGNoYXJhY3RlcnMpOworfQorCitpbmxpbmUgd2NoYXJfdCogdWNo
YXJBc1dDaGFyTXV0YWJsZShVQ2hhciogY2hhcmFjdGVycykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5k
IFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6ZSIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHdjaGFyX3QqPihjaGFyYWN0ZXJzKTsKK30KKworaW5saW5lIGNvbnN0IFVDaGFyKiB3Y2hhckFz
VUNoYXIoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVD
aGFyIGhhdmUgdGhlIHNhbWUgc2l6ZSIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IFVDaGFyKj4oY2hhcmFjdGVycyk7Cit9CisKK2lubGluZSBVQ2hhciogd2NoYXJBc1VDaGFy
TXV0YWJsZSh3Y2hhcl90KiBjaGFyYWN0ZXJzKQoreworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIg
aGF2ZSB0aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIq
PihjaGFyYWN0ZXJzKTsKK30KKwogaW5saW5lIFZlY3Rvcjx3Y2hhcl90PiBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgVmVjdG9yPHdjaGFy
X3Q+IHJlc3VsdDsKQEAgLTU0LDggKzc5LDcgQEAgaW5saW5lIFZlY3Rvcjx3Y2hhcl90PiBzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIGlubGluZSBT
dHJpbmcgd2NoYXJUb1N0cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCiB7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVD
aGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1lIHNpemUiKTsK
LSAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihjaGFyYWN0
ZXJzKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gU3RyaW5nKHdjaGFyQXNVQ2hhcihjaGFyYWN0ZXJz
KSwgbGVuZ3RoKTsKIH0KIAogaW5saW5lIFN0cmluZyBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykKQEAgLTY1LDYgKzg5LDEwIEBAIGlubGluZSBT
dHJpbmcgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3Rl
cnMpCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCit1c2luZyBXVEY6OnVjaGFyQXNXQ2hhcjsKK3Vz
aW5nIFdURjo6dWNoYXJBc1dDaGFyTXV0YWJsZTsKK3VzaW5nIFdURjo6d2NoYXJBc1VDaGFyOwor
dXNpbmcgV1RGOjp3Y2hhckFzVUNoYXJNdXRhYmxlOwogdXNpbmcgV1RGOjpzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXI7CiB1c2luZyBXVEY6OndjaGFyVG9TdHJpbmc7CiB1c2luZyBXVEY6Om51
bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cAppbmRleCBkNjcyYWY2Mzc0NjkzY2YwNTIxZWMzNjg5Njg5Y2ViY2MwMmVkZTM4Li4yN2E1ZmZl
ZDY0N2E5MzRlZGZiNTU5ODcwYTNmZjJjMjBiZTkxNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFs
UGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKDo6R2V0RmluYWxQ
YXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIFZP
TFVNRV9OQU1FX05UKSA+PSBNQVhfUEFUSCkgeworICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVC
eUhhbmRsZVcoaGFuZGxlLCB1Y2hhckFzV0NoYXJNdXRhYmxlKGJ1ZmZlci5kYXRhKCkpLCBidWZm
ZXIuc2l6ZSgpLCBWT0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgpIHsKICAgICAgICAgY2xvc2VG
aWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAgICAgY2xvc2VG
aWxlKGhhbmRsZSk7CiAKLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7
CisgICAgYnVmZmVyLnNocmluayh3Y3NsZW4odWNoYXJBc1dDaGFyKGJ1ZmZlci5kYXRhKCkpKSk7
CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIH0KIApAQCAtMjUy
LDE4ICsyNTIsMTYgQEAgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0
IFN0cmluZyYgbmV3UGF0aCkKIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKICAgICBWZWN0b3I8VUNo
YXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0KICAgICBpZiAocGF0aC5sZW5ndGgoKSArIDEgPiBidWZm
ZXIuc2l6ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdWaWV3KHBh
dGgpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlci5kYXRhKCkpOwogICAgIGJ1ZmZl
cltwYXRoLmxlbmd0aCgpXSA9ICdcMCc7CiAKLSAgICBpZiAoIVBhdGhBcHBlbmRXKGJ1ZmZlci5k
YXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb21wb25lbnQpLmRhdGEoKSkpCisg
ICAgaWYgKCFQYXRoQXBwZW5kVyh1Y2hhckFzV0NoYXJNdXRhYmxlKGJ1ZmZlci5kYXRhKCkpLCBz
dHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgp
KSk7Ci0KKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbih1Y2hhckFzV0NoYXIoYnVmZmVyLmRhdGEo
KSkpKTsKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCkBA
IC0yNzksOSArMjc3LDcgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5n
VmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXAKIAogQ1N0cmluZyBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGF1dG8gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhwYXRoKS51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKTsKLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzOworICAgIGF1dG8gY2hhcmFjdGVycyA9IHVjaGFyQXNXQ2hhcihTdHJpbmdWaWV3KHBhdGgp
LnVwY29udmVydGVkQ2hhcmFjdGVycygpKTsKICAgICBpbnQgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0
aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCAwLCAwLCAwLCAwKSAt
IDE7CiAKICAgICBjaGFyKiBidWZmZXI7CkBAIC0zNTAsOSArMzQ2LDEwIEBAIHN0YXRpYyBTdHJp
bmcgYnVuZGxlTmFtZSgpCiBzdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0
aElkZW50aWZpZXIpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotICAg
IGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZM
QUdfQ1JFQVRFLCAwLCAwLCBidWZmZXIuZGF0YSgpKSkpCisgICAgaWYgKEZBSUxFRChTSEdldEZv
bGRlclBhdGhXKDAsIHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVBVEUsIDAsIDAsIHVj
aGFyQXNXQ2hhck11dGFibGUoYnVmZmVyLmRhdGEoKSkpKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKworICAgIGJ1
ZmZlci5zaHJpbmsod2NzbGVuKHVjaGFyQXNXQ2hhcihidWZmZXIuZGF0YSgpKSkpOwogICAgIFN0
cmluZyBkaXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiAKICAgICBk
aXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBwbGUgQ29t
cHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2lu
L0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKaW5k
ZXggMzA5Y2E2NjI3ZWQ4YWZiMzA4NjczMTU4NjRmZjhjM2U2MjBkYWQ1MS4uNWE0NzQyMDA1NmEy
ODkyYmEzMWI1ZWFiNzU0YjdiMmNmZTJmMGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBA
IC00NCw3ICs0NSw3IEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUgbG9jYWxlVHlw
ZSwgY29uc3QgU3RyaW5nJiBmYWxsYmFjaykKICAgICAgICAgcmV0dXJuIGZhbGxiYWNrOwogICAg
IFVDaGFyKiBsb2NhbGVOYW1lQnVmOwogICAgIFN0cmluZyBsb2NhbGVOYW1lID0gU3RyaW5nOjpj
cmVhdGVVbmluaXRpYWxpemVkKGxvY2FsZUNoYXJzLCBsb2NhbGVOYW1lQnVmKTsKLSAgICBsb2Nh
bGVDaGFycyA9IEdldExvY2FsZUluZm8obGFuZ0lELCBsb2NhbGVUeXBlLCBsb2NhbGVOYW1lQnVm
LCBsb2NhbGVDaGFycyk7CisgICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZvKGxhbmdJRCwg
bG9jYWxlVHlwZSwgdWNoYXJBc1dDaGFyTXV0YWJsZShsb2NhbGVOYW1lQnVmKSwgbG9jYWxlQ2hh
cnMpOwogICAgIGlmICghbG9jYWxlQ2hhcnMpCiAgICAgICAgIHJldHVybiBmYWxsYmFjazsKICAg
ICBpZiAobG9jYWxlTmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDA3OTQ4ODEzNjdlMDIy
MTQ1OGEwZTdiMGFjNDNkNjc0NDY4OWE0NTAuLjY0OGZlYTJjN2Y4ZmM1MTIwZTcxMmM4OTgwYmM2
NTJmZWQ5ODAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC0yNywxMiArMjcsMTMgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8d2luc29jazIuaD4KLSNpbmNsdWRlICJGb250Lmgi
CiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCisKKyNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAi
SFduZERDLmgiCiAjaW5jbHVkZSA8bWxhbmcuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTMw
MSw3ICszMDIsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNo
YXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogCiAgICAgICAgIExPR0ZPTlQg
bG9nRm9udDsKICAgICAgICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7Ci0g
ICAgICAgIFN0cmluZ1ZpZXcobGlua2VkRm9udHMtPmF0KGxpbmtlZEZvbnRJbmRleCkpLmdldENo
YXJhY3RlcnNXaXRoVXBjb252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CisgICAgICAgIFN0cmlu
Z1ZpZXcobGlua2VkRm9udHMtPmF0KGxpbmtlZEZvbnRJbmRleCkpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KHdjaGFyQXNVQ2hhck11dGFibGUobG9nRm9udC5sZkZhY2VOYW1lKSk7CiAgICAg
ICAgIGxvZ0ZvbnQubGZGYWNlTmFtZVtsaW5rZWRGb250cy0+YXQobGlua2VkRm9udEluZGV4KS5s
ZW5ndGgoKV0gPSAwOwogICAgICAgICBFbnVtRm9udEZhbWlsaWVzRXgoaGRjLCAmbG9nRm9udCwg
bGlua2VkRm9udEVudW1Qcm9jLCByZWludGVycHJldF9jYXN0PExQQVJBTT4oJmhmb250KSwgMCk7
CiAgICAgICAgIGxpbmtlZEZvbnRJbmRleCsrOwpAQCAtNDg0LDcgKzQ4NSw3IEBAIHN0YXRpYyBH
RElPYmplY3Q8SEZPTlQ+IGNyZWF0ZUdESUZvbnQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHks
IExPTkcgZGVzaXJlZFdlCiAgICAgTE9HRk9OVCBsb2dGb250OwogICAgIGxvZ0ZvbnQubGZDaGFy
U2V0ID0gREVGQVVMVF9DSEFSU0VUOwogICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0g
U3RyaW5nVmlldyhmYW1pbHkpLnN1YnN0cmluZygwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTEZf
RkFDRVNJWkUgLSAxKSk7Ci0gICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBj
b252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CisgICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KHdjaGFyQXNVQ2hhck11dGFibGUobG9nRm9udC5sZkZhY2VOYW1l
KSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWlseS5sZW5ndGgoKV0gPSAw
OwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CiAKQEAgLTU5OCw3ICs1OTksNyBA
QCBWZWN0b3I8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4gRm9udENhY2hlOjpnZXRGb250U2Vs
ZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dG
b250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKICAgICBTdHJpbmdWaWV3IHRydW5jYXRl
ZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkuc3Vic3RyaW5nKDAsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihMRl9GQUNFU0laRSAtIDEpKTsKLSAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0Q2hh
cmFjdGVyc1dpdGhVcGNvbnZlcnQobG9nRm9udC5sZkZhY2VOYW1lKTsKKyAgICB0cnVuY2F0ZWRG
YW1pbHkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQod2NoYXJBc1VDaGFyTXV0YWJsZShsb2dG
b250LmxmRmFjZU5hbWUpKTsKICAgICBsb2dGb250LmxmRmFjZU5hbWVbdHJ1bmNhdGVkRmFtaWx5
Lmxlbmd0aCgpXSA9IDA7CiAgICAgbG9nRm9udC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3BwCmluZGV4IDRhNTllMWJiYmZhMjEyMzVlYjBk
ZjY3YmYzMDc0YTczMTYzNzUzNmMuLjA3ZmYyMTVlNjlmOThhOWRlYmQ0NDNiMGMwMWE4NGNkYjE0
Njg2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
bHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJIV25kREMuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00OSw3ICs1MCw3IEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIs
IHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKICAgICBTZWxlY3RPYmplY3QoZGMsIGZvbnQucGxhdGZv
cm1EYXRhKCkuaGZvbnQoKSk7CiAKICAgICBXT1JEIGxvY2FsR2x5cGhCdWZmZXJbR2x5cGhQYWdl
OjpzaXplICogMl07Ci0gICAgRFdPUkQgcmVzdWx0ID0gR2V0R2x5cGhJbmRpY2VzKGRjLCBidWZm
ZXIsIGJ1ZmZlckxlbmd0aCwgbG9jYWxHbHlwaEJ1ZmZlciwgR0dJX01BUktfTk9ORVhJU1RJTkdf
R0xZUEhTKTsKKyAgICBEV09SRCByZXN1bHQgPSBHZXRHbHlwaEluZGljZXMoZGMsIHVjaGFyQXNX
Q2hhcihidWZmZXIpLCBidWZmZXJMZW5ndGgsIGxvY2FsR2x5cGhCdWZmZXIsIEdHSV9NQVJLX05P
TkVYSVNUSU5HX0dMWVBIUyk7CiAgICAgYm9vbCBzdWNjZXNzID0gcmVzdWx0ICE9IEdESV9FUlJP
UiAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVzdWx0KSA9PSBidWZmZXJMZW5ndGg7CiAgICAg
aWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdseXBoUGFn
ZTo6c2l6ZTsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAKaW5kZXggMTEwNDU0NzZkYjQ2
NjY1YmU1ZWIyMjkzYTE4NGUxZTBhMmJmNjM1ZS4uYmRjODdhZGM3YjI0NWJiZTFlMTg1YjZhNDA1
YzE0YzJlOWUzMTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcApAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgotCisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNv
ZGU7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBVbmlzY3JpYmVDb250cm9sbGVyOjppdGVtaXpl
U2hhcGVBbmRQbGFjZShjb25zdCBVQ2hhciogY3AsIHVuc2lnbmVkIHN0cmluZ08KICAgICBtX2l0
ZW1zLnJlc2l6ZSg2KTsKICAgICBpbnQgbnVtSXRlbXMgPSAwOwogICAgIEhSRVNVTFQgcmMgPSBT
X09LOwotICAgIHdoaWxlIChyYyA9IDo6U2NyaXB0SXRlbWl6ZShjcCwgbGVuZ3RoLCBtX2l0ZW1z
LnNpemUoKSAtIDEsICZtX2NvbnRyb2wsICZtX3N0YXRlLCBtX2l0ZW1zLmRhdGEoKSwgJm51bUl0
ZW1zKSA9PSBFX09VVE9GTUVNT1JZKSB7CisgICAgd2hpbGUgKHJjID0gOjpTY3JpcHRJdGVtaXpl
KHVjaGFyQXNXQ2hhcihjcCksIGxlbmd0aCwgbV9pdGVtcy5zaXplKCkgLSAxLCAmbV9jb250cm9s
LCAmbV9zdGF0ZSwgbV9pdGVtcy5kYXRhKCksICZudW1JdGVtcykgPT0gRV9PVVRPRk1FTU9SWSkg
ewogICAgICAgICBtX2l0ZW1zLnJlc2l6ZShtX2l0ZW1zLnNpemUoKSAqIDIpOwogICAgICAgICBy
ZXNldENvbnRyb2xBbmRTdGF0ZSgpOwogICAgIH0KQEAgLTQyOCw3ICs0MjgsNyBAQCBib29sIFVu
aXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKGNvbnN0IFVDaGFyKiBzdHIsIGludCBsZW4sIFNDUklQ
VF9JVEVNIGl0ZW0sIGNvbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkbyB7Ci0gICAg
ICAgIHNoYXBlUmVzdWx0ID0gU2NyaXB0U2hhcGUoaGRjLCBmb250RGF0YS0+c2NyaXB0Q2FjaGUo
KSwgc3RyLCBsZW4sIGdseXBocy5zaXplKCksICZpdGVtLmEsCisgICAgICAgIHNoYXBlUmVzdWx0
ID0gU2NyaXB0U2hhcGUoaGRjLCBmb250RGF0YS0+c2NyaXB0Q2FjaGUoKSwgdWNoYXJBc1dDaGFy
KHN0ciksIGxlbiwgZ2x5cGhzLnNpemUoKSwgJml0ZW0uYSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbHlwaHMuZGF0YSgpLCBjbHVzdGVycy5kYXRhKCksIHZpc3VhbEF0dHJp
YnV0ZXMuZGF0YSgpLCAmZ2x5cGhDb3VudCk7CiAgICAgICAgIGlmIChzaGFwZVJlc3VsdCA9PSBF
X1BFTkRJTkcpIHsKICAgICAgICAgICAgIC8vIFRoZSBzY3JpcHQgY2FjaGUgaXNuJ3QgcHJpbWVk
IHdpdGggZW5vdWdoIGluZm8geWV0LiAgV2UgbmVlZCB0byBzZWxlY3Qgb3VyIEhGT05UIGludG8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4
IDE1MzE1Y2E3MzVmZjJlN2FiNDM1MTcxZTZjMWJkZTYwMzczMmNiZGUuLjdiYWZlYWI2ZDkwNGIy
MzBiYTIyOTQwNWFmZWVmNzg5ZGRhNzNjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgTG9jYWxl
V2luOjpnZXRMb2NhbGVJbmZvU3RyaW5nKExDVFlQRSB0eXBlKQogICAgIGlmIChidWZmZXJTaXpl
V2l0aE5VTCA8PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgVmVjdG9yPFVDaGFy
PiBidWZmZXIoYnVmZmVyU2l6ZVdpdGhOVUwpOwotICAgIDo6R2V0TG9jYWxlSW5mbyhtX2xjaWQs
IHR5cGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemVXaXRoTlVMKTsKKyAgICA6OkdldExvY2Fs
ZUluZm8obV9sY2lkLCB0eXBlLCB1Y2hhckFzV0NoYXJNdXRhYmxlKGJ1ZmZlci5kYXRhKCkpLCBi
dWZmZXJTaXplV2l0aE5VTCk7CiAgICAgYnVmZmVyLnNocmluayhidWZmZXJTaXplV2l0aE5VTCAt
IDEpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5kZXggMGY0NmM1ZGNhYjI5YjdiNDYz
YmI2ZWNkMzFiMGViM2I3NThjMjIzYy4uZjQ2NGUzN2IzNmZkNzdiMjljYTg2ODVlMGJjYjkyNjVj
MmUyNzg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KQEAgLTY1LDcgKzY2LDcgQEAgQlN0
cmluZzo6QlN0cmluZyhjb25zdCBTdHJpbmcmIHMpCiAgICAgaWYgKHMuaXNOdWxsKCkpCiAgICAg
ICAgIG1fYnN0ciA9IDA7CiAgICAgZWxzZQotICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmlu
Z0xlbihTdHJpbmdWaWV3KHMpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsK
KyAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4odWNoYXJBc1dDaGFyKFN0cmluZ1Zp
ZXcocykudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkpLCBzLmxlbmd0aCgpKTsKIH0KIAogQlN0cmlu
Zzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkKQEAgLTczLDcgKzc0LDcgQEAgQlN0cmluZzo6QlN0
cmluZyhjb25zdCBVUkwmIHVybCkKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICBtX2Jz
dHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4oU3Ry
aW5nVmlldyh1cmwuc3RyaW5nKCkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB1cmwuc3RyaW5n
KCkubGVuZ3RoKCkpOworICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbih1Y2hhckFz
V0NoYXIoU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwg
dXJsLnN0cmluZygpLmxlbmd0aCgpKTsKIH0KIAogQlN0cmluZzo6QlN0cmluZyhjb25zdCBBdG9t
aWNTdHJpbmcmIHMpCkBAIC04MSw3ICs4Miw3IEBAIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgQXRv
bWljU3RyaW5nJiBzKQogICAgIGlmIChzLmlzTnVsbCgpKQogICAgICAgICBtX2JzdHIgPSAwOwog
ICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4oU3RyaW5nVmlldyhz
LnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSk7CisgICAgICAg
IG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHVjaGFyQXNXQ2hhcihTdHJpbmdWaWV3KHMuc3Ry
aW5nKCkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSk7CiB9CiAKICNpZiBV
U0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
aW5kZXggYTVmZDkzMGFlOTFiOTE3YjljYmEwODY0YmJhNTUzNGVjYjJjMWUxMy4uMGI2ODJjNDgz
MWVlNmQ0ZTRjZTU4NGM2ZTJhYzI4ZTM1NWIxNTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNTU5LDE5ICs1NTksMTkgQEAgc3RhdGlj
IFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGwKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGZzUGF0aE1heExl
bmd0aEV4Y2x1ZGluZ051bGxUZXJtaW5hdG9yID0gTUFYX1BBVEggLSAxOwogICAgIGJvb2wgdXNl
ZFVSTCA9IGZhbHNlOwotICAgIFdDSEFSIGZzUGF0aEJ1ZmZlcltNQVhfUEFUSF07CisgICAgVUNo
YXIgZnNQYXRoQnVmZmVyW01BWF9QQVRIXTsKICAgICBmc1BhdGhCdWZmZXJbMF0gPSAwOwotICAg
IGludCBleHRlbnNpb25MZW4gPSBleHRlbnNpb24gPyBsc3RybGVuKGV4dGVuc2lvbikgOiAwOwor
ICAgIGludCBleHRlbnNpb25MZW4gPSBleHRlbnNpb24gPyB3Y3NsZW4odWNoYXJBc1dDaGFyKGV4
dGVuc2lvbikpIDogMDsKICAgICBpbnQgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9u
ID0gZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nTnVsbFRlcm1pbmF0b3IgLSBleHRlbnNpb25MZW47
CiAKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewogICAgICAgICBzaXplX3QgbGVuID0gc3Rk
OjptaW48c2l6ZV90Pih0aXRsZS5sZW5ndGgoKSwgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0
ZW5zaW9uKTsKICAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgZnNQYXRoQnVm
ZmVyW2xlbl0gPSAwOwotICAgICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKGZzUGF0aEJ1
ZmZlciwgbGVuKTsKKyAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh1Y2hhckFzV0No
YXJNdXRhYmxlKGZzUGF0aEJ1ZmZlciksIGxlbik7CiAgICAgfQogCi0gICAgaWYgKCFsc3RybGVu
KGZzUGF0aEJ1ZmZlcikpIHsKKyAgICBpZiAoIXdjc2xlbih1Y2hhckFzV0NoYXIoZnNQYXRoQnVm
ZmVyKSkpIHsKICAgICAgICAgVVJMIGt1cmwoVVJMKCksIHVybCk7CiAgICAgICAgIHVzZWRVUkwg
PSB0cnVlOwogICAgICAgICAvLyBUaGUgZmlsZW5hbWUgZm9yIGFueSBjb250ZW50IGJhc2VkIGRy
YWcgb3IgZmlsZSB1cmwgc2hvdWxkIGJlIHRoZSBsYXN0IGVsZW1lbnQgb2YgCkBAIC01ODcsMTUg
KzU4NywxNSBAQCBzdGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bAogICAgICAgICAgICAgU3RyaW5nVmll
dyh1cmwpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0
aEJ1ZmZlcik7CiAgICAgICAgIH0KICAgICAgICAgZnNQYXRoQnVmZmVyW2xlbl0gPSAwOwotICAg
ICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKGZzUGF0aEJ1ZmZlciwgbGVuKTsKKyAgICAg
ICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh1Y2hhckFzV0NoYXJNdXRhYmxlKGZzUGF0aEJ1
ZmZlciksIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFleHRlbnNpb24pCi0gICAgICAgIHJldHVy
biBTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPihmc1BhdGhCdWZmZXIpKTsKKyAgICAgICAgcmV0
dXJuIFN0cmluZyhmc1BhdGhCdWZmZXIpOwogCiAgICAgaWYgKCFpc0xpbmsgJiYgdXNlZFVSTCkg
ewotICAgICAgICBQYXRoUmVuYW1lRXh0ZW5zaW9uKGZzUGF0aEJ1ZmZlciwgZXh0ZW5zaW9uKTsK
LSAgICAgICAgcmV0dXJuIFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGZzUGF0aEJ1ZmZlcikp
OworICAgICAgICBQYXRoUmVuYW1lRXh0ZW5zaW9uKHVjaGFyQXNXQ2hhck11dGFibGUoZnNQYXRo
QnVmZmVyKSwgdWNoYXJBc1dDaGFyKGV4dGVuc2lvbikpOworICAgICAgICByZXR1cm4gU3RyaW5n
KGZzUGF0aEJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoc3RhdGljX2Nh
c3Q8Y29uc3QgVUNoYXIqPihmc1BhdGhCdWZmZXIpLCBleHRlbnNpb24pOwpAQCAtNjU1LDcgKzY1
NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiBr
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyKQogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmlu
ZygpOwogICAgIEFTU0VSVCh1cmwuaXNBbGxBU0NJSSgpKTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBV
UkwgZW5jb2RlZC4KIAotICAgIFN0cmluZyBmc1BhdGggPSBmaWxlc3lzdGVtUGF0aEZyb21VcmxP
clRpdGxlKHVybCwgdGl0bGVTdHIsIEwiLlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGgg
PSBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgdGl0bGVTdHIsIHUiLlVSTCIsIHRy
dWUpOwogICAgIFN0cmluZyBjb250ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJM
PSIgKyB1cmwgKyAiXHJcbiIpOwogICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcu
bGF0aW4xKCk7CiAKQEAgLTY4NCw3ICs2ODQsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJM
VG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAg
ICBmZ2QtPmZnZFswXS5uRmlsZVNpemVMb3cgPSBjb250ZW50Lmxlbmd0aCgpOwogCiAgICAgdW5z
aWduZWQgbWF4U2l6ZSA9IHN0ZDo6bWluPHVuc2lnbmVkPihmc1BhdGgubGVuZ3RoKCksIFdURl9B
UlJBWV9MRU5HVEgoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7Ci0gICAgU3RyaW5nVmlldyhmc1Bh
dGgpLnN1YnN0cmluZygwLCBtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmZ2Qt
PmZnZFswXS5jRmlsZU5hbWUpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwg
bWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQod2NoYXJBc1VDaGFyTXV0YWJsZShm
Z2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sodXJsRmlsZURlc2NyaXB0
b3IpOwogCiAgICAgY2hhciogZmlsZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2Jh
bExvY2sodXJsRmlsZUNvbnRlbnQpKTsKQEAgLTkyMyw3ICs5MjMsNyBAQCBzdGF0aWMgSEdMT0JB
TCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmCiAgICAgfQogCiAgICAgaW50IG1heFNpemUgPSBzdGQ6Om1pbjxpbnQ+KGZzUGF0
aC5sZW5ndGgoKSwgV1RGX0FSUkFZX0xFTkdUSChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKLSAg
ICBTdHJpbmdWaWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSk7CisgICAgU3RyaW5nVmlldyhmc1Bh
dGgpLnN1YnN0cmluZygwLCBtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh3Y2hh
ckFzVUNoYXJNdXRhYmxlKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwogICAgIEdsb2JhbFVubG9j
ayhtZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCBlYmIzNzM4NGMzMzdiZjEyZjVk
NmRlOGE2YjQ2ZjZmMDQ4MWM3OGY5Li4yNDY2NWZiMjI0YmQxZmYwYmRjZGM3ZmJlM2MzZWM5Njlm
OTBhNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVj
dGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewogCkBAIC00Myw3ICs0NCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVy
QW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAg
ICAgIHVuc2lnbmVkIHVuaXF1ZUlEID0gcmFuZG9tTnVtYmVyKCkgKiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCk7CiAgICAgICAgIHBpcGVOYW1lID0gbWFrZVN0cmluZygiXFxc
XC5cXHBpcGVcXGNvbS5hcHBsZS5XZWJLaXQuIiwgaGV4KHVuaXF1ZUlEKSk7CiAKLSAgICAgICAg
c2VydmVySWRlbnRpZmllciA9IDo6Q3JlYXRlTmFtZWRQaXBlKHBpcGVOYW1lLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLAorICAgICAgICBzZXJ2ZXJJZGVudGlmaWVyID0g
OjpDcmVhdGVOYW1lZFBpcGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBpcGVOYW1lKS5k
YXRhKCksCiAgICAgICAgICAgICBQSVBFX0FDQ0VTU19EVVBMRVggfCBGSUxFX0ZMQUdfRklSU1Rf
UElQRV9JTlNUQU5DRSB8IEZJTEVfRkxBR19PVkVSTEFQUEVELAogICAgICAgICAgICAgUElQRV9U
WVBFX01FU1NBR0UgfCBQSVBFX1JFQURNT0RFX01FU1NBR0UsIDEsIGlubGluZU1lc3NhZ2VNYXhT
aXplLCBpbmxpbmVNZXNzYWdlTWF4U2l6ZSwKICAgICAgICAgICAgIDAsIDApOwpAQCAtNTIsNyAr
NTMsNyBAQCBib29sIENvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJz
KEhBTkRMRSYgc2VydmVySWRlbnRpZmllciwgSEFORAogICAgIGlmICghc2VydmVySWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY2xpZW50SWRlbnRpZmllciA9IDo6Q3Jl
YXRlRmlsZVcocGlwZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCks
IEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVf
RkxBR19PVkVSTEFQUEVELCAwKTsKKyAgICBjbGllbnRJZGVudGlmaWVyID0gOjpDcmVhdGVGaWxl
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGlwZU5hbWUpLmRhdGEoKSwgR0VORVJJQ19S
RUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX09WRVJM
QVBQRUQsIDApOwogICAgIGlmICghY2xpZW50SWRlbnRpZmllcikgewogICAgICAgICA6OkNsb3Nl
SGFuZGxlKHNlcnZlcklkZW50aWZpZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2luLmNwcAppbmRleCA3YjY1ZDc3ODY5MTY2MmZkYjVm
ZjYwZDczNjg5ZDJjZWNjOWIzMmZjLi4wNWY4NWIyNWJhOTEyOGI1NzA1YTMyOTdmOWJhMzBmYmQy
MDBkMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Nb2R1bGVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL01vZHVsZVdpbi5jcHAKQEAgLTI5
LDEzICsyOSwxNCBAQAogCiAjaW5jbHVkZSA8c2hsd2FwaS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAgICBBU1NF
UlQoITo6UGF0aElzUmVsYXRpdmVXKG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSkpOwotICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4VyhtX3BhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVE
X1NFQVJDSF9QQVRIKTsKKyAgICBBU1NFUlQoITo6UGF0aElzUmVsYXRpdmVXKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSkpOworICAgIG1fbW9kdWxlID0gOjpMb2Fk
TGlicmFyeUV4VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAs
IExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKICAgICByZXR1cm4gbV9tb2R1bGU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9j
ZXNzTGF1bmNoZXJXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvd2lu
L1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAKaW5kZXggNTc3ZTQ2OWNhZGUxMTFiZDE0ODRjYzgxNDBh
NGQzNDJkNTU4N2I2My4uMWQ1M2YzMmUzMTUzYTAyNTFhMjU4ZGFlMmViZDg1ZGM2MDFkNzg5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NM
YXVuY2hlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvd2lu
L1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJQcm9j
ZXNzTGF1bmNoZXIuaCIKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlIDxXVEYv
UnVuTG9vcC5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAKICAgICBTdHJpbmdCdWlsZGVyIGNvbW1hbmRM
aW5lQnVpbGRlcjsKICAgICBjb21tYW5kTGluZUJ1aWxkZXIuYXBwZW5kKCJcIiIpOwotICAgIGNv
bW1hbmRMaW5lQnVpbGRlci5hcHBlbmQoU3RyaW5nKHBhdGhTdHIpKTsKKyAgICBjb21tYW5kTGlu
ZUJ1aWxkZXIuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhwYXRoU3RyKSk7CiAg
ICAgY29tbWFuZExpbmVCdWlsZGVyLmFwcGVuZCgiXCIiKTsKICAgICBjb21tYW5kTGluZUJ1aWxk
ZXIuYXBwZW5kKCIgLXR5cGUgIik7CiAgICAgY29tbWFuZExpbmVCdWlsZGVyLmFwcGVuZChTdHJp
bmc6Om51bWJlcihzdGF0aWNfY2FzdDxpbnQ+KG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVu
dVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVu
dVByb3h5V2luLmNwcAppbmRleCBhZjQzNWMxNjVlNjRhZTU1ZTk4N2ZlMzljODIyZDY0YTliZDBk
MjBkLi4xYjA4YzMyNGJiYmRiNGU5OTM3MDhhNmRkNThiMDYyYTU3ZWY3Mzg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQcm94eVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4u
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNzEsNyArNzIsNyBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVNZW51SXRlbShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhICZj
b250ZXh0LCBITUVOVSBtZW51LCBjbwogICAgIHN3aXRjaCAoZGF0YS50eXBlKCkpIHsKICAgICBj
YXNlIEFjdGlvblR5cGU6CiAgICAgY2FzZSBDaGVja2FibGVBY3Rpb25UeXBlOgotICAgICAgICA6
OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGRhdGEuYWN0aW9uKCksIGRhdGEu
dGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAg
IDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1NUUklORywgZGF0YS5hY3Rpb24oKSwgc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRhdGEudGl0bGUoKSkuZGF0YSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTZXBhcmF0b3JUeXBlOgogICAgICAgICA6OkFwcGVuZE1lbnUobWVu
dSwgZmxhZ3MgfCBNRl9TRVBBUkFUT1IsIGRhdGEuYWN0aW9uKCksIG51bGxwdHIpOwpAQCAtNzks
NyArODAsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVNZW51SXRlbShjb25zdCBDb250ZXh0TWVudUNv
bnRleHREYXRhICZjb250ZXh0LCBITUVOVSBtZW51LCBjbwogICAgIGNhc2UgU3VibWVudVR5cGU6
CiAgICAgICAgIEhNRU5VIHN1Ym1lbnUgPSBjcmVhdGVNZW51KGNvbnRleHQpOwogICAgICAgICBw
b3B1bGF0ZShjb250ZXh0LCBzdWJtZW51LCBkYXRhLnN1Ym1lbnUoKSk7Ci0gICAgICAgIDo6QXBw
ZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1BPUFVQLCAoVUlOVF9QVFIpc3VibWVudSwgZGF0YS50
aXRsZSgpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICAgICAg
OjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfUE9QVVAsIChVSU5UX1BUUilzdWJtZW51LCBz
dHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGF0YS50aXRsZSgpKS5kYXRhKCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAK
aW5kZXggMTRiMWQ5ZmE4MWE4ZjBkMzQyNmI0ZmI1MmUyZDYyNjViYmNiOTlhYS4uNDkwZjFiYWVi
YzUyM2ViOTUyY2Y4NTQ1YjFmMDNjOWZlZmJjMTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJT
dHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKQEAgLTYwMCw3ICs2MDEsNyBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uTWVudUNvbW1hbmQo
SFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUAogCiAgICAg
OjpHZXRNZW51SXRlbUluZm8oaE1lbnUsIGluZGV4LCBUUlVFLCAmbWVudUl0ZW1JbmZvKTsKIAot
ICAgIFN0cmluZyB0aXRsZShidWZmZXIuZGF0YSgpLCBtZW51SXRlbUluZm8uY2NoKTsKKyAgICBT
dHJpbmcgdGl0bGUgPSB3Y2hhclRvU3RyaW5nKGJ1ZmZlci5kYXRhKCksIG1lbnVJdGVtSW5mby5j
Y2gpOwogICAgIENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRN
ZW51QWN0aW9uPihtZW51SXRlbUluZm8ud0lEKTsKICAgICBib29sIGVuYWJsZWQgPSAhKG1lbnVJ
dGVtSW5mby5mU3RhdGUgJiBNRlNfRElTQUJMRUQpOwogICAgIGJvb2wgY2hlY2tlZCA9IG1lbnVJ
dGVtSW5mby5mU3RhdGUgJiBNRlNfQ0hFQ0tFRDsKQEAgLTg3NCw4ICs4NzUsOCBAQCB2b2lkIFdl
YlZpZXc6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0b29sVGlwKQogICAgICAgICBpbmZvLmNi
U2l6ZSA9IHNpemVvZihpbmZvKTsKICAgICAgICAgaW5mby51RmxhZ3MgPSBUVEZfSURJU0hXTkQ7
CiAgICAgICAgIGluZm8udUlkID0gcmVpbnRlcnByZXRfY2FzdDxVSU5UX1BUUj4obmF0aXZlV2lu
ZG93KCkpOwotICAgICAgICBWZWN0b3I8VUNoYXI+IHRvb2xUaXBDaGFyYWN0ZXJzID0gdG9vbFRp
cC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcg
ZW5vdWdoIHRvIG1ha2UgdGhlIFNlbmRNZXNzYWdlIGNhbGwKLSAgICAgICAgaW5mby5scHN6VGV4
dCA9IGNvbnN0X2Nhc3Q8VUNoYXIqPih0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpOworICAgICAg
ICBWZWN0b3I8d2NoYXJfdD4gdG9vbFRpcENoYXJhY3RlcnMgPSBzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIodG9vbFRpcCk7IC8vIFJldGFpbiBidWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFrZSB0
aGUgU2VuZE1lc3NhZ2UgY2FsbAorICAgICAgICBpbmZvLmxwc3pUZXh0ID0gY29uc3RfY2FzdDx3
Y2hhcl90Kj4odG9vbFRpcENoYXJhY3RlcnMuZGF0YSgpKTsKICAgICAgICAgOjpTZW5kTWVzc2Fn
ZShtX3Rvb2xUaXBXaW5kb3csIFRUTV9VUERBVEVUSVBURVhULCAwLCByZWludGVycHJldF9jYXN0
PExQQVJBTT4oJmluZm8pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vz
c2libGVCYXNlLmNwcAppbmRleCA1NDI0NzdhOWU5ZTBhOTQyZDY1YmUwZWUyYzkwYjRkMjk2OWE2
YzM4Li4wMzA0MWUzMGQxYzhmYWY3NGIwM2ViYzBjM2ExYTBlMDFhNzFhYWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAj
aW5jbHVkZSA8b2xlYWNjLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJp
bmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE0Myw3ICsxNDQs
NyBAQCBIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0cmlidXRlKF9Jbl8gQlNUUiBrZXks
IF9PdXRfIFZBUklBTlQqIHZhbHVlKQogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKLSAgICBBdG9taWNTdHJpbmcga2V5QXRvbWljKGtleSwgOjpTeXNTdHJpbmdM
ZW4oa2V5KSk7CisgICAgQXRvbWljU3RyaW5nIGtleUF0b21pYyh3Y2hhckFzVUNoYXIoa2V5KSwg
OjpTeXNTdHJpbmdMZW4oa2V5KSk7CiAKICAgICBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUo
a2V5QXRvbWljLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0FjY2Vzc2libGVUZXh0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3Np
YmxlVGV4dEltcGwuY3BwCmluZGV4IDlmODQ1NjgyYzJmZjhjNTFiOTFiYjg0YWRmMGRkYWU4OTBl
MGZmYzkuLjgxMjg4NmRmOTgwZjRiYzg5ZmZhZjM0ZWQxMmMwNDg5ZTk4M2I4MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVUZXh0SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcApAQCAtMjcsNyAr
MjcsNiBAQAogCiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgot
CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdGlu
Zy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CkBAIC0zOSw2ICszOCw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJUZXh0Q29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlz
aWJsZVNlbGVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC01OTQsNyArNTk0LDcgQEAgSFJFU1VMVCBBY2Nlc3NpYmxlVGV4dDo6
aW5zZXJ0VGV4dChsb25nIG9mZnNldCwgQlNUUiogdGV4dCkKICAgICAKICAgICBhZGRTZWxlY3Rp
b24ob2Zmc2V0LCBvZmZzZXQpOwogCi0gICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoKnRl
eHQsIDApOworICAgIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHdjaGFyQXNVQ2hhcigqdGV4
dCksIDApOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC02NTYsNyArNjU2LDcgQEAgSFJFU1VM
VCBBY2Nlc3NpYmxlVGV4dDo6cmVwbGFjZVRleHQobG9uZyBzdGFydE9mZnNldCwgbG9uZyBlbmRP
ZmZzZXQsIEJTVFIqIHRleHQKIAogICAgIGFkZFNlbGVjdGlvbihzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KTsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoKnRl
eHQsIEVkaXRvcjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9yOjpTbWFydFJlcGxhY2U6
Ok5vKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHdjaGFy
QXNVQ2hhcigqdGV4dCksIEVkaXRvcjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9yOjpT
bWFydFJlcGxhY2U6Ok5vKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NPTVByb3BlcnR5QmFnLmgKaW5kZXggMjE2NWEyMzU2ZDllYWEyY2FhMDk0NDFkMThm
YTgzZGVmOTRiOWZkNS4uMjZhMmVjMzU2OGM1OGQyYTk4OTAzODU0ZTcwYmU3MmYyYjVjNzhjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCkBAIC0yMywxNiArMjMs
MTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ09NUHJvcGVydHlCYWdfaAot
I2RlZmluZSBDT01Qcm9wZXJ0eUJhZ19oCisjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNPTVZh
cmlhbnRTZXR0ZXIuaCIKICNpbmNsdWRlIDxvY2lkbC5oPgogI2luY2x1ZGUgPHVua253bi5oPgot
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LQotI2luY2x1ZGUgIkNPTVZhcmlhbnRTZXR0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBl
bmFtZSBLZXlUeXBlID0gdHlwZW5hbWUgV1RGOjpTdHJpbmcsIHR5cGVuYW1lIEhhc2hUeXBlID0g
dHlwZW5hbWUgV1RGOjpTdHJpbmdIYXNoPgogY2xhc3MgQ09NUHJvcGVydHlCYWcgZmluYWwgOiBw
dWJsaWMgSVByb3BlcnR5QmFnLCBwdWJsaWMgSVByb3BlcnR5QmFnMiB7CkBAIC0xMzcsNyArMTM1
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxWYWx1ZVR5cGUs
IEtleVR5cGUsIEhhc2hUeXBlPjo6UmVhZChMUEMKICAgICBpZiAoIXBzelByb3BOYW1lKQogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBpdCA9IG1faGFzaE1hcC5maW5kKFN0
cmluZyhwc3pQcm9wTmFtZSkpOworICAgIGF1dG8gaXQgPSBtX2hhc2hNYXAuZmluZChudWxsVGVy
bWluYXRlZFdDaGFyVG9TdHJpbmcocHN6UHJvcE5hbWUpKTsKICAgICBhdXRvIGVuZCA9IG1faGFz
aE1hcC5lbmQoKTsKICAgICBpZiAoaXQgPT0gZW5kKQogICAgICAgICByZXR1cm4gRV9JTlZBTElE
QVJHOwpAQCAtMjIwLDcgKzIxOCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ09NUHJv
cGVydHlCYWc8VmFsdWVUeXBlLCBLZXlUeXBlLCBIYXNoVHlwZT46OkdldFByb3BlCiAgICAgICAg
IHBQcm9wQmFnW2pdLnBzdHJOYW1lID0gKExQT0xFU1RSKUNvVGFza01lbUFsbG9jKHNpemVvZih3
Y2hhcl90KSooY3VycmVudC0+a2V5Lmxlbmd0aCgpKzEpKTsKICAgICAgICAgaWYgKCFwUHJvcEJh
Z1tqXS5wc3RyTmFtZSkKICAgICAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwotICAgICAg
ICB3Y3NjcHlfcyhwUHJvcEJhZ1tqXS5wc3RyTmFtZSwgY3VycmVudC0+a2V5Lmxlbmd0aCgpKzEs
IHN0YXRpY19jYXN0PFN0cmluZz4oY3VycmVudC0+a2V5KS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAgIHdjc2NweV9zKHBQcm9wQmFnW2pdLnBzdHJOYW1l
LCBjdXJyZW50LT5rZXkubGVuZ3RoKCkrMSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGN1
cnJlbnQtPmtleSkuZGF0YSgpKTsKICAgICAgICAgKysqcGNQcm9wZXJ0aWVzOwogICAgIH0KICAg
ICByZXR1cm4gU19PSzsKQEAgLTIzMSw1ICsyMjksMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIENPTVByb3BlcnR5QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpMb2FkT2Jq
ZQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9Ci0KLSNlbmRpZiAvLyBDT01Qcm9wZXJ0eUJh
Z19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01DU1NDbGFzc2VzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNTU0NsYXNzZXMuY3BwCmluZGV4IGZlYmI5
MmVkODEzZDE4NWY1OTNiMTc5NGFjOTA0MmJlNTYxYjg1ZWYuLjBhMTcwZDM3OTQ0MGI3NTVhYmJk
MWUxNjUyYmU2ZmFiYTU2NmFkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0RPTUNTU0NsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNTU0Ns
YXNzZXMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93
aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogLy8gRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAtIERP
TUNTU1N0eWxlRGVjbGFyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC05
MSw3ICs5Miw3IEBAIEhSRVNVTFQgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3NzVGV4dChfX2Rl
cmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogCiBIUkVTVUxUIERPTUNTU1N0eWxlRGVjbGFyYXRp
b246OnNldENzc1RleHQoX0luXyBCU1RSIGNzc1RleHQpCiB7Ci0gICAgV1RGOjpTdHJpbmcgY3Nz
VGV4dFN0cmluZyhjc3NUZXh0KTsKKyAgICBXVEY6OlN0cmluZyBjc3NUZXh0U3RyaW5nID0gbnVs
bFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNzc1RleHQpOwogICAgIG1fc3R5bGUtPnNldENzc1Rl
eHQoY3NzVGV4dFN0cmluZyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0xMDIsNyArMTAzLDcg
QEAgSFJFU1VMVCBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKF9Jbl8g
QlNUUiBwcm9wZXJ0eU5hbWUsIF9fZGVyZWYKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAg
ICAqcmVzdWx0ID0gbnVsbHB0cjsKIAotICAgIFdURjo6U3RyaW5nIHByb3BlcnR5TmFtZVN0cmlu
Zyhwcm9wZXJ0eU5hbWUpOworICAgIFdURjo6U3RyaW5nIHByb3BlcnR5TmFtZVN0cmluZyA9IG51
bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgIFdURjo6U3RyaW5n
IHZhbHVlID0gbV9zdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eU5hbWVTdHJpbmcpOwog
ICAgICpyZXN1bHQgPSBXZWJDb3JlOjpCU3RyaW5nKHZhbHVlKS5yZWxlYXNlKCk7CiAgICAgaWYg
KHZhbHVlLmxlbmd0aCgpICYmICEqcmVzdWx0KQpAQCAtMTM5LDkgKzE0MCw5IEBAIEhSRVNVTFQg
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlQcmlvcml0eShfSW5fIEJTVFIgLypw
cm9wZXJ0eU5hbWUqLywKIAogSFJFU1VMVCBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eShfSW5fIEJTVFIgcHJvcGVydHlOYW1lLCBfSW5fIEJTVFIgdmFsdWUsIF9Jbl8gQlNUUiBw
cmlvcml0eSkKIHsKLSAgICBXVEY6OlN0cmluZyBwcm9wZXJ0eU5hbWVTdHJpbmcocHJvcGVydHlO
YW1lKTsKLSAgICBXVEY6OlN0cmluZyB2YWx1ZVN0cmluZyh2YWx1ZSk7Ci0gICAgV1RGOjpTdHJp
bmcgcHJpb3JpdHlTdHJpbmcocHJpb3JpdHkpOworICAgIFdURjo6U3RyaW5nIHByb3BlcnR5TmFt
ZVN0cmluZyA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAg
IFdURjo6U3RyaW5nIHZhbHVlU3RyaW5nID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHZh
bHVlKTsKKyAgICBXVEY6OlN0cmluZyBwcmlvcml0eVN0cmluZyA9IG51bGxUZXJtaW5hdGVkV0No
YXJUb1N0cmluZyhwcmlvcml0eSk7CiAgICAgbV9zdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlO
YW1lU3RyaW5nLCB2YWx1ZVN0cmluZywgcHJpb3JpdHlTdHJpbmcpOwogICAgIHJldHVybiBTX09L
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IGM1
ODgwZWE0ZGQ4NTJiNWMwMGRkYWIzYzgyNWQ2YTlmNmNmMDgzY2YuLjNiM2E1MTAxNmJhMjdhNjgy
OTYwNDk5NTIxZWYzNjMzMzU5NzdkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01D
b3JlQ2xhc3Nlcy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJET01FdmVudHNDbGFz
c2VzLmgiCiAjaW5jbHVkZSAiRE9NSFRNTENsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJLaXRHcmFw
aGljcy5oIgotCiAjaW5jbHVkZSA8V2ViQ29yZS9BdHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9C
U3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KQEAgLTU2LDggKzU1LDkgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbEludG9WaWV3T3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3R5bGVkRWxlbWVu
dC5oPgotCiAjaW5jbHVkZSA8aW5pdGd1aWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0No
YXJTdHJpbmdFeHRyYXMuaD4KKwogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4
RTIzRX0KIERFRklORV9HVUlEKElJRF9ET01FbGVtZW50LCAweDNiMGMwZWZmLCAweDQ3OGIsIDB4
NGIwYiwgMHg4MiwgMHg5MCwgMHhkMiwgMHgzMiwgMHgxZSwgMHg4LCAweGUyLCAweDNlKTsKIApA
QCAtNDE0LDcgKzQxNCw3IEBAIEhSRVNVTFQgRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQoX0luXyBC
U1RSIC8qdGV4dCovKQogSFJFU1VMVCBET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNU
UiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIEJPT0wgdXNlQ2Fw
dHVyZSkKIHsKICAgICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KGxpc3RlbmVyKTsKLSAgICBtX25vZGUtPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgV1RGTW92ZSh3
ZWJMaXN0ZW5lciksIHVzZUNhcHR1cmUpOworICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih3
Y2hhckFzVUNoYXIodHlwZSksIFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAog
ICAgIHJldHVybiBTX09LOwogfQpAQCAtNDI2LDcgKzQyNiw3IEBAIEhSRVNVTFQgRE9NTm9kZTo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlz
dGVuZXIqCiAgICAgaWYgKCFtX25vZGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0
byB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAg
bV9ub2RlLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJl
KTsKKyAgICBtX25vZGUtPnJlbW92ZUV2ZW50TGlzdGVuZXIod2NoYXJBc1VDaGFyKHR5cGUpLCB3
ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTY0MSw3
ICs2NDEsNyBAQCBIUkVTVUxUIERPTURvY3VtZW50OjpjcmVhdGVFbGVtZW50KF9Jbl8gQlNUUiB0
YWdOYW1lLCBfQ09NX091dHB0cl9vcHRfIElET01FbGVtZQogICAgIGlmICghbV9kb2N1bWVudCkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFN0cmluZyB0YWdOYW1lU3RyaW5nKHRhZ05h
bWUpOworICAgIFN0cmluZyB0YWdOYW1lU3RyaW5nID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3Ry
aW5nKHRhZ05hbWUpOwogICAgIGF1dG8gY3JlYXRlRWxlbWVudFJlc3VsdCA9IG1fZG9jdW1lbnQt
PmNyZWF0ZUVsZW1lbnRGb3JCaW5kaW5ncyh0YWdOYW1lU3RyaW5nKTsKICAgICBpZiAoY3JlYXRl
RWxlbWVudFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAg
LTcyMCw3ICs3MjAsNyBAQCBIUkVTVUxUIERPTURvY3VtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFt
ZShfSW5fIEJTVFIgdGFnTmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJRAogICAgIGlmICghbV9kb2N1
bWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFN0cmluZyB0YWdOYW1lU3RyaW5n
KHRhZ05hbWUpOworICAgIFN0cmluZyB0YWdOYW1lU3RyaW5nID0gbnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKHRhZ05hbWUpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlTGlzdD4gZWxlbWVu
dHM7CiAgICAgaWYgKCF0YWdOYW1lU3RyaW5nLmlzTnVsbCgpKQogICAgICAgICBlbGVtZW50cyA9
IG1fZG9jdW1lbnQtPmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWVTdHJpbmcpOwpAQCAtNzYz
LDggKzc2Myw4IEBAIEhSRVNVTFQgRE9NRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lTlMo
X0luXyBCU1RSIG5hbWVzcGFjZVVSSSwgX0luXyBCU1RSIGxvCiAgICAgaWYgKCFtX2RvY3VtZW50
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgU3RyaW5nIG5hbWVzcGFjZVVSSVN0cmlu
ZyhuYW1lc3BhY2VVUkkpOwotICAgIFN0cmluZyBsb2NhbE5hbWVTdHJpbmcobG9jYWxOYW1lKTsK
KyAgICBTdHJpbmcgbmFtZXNwYWNlVVJJU3RyaW5nID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3Ry
aW5nKG5hbWVzcGFjZVVSSSk7CisgICAgU3RyaW5nIGxvY2FsTmFtZVN0cmluZyA9IG51bGxUZXJt
aW5hdGVkV0NoYXJUb1N0cmluZyhsb2NhbE5hbWUpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2Rl
TGlzdD4gZWxlbWVudHM7CiAgICAgaWYgKCFsb2NhbE5hbWVTdHJpbmcuaXNOdWxsKCkpCiAgICAg
ICAgIGVsZW1lbnRzID0gbV9kb2N1bWVudC0+Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuYW1lc3Bh
Y2VVUklTdHJpbmcsIGxvY2FsTmFtZVN0cmluZyk7CkBAIC03ODAsNyArNzgwLDcgQEAgSFJFU1VM
VCBET01Eb2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoX0luXyBCU1RSIGVsZW1lbnRJZCwgX0NPTV9P
dXRwdHJfb3B0XyBJRE9NRWwKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKLSAgICBTdHJpbmcgaWRTdHJpbmcoZWxlbWVudElkKTsKKyAgICBTdHJpbmcgaWRT
dHJpbmcgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoZWxlbWVudElkKTsKICAgICAqcmVz
dWx0ID0gRE9NRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UobV9kb2N1bWVudC0+Z2V0RWxlbWVudEJ5
SWQoaWRTdHJpbmcpKTsKICAgICByZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CkBA
IC04MDQsNyArODA0LDcgQEAgSFJFU1VMVCBET01Eb2N1bWVudDo6Z2V0Q29tcHV0ZWRTdHlsZShf
SW5fb3B0XyBJRE9NRWxlbWVudCogZWx0LCBfSW5fIEJTVFIgcHNldWQKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAogICAgIGF1dG8qIGR2ID0gbV9kb2N1bWVudC0+ZG9tV2luZG93KCk7Ci0gICAg
U3RyaW5nIHBzZXVkb0VsdFN0cmluZyhwc2V1ZG9FbHQpOworICAgIFN0cmluZyBwc2V1ZG9FbHRT
dHJpbmcgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcocHNldWRvRWx0KTsKICAgICAKICAg
ICBpZiAoIWR2KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtODIxLDcgKzgyMSw3IEBAIEhS
RVNVTFQgRE9NRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KF9Jbl8gQlNUUiBldmVudFR5cGUsIF9DT01f
T3V0cHRyX29wdF8gSURPTUV2ZW50CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJl
c3VsdCA9IG51bGxwdHI7CiAKLSAgICBTdHJpbmcgZXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSwg
U3lzU3RyaW5nTGVuKGV2ZW50VHlwZSkpOworICAgIFN0cmluZyBldmVudFR5cGVTdHJpbmcgPSB3
Y2hhclRvU3RyaW5nKGV2ZW50VHlwZSwgU3lzU3RyaW5nTGVuKGV2ZW50VHlwZSkpOwogICAgIGF1
dG8gY3JlYXRlRXZlbnRSZXN1bHQgPSBtX2RvY3VtZW50LT5jcmVhdGVFdmVudChldmVudFR5cGVT
dHJpbmcpOwogICAgIGlmIChjcmVhdGVFdmVudFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKQEAgLTkyNCw3ICs5MjQsNyBAQCBIUkVTVUxUIERPTVdpbmRvdzo6
YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVu
ZXIqCiAgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBhdXRv
IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBt
X3dpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBXVEZNb3ZlKHdlYkxpc3RlbmVyKSwgdXNl
Q2FwdHVyZSk7CisgICAgbV93aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIod2NoYXJBc1VDaGFyKHR5
cGUpLCBXVEZNb3ZlKHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKQEAgLTkzNSw3ICs5MzUsNyBAQCBIUkVTVUxUIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVuZQogICAgIGlm
ICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0byB3ZWJMaXN0ZW5l
ciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV93aW5kb3ctPnJl
bW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgIG1f
d2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKHdjaGFyQXNVQ2hhcih0eXBlKSwgd2ViTGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMDY2LDcgKzEwNjYs
NyBAQCBIUkVTVUxUIERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZShfSW5fIEJTVFIgbmFtZSwgX19k
ZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKICAgICAqcmVzdWx0ID0gbnVsbHB0cjsKICAgICBp
ZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICBXVEY6OlN0cmluZyBu
YW1lU3RyaW5nKG5hbWUsIFN5c1N0cmluZ0xlbihuYW1lKSk7CisgICAgV1RGOjpTdHJpbmcgbmFt
ZVN0cmluZyA9IHdjaGFyVG9TdHJpbmcobmFtZSwgU3lzU3RyaW5nTGVuKG5hbWUpKTsKICAgICBX
VEY6OlN0cmluZyYgYXR0clZhbHVlU3RyaW5nID0gKFdURjo6U3RyaW5nJikgbV9lbGVtZW50LT5n
ZXRBdHRyaWJ1dGUobmFtZVN0cmluZyk7CiAgICAgKnJlc3VsdCA9IEJTdHJpbmcoYXR0clZhbHVl
U3RyaW5nKS5yZWxlYXNlKCk7CiAgICAgaWYgKGF0dHJWYWx1ZVN0cmluZy5sZW5ndGgoKSAmJiAh
KnJlc3VsdCkKQEAgLTEwNzksOCArMTA3OSw4IEBAIEhSRVNVTFQgRE9NRWxlbWVudDo6c2V0QXR0
cmlidXRlKF9Jbl8gQlNUUiBuYW1lLCBfSW5fIEJTVFIgdmFsdWUpCiAgICAgaWYgKCFtX2VsZW1l
bnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBXVEY6OlN0cmluZyBuYW1lU3RyaW5n
KG5hbWUsIFN5c1N0cmluZ0xlbihuYW1lKSk7Ci0gICAgV1RGOjpTdHJpbmcgdmFsdWVTdHJpbmco
dmFsdWUsIFN5c1N0cmluZ0xlbih2YWx1ZSkpOworICAgIFdURjo6U3RyaW5nIG5hbWVTdHJpbmcg
PSB3Y2hhclRvU3RyaW5nKG5hbWUsIFN5c1N0cmluZ0xlbihuYW1lKSk7CisgICAgV1RGOjpTdHJp
bmcgdmFsdWVTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKHZhbHVlLCBTeXNTdHJpbmdMZW4odmFsdWUp
KTsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKG5hbWVTdHJpbmcs
IHZhbHVlU3RyaW5nKTsKICAgICByZXR1cm4gcmVzdWx0Lmhhc0V4Y2VwdGlvbigpID8gRV9GQUlM
IDogU19PSzsKIH0KQEAgLTEyOTIsNyArMTI5Miw3IEBAIEhSRVNVTFQgRE9NRWxlbWVudDo6Zm9u
dChfT3V0XyBXZWJGb250RGVzY3JpcHRpb24qIHdlYkZvbnREZXNjcmlwdGlvbikKICAgICBVQ2hh
ciogZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlciA9IG5ldyBVQ2hhcltmYW1pbHkubGVuZ3RoKCldOwog
ICAgIFN0cmluZ1ZpZXcoZmFtaWx5LnN0cmluZygpKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVy
dChmYW1pbHlDaGFyYWN0ZXJzQnVmZmVyKTsKIAotICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+ZmFt
aWx5ID0gZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlcjsKKyAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZh
bWlseSA9IHVjaGFyQXNXQ2hhcihmYW1pbHlDaGFyYWN0ZXJzQnVmZmVyKTsKICAgICB3ZWJGb250
RGVzY3JpcHRpb24tPmZhbWlseUxlbmd0aCA9IGZhbWlseS5sZW5ndGgoKTsKICAgICB3ZWJGb250
RGVzY3JpcHRpb24tPnNpemUgPSBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCk7CiAgICAg
d2ViRm9udERlc2NyaXB0aW9uLT5ib2xkID0gaXNGb250V2VpZ2h0Qm9sZChmb250RGVzY3JpcHRp
b24ud2VpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRN
TENsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3Bw
CmluZGV4IDNjZjM4YjQ1NjYzZWU1ZTg5ZjQ5OWFmNjc3MTJiYzM5YzdjNWE2MzkuLmRkMzRmOTNm
Nzk5OWI4ZTIwZDU2YjhjMmFhZDcyYzJjNTI0MmMwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTI1LDggKzI1LDggQEAKIAogI2luY2x1ZGUgIldl
YktpdERMTC5oIgogI2luY2x1ZGUgIkRPTUhUTUxDbGFzc2VzLmgiCi0jaW5jbHVkZSAiV2ViRnJh
bWUuaCIKIAorI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50Lmg+CkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
clRleHRDb250cm9sLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFz
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKQEAgLTM3Miw3ICszNzMsNyBAQCBIUkVTVUxUIERPTUhUTUxEb2N1bWVudDo6d3JpdGUoX0lu
XyBCU1RSIHRleHQpCiAgICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgbV9kb2N1bWVudC0+d3JpdGUobnVsbHB0ciwgeyBTdHJpbmcgeyB0ZXh0IH0gfSk7
CisgICAgbV9kb2N1bWVudC0+d3JpdGUobnVsbHB0ciwgeyBudWxsVGVybWluYXRlZFdDaGFyVG9T
dHJpbmcodGV4dCkgfSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC0zODEsNyArMzgy
LDcgQEAgSFJFU1VMVCBET01IVE1MRG9jdW1lbnQ6OndyaXRlbG4oX0luXyBCU1RSIHRleHQpCiAg
ICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9kb2N1
bWVudC0+d3JpdGVsbihudWxscHRyLCB7IFN0cmluZyB7IHRleHQgfSB9KTsKKyAgICBtX2RvY3Vt
ZW50LT53cml0ZWxuKG51bGxwdHIsIHsgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRleHQp
IH0pOwogICAgIHJldHVybiBTX09LOwogfQogICAgIApAQCAtNTExLDcgKzUxMiw3IEBAIEhSRVNV
TFQgRE9NSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChfSW5fIEJTVFIgaHRtbCkKIHsKICAgICBB
U1NFUlQoaXM8SFRNTEVsZW1lbnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxFbGVtZW50KiBodG1s
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihtX2VsZW1lbnQpOwotICAgIFN0cmluZyBo
dG1sU3RyaW5nKGh0bWwsIFN5c1N0cmluZ0xlbihodG1sKSk7CisgICAgU3RyaW5nIGh0bWxTdHJp
bmcgPSB3Y2hhclRvU3RyaW5nKGh0bWwsIFN5c1N0cmluZ0xlbihodG1sKSk7CiAgICAgaHRtbEVs
ZW1lbnQtPnNldElubmVySFRNTChodG1sU3RyaW5nKTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAg
LTUzMCw3ICs1MzEsNyBAQCBIUkVTVUxUIERPTUhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQoX0lu
XyBCU1RSIHRleHQpCiB7CiAgICAgQVNTRVJUKGlzPEhUTUxFbGVtZW50PihtX2VsZW1lbnQpKTsK
ICAgICBIVE1MRWxlbWVudCogaHRtbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obV9l
bGVtZW50KTsKLSAgICBXVEY6OlN0cmluZyB0ZXh0U3RyaW5nKHRleHQsIFN5c1N0cmluZ0xlbih0
ZXh0KSk7CisgICAgU3RyaW5nIHRleHRTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKHRleHQsIFN5c1N0
cmluZ0xlbih0ZXh0KSk7CiAgICAgaHRtbEVsZW1lbnQtPnNldElubmVyVGV4dCh0ZXh0U3RyaW5n
KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTExODUsNyArMTE4Niw3IEBAIEhSRVNVTFQgRE9N
SFRNTElucHV0RWxlbWVudDo6c2V0VHlwZShfSW5fIEJTVFIgdHlwZSkKIHsKICAgICBBU1NFUlQo
aXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYg
aW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7Ci0g
ICAgV1RGOjpTdHJpbmcgdHlwZVN0cmluZyh0eXBlLCBTeXNTdHJpbmdMZW4odHlwZSkpOworICAg
IFN0cmluZyB0eXBlU3RyaW5nID0gd2NoYXJUb1N0cmluZyh0eXBlLCBTeXNTdHJpbmdMZW4odHlw
ZSkpOwogICAgIGlucHV0RWxlbWVudC5zZXRUeXBlKHR5cGVTdHJpbmcpOwogICAgIHJldHVybiBT
X09LOwogfQpAQCAtMTIyOCw3ICsxMjI5LDcgQEAgSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50
OjpzZXRWYWx1ZUZvclVzZXIoX0luXyBCU1RSIHZhbHVlKQogewogICAgIEFTU0VSVChpczxIVE1M
SW5wdXRFbGVtZW50PihtX2VsZW1lbnQpKTsKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKLSAgICBpbnB1
dEVsZW1lbnQuc2V0VmFsdWVGb3JVc2VyKFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KHZhbHVl
KSwgU3lzU3RyaW5nTGVuKHZhbHVlKSkpOworICAgIGlucHV0RWxlbWVudC5zZXRWYWx1ZUZvclVz
ZXIod2NoYXJUb1N0cmluZyh2YWx1ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSkpOwogICAgIHJldHVy
biBTX09LOwogfQogCkBAIC0xMzI2LDcgKzEzMjcsNyBAQCBIUkVTVUxUIERPTUhUTUxJbnB1dEVs
ZW1lbnQ6OnJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZShpbnQgc3RhcnRUYXJnZXQsIGludCBlbmRU
YQogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwogCiAgICAgU3RyaW5nIG5ld1ZhbHVlID0gaW5wdXRFbGVt
ZW50LnZhbHVlKCk7Ci0gICAgU3RyaW5nIHdlYkNvcmVSZXBsYWNlbWVudFN0cmluZyhzdGF0aWNf
Y2FzdDxVQ2hhcio+KHJlcGxhY2VtZW50U3RyaW5nKSwgU3lzU3RyaW5nTGVuKHJlcGxhY2VtZW50
U3RyaW5nKSk7CisgICAgU3RyaW5nIHdlYkNvcmVSZXBsYWNlbWVudFN0cmluZyA9IHdjaGFyVG9T
dHJpbmcocmVwbGFjZW1lbnRTdHJpbmcsIFN5c1N0cmluZ0xlbihyZXBsYWNlbWVudFN0cmluZykp
OwogICAgIG5ld1ZhbHVlLnJlcGxhY2Uoc3RhcnRUYXJnZXQsIGVuZFRhcmdldCAtIHN0YXJ0VGFy
Z2V0LCB3ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcpOwogICAgIGlucHV0RWxlbWVudC5zZXRWYWx1
ZShuZXdWYWx1ZSk7CiAgICAgaW5wdXRFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGluZGV4LCBu
ZXdWYWx1ZS5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9E
ZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVs
dFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTFhMTIwODNiYmU0YjUxOGIyYzQ4
NmVkNTY4Yzg5Li5hNThiYmYzMjNlNDFhYTRkMWE1NjM5ZGVkNDE5MmEyYWI1NmU2YzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAK
QEAgLTI2LDEwICsyNiwxMSBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgogCi0jaW5jbHVkZSA8Y29tdXRpbC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CisjaW5jbHVk
ZSA8Y29tdXRpbC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMTE5LDcgKzEyMCw3IEBAIEhSRVNVTFQgRGVmYXVsdFBvbGljeURlbGVnYXRl
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKF9Jbl9vcHRfIElXZWJWaWV3CiAgICAg
ICAgICAgICBCU3RyaW5nIHVybDsKICAgICAgICAgICAgIC8vIEEgZmlsZSBVUkwgc2hvdWxkbid0
IGZhbGwgdGhyb3VnaCB0byBoZXJlLCBidXQgaWYgaXQgZGlkLAogICAgICAgICAgICAgLy8gaXQg
d291bGQgYmUgYSBzZWN1cml0eSByaXNrIHRvIG9wZW4gaXQuCi0gICAgICAgICAgICBpZiAoU1VD
Q0VFREVEKHJlcXVlc3QtPlVSTCgmdXJsKSkgJiYgIVN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1
cmwpKS5zdGFydHNXaXRoKCJmaWxlOiIpKSB7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJl
cXVlc3QtPlVSTCgmdXJsKSkgJiYgIXdjaGFyVG9TdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJs
KSkuc3RhcnRzV2l0aCgiZmlsZToiKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBPcGVu
IHRoZSBVUkwgbm90IGJ5IG1lYW5zIG9mIGEgd2ViZnJhbWUsIGJ1dCBieSBoYW5kaW5nIGl0IG92
ZXIgdG8gdGhlIHN5c3RlbSBhbmQgbGV0dGluZyBpdCBkZXRlcm1pbmUgaG93IHRvIG9wZW4gdGhh
dCBwYXJ0aWN1bGFyIFVSTCBzY2hlbWUuICBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgW05TV29ya3Nw
YWNlIG9wZW5VUkxdCiAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgfQpAQCAtMTQ5LDcg
KzE1MCw3IEBAIEhSRVNVTFQgRGVmYXVsdFBvbGljeURlbGVnYXRlOjpkZWNpZGVQb2xpY3lGb3JN
SU1FVHlwZShfSW5fb3B0XyBJV2ViVmlldyogd2ViVmllCiAgICAgQlN0cmluZyB1cmw7CiAgICAg
cmVxdWVzdC0+VVJMKCZ1cmwpOwogCi0gICAgaWYgKFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1
cmwpKS5zdGFydHNXaXRoKCJmaWxlOiIpKSB7CisgICAgaWYgKHdjaGFyVG9TdHJpbmcodXJsLCBT
eXNTdHJpbmdMZW4odXJsKSkuc3RhcnRzV2l0aCgiZmlsZToiKSkgewogICAgICAgICBCT09MIGlz
RGlyZWN0b3J5ID0gRkFMU0U7CiAgICAgICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgYXR0
cnM7CiAgICAgICAgIGlmIChHZXRGaWxlQXR0cmlidXRlc0V4KHVybCwgR2V0RmlsZUV4SW5mb1N0
YW5kYXJkLCAmYXR0cnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFy
c2hhbGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5n
SGVscGVycy5jcHAKaW5kZXggNzQ3MWExMTZjNzMyZGJlZjhmZmYxMTBjM2QxMWJjMzZjODllOGI4
MS4uZTRjZDkwNTcyZDg4MTEyYmFmZjZkZWM4MGFmMzJkM2ZkZjU2MTgxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dD
aGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00MCw3
ICs0MSw3IEBAIENGRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzIE1hcnNoYWxsaW5nSGVscGVyczo6
a0lVbmtub3duRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzCiAKIFVSTCBNYXJzaGFsbGluZ0hlbHBl
cnM6OkJTVFJUb0tVUkwoQlNUUiB1cmxTdHIpCiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgU3Ry
aW5nKHVybFN0ciwgU3lzU3RyaW5nTGVuKHVybFN0cikpKTsKKyAgICByZXR1cm4gVVJMKFVSTCgp
LCB3Y2hhclRvU3RyaW5nKHVybFN0ciwgU3lzU3RyaW5nTGVuKHVybFN0cikpKTsKIH0KIAogQlNU
UiBNYXJzaGFsbGluZ0hlbHBlcnM6OlVSTFRvQlNUUihjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNhY2hlLmNwcAppbmRleCBiNzYyZmQ2MTI5YTNmNzhlMTU4YWEyM2RiOTFk
Yjc4Y2QzYWM4NGUzLi5jMTYyNjc5ZDg1OWRiNTRiODVhM2EwYmM2YWI0ZjZjYTBiNDE3NGE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlDYWNoZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiAjaWYgVVNFKENV
UkwpCiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJsQ2FjaGVNYW5hZ2VyLmg+CkBAIC0yNjEsNyArMjYy
LDcgQEAgSFJFU1VMVCBXZWJDYWNoZTo6Y2FjaGVGb2xkZXIoX19kZXJlZl9vdXRfb3B0IEJTVFIq
IGxvY2F0aW9uKQogSFJFU1VMVCBXZWJDYWNoZTo6c2V0Q2FjaGVGb2xkZXIoX0luXyBCU1RSIGxv
Y2F0aW9uKQogewogI2lmIFVTRShDVVJMKQotICAgIFN0cmluZyBjYWNoZUZvbGRlcihsb2NhdGlv
biwgU3lzU3RyaW5nTGVuKGxvY2F0aW9uKSk7CisgICAgU3RyaW5nIGNhY2hlRm9sZGVyID0gd2No
YXJUb1N0cmluZyhsb2NhdGlvbiwgU3lzU3RyaW5nTGVuKGxvY2F0aW9uKSk7CiAgICAgV2ViQ29y
ZTo6Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVEaXJlY3RvcnkoY2FjaGVG
b2xkZXIpOwogICAgIHJldHVybiBTX09LOwogI2VsaWYgVVNFKENGVVJMQ09OTkVDVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IDgzMzFjYTk0MDRlNTkxNWU3MzZjZTEwYWJkZmZiOThhYjJm
YjRiNmMuLjBiMjFlNmQ1M2YwZjE3MmRlMzhlODI2OTQ5NDdjZGEwNDQ3MTBlNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNo
UG9wdXBNZW51V2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2lu
Y2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFz
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xNzEsMjAgKzE3MiwyMCBAQCBz
dGF0aWMgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlV2luZG93RmVhdHVyZXNQcm9wZXJ0eUJh
Zyhjb25zdCBXaW5kb3dGZWF0dXJlcwogewogICAgIEhhc2hNYXA8U3RyaW5nLCBDT01WYXJpYW50
PiBtYXA7CiAgICAgaWYgKGZlYXR1cmVzLngpCi0gICAgICAgIG1hcC5zZXQoV2ViV2luZG93RmVh
dHVyZXNYS2V5LCAqZmVhdHVyZXMueCk7CisgICAgICAgIG1hcC5zZXQod2NoYXJBc1VDaGFyKFdl
YldpbmRvd0ZlYXR1cmVzWEtleSksICpmZWF0dXJlcy54KTsKICAgICBpZiAoZmVhdHVyZXMueSkK
LSAgICAgICAgbWFwLnNldChXZWJXaW5kb3dGZWF0dXJlc1lLZXksICpmZWF0dXJlcy55KTsKKyAg
ICAgICAgbWFwLnNldCh3Y2hhckFzVUNoYXIoV2ViV2luZG93RmVhdHVyZXNZS2V5KSwgKmZlYXR1
cmVzLnkpOwogICAgIGlmIChmZWF0dXJlcy53aWR0aCkKLSAgICAgICAgbWFwLnNldChXZWJXaW5k
b3dGZWF0dXJlc1dpZHRoS2V5LCAqZmVhdHVyZXMud2lkdGgpOworICAgICAgICBtYXAuc2V0KHdj
aGFyQXNVQ2hhcihXZWJXaW5kb3dGZWF0dXJlc1dpZHRoS2V5KSwgKmZlYXR1cmVzLndpZHRoKTsK
ICAgICBpZiAoZmVhdHVyZXMuaGVpZ2h0KQotICAgICAgICBtYXAuc2V0KFdlYldpbmRvd0ZlYXR1
cmVzSGVpZ2h0S2V5LCAqZmVhdHVyZXMuaGVpZ2h0KTsKLSAgICBtYXAuc2V0KFdlYldpbmRvd0Zl
YXR1cmVzTWVudUJhclZpc2libGVLZXksIGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKTsKLSAgICBt
YXAuc2V0KFdlYldpbmRvd0ZlYXR1cmVzU3RhdHVzQmFyVmlzaWJsZUtleSwgZmVhdHVyZXMuc3Rh
dHVzQmFyVmlzaWJsZSk7Ci0gICAgbWFwLnNldChXZWJXaW5kb3dGZWF0dXJlc1Rvb2xCYXJWaXNp
YmxlS2V5LCBmZWF0dXJlcy50b29sQmFyVmlzaWJsZSk7Ci0gICAgbWFwLnNldChXZWJXaW5kb3dG
ZWF0dXJlc1Njcm9sbGJhcnNWaXNpYmxlS2V5LCBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSk7
Ci0gICAgbWFwLnNldChXZWJXaW5kb3dGZWF0dXJlc1Jlc2l6YWJsZUtleSwgZmVhdHVyZXMucmVz
aXphYmxlKTsKLSAgICBtYXAuc2V0KFdlYldpbmRvd0ZlYXR1cmVzRnVsbHNjcmVlbktleSwgZmVh
dHVyZXMuZnVsbHNjcmVlbik7Ci0gICAgbWFwLnNldChXZWJXaW5kb3dGZWF0dXJlc0RpYWxvZ0tl
eSwgZmVhdHVyZXMuZGlhbG9nKTsKKyAgICAgICAgbWFwLnNldCh3Y2hhckFzVUNoYXIoV2ViV2lu
ZG93RmVhdHVyZXNIZWlnaHRLZXkpLCAqZmVhdHVyZXMuaGVpZ2h0KTsKKyAgICBtYXAuc2V0KHdj
aGFyQXNVQ2hhcihXZWJXaW5kb3dGZWF0dXJlc01lbnVCYXJWaXNpYmxlS2V5KSwgZmVhdHVyZXMu
bWVudUJhclZpc2libGUpOworICAgIG1hcC5zZXQod2NoYXJBc1VDaGFyKFdlYldpbmRvd0ZlYXR1
cmVzU3RhdHVzQmFyVmlzaWJsZUtleSksIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpOworICAg
IG1hcC5zZXQod2NoYXJBc1VDaGFyKFdlYldpbmRvd0ZlYXR1cmVzVG9vbEJhclZpc2libGVLZXkp
LCBmZWF0dXJlcy50b29sQmFyVmlzaWJsZSk7CisgICAgbWFwLnNldCh3Y2hhckFzVUNoYXIoV2Vi
V2luZG93RmVhdHVyZXNTY3JvbGxiYXJzVmlzaWJsZUtleSksIGZlYXR1cmVzLnNjcm9sbGJhcnNW
aXNpYmxlKTsKKyAgICBtYXAuc2V0KHdjaGFyQXNVQ2hhcihXZWJXaW5kb3dGZWF0dXJlc1Jlc2l6
YWJsZUtleSksIGZlYXR1cmVzLnJlc2l6YWJsZSk7CisgICAgbWFwLnNldCh3Y2hhckFzVUNoYXIo
V2ViV2luZG93RmVhdHVyZXNGdWxsc2NyZWVuS2V5KSwgZmVhdHVyZXMuZnVsbHNjcmVlbik7Cisg
ICAgbWFwLnNldCh3Y2hhckFzVUNoYXIoV2ViV2luZG93RmVhdHVyZXNEaWFsb2dLZXkpLCBmZWF0
dXJlcy5kaWFsb2cpOwogCiAgICAgcmV0dXJuIENPTVB0cjxJUHJvcGVydHlCYWc+KEFkb3B0Q09N
LCBDT01Qcm9wZXJ0eUJhZzxDT01WYXJpYW50Pjo6YWRvcHQobWFwKSk7CiB9CkBAIC00MjQsNyAr
NDI1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUm
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFMKICAgICBpZiAoIXJlc3VsdEJTVFIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlc3VsdCA9IFN0cmluZyhyZXN1bHRCU1RSLCBT
eXNTdHJpbmdMZW4ocmVzdWx0QlNUUikpOworICAgIHJlc3VsdCA9IHdjaGFyVG9TdHJpbmcocmVz
dWx0QlNUUiwgU3lzU3RyaW5nTGVuKHJlc3VsdEJTVFIpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNjQ3LDE1ICs2NDgsMTUgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5l
bChGcmFtZSYsIEZpbGVDaG9vc2VyJiBmaWxlQ2hvb3NlcikKICAgICBvZm4ubFN0cnVjdFNpemUg
PSBzaXplb2Yob2ZuKTsKICAgICBvZm4uaHduZE93bmVyID0gdmlld1dpbmRvdzsKICAgICBTdHJp
bmcgYWxsRmlsZXMgPSBhbGxGaWxlc1RleHQoKTsKLSAgICBhbGxGaWxlcy5hcHBlbmQoTCJcMCou
KlwwXDAiLCA2KTsKKyAgICBhbGxGaWxlcy5hcHBlbmQodSJcMCouKlwwXDAiLCA2KTsKIAotICAg
IFZlY3RvcjxVQ2hhcj4gZmlsdGVyQ2hhcmFjdGVycyA9IGFsbEZpbGVzLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBidWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFrZSB0
aGUgR2V0T3BlbkZpbGVOYW1lIGNhbGwKKyAgICBWZWN0b3I8d2NoYXJfdD4gZmlsdGVyQ2hhcmFj
dGVycyA9IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihhbGxGaWxlcyk7IC8vIFJldGFpbiBi
dWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFrZSB0aGUgR2V0T3BlbkZpbGVOYW1lIGNhbGwKICAgICBv
Zm4ubHBzdHJGaWx0ZXIgPSBmaWx0ZXJDaGFyYWN0ZXJzLmRhdGEoKTsKIAogICAgIG9mbi5scHN0
ckZpbGUgPSBmaWxlQnVmLmRhdGEoKTsKICAgICBvZm4ubk1heEZpbGUgPSBmaWxlQnVmLnNpemUo
KTsKICAgICBTdHJpbmcgZGlhbG9nVGl0bGUgPSB1cGxvYWRGaWxlVGV4dCgpOwotICAgIFZlY3Rv
cjxVQ2hhcj4gZGlhbG9nVGl0bGVDaGFyYWN0ZXJzID0gZGlhbG9nVGl0bGUuY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3VnaCB0byBtYWtl
IHRoZSBHZXRPcGVuRmlsZU5hbWUgY2FsbAorICAgIFZlY3Rvcjx3Y2hhcl90PiBkaWFsb2dUaXRs
ZUNoYXJhY3RlcnMgPSBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGlhbG9nVGl0bGUpOyAv
LyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIEdldE9wZW5GaWxlTmFtZSBj
YWxsCiAgICAgb2ZuLmxwc3RyVGl0bGUgPSBkaWFsb2dUaXRsZUNoYXJhY3RlcnMuZGF0YSgpOwog
ICAgIG9mbi5GbGFncyA9IE9GTl9FTkFCTEVTSVpJTkcgfCBPRk5fRklMRU1VU1RFWElTVCB8IE9G
Tl9QQVRITVVTVEVYSVNUIHwgT0ZOX0VYUExPUkVSOwogICAgIGlmIChtdWx0aUZpbGUpCkBAIC02
NjQsMTQgKzY2NSwxNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1l
JiwgRmlsZUNob29zZXImIGZpbGVDaG9vc2VyKQogICAgIGlmIChHZXRPcGVuRmlsZU5hbWUoJm9m
bikpIHsKICAgICAgICAgV0NIQVIqIGZpbGVzID0gZmlsZUJ1Zi5kYXRhKCk7CiAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IGZpbGVMaXN0OwotICAgICAgICBTdHJpbmcgZmlsZShmaWxlcyk7CisgICAg
ICAgIFN0cmluZyBmaWxlID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVzKTsKICAg
ICAgICAgaWYgKG11bHRpRmlsZSkgewogICAgICAgICAgICAgd2hpbGUgKCFmaWxlLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgIC8vIFdoZW4gdXNpbmcgdGhlIE9GTl9FWFBMT1JFUiBmbGFn
LCB0aGUgZmlsZSBsaXN0IGlzIG51bGwgZGVsaW1pdGVkLgogICAgICAgICAgICAgICAgIC8vIFdo
ZW4geW91IGNyZWF0ZSBhIFN0cmluZyBmcm9tIGEgcHRyIHRvIHRoaXMgbGlzdCwgaXQgd2lsbCB1
c2Ugc3RybGVuIHRvIGxvb2sgZm9yIHRoZSBudWxsIGNoYXJhY3Rlci4KICAgICAgICAgICAgICAg
ICAvLyBUaGVuIHdlIGZpbmQgdGhlIG5leHQgZmlsZSBwYXRoIHN0cmluZyBieSB1c2luZyB0aGUg
bGVuZ3RoIG9mIHRoZSBzdHJpbmcgd2UganVzdCBjcmVhdGVkLgogICAgICAgICAgICAgICAgIFdD
SEFSKiBuZXh0RmlsZVB0ciA9IGZpbGVzICsgZmlsZS5sZW5ndGgoKSArIDE7Ci0gICAgICAgICAg
ICAgICAgU3RyaW5nIG5leHRGaWxlKG5leHRGaWxlUHRyKTsKKyAgICAgICAgICAgICAgICBTdHJp
bmcgbmV4dEZpbGUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobmV4dEZpbGVQdHIpOwog
ICAgICAgICAgICAgICAgIC8vIElmIG11bHRpcGxlIGZpbGVzIGFyZSBzZWxlY3RlZCwgdGhlcmUg
d2lsbCBiZSBhIGRpcmVjdG9yeSBuYW1lIGZpcnN0LCB3aGljaCB3ZSBkb24ndCB3YW50IHRvIGFk
ZCB0byB0aGUgdmVjdG9yLgogICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgYSBzaW5nbGUgZmls
ZSB3YXMgc2VsZWN0ZWQgaWYgdGhlcmUgaXMgb25seSBvbmUgZmlsZW5hbWUgaW4gdGhlIGxpc3Qu
ICAKICAgICAgICAgICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gc2tp
cCBhZGRpbmcgdGhlIGZpcnN0IChhbmQgb25seSkgbmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IGFhZTFlMDAwZjhmYWM5OGUzNzIyOTQwMDFjNjljNGM3MGVkNTNmZjkuLmE3YTYxMGY3YjY2
YjgwNDU3NzczNGI3MzU1MGM3NTVjNDI0NjQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
MjYsMTEgKzI2LDExIEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViRWRp
dG9yQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIldl
YktpdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJET01Db3Jl
Q2xhc3Nlcy5oIgogI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNzU4
LDcgKzc1OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmco
U3RyaW5nVmlldyB0ZXh0LCBpbnQqIG1pc3NwZWxsaW5nTG9jCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGluaXRWaWV3U3BlY2lmaWNTcGVsbGluZyhtX3dlYlZpZXcpOwotICAgIGVkLT5jaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcobV93ZWJWaWV3LCB0ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB0
ZXh0Lmxlbmd0aCgpLCBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7Cisg
ICAgZWQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhtX3dlYlZpZXcsIHVjaGFyQXNXQ2hhcih0ZXh0
LnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxpbmdMb2Nh
dGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIGlu
cHV0V29yZCkKQEAgLTc4MCw3ICs3ODEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tH
cmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogCiAg
ICAgaW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7CiAgICAgQ09NUHRyPElFbnVt
V2ViR3JhbW1hckRldGFpbHM+IGVudW1EZXRhaWxzT2JqOwotICAgIGlmIChGQUlMRUQoZWQtPmNo
ZWNrR3JhbW1hck9mU3RyaW5nKG1fd2ViVmlldywgdGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KSwgdGV4dC5sZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJh
ZEdyYW1tYXJMZW5ndGgpKSkKKyAgICBpZiAoRkFJTEVEKGVkLT5jaGVja0dyYW1tYXJPZlN0cmlu
ZyhtX3dlYlZpZXcsIHVjaGFyQXNXQ2hhcih0ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwg
dGV4dC5sZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdy
YW1tYXJMZW5ndGgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2hpbGUgKHRydWUpIHsKQEAg
LTc5Nyw3ICs3OTgsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogICAgICAgICBCU3RyaW5n
IHVzZXJEZXNjOwogICAgICAgICBpZiAoRkFJTEVEKGRldGFpbE9iai0+dXNlckRlc2NyaXB0aW9u
KCZ1c2VyRGVzYykpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRldGFpbC51c2Vy
RGVzY3JpcHRpb24gPSBTdHJpbmcodXNlckRlc2MsIFN5c1N0cmluZ0xlbih1c2VyRGVzYykpOwor
ICAgICAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0gd2NoYXJUb1N0cmluZyh1c2VyRGVzYywg
U3lzU3RyaW5nTGVuKHVzZXJEZXNjKSk7CiAKICAgICAgICAgQ09NUHRyPElFbnVtU3BlbGxpbmdH
dWVzc2VzPiBlbnVtR3Vlc3Nlc09iajsKICAgICAgICAgaWYgKEZBSUxFRChkZXRhaWxPYmotPmd1
ZXNzZXMoJmVudW1HdWVzc2VzT2JqKSkpCkBAIC04MDYsNyArODA3LDcgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPEdy
YW1tYXJEZXRhaWwKICAgICAgICAgICAgIEJTdHJpbmcgZ3Vlc3M7CiAgICAgICAgICAgICBpZiAo
ZW51bUd1ZXNzZXNPYmotPk5leHQoMSwgJmd1ZXNzLCAmZmV0Y2hlZCkgIT0gU19PSykKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRldGFpbC5ndWVzc2VzLmFwcGVuZChTdHJp
bmcoZ3Vlc3MsIFN5c1N0cmluZ0xlbihndWVzcykpKTsKKyAgICAgICAgICAgIGRldGFpbC5ndWVz
c2VzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKGd1ZXNzLCBTeXNTdHJpbmdMZW4oZ3Vlc3MpKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBkZXRhaWxzLmFwcGVuZChkZXRhaWwpOwpAQCAtODc4LDcgKzg3
OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJp
bmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4CiAgICAgICAgIEJTdHJpbmcgZ3Vlc3M7CiAg
ICAgICAgIGlmIChlbnVtR3Vlc3Nlc09iai0+TmV4dCgxLCAmZ3Vlc3MsICZmZXRjaGVkKSAhPSBT
X09LKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGd1ZXNzZXMuYXBwZW5kKFN0cmluZyhn
dWVzcywgU3lzU3RyaW5nTGVuKGd1ZXNzKSkpOworICAgICAgICBndWVzc2VzLmFwcGVuZCh3Y2hh
clRvU3RyaW5nKGd1ZXNzLCBTeXNTdHJpbmdMZW4oZ3Vlc3MpKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTE1OTViMmY2YzcwYjRhZTRiNzFjNjdlNjNl
YmM2MzVjNThjOGM3OC4uY2UxZGEzZDI4ODlmZWEwY2RiZDc3ZGM5MWZlNjc5YzYxMmJjNjdjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODMsNiArODMsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTgxMSwxMiArODEyLDEyIEBAIFJl
c291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzCiB7CiAgICAgLy8gRklYTUU6IE5lZWQgQ2hpY2tlbkNhdCB0
byBpbmNsdWRlIENGTmV0d29yay9DRlVSTEVycm9yLmggdG8gZ2V0IHRoZXNlIHZhbHVlcwogICAg
IC8vIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIGNyZWF0ZSBvdXIgb3duIGVycm9yIGRvbWFpbi9j
b2Rlcy4KLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4p
LCAtOTk5LCByZXF1ZXN0LnVybCgpLCBTdHJpbmcoIkNhbmNlbGxlZCIpKTsKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoV2ViVVJMRXJyb3JEb21h
aW4pLCAtOTk5LCByZXF1ZXN0LnVybCgpLCBTdHJpbmcoIkNhbmNlbGxlZCIpKTsKIH0KIAogUmVz
b3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmco
V2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCBy
ZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3Rl
ZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNj
cmlwdGlvbiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihudWxsVGVybWluYXRlZFdDaGFy
VG9TdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0
ZWRQb3J0LCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2Ug
cmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVk
UG9ydCBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNs
aWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCkBAIC04MjYsMTIgKzgyNywxMiBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUgog
CiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93VVJMRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCwg
cmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCBjYW5ceEUyXHg4MFx4OTl0IGJl
IHNob3duIiwgIldlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBkZXNjcmlwdGlvbiIpKTsKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoV2ViS2l0RXJy
b3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIFdFQl9V
SV9TVFJJTkcoIlRoZSBVUkwgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRFcnJv
ckNhbm5vdFNob3dVUkwgZGVzY3JpcHRpb24iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmlu
ZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiRnJhbWUgbG9hZCBpbnRl
cnJ1cHRlZCIsICJXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2Ug
ZGVzY3JpcHRpb24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IobnVsbFRlcm1pbmF0ZWRX
Q2hhclRvU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRl
cnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJGcmFt
ZSBsb2FkIGludGVycnVwdGVkIiwgIldlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSBkZXNjcmlwdGlvbiIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCkBAIC04NDEsMjAgKzg0MiwyMCBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bgogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwgLTExMDAsIHJlc3BvbnNlLnVy
bCgpLCBTdHJpbmcoIkZpbGUgZG9lcyBub3QgZXhpc3QuIikpOworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIC0x
MTAwLCByZXNwb25zZS51cmwoKSwgU3RyaW5nKCJGaWxlIGRvZXMgbm90IGV4aXN0LiIpKTsKIH0K
IAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGx1Z2luV2lsbEhhbmRsZUxv
YWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvclBsdWdJ
bldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBo
YW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlv
biIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkLCBy
ZXNwb25zZS51cmwoKSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2Vi
S2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKIH0KIAogYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7Ci0gICAgaWYgKGVycm9yLmVycm9yQ29kZSgpID09IFdlYlVSTEVycm9yQ2FuY2Vs
bGVkICYmIGVycm9yLmRvbWFpbigpID09IFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbikpCisgICAg
aWYgKGVycm9yLmVycm9yQ29kZSgpID09IFdlYlVSTEVycm9yQ2FuY2VsbGVkICYmIGVycm9yLmRv
bWFpbigpID09IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhXZWJVUkxFcnJvckRvbWFpbikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChlcnJvci5lcnJvckNvZGUoKSA9PSBX
ZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkICYmIGVycm9yLmRvbWFpbigpID09IFN0cmlu
ZyhXZWJLaXRFcnJvckRvbWFpbikpCisgICAgaWYgKGVycm9yLmVycm9yQ29kZSgpID09IFdlYktp
dEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQgJiYgZXJyb3IuZG9tYWluKCkgPT0gbnVsbFRlcm1p
bmF0ZWRXQ2hhclRvU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTE2LDcgKzExMTcsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdp
blZpZXcmIHBsdWdpbgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFp
biksIGVycm9yQ29kZSwgcGx1Z2luVmlldy51cmwoKSwgU3RyaW5nKCkpOworICAgIFJlc291cmNl
RXJyb3IgcmVzb3VyY2VFcnJvcihudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoV2ViS2l0RXJy
b3JEb21haW4pLCBlcnJvckNvZGUsIHBsdWdpblZpZXcudXJsKCksIFN0cmluZygpKTsKICAgICBD
T01QdHI8SVdlYkVycm9yPiBlcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNl
KHJlc291cmNlRXJyb3IsIHVzZXJJbmZvQmFnLmdldCgpKSk7CiAgICAgIAogICAgIHJlc291cmNl
TG9hZERlbGVnYXRlLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3Iod2ViVmlldywgZXJyb3IuZ2V0KCks
IGdldFdlYkRhdGFTb3VyY2UoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKTsKQEAg
LTExNDAsMTAgKzExNDEsMTAgQEAgUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE0KIAogICAgICAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIENPTVZhcmlhbnQ+IGFyZ3VtZW50czsKIAotICAgICAgICAgICAg
YXJndW1lbnRzLnNldChXZWJFbWJlZGRlZFZpZXdBdHRyaWJ1dGVzS2V5LCB2aWV3QXJndW1lbnRz
QmFnKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5zZXQoV2ViRW1iZWRkZWRWaWV3QmFzZVVSTEtl
eSwgdXJsLnN0cmluZygpKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5zZXQoV2ViRW1iZWRkZWRW
aWV3Q29udGFpbmluZ0VsZW1lbnRLZXksIGNvbnRhaW5pbmdFbGVtZW50KTsKLSAgICAgICAgICAg
IGFyZ3VtZW50cy5zZXQoV2ViRW1iZWRkZWRWaWV3TUlNRVR5cGVLZXksIG1pbWVUeXBlKTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50cy5zZXQod2NoYXJBc1VDaGFyKFdlYkVtYmVkZGVkVmlld0F0dHJp
YnV0ZXNLZXkpLCB2aWV3QXJndW1lbnRzQmFnKTsKKyAgICAgICAgICAgIGFyZ3VtZW50cy5zZXQo
d2NoYXJBc1VDaGFyKFdlYkVtYmVkZGVkVmlld0Jhc2VVUkxLZXkpLCB1cmwuc3RyaW5nKCkpOwor
ICAgICAgICAgICAgYXJndW1lbnRzLnNldCh3Y2hhckFzVUNoYXIoV2ViRW1iZWRkZWRWaWV3Q29u
dGFpbmluZ0VsZW1lbnRLZXkpLCBjb250YWluaW5nRWxlbWVudCk7CisgICAgICAgICAgICBhcmd1
bWVudHMuc2V0KHdjaGFyQXNVQ2hhcihXZWJFbWJlZGRlZFZpZXdNSU1FVHlwZUtleSksIG1pbWVU
eXBlKTsKIAogICAgICAgICAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZz4gYXJndW1lbnRzQmFnKEFk
b3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxDT01WYXJpYW50Pjo6YWRvcHQoYXJndW1lbnRzKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDIyMWUyMmYzODYwNWE1MWYwNzM3ZWFkM2M4
YmU5YzM5NWM0MjRkYzcuLjI1ZTE5NDViMDcwOTFjZWZjZDkwMDlkMDhjYWUzZWIzZjY0MWQwMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUg
PHdjaGFyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NTAsNyArNDUxLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZpZXco
KQogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKQog
ewogICAgIFN0cmluZyB0aXRsZSA9IG1ha2VTdHJpbmcoIldlYiBJbnNwZWN0b3IgIiwgc3RhdGlj
X2Nhc3Q8VUNoYXI+KDB4MjAxNCksICcgJywgbV9pbnNwZWN0ZWRVUkwpOwotICAgIDo6U2V0V2lu
ZG93VGV4dChtX2Zyb250ZW5kSHduZCwgdGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpOworICAgIDo6U2V0V2luZG93VGV4dChtX2Zyb250ZW5kSHduZCwgc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKHRpdGxlKS5kYXRhKCkpOwogfQogCiBMUkVTVUxUIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpvbkdldE1pbk1heEluZm8oV1BBUkFNLCBMUEFSQU0gbFBh
cmFtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3
M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi5jYTY1ZTA5ZTQ3YzFjNDdhMDA1
ZjliZWIwMDg5YmVjNTUxYWU5MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcApAQCAtMjYsMTQgKzI2LDEzIEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAj
aW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogCi0jaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVk
ZSAiTWVtb3J5U3RyZWFtLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNs
dWRlICJXZWJFcnJvci5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJIVE1M
UmVwcmVzZW50YXRpb24uaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJLaXRT
dGF0aXN0aWNzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYk11dGFibGVVUkxSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiV2ViUmVzb3VyY2UuaCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBIUkVTVUxU
IFdlYkRhdGFTb3VyY2U6OnN1YnJlc291cmNlRm9yVVJMKF9Jbl8gQlNUUiB1cmwsIF9DT01fT3V0
cHRyX29wdF8gSVdlYlJlcwogICAgIGlmICghZG9jKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZG9jLT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLmNhY2hlZFJlc291cmNlKFN0cmluZyh1cmwpKTsKKyAgICBDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UgPSBkb2MtPmNhY2hlZFJlc291cmNlTG9hZGVyKCkuY2FjaGVkUmVz
b3VyY2UobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHVybCkpOwogCiAgICAgaWYgKCFjYWNo
ZWRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IGY5OTYzZjFjMDY4OTZkN2EyY2Iy
ZDczM2ExOGVmYWFhZjNjZTQ4MDguLmM4YTgyYzMwMWFjZTdhMTUyOWVhNzVmN2E1MGU3OWU5Njg2
YTFmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAgKi8KIAogI2luY2x1ZGUgIldlYkRhdGFiYXNlTWFu
YWdlci5oIgotI2luY2x1ZGUgIldlYktpdERMTC5oIgogCiAjaW5jbHVkZSAiQ09NRW51bVZhcmlh
bnQuaCIKICNpbmNsdWRlICJDT01Qcm9wZXJ0eUJhZy5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5n
SGVscGVycy5oIgorI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNh
dGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV2Vi
U2VjdXJpdHlPcmlnaW4uaCIKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogI2luY2x1ZGUgIldlYkRh
dGFiYXNlUHJvdmlkZXIuaCIKQEAgLTI3OSw3ICsyODAsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNl
TWFuYWdlcjo6ZGV0YWlsc0ZvckRhdGFiYXNlKF9Jbl8gQlNUUiBkYXRhYmFzZU5hbWUsIF9Jbl9v
cHRfCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAotICAgIGF1dG8gZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4oU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFi
YXNlTmFtZSkpLAorICAgIGF1dG8gZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4od2NoYXJUb1N0cmluZyhkYXRhYmFzZU5hbWUsIFN5
c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSwKICAgICAgICAgKndlYlNlY3VyaXR5T3JpZ2luLT5z
ZWN1cml0eU9yaWdpbigpKTsKIAogICAgIGlmIChkZXRhaWxzLm5hbWUoKS5pc051bGwoKSkKQEAg
LTMzMSw3ICszMzIsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UoX0luXyBCU1RSIGRhdGFiYXNlTmFtZSwgX0luX29wdF8gSVdlYgogICAgIGlmICghd2ViU2Vj
dXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNr
ZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURhdGFiYXNlKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0
eU9yaWdpbigpLT5kYXRhKCksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRh
YmFzZU5hbWUpKSk7CisgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVEYXRh
YmFzZSh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpLCB3Y2hhclRv
U3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpKTsKIAogICAg
IHJldHVybiBTX09LOwogfQpAQCAtNDA0LDcgKzQwNSw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VN
YW5hZ2VyOjpzZXRRdW90YShfSW5fIEJTVFIgb3JpZ2luLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVv
dGEpCiAgICAgaWYgKHRoaXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1
b3RhKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbiktPmRhdGEoKSwgcXVv
dGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcod2NoYXJBc1VDaGFyKG9yaWdpbikpLT5kYXRhKCksIHF1
b3RhKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtNDIyLDcgKzQyMyw3IEBAIHZvaWQgV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3JpCiAgICAgQ09NUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbihBZG9wdENPTSwgV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKG9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpLnB0cigpKSk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB1
c2VySW5mbzsKLSAgICB1c2VySW5mby5zZXQoV2ViRGF0YWJhc2VOYW1lS2V5LCBkYXRhYmFzZU5h
bWUpOworICAgIHVzZXJJbmZvLnNldCh3Y2hhckFzVUNoYXIoV2ViRGF0YWJhc2VOYW1lS2V5KSwg
ZGF0YWJhc2VOYW1lKTsKICAgICBDT01QdHI8SVByb3BlcnR5QmFnPiB1c2VySW5mb0JhZyhBZG9w
dENPTSwgQ09NUHJvcGVydHlCYWc8U3RyaW5nPjo6YWRvcHQodXNlckluZm8pKTsKIAogICAgIG5v
dGlmeUNlbnRlci0+cG9zdE5vdGlmaWNhdGlvbk5hbWUoZGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5O
YW1lLCBzZWN1cml0eU9yaWdpbi5nZXQoKSwgdXNlckluZm9CYWcuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3ZTc1NmFiMTZjZWVjNmVi
MWU0YWRkM2ZhZGMyZmQ3MzkuLjRlNmNjMWNiYTNjOTUwZmZkOTcxYjZjZTM2ZTQ3OTBkODIwNWRi
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTM1LDggKzM1
LDYgQEAKICNpbmNsdWRlICJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1
ZGUgIldlYlVSTENyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRG93bmxvYWRCdW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CkBAIC00NSw2ICs0Myw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTM2LDcgKzEzNiw3IEBAIEhSRVNVTFQgV2ViRG93
bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKF9Jbl8gQlNUUiB0YXJnZXRQYXRoLCBfX2Rl
cmVmX291dF9vCiAgICAgaWYgKCF0YXJnZXRQYXRoKQogICAgICAgICByZXR1cm4gRV9JTlZBTElE
QVJHOwogCi0gICAgU3RyaW5nIGJ1bmRsZSh0YXJnZXRQYXRoLCBTeXNTdHJpbmdMZW4odGFyZ2V0
UGF0aCkpOworICAgIFN0cmluZyBidW5kbGUgPSB3Y2hhclRvU3RyaW5nKHRhcmdldFBhdGgsIFN5
c1N0cmluZ0xlbih0YXJnZXRQYXRoKSk7CiAgICAgaWYgKGJ1bmRsZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBFX0lOVkFMSURBUkc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
b3dubG9hZEN1cmwuY3BwCmluZGV4IDk5YjYyN2YxYWFjMDNhZWRmNTA2ODdmYzdmMzM2YmI5NWQ5
Y2RkMjAuLmU1MDdlNzAwYTc3MDBjYjEwNjQ5ZTlmMDZiMTdiYTNiNjUyYzgxYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtNDgsNiArNDgsNyBA
QAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtOTQsNyAr
OTUsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjppbml0V2l0aFJlcXVlc3QoCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0OwotICAg
IHJlc291cmNlUmVxdWVzdC5zZXRVUkwoVVJMKHsgfSwgU3RyaW5nKHVybCkpKTsKKyAgICByZXNv
dXJjZVJlcXVlc3Quc2V0VVJMKFVSTCh7IH0sIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh1
cmwpKSk7CiAKICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJNYXAgPSB3ZWJSZXF1ZXN0
LT5odHRwSGVhZGVyRmllbGRzKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGhlYWRlck1hcC5iZWdpbigpOyBpdCAhPSBoZWFkZXJNYXAuZW5kKCk7ICsraXQp
CkBAIC0xNzQsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24o
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBzaXplX3QgbGVuID0gd2NzbGVuKHBhdGgp
OwotICAgIG1fZGVzdGluYXRpb24gPSBTdHJpbmcocGF0aCwgbGVuKTsKKyAgICBtX2Rlc3RpbmF0
aW9uID0gd2NoYXJUb1N0cmluZyhwYXRoLCBsZW4pOwogICAgIG1fZG93bmxvYWQtPnNldERlc3Rp
bmF0aW9uKG1fZGVzdGluYXRpb24pOwogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRXJyb3IuY3BwCmluZGV4IDdjMmQxMGE1MTJiM2VkNDk3ZjY2Mzg0Njk3YzY5OGJm
Y2E3NTVhYzkuLjNiMDE5NzVmM2Y0NTU5ZTQ4MDc4ODcyYjQyNDNjYWY3NDMxY2M5MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKQEAgLTI1LDkgKzI1LDEwIEBACiAKICNpbmNs
dWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRlICJXZWJFcnJvci5oIgotI2luY2x1ZGUgIldlYktp
dC5oIgogCisjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKICNpZiBVU0Uo
Q0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgpAQCAtMTA3LDcgKzEw
OCw3IEBAIFVMT05HIFdlYkVycm9yOjpSZWxlYXNlKCkKIAogSFJFU1VMVCBXZWJFcnJvcjo6aW5p
dChfSW5fIEJTVFIgZG9tYWluLCBpbnQgY29kZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBtX2Vy
cm9yID0gUmVzb3VyY2VFcnJvcihTdHJpbmcoZG9tYWluLCBTeXNTdHJpbmdMZW4oZG9tYWluKSks
IGNvZGUsIFVSTChVUkwoKSwgU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpKSwgU3RyaW5n
KCkpOworICAgIG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yKHdjaGFyVG9TdHJpbmcoZG9tYWluLCBT
eXNTdHJpbmdMZW4oZG9tYWluKSksIGNvZGUsIFVSTChVUkwoKSwgd2NoYXJUb1N0cmluZyh1cmws
IFN5c1N0cmluZ0xlbih1cmwpKSksIFN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAg
CkBAIC0yMDgsNyArMjA5LDcgQEAgSFJFU1VMVCBXZWJFcnJvcjo6aXNQb2xpY3lDaGFuZ2VFcnJv
cihfT3V0XyBCT09MKiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gbV9lcnJvci5kb21haW4oKSA9PSBTdHJpbmcoV2Vi
S2l0RXJyb3JEb21haW4pCisgICAgKnJlc3VsdCA9IG1fZXJyb3IuZG9tYWluKCkgPT0gbnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKQogICAgICAgICAmJiBtX2Vy
cm9yLmVycm9yQ29kZSgpID09IFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGlj
eUNoYW5nZTsKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmNwcAppbmRleCA0YWQzMTY2MDE3ZjM5OWFmOWM4MzM5NTA5NmMzZmQ1N2U1NjEwODMwLi4wMWM1
ZmJlOGY1YjMxMTJkMmU3MzYwMWM0ZTFjNjUwOWE4ZDhhMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nl
dHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJh
cy5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3Mu
aD4KQEAgLTU2NSwxNiArNTY2LDE2IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9J
bl9vcHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogCiB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIg
dGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCiB7Ci0gICAg
U3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsK
KyAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKG1pbWVUeXBlLCBTeXNT
dHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQogICAgICAgICBtaW1lVHlw
ZVN0cmluZyA9ICJ0ZXh0L2h0bWwiOwogCi0gICAgU3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRF
bmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0RW5jb2RpbmdOYW1lKSk7CisgICAgU3RyaW5n
IGVuY29kaW5nU3RyaW5nID0gd2NoYXJUb1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJp
bmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFs
bHkgYmUgdXNpbmcgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMIGhlcmUsCiAgICAgLy8g
YnV0IHRoYXQgd291bGQgdHVybiBhIG51bGwgQlNUUiBpbnRvIGEgbnVsbCBVUkwsIGFuZCB3ZSBj
cmFzaCBpbnNpZGUgb2YKICAgICAvLyBXZWJDb3JlIGlmIHdlIHVzZSBhIG51bGwgVVJMIGluIGNv
bnN0cnVjdGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgotICAgIFVSTCBiYXNlQ29yZVVSTCA9IFVS
TChVUkwoKSwgU3RyaW5nKGJhc2VVUkwgPyBiYXNlVVJMIDogTCIiLCBTeXNTdHJpbmdMZW4oYmFz
ZVVSTCkpKTsKKyAgICBVUkwgYmFzZUNvcmVVUkwgPSBVUkwoVVJMKCksIHdjaGFyVG9TdHJpbmco
YmFzZVVSTCA/IGJhc2VVUkwgOiBMIiIsIFN5c1N0cmluZ0xlbihiYXNlVVJMKSkpOwogCiAgICAg
VVJMIGZhaWxpbmdDb3JlVVJMID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKGZhaWxp
bmdVUkwpOwogCkBAIC03MzEsNyArNzMyLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6ZmluZEZyYW1l
TmFtZWQoX0luXyBCU1RSIG5hbWUsIF9DT01fT3V0cHRyX29wdF8gSVdlYkZyYW1lKiogZnIKICAg
ICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIEZy
YW1lKiBmb3VuZEZyYW1lID0gY29yZUZyYW1lLT50cmVlKCkuZmluZChBdG9taWNTdHJpbmcobmFt
ZSwgU3lzU3RyaW5nTGVuKG5hbWUpKSwgKmNvcmVGcmFtZSk7CisgICAgRnJhbWUqIGZvdW5kRnJh
bWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5maW5kKEF0b21pY1N0cmluZyh3Y2hhckFzVUNoYXIobmFt
ZSksIFN5c1N0cmluZ0xlbihuYW1lKSksICpjb3JlRnJhbWUpOwogICAgIGlmICghZm91bmRGcmFt
ZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKQEAgLTk3Niw3ICs5NzcsNyBAQCBIUkVTVUxUIFdl
YkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKF9Jbl8gQlNUUiBkaXJlY3Rpb24pCiAgICAgaWYgKCFj
b3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBTdHJpbmcgZGly
ZWN0aW9uU3RyaW5nKGRpcmVjdGlvbiwgU3lzU3RyaW5nTGVuKGRpcmVjdGlvbikpOworICAgIFN0
cmluZyBkaXJlY3Rpb25TdHJpbmcgPSB3Y2hhclRvU3RyaW5nKGRpcmVjdGlvbiwgU3lzU3RyaW5n
TGVuKGRpcmVjdGlvbikpOwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gImF1dG8iKQogICAg
ICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdE
aXJlY3Rpb246Ok5hdHVyYWwpOwogICAgIGVsc2UgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAibHRy
IikKQEAgLTExNjgsNyArMTE2OSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnBhdXNlQW5pbWF0aW9u
KF9Jbl8gQlNUUiBhbmltYXRpb25OYW1lLCBfSW5fb3B0XyBJRE9NTm9kZSogbm9kCiAgICAgaWYg
KCFkb21Ob2RlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmFuaW1hdGlvbldhc1J1
bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25BdFRpbWUoZG93bmNhc3Q8
RWxlbWVudD4oKmRvbU5vZGUtPm5vZGUoKSksIFN0cmluZyhhbmltYXRpb25OYW1lLCBTeXNTdHJp
bmdMZW4oYW5pbWF0aW9uTmFtZSkpLCBzZWNvbmRzRnJvbU5vdyk7CisgICAgKmFuaW1hdGlvbldh
c1J1bm5pbmcgPSBmcmFtZS0+YW5pbWF0aW9uKCkucGF1c2VBbmltYXRpb25BdFRpbWUoZG93bmNh
c3Q8RWxlbWVudD4oKmRvbU5vZGUtPm5vZGUoKSksIHdjaGFyVG9TdHJpbmcoYW5pbWF0aW9uTmFt
ZSwgU3lzU3RyaW5nTGVuKGFuaW1hdGlvbk5hbWUpKSwgc2Vjb25kc0Zyb21Ob3cpOwogICAgIHJl
dHVybiBTX09LOwogfQogCkBAIC0xMTg3LDcgKzExODgsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpw
YXVzZVRyYW5zaXRpb24oX0luXyBCU1RSIHByb3BlcnR5TmFtZSwgX0luX29wdF8gSURPTU5vZGUq
IG5vZAogICAgIGlmICghZG9tTm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgICp0
cmFuc2l0aW9uV2FzUnVubmluZyA9IGZyYW1lLT5hbmltYXRpb24oKS5wYXVzZVRyYW5zaXRpb25B
dFRpbWUoZG93bmNhc3Q8RWxlbWVudD4oKmRvbU5vZGUtPm5vZGUoKSksIFN0cmluZyhwcm9wZXJ0
eU5hbWUsIFN5c1N0cmluZ0xlbihwcm9wZXJ0eU5hbWUpKSwgc2Vjb25kc0Zyb21Ob3cpOworICAg
ICp0cmFuc2l0aW9uV2FzUnVubmluZyA9IGZyYW1lLT5hbmltYXRpb24oKS5wYXVzZVRyYW5zaXRp
b25BdFRpbWUoZG93bmNhc3Q8RWxlbWVudD4oKmRvbU5vZGUtPm5vZGUoKSksIHdjaGFyVG9TdHJp
bmcocHJvcGVydHlOYW1lLCBTeXNTdHJpbmdMZW4ocHJvcGVydHlOYW1lKSksIHNlY29uZHNGcm9t
Tm93KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTMxNSw3ICsxMzE2LDcgQEAgSFJFU1VM
VCBXZWJGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChjb25zdCBCU1RSKiBsYWJl
bHMsIHVuc2lnbmVkIGNMYWIKIAogICAgIFZlY3RvcjxTdHJpbmc+IGxhYmVsU3RyaW5ncyhjTGFi
ZWxzKTsKICAgICBmb3IgKGludCBpPTA7IGk8Y0xhYmVsczsgaSsrKQotICAgICAgICBsYWJlbFN0
cmluZ3NbaV0gPSBTdHJpbmcobGFiZWxzW2ldLCBTeXNTdHJpbmdMZW4obGFiZWxzW2ldKSk7Cisg
ICAgICAgIGxhYmVsU3RyaW5nc1tpXSA9IHdjaGFyVG9TdHJpbmcobGFiZWxzW2ldLCBTeXNTdHJp
bmdMZW4obGFiZWxzW2ldKSk7CiAgICAgRWxlbWVudCAqY29yZUVsZW1lbnQgPSBlbGVtZW50RnJv
bURPTUVsZW1lbnQoYmVmb3JlRWxlbWVudCk7CiAgICAgaWYgKCFjb3JlRWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKQEAgLTEzNTUsNyArMTM1Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6
Om1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQgY0xhYmVs
cywgSURPCiAKICAgICBWZWN0b3I8U3RyaW5nPiBsYWJlbFN0cmluZ3MoY0xhYmVscyk7CiAgICAg
Zm9yIChpbnQgaT0wOyBpPGNMYWJlbHM7IGkrKykKLSAgICAgICAgbGFiZWxTdHJpbmdzW2ldID0g
U3RyaW5nKGxhYmVsc1tpXSwgU3lzU3RyaW5nTGVuKGxhYmVsc1tpXSkpOworICAgICAgICBsYWJl
bFN0cmluZ3NbaV0gPSB3Y2hhclRvU3RyaW5nKGxhYmVsc1tpXSwgU3lzU3RyaW5nTGVuKGxhYmVs
c1tpXSkpOwogICAgIEVsZW1lbnQgKmNvcmVFbGVtZW50ID0gZWxlbWVudEZyb21ET01FbGVtZW50
KGFnYWluc3RFbGVtZW50KTsKICAgICBpZiAoIWNvcmVFbGVtZW50KQogICAgICAgICByZXR1cm4g
RV9GQUlMOwpAQCAtMTM4Myw3ICsxMzg0LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6Y2FuUHJvdmlk
ZURvY3VtZW50U291cmNlKGJvb2wqIHJlc3VsdCkKICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiB1
cmxSZXNwb25zZSkgewogICAgICAgICBCU3RyaW5nIG1pbWVUeXBlQlN0cjsKICAgICAgICAgaWYg
KFNVQ0NFRURFRCh1cmxSZXNwb25zZS0+TUlNRVR5cGUoJm1pbWVUeXBlQlN0cikpKSB7Ci0gICAg
ICAgICAgICBTdHJpbmcgbWltZVR5cGUobWltZVR5cGVCU3RyLCBTeXNTdHJpbmdMZW4obWltZVR5
cGVCU3RyKSk7CisgICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSB3Y2hhclRvU3RyaW5nKG1p
bWVUeXBlQlN0ciwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlQlN0cikpOwogICAgICAgICAgICAgKnJl
c3VsdCA9IG1pbWVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmlzWE1MTUlNRVR5cGUobWltZVR5cGUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTk5NCw3
ICsxOTk1LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEluU2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KICAgICAgICAgcmV0dXJuIEVfSU5W
QUxJREFSRzsKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwotICAgIFN0cmlu
ZyBzdHJpbmcgPSBTdHJpbmcoc2NyaXB0LCBTeXNTdHJpbmdMZW4oc2NyaXB0KSk7CisgICAgU3Ry
aW5nIHN0cmluZyA9IHdjaGFyVG9TdHJpbmcoc2NyaXB0LCBTeXNTdHJpbmdMZW4oc2NyaXB0KSk7
CiAKICAgICAvLyBTdGFydCBvZmYgd2l0aCBzb21lIGd1ZXNzIGF0IGEgZnJhbWUgYW5kIGEgZ2xv
YmFsIG9iamVjdCwgd2UnbGwgdHJ5IHRvIGRvIGJldHRlci4uLiEKICAgICBKU0RPTVdpbmRvdyog
YW55V29ybGRHbG9iYWxPYmplY3QgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rvcnku
Y3BwCmluZGV4IGZmOWRhMjRjMWZjOGM0MWJjMGIzYjcwYjhkM2Q5MjU2ZGQ0YzYzMjcuLmQ4ZThj
NDA5N2UxMjFkMGVkOTUyNmMwZWEyNTI3ZDM0NGQ3MjVhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiV2ViSGlzdG9y
eS5oIgogCiAjaW5jbHVkZSAiTWVtb3J5U3RyZWFtLmgiCi0jaW5jbHVkZSAiV2ViS2l0LmgiCiAj
aW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0ZW0u
aCIKICNpbmNsdWRlICJXZWJLaXQuaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogI2lm
IFVTRShDRikKICNpbmNsdWRlICJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5oIgpAQCAtNDE0LDcg
KzQxNCw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6cmVtb3ZlSXRlbShJV2ViSGlzdG9yeUl0ZW0q
IGVudHJ5KQogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CiAKLSAgICBT
dHJpbmcgdXJsU3RyaW5nKHVybEJTdHIsIFN5c1N0cmluZ0xlbih1cmxCU3RyKSk7CisgICAgU3Ry
aW5nIHVybFN0cmluZyA9IHdjaGFyVG9TdHJpbmcodXJsQlN0ciwgU3lzU3RyaW5nTGVuKHVybEJT
dHIpKTsKICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIApAQCAtNDUxLDcgKzQ1MSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6YWRkSXRlbShJV2Vi
SGlzdG9yeUl0ZW0qIGVudHJ5LCBib29sIGRpc2NhcmREdXBsaWNhdGUsIGJvb2wqCiAgICAgaWYg
KEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKIAotICAgIFN0cmluZyB1cmxTdHJpbmco
dXJsQlN0ciwgU3lzU3RyaW5nTGVuKHVybEJTdHIpKTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nID0g
d2NoYXJUb1N0cmluZyh1cmxCU3RyLCBTeXNTdHJpbmdMZW4odXJsQlN0cikpOwogICAgIGlmICh1
cmxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC01MzMsNyAr
NTMzLDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjppdGVtRm9yVVJMKF9Jbl8gQlNUUiB1cmxCU3Ry
LCBfQ09NX091dHB0cl9vcHRfIElXZWJIaXN0b3J5SXQKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKICAgICAqaXRlbSA9IG51bGxwdHI7CiAKLSAgICBTdHJpbmcgdXJsU3RyaW5nKHVybEJTdHIs
IFN5c1N0cmluZ0xlbih1cmxCU3RyKSk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IHdjaGFyVG9T
dHJpbmcodXJsQlN0ciwgU3lzU3RyaW5nTGVuKHVybEJTdHIpKTsKICAgICBpZiAodXJsU3RyaW5n
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IGE4NTU5YTVmZDIyN2NiZDJiMTdlYWYyODVl
YTYzOTVlYWZmOGE2Y2MuLjlmOWFjOTI4NTc1N2M5OGVjNDBhODcwZjlkNzRmZTZjZTlmYzIxNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5
OCw3ICsxOTksNyBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpzZXRMYXN0VmlzaXRlZFRpbWVJ
bnRlcnZhbChEQVRFIHRpbWUpCiAKIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OnNldFRpdGxlKF9J
bl8gQlNUUiB0aXRsZSkKIHsKLSAgICBtX2hpc3RvcnlJdGVtLT5zZXRUaXRsZShTdHJpbmcodGl0
bGUsIFN5c1N0cmluZ0xlbih0aXRsZSkpKTsKKyAgICBtX2hpc3RvcnlJdGVtLT5zZXRUaXRsZSh3
Y2hhclRvU3RyaW5nKHRpdGxlLCBTeXNTdHJpbmdMZW4odGl0bGUpKSk7CiAKICAgICByZXR1cm4g
U19PSzsKIH0KQEAgLTIxNiw3ICsyMTcsNyBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjpSU1NG
ZWVkUmVmZXJyZXIoX19kZXJlZl9vdXRfb3B0IEJTVFIqIHVybCkKIAogSFJFU1VMVCBXZWJIaXN0
b3J5SXRlbTo6c2V0UlNTRmVlZFJlZmVycmVyKF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgbV9oaXN0
b3J5SXRlbS0+c2V0UmVmZXJyZXIoU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpKTsKKyAg
ICBtX2hpc3RvcnlJdGVtLT5zZXRSZWZlcnJlcih3Y2hhclRvU3RyaW5nKHVybCwgU3lzU3RyaW5n
TGVuKHVybCkpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtNDA4LDcgKzQwOSw3IEBAIFVM
T05HIFdlYkhpc3RvcnlJdGVtOjpSZWxlYXNlKCkKIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06Omlu
aXRXaXRoVVJMU3RyaW5nKF9Jbl8gQlNUUiB1cmxTdHJpbmcsIF9Jbl8gQlNUUiB0aXRsZSwgREFU
RSBsYXN0VmlzaXRlZCkKIHsKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlz
dG9yeUl0ZW0uZ2V0KCkpOwotICAgIG1faGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRl
KFN0cmluZyh1cmxTdHJpbmcsIFN5c1N0cmluZ0xlbih1cmxTdHJpbmcpKSwgU3RyaW5nKHRpdGxl
LCBTeXNTdHJpbmdMZW4odGl0bGUpKSk7CisgICAgbV9oaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVt
OjpjcmVhdGUod2NoYXJUb1N0cmluZyh1cmxTdHJpbmcsIFN5c1N0cmluZ0xlbih1cmxTdHJpbmcp
KSwgd2NoYXJUb1N0cmluZyh0aXRsZSwgU3lzU3RyaW5nTGVuKHRpdGxlKSkpOwogICAgIGhpc3Rv
cnlJdGVtV3JhcHBlcnMoKS5zZXQobV9oaXN0b3J5SXRlbS5nZXQoKSwgdGhpcyk7CiAKICAgICBy
ZXR1cm4gU19PSzsKQEAgLTQ1NCw3ICs0NTUsNyBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjps
YXN0VmlzaXRlZFRpbWVJbnRlcnZhbChfT3V0XyBEQVRFKiBsYXN0VmlzaXRlZCkKIAogSFJFU1VM
VCBXZWJIaXN0b3J5SXRlbTo6c2V0QWx0ZXJuYXRlVGl0bGUoX0luXyBCU1RSIHRpdGxlKQogewot
ICAgIG1fYWx0ZXJuYXRlVGl0bGUgPSBTdHJpbmcodGl0bGUsIFN5c1N0cmluZ0xlbih0aXRsZSkp
OworICAgIG1fYWx0ZXJuYXRlVGl0bGUgPSB3Y2hhclRvU3RyaW5nKHRpdGxlLCBTeXNTdHJpbmdM
ZW4odGl0bGUpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5NWRjNTYyMjQxNWIzZjk5MDM3NWU3
YjdmYjcyYy4uZTJhMjU0OTI2MjMzYTRlYjQzNzkzN2ZlMTA5Y2MwZmZhOTU3OWNjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTIxMSw3ICsyMTIsNyBAQCBIUkVTVUxUIFdlYkluc3BlY3Rvcjo6ZXZhbHVhdGVJbkZyb250
ZW5kKF9Jbl8gQlNUUiBiU2NyaXB0KQogICAgIGlmICghaW5zcGVjdGVkUGFnZSkKICAgICAgICAg
cmV0dXJuIFNfT0s7CiAKLSAgICBTdHJpbmcgc2NyaXB0KGJTY3JpcHQsIFN5c1N0cmluZ0xlbihi
U2NyaXB0KSk7CisgICAgU3RyaW5nIHNjcmlwdCA9IHdjaGFyVG9TdHJpbmcoYlNjcmlwdCwgU3lz
U3RyaW5nTGVuKGJTY3JpcHQpKTsKICAgICBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChzY3JpcHQpOwogICAgIHJldHVybiBTX09L
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVT
dHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5n
cy5jcHAKaW5kZXggZGUwMjIxZjU0NWYzZGY0YTZhZDEwYzBhYTk2ZDM2Y2I4ZDkxNjNmMi4uYmI5
OGM0ODdmNDExNzkxM2QxZWIyMzY1ZWZjZDVmNWQzOTg3ZGYwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBAIC0yNCwyMCArMjQs
MTkgQEAKICAqLwogCiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCi0KICNpbmNsdWRlICJXZWJMb2Nh
bGl6YWJsZVN0cmluZ3MuaCIKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KLSNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3Ry
aW5nRXh0cmFzLmg+CiAKIGNsYXNzIExvY2FsaXplZFN0cmluZzsKIApAQCAtODEsNyArODAsNyBA
QCBwcml2YXRlOgogTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBMUENUU1RSKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5nLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpOworICAgICAgICByZXR1cm4gc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fc3RyaW5nKS5kYXRhKCk7CiAKICAgICBtX3N0cmlu
ZyA9IG1fY2ZTdHJpbmc7CiAKQEAgLTg5LDcgKzg4LDcgQEAgTG9jYWxpemVkU3RyaW5nOjpvcGVy
YXRvciBMUENUU1RSKCkgY29uc3QKICAgICAgICAgaWYgKG1fc3RyaW5nW2ldID09ICdAJyAmJiAo
bV9zdHJpbmdbaSAtIDFdID09ICclJyB8fCAoaSA+IDIgJiYgbV9zdHJpbmdbaSAtIDFdID09ICck
JyAmJiBtX3N0cmluZ1tpIC0gMl0gPj0gJzEnICYmIG1fc3RyaW5nW2kgLSAyXSA8PSAnOScgJiYg
bV9zdHJpbmdbaSAtIDNdID09ICclJykpKQogICAgICAgICAgICAgbV9zdHJpbmcucmVwbGFjZShp
LCAxLCAicyIpOwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpOworICAgIHJldHVybiBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
bV9zdHJpbmcpLmRhdGEoKTsKIH0KIAogc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktpdEJ1
bmRsZSgpCkBAIC0xMjQsNyArMTIzLDcgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktp
dEJ1bmRsZSgpCiAgICAgaWYgKHdjc2NhdF9zKHBhdGhTdHIsIE1BWF9QQVRILCBMIlxcV2ViS2l0
LnJlc291cmNlcyIpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFN0cmluZyBidW5kbGVQYXRo
U3RyaW5nKHBhdGhTdHIpOworICAgIFN0cmluZyBidW5kbGVQYXRoU3RyaW5nID0gbnVsbFRlcm1p
bmF0ZWRXQ2hhclRvU3RyaW5nKHBhdGhTdHIpOwogICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykK
ICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTIyNyw3ICsyMjYsNyBAQCBDRlN0cmluZ1JlZiBXZWJM
b2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxl
LCBMUENUUwogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBs
b2NhbGl6ZWRTdHJpbmcoc3RyaW5nc0J1bmRsZSwgU3RyaW5nKGtleSkpOworICAgIHJldHVybiBs
b2NhbGl6ZWRTdHJpbmcoc3RyaW5nc0J1bmRsZSwgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5n
KGtleSkpOwogfQogCiBMUENUU1RSIFdlYkxvY2FsaXplZExQQ1RTVFIoV2ViTG9jYWxpemFibGVT
dHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxlLCBMUENUU1RSIGtleSkKQEAgLTIzNSw3ICsyMzQs
NyBAQCBMUENUU1RSIFdlYkxvY2FsaXplZExQQ1RTVFIoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVu
ZGxlKiBzdHJpbmdzQnVuZGxlLCBMUENUU1RSCiAgICAgaWYgKCFrZXkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIGxvY2FsaXplZFN0cmluZyhzdHJpbmdzQnVuZGxlLCBTdHJpbmco
a2V5KSk7CisgICAgcmV0dXJuIGxvY2FsaXplZFN0cmluZyhzdHJpbmdzQnVuZGxlLCBudWxsVGVy
bWluYXRlZFdDaGFyVG9TdHJpbmcoa2V5KSk7CiB9CiAKIHZvaWQgU2V0V2ViTG9jYWxpemVkU3Ry
aW5nTWFpbkJ1bmRsZShDRkJ1bmRsZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCAxZmUxMTQ1YWVjMjAwODhhNmZiMWZiZjk4
ZGIwMzJjMDZkMDliMjg1Li5mYzlhOTc2ZTU1YmMwZjk2N2YzYmEzNTcwYjVmZjMzODM2OWM5NGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwCkBAIC0yNiwxNSArMjYsMTUgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRl
ICJXZWJNdXRhYmxlVVJMUmVxdWVzdC5oIgogCi0jaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVk
ZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Zvcm1EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgPFdlYkNvcmUv
Q2VydGlmaWNhdGVDRldpbi5oPgpAQCAtMjM5LDcgKzIzOSw3IEBAIEhSRVNVTFQgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OnZhbHVlRm9ySFRUUEhlYWRlckZpZWxkKF9Jbl8gQlNUUiBmaWVsZCwgX19k
ZXJlZl9vCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgfQogCi0gICAgKnJlc3VsdCA9
IEJTdHJpbmcobV9yZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZChTdHJpbmcoZmllbGQsIFN5c1N0cmlu
Z0xlbihmaWVsZCkpKSkucmVsZWFzZSgpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKG1fcmVxdWVz
dC5odHRwSGVhZGVyRmllbGQod2NoYXJUb1N0cmluZyhmaWVsZCwgU3lzU3RyaW5nTGVuKGZpZWxk
KSkpKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTI3Miw3ICsyNzIsNyBA
QCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojppc0VxdWFsKF9Jbl9vcHRfIElXZWJVUkxS
ZXF1ZXN0KiBvdGhlciwgX091dF8gQk9PTAogCiBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0
OjphZGRWYWx1ZShfSW5fIEJTVFIgdmFsdWUsIF9Jbl8gQlNUUiBmaWVsZCkKIHsKLSAgICBtX3Jl
cXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKFdURjo6QXRvbWljU3RyaW5nKHZhbHVlLCBTeXNTdHJp
bmdMZW4odmFsdWUpKSwgU3RyaW5nKGZpZWxkLCBTeXNTdHJpbmdMZW4oZmllbGQpKSk7CisgICAg
bV9yZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChBdG9taWNTdHJpbmcod2NoYXJBc1VDaGFyKHZh
bHVlKSwgU3lzU3RyaW5nTGVuKHZhbHVlKSksIHdjaGFyVG9TdHJpbmcoZmllbGQsIFN5c1N0cmlu
Z0xlbihmaWVsZCkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMzE2LDcgKzMxNiw3IEBA
IEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEhUVFBCb2R5U3RyZWFtKF9Jbl9vcHRf
IElTdHJlYW0qIGRhdGEpCiAKIEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEhUVFBN
ZXRob2QoX0luXyBCU1RSIG1ldGhvZCkKIHsKLSAgICBtX3JlcXVlc3Quc2V0SFRUUE1ldGhvZChT
dHJpbmcobWV0aG9kKSk7CisgICAgbV9yZXF1ZXN0LnNldEhUVFBNZXRob2QobnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKG1ldGhvZCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0zNDYs
OCArMzQ2LDggQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0VVJMKF9Jbl8gQlNU
UiB1cmwpCiAKIEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldFZhbHVlKF9Jbl8gQlNU
UiB2YWx1ZSwgX0luXyBCU1RSIGZpZWxkKQogewotICAgIFN0cmluZyB2YWx1ZVN0cmluZyh2YWx1
ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSk7Ci0gICAgU3RyaW5nIGZpZWxkU3RyaW5nKGZpZWxkLCBT
eXNTdHJpbmdMZW4oZmllbGQpKTsKKyAgICBTdHJpbmcgdmFsdWVTdHJpbmcgPSB3Y2hhclRvU3Ry
aW5nKHZhbHVlLCBTeXNTdHJpbmdMZW4odmFsdWUpKTsKKyAgICBTdHJpbmcgZmllbGRTdHJpbmcg
PSB3Y2hhclRvU3RyaW5nKGZpZWxkLCBTeXNTdHJpbmdMZW4oZmllbGQpKTsKICAgICBtX3JlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKGZpZWxkU3RyaW5nLCB2YWx1ZVN0cmluZyk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0
aW9uQ2VudGVyLmNwcAppbmRleCBmNTdmN2UzOGNkOWRjMjljZmNmYzJjNjRkYjA2MjZkZjkxN2E5
NmRhLi5hNzIzZGE5M2E5OGU3NzMxYzg0MWIwYWNhYjg4NDljZmMwYmZjNjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMTEzLDcgKzExNCw3IEBAIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6ZGVmYXVsdENlbnRlckludGVybmFsKCkKIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25DZW50ZXI6OnBvc3ROb3RpZmljYXRpb25JbnRlcm5hbChJV2ViTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24sIEJTVFIgbm90aWZpY2F0aW9uTmFtZSwgSVVua25vd24qIGFuT2JqZWN0
KQogewotICAgIFN0cmluZyBuYW1lKG5vdGlmaWNhdGlvbk5hbWUsIFN5c1N0cmluZ0xlbihub3Rp
ZmljYXRpb25OYW1lKSk7CisgICAgU3RyaW5nIG5hbWUgPSB3Y2hhclRvU3RyaW5nKG5vdGlmaWNh
dGlvbk5hbWUsIFN5c1N0cmluZ0xlbihub3RpZmljYXRpb25OYW1lKSk7CiAgICAgTWFwcGVkT2Jz
ZXJ2ZXJzOjppdGVyYXRvciBpdCA9IGQtPm1fbWFwcGVkT2JzZXJ2ZXJzLmZpbmQobmFtZSk7CiAg
ICAgaWYgKGl0ID09IGQtPm1fbWFwcGVkT2JzZXJ2ZXJzLmVuZCgpKQogICAgICAgICByZXR1cm47
CkBAIC0xNDQsNyArMTQ1LDcgQEAgSFJFU1VMVCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1
bHRDZW50ZXIoX0NPTV9PdXRwdHJfb3B0XyBJV2ViTm90aWZpY2F0aW9uQ2UKIAogSFJFU1VMVCBX
ZWJOb3RpZmljYXRpb25DZW50ZXI6OmFkZE9ic2VydmVyKF9Jbl9vcHRfIElXZWJOb3RpZmljYXRp
b25PYnNlcnZlciogb2JzZXJ2ZXIsIF9Jbl8gQlNUUiBub3RpZmljYXRpb25OYW1lLCBfSW5fb3B0
XyBJVW5rbm93biogYW5PYmplY3QpCiB7Ci0gICAgU3RyaW5nIG5hbWUobm90aWZpY2F0aW9uTmFt
ZSwgU3lzU3RyaW5nTGVuKG5vdGlmaWNhdGlvbk5hbWUpKTsKKyAgICBTdHJpbmcgbmFtZSA9IHdj
aGFyVG9TdHJpbmcobm90aWZpY2F0aW9uTmFtZSwgU3lzU3RyaW5nTGVuKG5vdGlmaWNhdGlvbk5h
bWUpKTsKICAgICBNYXBwZWRPYnNlcnZlcnM6Oml0ZXJhdG9yIGl0ID0gZC0+bV9tYXBwZWRPYnNl
cnZlcnMuZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gZC0+bV9tYXBwZWRPYnNlcnZlcnMuZW5k
KCkpCiAgICAgICAgIGl0LT52YWx1ZS5hcHBlbmQoT2JqZWN0T2JzZXJ2ZXJQYWlyKGFuT2JqZWN0
LCBvYnNlcnZlcikpOwpAQCAtMTgzLDcgKzE4NCw3IEBAIEhSRVNVTFQgV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpwb3N0Tm90aWZpY2F0aW9uTmFtZShfSW5fIEJTVFIgbm90aWZpY2F0aW9uTmFtZSwK
IAogSFJFU1VMVCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OnJlbW92ZU9ic2VydmVyKF9Jbl9vcHRf
IElXZWJOb3RpZmljYXRpb25PYnNlcnZlciogYW5PYnNlcnZlciwgX0luXyBCU1RSIG5vdGlmaWNh
dGlvbk5hbWUsIF9Jbl9vcHRfIElVbmtub3duKiBhbk9iamVjdCkKIHsKLSAgICBTdHJpbmcgbmFt
ZShub3RpZmljYXRpb25OYW1lLCBTeXNTdHJpbmdMZW4obm90aWZpY2F0aW9uTmFtZSkpOworICAg
IFN0cmluZyBuYW1lID0gd2NoYXJUb1N0cmluZyhub3RpZmljYXRpb25OYW1lLCBTeXNTdHJpbmdM
ZW4obm90aWZpY2F0aW9uTmFtZSkpOwogICAgIE1hcHBlZE9ic2VydmVyczo6aXRlcmF0b3IgaXQg
PSBkLT5tX21hcHBlZE9ic2VydmVycy5maW5kKG5hbWUpOwogICAgIGlmIChpdCA9PSBkLT5tX21h
cHBlZE9ic2VydmVycy5lbmQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCAwMjVjMjBiZWEyMzhjZDZhNDk1
YTI1MGY2YzU1MGNhN2Y1Mjc5ZDY5Li42ZWM3MzU2YTAxMmMwM2Y3MDZiODMwNDI3ZmUwNTU4YzM0
NTNlZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBA
IC0yMywxOSArMjMsMTMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlICJXZWJL
aXQuaCIKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5o
IgogCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmgiCisjaW5jbHVkZSAiV2Vi
S2l0LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8Q29yZUdy
YXBoaWNzL0NvcmVHcmFwaGljcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhv
c3QuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udENh
c2NhZGUuaD4KQEAgLTUxLDYgKzQ1LDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
KworI2lmIFVTRShDRykKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9DQUNGTGF5ZXJUcmVlSG9zdC5oPgorI2VuZGlmCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgc3RkOjpudW1lcmljX2xpbWl0czsKQEAgLTE1Niw3ICsx
NTYsNyBAQCBXZWJQcmVmZXJlbmNlcyogV2ViUHJlZmVyZW5jZXM6OmdldEluc3RhbmNlRm9ySWRl
bnRpZmllcihCU1RSIGlkZW50aWZpZXIpCiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gc2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpOwogCi0gICAgV1RGOjpTdHJpbmcgaWRl
bnRpZmllclN0cmluZyhpZGVudGlmaWVyLCBTeXNTdHJpbmdMZW4oaWRlbnRpZmllcikpOworICAg
IFdURjo6U3RyaW5nIGlkZW50aWZpZXJTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKGlkZW50aWZpZXIs
IFN5c1N0cmluZ0xlbihpZGVudGlmaWVyKSk7CiAgICAgaWYgKGlkZW50aWZpZXJTdHJpbmcuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gc2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpOwogCkBA
IC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0SW5zdGFuY2UoV2ViUHJl
ZmVyZW5jZXMqIGluc3RhbmNlLCBCU1RSIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpZGVudGlm
aWVyIHx8ICFpbnN0YW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIFdURjo6U3RyaW5nIGlkZW50
aWZpZXJTdHJpbmcoaWRlbnRpZmllciwgU3lzU3RyaW5nTGVuKGlkZW50aWZpZXIpKTsKKyAgICBX
VEY6OlN0cmluZyBpZGVudGlmaWVyU3RyaW5nID0gd2NoYXJUb1N0cmluZyhpZGVudGlmaWVyLCBT
eXNTdHJpbmdMZW4oaWRlbnRpZmllcikpOwogICAgIGlmIChpZGVudGlmaWVyU3RyaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHdlYlByZWZlcmVuY2VzSW5zdGFuY2VzKCkuYWRk
KGlkZW50aWZpZXJTdHJpbmcsIGluc3RhbmNlKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFdl
YlByZWZlcmVuY2VzOjpyZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVyKEJTVFIgaWRlbnRpZmll
cikKICAgICBpZiAoIWlkZW50aWZpZXIgfHwgd2ViUHJlZmVyZW5jZXNJbnN0YW5jZXMoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdURjo6U3RyaW5nIGlkZW50aWZpZXJTdHJp
bmcoaWRlbnRpZmllciwgU3lzU3RyaW5nTGVuKGlkZW50aWZpZXIpKTsKKyAgICBXVEY6OlN0cmlu
ZyBpZGVudGlmaWVyU3RyaW5nID0gd2NoYXJUb1N0cmluZyhpZGVudGlmaWVyLCBTeXNTdHJpbmdM
ZW4oaWRlbnRpZmllcikpOwogICAgIGlmIChpZGVudGlmaWVyU3RyaW5nLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIFdlYlByZWZlcmVuY2VzKiB3ZWJQcmVmZXJlbmNlID0gd2ViUHJl
ZmVyZW5jZXNJbnN0YW5jZXMoKS5nZXQoaWRlbnRpZmllclN0cmluZyk7CkBAIC0yMjAxLDcgKzIy
MDEsNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRDU1NPTVZpZXdTY3JvbGxpbmdBUElF
bmFibGVkKEJPT0wgZW5hYmxlZCkKIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QXBwbGlj
YXRpb25JZChCU1RSIGFwcGxpY2F0aW9uSWQpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbklkID0gU3Ry
aW5nKGFwcGxpY2F0aW9uSWQpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgbV9hcHBsaWNhdGlvbklk
ID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGFwcGxpY2F0aW9uSWQpLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5
Li5kNTdhZTE2YjQ0NGExN2RiZDM4N2Y5OTIzYjQzNmIyNTRlMjQyOTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
TWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RyZWFtLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9CU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05OCw5ICs5OSw5IEBA
IEhSRVNVTFQgV2ViUmVzb3VyY2U6OmluaXRXaXRoRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRh
LCBfSW5fIEJTVFIgdXJsLCBfSW5fIEJTCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKICAgICBtX3Vy
bCA9IE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpOwotICAgIG1fbWltZVR5cGUg
PSBTdHJpbmcobWltZVR5cGUpOwotICAgIG1fdGV4dEVuY29kaW5nTmFtZSA9IFN0cmluZyh0ZXh0
RW5jb2RpbmdOYW1lKTsKLSAgICBtX2ZyYW1lTmFtZSA9IFN0cmluZyhmcmFtZU5hbWUpOworICAg
IG1fbWltZVR5cGUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWltZVR5cGUpOworICAg
IG1fdGV4dEVuY29kaW5nTmFtZSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZXh0RW5j
b2RpbmdOYW1lKTsKKyAgICBtX2ZyYW1lTmFtZSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmlu
ZyhmcmFtZU5hbWUpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCmluZGV4IGU3NTk0NmIyODQyNTQ3MmU4MWJjZjdi
MzhmOWIwYzMxODk2MTYxOWYuLjdhN2IwNWI1YTBhZDdmYmFjODNiMzA2ODliMmU3ZGFiMjI3MTk1
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0JTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEyMCw3ICsxMjEsNyBAQCBIUkVTVUxU
IFdlYlVSTENyZWRlbnRpYWw6OmluaXRXaXRoVXNlcihfSW5fIEJTVFIgdXNlciwgX0luXyBCU1RS
IHBhc3N3b3JkLCBXZWJVUgogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIH0KIAotICAgIG1f
Y3JlZGVudGlhbCA9IENyZWRlbnRpYWwoU3RyaW5nKHVzZXIsIFN5c1N0cmluZ0xlbih1c2VyKSks
IFN0cmluZyhwYXNzd29yZCwgU3lzU3RyaW5nTGVuKHBhc3N3b3JkKSksIGNvcmVQZXJzaXN0ZW5j
ZSk7CisgICAgbV9jcmVkZW50aWFsID0gQ3JlZGVudGlhbCh3Y2hhclRvU3RyaW5nKHVzZXIsIFN5
c1N0cmluZ0xlbih1c2VyKSksIHdjaGFyVG9TdHJpbmcocGFzc3dvcmQsIFN5c1N0cmluZ0xlbihw
YXNzd29yZCkpLCBjb3JlUGVyc2lzdGVuY2UpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAppbmRl
eCBkNzIxOGM5NDI3MDgwM2Y2ZGMyNGQxMTkwNzA3ODUyNzE1NDc2N2JmLi5hNzcxYjRkMGQwYWZk
NzJiYTk2NTdlOTVmNzMzZDRmMmVlNDk0OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAgLTIzLDExICsyMywxMiBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktp
dERMTC5oIgogI2luY2x1ZGUgIldlYlVSTFByb3RlY3Rpb25TcGFjZS5oIgogCisjaW5jbHVkZSAi
V2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC0xNjQsOCArMTY1LDggQEAgSFJFU1VMVCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmluaXRX
aXRoSG9zdChfSW5fIEJTVFIgaG9zdCwgaW50IHBvcnQsIF9Jbl8gQlNUUgogICAgIGVsc2UgaWYg
KEJTdHJpbmcocHJvdG9jb2wpID09IHdlYlVSTFByb3RlY3Rpb25TcGFjZUZUUFNCU3RyaW5nKQog
ICAgICAgICBzZXJ2ZXJUeXBlID0gUHJvdGVjdGlvblNwYWNlU2VydmVyRlRQUzsKIAotICAgIG1f
cHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKFN0cmluZyhob3N0LCBTeXNTdHJpbmdM
ZW4oaG9zdCkpLCBwb3J0LCBzZXJ2ZXJUeXBlLCAKLSAgICAgICAgU3RyaW5nKHJlYWxtLCBTeXNT
dHJpbmdMZW4ocmVhbG0pKSwgY29yZVNjaGVtZShhdXRoZW50aWNhdGlvbk1ldGhvZCkpOworICAg
IG1fcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHdjaGFyVG9TdHJpbmcoaG9zdCwg
U3lzU3RyaW5nTGVuKGhvc3QpKSwgcG9ydCwgc2VydmVyVHlwZSwgCisgICAgICAgIHdjaGFyVG9T
dHJpbmcocmVhbG0sIFN5c1N0cmluZ0xlbihyZWFsbSkpLCBjb3JlU2NoZW1lKGF1dGhlbnRpY2F0
aW9uTWV0aG9kKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTE4OSw4ICsxOTAsOCBAQCBI
UkVTVUxUIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6aW5pdFdpdGhQcm94eUhvc3QoX0luXyBCU1RS
IGhvc3QsIGludCBwb3J0LCBfSW5fCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIAotICAgIG1fcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKFN0cmluZyho
b3N0LCBTeXNTdHJpbmdMZW4oaG9zdCkpLCBwb3J0LCBzZXJ2ZXJUeXBlLCAKLSAgICAgICAgU3Ry
aW5nKHJlYWxtLCBTeXNTdHJpbmdMZW4ocmVhbG0pKSwgY29yZVNjaGVtZShhdXRoZW50aWNhdGlv
bk1ldGhvZCkpOworICAgIG1fcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHdjaGFy
VG9TdHJpbmcoaG9zdCwgU3lzU3RyaW5nTGVuKGhvc3QpKSwgcG9ydCwgc2VydmVyVHlwZSwgCisg
ICAgICAgIHdjaGFyVG9TdHJpbmcocmVhbG0sIFN5c1N0cmluZ0xlbihyZWFsbSkpLCBjb3JlU2No
ZW1lKGF1dGhlbnRpY2F0aW9uTWV0aG9kKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCA1NjliOTgyNjRiNDVi
ODg3OGI1ODcyYzMzMTJmZTEzODQyYzUyMGM3Li4yMzA0NWFmMWIxMjM3ZjIwMjUzNzVkOTBmOWNm
MjVlZDMzYjMzNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2Uu
Y3BwCkBAIC0yNSwyMCArMjUsMTAgQEAKIAogI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCiAK
LSNpbmNsdWRlICJXZWJLaXRETEwuaCIKLSNpbmNsdWRlICJXZWJLaXQuaCIKLQogI2luY2x1ZGUg
IkNPTVByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCi0KLSNp
ZiBVU0UoQ0cpCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgotI2VuZGlm
Ci0KLSNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmg+Ci0jZW5kaWYKLQorI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUgIldlYktp
dERMTC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TG9jYWxpemVkU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpA
QCAtNDcsNiArMzcsMTUgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8d2NoYXIu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3Ry
aW5nRXh0cmFzLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVH
cmFwaGljcy5oPgorI2VuZGlmCisKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorI2luY2x1ZGUg
PHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTI5NSw3ICsyOTQsNyBAQCBIUkVTVUxUIFdlYlVSTFJlc3BvbnNlOjpleHBl
Y3RlZENvbnRlbnRMZW5ndGgoX091dF8gbG9uZyBsb25nKiByZXN1bHQpCiAKIEhSRVNVTFQgV2Vi
VVJMUmVzcG9uc2U6OmluaXRXaXRoVVJMKF9Jbl8gQlNUUiB1cmwsIF9Jbl8gQlNUUiBtaW1lVHlw
ZSwgaW50IGV4cGVjdGVkQ29udGVudExlbmd0aCwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUp
CiB7Ci0gICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoTWFyc2hhbGxpbmdIZWxwZXJz
OjpCU1RSVG9LVVJMKHVybCksIFN0cmluZyhtaW1lVHlwZSksIGV4cGVjdGVkQ29udGVudExlbmd0
aCwgU3RyaW5nKHRleHRFbmNvZGluZ05hbWUpKTsKKyAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZShNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgbnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKG1pbWVUeXBlKSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBudWxsVGVy
bWluYXRlZFdDaGFyVG9TdHJpbmcodGV4dEVuY29kaW5nTmFtZSkpOwogICAgIHJldHVybiBTX09L
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcAppbmRleCA0ODEyMzg0NzEzYzhiOTlkYTVjYmE1YjYzZjI1NDQ0OWZlNTBj
NjQyLi42YjIxYmFmNjcwMjFkNDQ2ZDdmNjc5OWZkYzg3YTMyOWRiZjgzY2JmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
QEAgLTI2LDkgKzI2LDkgQEAKIAogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgogI2lu
Y2x1ZGUgIldlYktpdERMTC5oIgotCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJh
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtODMsNyArODMsNyBAQCBIUkVT
VUxUIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQg
cmlpZCwgX0NPTV9PdXRwdHJfCiAKIEhSRVNVTFQgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpw
YXJzZShfSW5fIEJTVFIgcGF0dGVyblN0cmluZykKIHsKLSAgICBtX3BhdHRlcm4gPSBVc2VyQ29u
dGVudFVSTFBhdHRlcm4oU3RyaW5nKHBhdHRlcm5TdHJpbmcsIFN5c1N0cmluZ0xlbihwYXR0ZXJu
U3RyaW5nKSkpOworICAgIG1fcGF0dGVybiA9IFVzZXJDb250ZW50VVJMUGF0dGVybih3Y2hhclRv
U3RyaW5nKHBhdHRlcm5TdHJpbmcsIFN5c1N0cmluZ0xlbihwYXR0ZXJuU3RyaW5nKSkpOwogICAg
IHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDNm
ZjgxY2YyMDg5ZGU2NjgwZWNhMzg1NmY1NzNjMjI5NTE3NDhmMGEuLmJlNGQwNzFiMTA3ZjBlYmE1
NmVlYmM4OWI1NDk1YzJkNDg5ZTRlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CkBAIC0xNjksMTMgKzE2OSwyNSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUJy
b2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzVG91Y2guaD4KICNpbmNsdWRl
IDxjb21kZWYuaD4KKyNpbmNsdWRlIDxjb211dGlsLmg+CiAjaW5jbHVkZSA8ZDJkMS5oPgorI2lu
Y2x1ZGUgPGRpbW0uaD4KKyNpbmNsdWRlIDxvbGVhY2MuaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4K
KyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CisjaW5jbHVkZSA8d2lu
dXNlci5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNz
UHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KICNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L3dpbi9HRElPYmplY3QuaD4KIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3Mv
Q0dDb250ZXh0Lmg+CkBAIC0yMDUsMTggKzIxNyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GdWxs
U2NyZWVuQ29udHJvbGxlci5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxTaGxPYmouaD4KLSNpbmNs
dWRlIDxjb211dGlsLmg+Ci0jaW5jbHVkZSA8ZGltbS5oPgotI2luY2x1ZGUgPG9sZWFjYy5oPgot
I2luY2x1ZGUgPHdjaGFyLmg+Ci0jaW5jbHVkZSA8d2luZG93c3guaD4KLSNpbmNsdWRlIDx3aW51
c2VyLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRl
IDx3dGYvd2luL0dESU9iamVjdC5oPgotCiAjZGVmaW5lIFdFQktJVF9EUkFXSU5HIDQKIAogLy8g
U29mdCBsaW5rIGZ1bmN0aW9ucyBmb3IgZ2VzdHVyZXMgYW5kIHBhbm5pbmcgZmVlZGJhY2sKQEAg
LTI1NiwxNyArMjU2LDE3IEBAIFdlYlZpZXcqIGtpdChQYWdlKiBwYWdlKQogCiBzdGF0aWMgaW5s
aW5lIEF0b21pY1N0cmluZyB0b0F0b21pY1N0cmluZyhCU1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJu
IEF0b21pY1N0cmluZyhic3RyLCBTeXNTdHJpbmdMZW4oYnN0cikpOworICAgIHJldHVybiBBdG9t
aWNTdHJpbmcod2NoYXJBc1VDaGFyKGJzdHIpLCBTeXNTdHJpbmdMZW4oYnN0cikpOwogfQogCiBz
dGF0aWMgaW5saW5lIFN0cmluZyB0b1N0cmluZyhCU1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJuIFN0
cmluZyhic3RyLCBTeXNTdHJpbmdMZW4oYnN0cikpOworICAgIHJldHVybiB3Y2hhclRvU3RyaW5n
KGJzdHIsIFN5c1N0cmluZ0xlbihic3RyKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRv
U3RyaW5nKEJTdHJpbmcgJmJzdHIpCiB7Ci0gICAgcmV0dXJuIFN0cmluZyhic3RyLCBTeXNTdHJp
bmdMZW4oYnN0cikpOworICAgIHJldHVybiB3Y2hhclRvU3RyaW5nKGJzdHIsIFN5c1N0cmluZ0xl
bihic3RyKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgVVJMIHRvVVJMKEJTVFIgYnN0cikKQEAgLTE1
OTgsMTMgKzE1OTgsMTMgQEAgc3RhdGljIEhNRU5VIGNyZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1z
KGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICAgICAgc3dpdGNoIChp
dGVtLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFjdGlvblR5cGU6CiAgICAgICAgIGNhc2UgQ2hl
Y2thYmxlQWN0aW9uVHlwZToKLSAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8
IE1GX1NUUklORywgaXRlbS5hY3Rpb24oKSwgaXRlbS50aXRsZSgpLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBm
bGFncyB8IE1GX1NUUklORywgaXRlbS5hY3Rpb24oKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKGl0ZW0udGl0bGUoKSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFNlcGFyYXRvclR5cGU6CiAgICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3Mg
fCBNRl9TRVBBUkFUT1IsIGl0ZW0uYWN0aW9uKCksIG51bGxwdHIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgU3VibWVudVR5cGU6Ci0gICAgICAgICAgICA6OkFwcGVuZE1lbnUo
bWVudSwgZmxhZ3MgfCBNRl9QT1BVUCwgKFVJTlRfUFRSKWNyZWF0ZUNvbnRleHRNZW51RnJvbUl0
ZW1zKGl0ZW0uc3ViTWVudUl0ZW1zKCkpLCBpdGVtLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCkpOworICAgICAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZs
YWdzIHwgTUZfUE9QVVAsIChVSU5UX1BUUiljcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyhpdGVt
LnN1Yk1lbnVJdGVtcygpKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGl0ZW0udGl0bGUo
KSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMTgx
NCw3ICsxODE0LDcgQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3UGFyYW0s
IExQQVJBTSBsUGFyYW0pCiAgICAgOjpEZXN0cm95TWVudShtX2N1cnJlbnRDb250ZXh0TWVudSk7
CiAgICAgbV9jdXJyZW50Q29udGV4dE1lbnUgPSBudWxscHRyOwogCi0gICAgU3RyaW5nIHRpdGxl
KGJ1ZmZlci5kYXRhKCksIG1lbnVJdGVtSW5mby5jY2gpOworICAgIFN0cmluZyB0aXRsZSA9IHdj
aGFyVG9TdHJpbmcoYnVmZmVyLmRhdGEoKSwgbWVudUl0ZW1JbmZvLmNjaCk7CiAgICAgQ29udGV4
dE1lbnVBY3Rpb24gYWN0aW9uID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KG1lbnVJ
dGVtSW5mby53SUQpOwogCiAgICAgaWYgKGFjdGlvbiA+PSBDb250ZXh0TWVudUl0ZW1CYXNlQXBw
bGljYXRpb25UYWcpIHsKQEAgLTMyMzQsOCArMzIzNCw4IEBAIHZvaWQgV2ViVmlldzo6c2V0VG9v
bFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAgICAgIGluZm8uY2JTaXplID0gc2l6ZW9m
KGluZm8pOwogICAgICAgICBpbmZvLnVGbGFncyA9IFRURl9JRElTSFdORDsKICAgICAgICAgaW5m
by51SWQgPSByZWludGVycHJldF9jYXN0PFVJTlRfUFRSPihtX3ZpZXdXaW5kb3cpOwotICAgICAg
ICBWZWN0b3I8VUNoYXI+IHRvb2xUaXBDaGFyYWN0ZXJzID0gbV90b29sVGlwLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBidWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFr
ZSB0aGUgU2VuZE1lc3NhZ2UgY2FsbAotICAgICAgICBpbmZvLmxwc3pUZXh0ID0gY29uc3RfY2Fz
dDxVQ2hhcio+KHRvb2xUaXBDaGFyYWN0ZXJzLmRhdGEoKSk7CisgICAgICAgIFZlY3Rvcjx3Y2hh
cl90PiB0b29sVGlwQ2hhcmFjdGVycyA9IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3Rv
b2xUaXApOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIFNlbmRNZXNz
YWdlIGNhbGwKKyAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KHRv
b2xUaXBDaGFyYWN0ZXJzLmRhdGEoKSk7CiAgICAgICAgIDo6U2VuZE1lc3NhZ2UobV90b29sVGlw
SHduZCwgVFRNX1VQREFURVRJUFRFWFQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaW5m
bykpOwogICAgIH0KIApAQCAtMzY1NSw3ICszNjU1LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZyhfSW5fIEJTVFIgc2NyaXB0LCAvLyBh
c3MKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAot
ICAgIGF1dG8gc2NyaXB0RXhlY3V0aW9uUmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVj
dXRlU2NyaXB0KFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpOworICAgIGF1dG8gc2NyaXB0RXhl
Y3V0aW9uUmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KG51bGxUZXJt
aW5hdGVkV0NoYXJUb1N0cmluZyhzY3JpcHQpLCB0cnVlKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvblJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBlbHNlIGlmIChzY3JpcHRF
eGVjdXRpb25SZXN1bHQuaXNTdHJpbmcoKSkgewpAQCAtNDAxNCw3ICs0MDE0LDcgQEAgSFJFU1VM
VCBXZWJWaWV3OjpzZXRHcm91cE5hbWUoX0luXyBCU1RSIGdyb3VwTmFtZSkKICAgICBpZiAobV93
ZWJWaWV3R3JvdXApCiAgICAgICAgIG1fd2ViVmlld0dyb3VwLT5yZW1vdmVXZWJWaWV3KHRoaXMp
OwogCi0gICAgbV93ZWJWaWV3R3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3Vw
TmFtZSwgbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKG1fcHJlZmVyZW5jZXMuZ2V0KCkpKTsKKyAg
ICBtX3dlYlZpZXdHcm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUod2NoYXJBc1VDaGFy
KGdyb3VwTmFtZSksIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChtX3ByZWZlcmVuY2VzLmdldCgp
KSk7CiAgICAgbV93ZWJWaWV3R3JvdXAtPmFkZFdlYlZpZXcodGhpcyk7CiAKICAgICBpZiAoIW1f
cGFnZSkKQEAgLTY5MzQsNyArNjkzNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlw
dFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWlu
dGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJTY3Jp
cHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9T
dHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2VyU2Ny
aXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pih3Y2hhckFzVUNoYXIoc291cmNlKSwg
dG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCiAg
ICAgICAgIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLCBpbmplY3Rp
b25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFy
dCA6IEluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYklu
amVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25s
eSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0
KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKQEAgLTY5NjEsNyArNjk2MSw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBn
cm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAK
ICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdv
cmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlz
dCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENv
dW50KSwKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNo
ZWV0Pih3Y2hhckFzVUNoYXIoc291cmNlKSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hp
dGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2ts
aXN0Q291bnQpLAogICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1l
cyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVz
ZXJMZXZlbCk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2Vy
U3R5bGVTaGVldCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5F
eGlzdGluZ0RvY3VtZW50cyk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC03MTEzLDcgKzcxMTMsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OmFkZFZpc2l0ZWRMaW5rcyhfX2lub3V0X2Vjb3VudF9mdWxsKHZp
c2l0ZWRVUkxDb3VudCkgQlNUUiogdmlzaQogICAgICAgICBCU1RSIHVybCA9IHZpc2l0ZWRVUkxz
W2ldOwogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBTeXNTdHJpbmdMZW4odXJsKTsKIAotICAg
ICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFZpc2l0ZWRMaW5rKFN0cmluZyh1cmwsIGxlbmd0aCkp
OworICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFZpc2l0ZWRMaW5rKHdjaGFyVG9TdHJpbmco
dXJsLCBsZW5ndGgpKTsKICAgICB9CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlND
T25seS5jbWFrZQppbmRleCA1MGRmMDNlYjYwMDQ0ZWEwNzhmZWFjM2I1N2MyYmU5Yzc2YTlhN2Yx
Li45NDc2YWRjMDBjNjRkZGM2OWE2YTljODU2MThlMDE3Njg0ODExMDQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNKU0NPbmx5LmNtYWtlCkBAIC05Nyw5ICs5Nyw2IEBAIGVuZGlmICgpCiAKIGlmIChOT1QgQVBQ
TEUpCiAgICAgZmluZF9wYWNrYWdlKElDVSBSRVFVSVJFRCkKLSAgICBpZiAoV0lOMzIpCi0gICAg
ICAgIGFkZF9kZWZpbml0aW9ucygtRFVDSEFSX1RZUEU9d2NoYXJfdCkKLSAgICBlbmRpZiAoKQog
ZWxzZSAoKQogICAgIGFkZF9kZWZpbml0aW9ucygtRFVfRElTQUJMRV9SRU5BTUlORz0xIC1EVV9T
SE9XX0NQTFVTUExVU19BUEk9MCkKICAgICBzZXQoSUNVX0xJQlJBUklFUyBsaWJpY3Vjb3JlLmR5
bGliKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZQppbmRleCAwMTdiMjZkOWIwMWQyODU2MTMyNmI4ZWQ2ODI3
NzNlMTY3Yzg5MzlmLi5mYTY4MTQ1YWU4YmFiNTgyMTI5YjFjNDJhNzYzOGY1NDRiMDM0ZGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtMTUzLDcgKzE1Myw2IEBAIHNldChQQUxfTElCUkFSWV9U
WVBFIFNUQVRJQykKIHNldChXZWJLaXRMZWdhY3lfTElCUkFSWV9UWVBFIFNIQVJFRCkKIAogZmlu
ZF9wYWNrYWdlKElDVSBSRVFVSVJFRCkKLWFkZF9kZWZpbml0aW9ucygtRFVDSEFSX1RZUEU9d2No
YXJfdCkKIAogIyBJZiA8d2luc29jazIuaD4gaXMgbm90IGluY2x1ZGVkIGJlZm9yZSA8d2luZG93
cy5oPiByZWRlZmluaXRpb24gZXJyb3JzIG9jY3VyCiAjIHVubGVzcyBfV0lOU09DS0FQSV8gaXMg
ZGVmaW5lZCBiZWZvcmUgPHdpbmRvd3MuaD4gaXMgaW5jbHVkZWQKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NjhkNmEwYzYyYzMwZThkNDk3NDdk
MTk4NzM3MWE5Y2NmMGQ1NGU1Li5kMmFhMjViZGIyNTQ0NDU1NDczNmNjZDg3MmM2ZWFmNmFjODA0
NmRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTktMDMtMDUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBz
dG9wZ2FwIGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ09wZXJhdG9ycy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgRGVsZXRlIHdjaGFyIHRlc3RzIC0tIHRoZXNlIHdlcmUgTVNWQy1vbmx5IGFuZCB3ZSB3
b24ndCBiZSB1c2luZyBTdHJpbmc6Om9wZXJhdG9yKyBnb2luZyBmb3J3YXJkIGFueXdheS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6cnVuVUlTY3JpcHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHA6CisgICAgICAgIChsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKToKKyAg
ICAgICAgKGZpbmRGb250RmFsbGJhY2spOgorICAgICAgICAoYWRkRm9udEZhbGxiYWNrSWZQcmVz
ZW50KToKKyAgICAgICAgKHJlbW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudCk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVJbmplY3RlZEJ1bmRsZVBh
dGgpOgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVycyB3aGVyZSBuZWVkZWQuCisKIDIwMTktMDMt
MDUgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CiAKICAgICAgICAg
W0N1cmxdIEltcGxlbWVudCBDb29raWUgQWNjZXB0IFBvbGljeS4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHAKaW5kZXggNjIyMjI0MmEwYTg5MDMxZDZkYTFiOGEzOGY5MDg3YTE1ZjdlMWFk
YS4uNDdkZGE2YmVlMDhmZGRlMGY1MjRlNGI2NmQ0YzhhYmQ1ZGQ3NjRiZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFz
Lmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29y
ZVRocmVhZFJ1bi5oPgpAQCAtMjQ2NCw3ICsyNDY1LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpydW5V
SVNjcmlwdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1ZhbHVl
UmUKICAgICBpZiAoIW1fVUlTY3JpcHRDb250ZXh0KQogICAgICAgICBtX1VJU2NyaXB0Q29udGV4
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKIAotICAg
IFN0cmluZyBzY3JpcHRTdHJpbmcoSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyKHNjcmlwdCksIEpT
U3RyaW5nR2V0TGVuZ3RoKHNjcmlwdCkpOworICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSB3Y2hh
clRvU3RyaW5nKEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQpLCBKU1N0cmluZ0dldExl
bmd0aChzY3JpcHQpKTsKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQoc2NyaXB0
U3RyaW5nLCBjYWxsYmFja0lEKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKaW5kZXggZGFlNWRlNzYxMDU3NmU2ZTYzODI2YWFmNmY2YjY5MGRjOGNi
MWU0My4uNTM5MWIwNDgwNGQ1ZDk4ZDU3YmU4MDBiMjA1M2VhYjE2YTM2Mjc1NSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00Myw3ICs0Myw2IEBA
CiAjaW5jbHVkZSAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlSXRl
bS5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UZXN0UnVubmVyVXRp
bHMuaD4KICNpbmNsdWRlIDxXZWJLaXRMZWdhY3kvV2ViS2l0Lmg+CkBAIC02Nyw2ICs2Niw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+
CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIFN0cmluZyBsaWJyYXJ5UGF0aEZvckR1bXBSZW5k
ZXJUcmVlKCkKICAgICAgICAgd3N0cmluZyBwYXRoID0gYnVmZmVyLmRhdGEoKTsKICAgICAgICAg
aWYgKCFwYXRoLmVtcHR5KCkgJiYgKHBhdGhbcGF0aC5sZW5ndGgoKSAtIDFdICE9IEwnXFwnKSkK
ICAgICAgICAgICAgIHBhdGguYXBwZW5kKEwiXFwiKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZyAo
cGF0aC5kYXRhKCksIHBhdGgubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gd2NoYXJUb1N0cmlu
ZyhwYXRoLmRhdGEoKSwgcGF0aC5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwpAQCAtMTAzOCwxMyAr
MTAzOCwxMyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0
aE9yVXJsKQogICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKHBhdGhPclVybCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFUSF07
Ci0gICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCisgICAgaWYgKCFf
d2Z1bGxwYXRoKGZ1bGxQYXRoLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aFRvRm9u
dEZhbGxiYWNrKS5kYXRhKCksIF9NQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogCiAgICAgaWYgKCE6OlBhdGhJc0RpcmVjdG9yeVcoZnVsbFBhdGgpKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIFN0cmluZyBwYXRoVG9DaGVjayA9IGZ1bGxQYXRo
OworICAgIFN0cmluZyBwYXRoVG9DaGVjayA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhm
dWxsUGF0aCk7CiAKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91
dFRlc3RzIjsKIApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZh
bGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpp
dGVyYXRvciBwb3MgPSBwb3NzaWJsZVBhdGhzLmJlZ2luKCk7IHBvcyAhPSBwb3NzaWJsZVBhdGhz
LmVuZCgpOyArK3BvcykgewogICAgICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKnBvcywgInJlc291cmNlc1xcIik7CiAKLSAgICAg
ICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQorICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3Rv
cnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoVG9Gb250RmFsbGJhY2spLmRhdGEo
KSkpCiAgICAgICAgICAgICByZXR1cm4gcGF0aFRvRm9udEZhbGxiYWNrOwogICAgIH0KIApAQCAt
MTA4Myw3ICsxMDgzLDcgQEAgc3RhdGljIHZvaWQgYWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KGNv
bnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKIAogICAgIFN0cmluZyBmb250RmFsbGJhY2sg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwg
Ik1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKLSAgICBpZiAoITo6UGF0aEZp
bGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSkpCisgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZm9udEZhbGxiYWNrKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICA6OnNl
dFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGZvbnRGYWxsYmFjay5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUZv
bnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgpCiAKICAg
ICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIp
OwogCi0gICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQorICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1co
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZvbnRGYWxsYmFjaykuZGF0YSgpKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgOjpzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihu
dWxscHRyKTsKQEAgLTE1NDEsMTIgKzE1NDEsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0
IGNoYXIqIGFyZ3ZbXSkKICAgICBTdHJpbmcgZGVza3RvcE5hbWUgPSBtYWtlU3RyaW5nKCJkZXNr
dG9wIiwgcHJvY2Vzc0lkKTsKICAgICBIREVTSyBkZXNrdG9wID0gbnVsbHB0cjsKIAotICAgIGF1
dG8gd2luZG93c1N0YXRpb24gPSA6OkNyZWF0ZVdpbmRvd1N0YXRpb24od2luZG93U3RhdGlvbk5h
bWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIENXRl9DUkVBVEVfT05M
WSwgV0lOU1RBX0FMTF9BQ0NFU1MsIG51bGxwdHIpOworICAgIGF1dG8gd2luZG93c1N0YXRpb24g
PSA6OkNyZWF0ZVdpbmRvd1N0YXRpb24oc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHdpbmRv
d1N0YXRpb25OYW1lKS5kYXRhKCksIENXRl9DUkVBVEVfT05MWSwgV0lOU1RBX0FMTF9BQ0NFU1Ms
IG51bGxwdHIpOwogICAgIGlmICh3aW5kb3dzU3RhdGlvbikgewogICAgICAgICBpZiAoITo6U2V0
UHJvY2Vzc1dpbmRvd1N0YXRpb24od2luZG93c1N0YXRpb24pKQogICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJTZXRQcm9jZXNzV2luZG93U3RhdGlvbiBmYWlsZWQgd2l0aCBlcnJvciAlbHVc
biIsIDo6R2V0TGFzdEVycm9yKCkpOwogCi0gICAgICAgIGRlc2t0b3AgPSA6OkNyZWF0ZURlc2t0
b3AoZGVza3RvcE5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIG51
bGxwdHIsIG51bGxwdHIsIDAsIEdFTkVSSUNfQUxMLCBudWxscHRyKTsKKyAgICAgICAgZGVza3Rv
cCA9IDo6Q3JlYXRlRGVza3RvcChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVza3RvcE5h
bWUpLmRhdGEoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgR0VORVJJQ19BTEwsIG51bGxwdHIpOwog
ICAgICAgICBpZiAoIWRlc2t0b3ApCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBjcmVhdGUgZGVza3RvcCB3aXRoIGVycm9yICVsdVxuIiwgOjpHZXRMYXN0RXJyb3IoKSk7
CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ09wZXJhdG9ycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJp
bmdPcGVyYXRvcnMuY3BwCmluZGV4IDlhYmNiYjNhODdkOGMwNzJkOTZkMDQyZGJmZjBhYWU0Y2Q3
YzY2ZjEuLjBlM2JmOThmODgyMTRmYzQ3YzliNTMzNWY3NGIwNmQzZTUzYTI5NmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAt
MjUwLDc4ICsyNTAsNiBAQCBURVNUKFdURiwgU3RyaW5nT3BlcmF0b3JzKQogICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZ1ZpZXcgKyBsaXRlcmFsICsgc3RyaW5nICsgbGl0
ZXJhbCArIGF0b21pY1N0cmluZyArIGxpdGVyYWwpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIHN0cmluZ1ZpZXcgKyAobGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9t
aWNTdHJpbmcgKyBsaXRlcmFsKSk7CiAgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
KHN0cmluZ1ZpZXcgKyBsaXRlcmFsKSArIChzdHJpbmcgKyBsaXRlcmFsKSArIChhdG9taWNTdHJp
bmcgKyBsaXRlcmFsKSk7Ci0KLSNpZiBDT01QSUxFUihNU1ZDKQotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDEsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygxLCBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMSwgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpOwot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDEsIGF0b21pY1N0cmluZyArIEwid2lkZSBz
dHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBMIndpZGUgc3RyaW5n
IiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIHN0cmlu
Z1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIChzdHJp
bmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcg
KyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJp
bmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
KEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIGF0b21p
Y1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21pY1N0cmlu
ZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21pY1N0cmluZyArIChMIndpZGUgc3Ry
aW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChhdG9t
aWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMCwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmdWaWV3KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBMIndpZGUgc3Ry
aW5nIiArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmll
dykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMCwgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyAr
IEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBzdHJp
bmdWaWV3ICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgKHN0cmluZ1ZpZXcgKyBMIndpZGUg
c3RyaW5nIikgKyAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSk7Ci0KLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBz
dHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIChzdHJpbmcg
KyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5n
VmlldykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChMIndpZGUgc3RyaW5n
IiArIHN0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBz
dHJpbmciICsgc3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIHN0cmluZyArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSk7Ci0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNT
dHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSk7
Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIHN0
cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRv
bWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3Ry
aW5nIiArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3Ry
aW5nIiArIGF0b21pY1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IChMIndpZGUgc3RyaW5nIiArIHN0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3
KSArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwi
d2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVD
VF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArIChMIndpZGUgc3RyaW5nIiArIHN0cmlu
Z1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKHN0cmluZyArIEwid2lkZSBzdHJp
bmciKSArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwi
d2lkZSBzdHJpbmciKSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndp
ZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCBMIndpZGUgc3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0
cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykgKyAoTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykpOwotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJp
bmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmlu
ZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21pY1N0cmluZyArIChM
IndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwi
d2lkZSBzdHJpbmciKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKGF0b21p
Y1N0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAo
c3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmci
ICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZykpOwotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0
cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiAr
IHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0b21pY1N0cmlu
ZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIGF0
b21pY1N0cmluZyArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5n
IiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsg
TCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0KLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBM
IndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIChzdHJp
bmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiAr
IHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChMIndpZGUgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChM
IndpZGUgc3RyaW5nIiArIHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBz
dHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIHN0cmluZ1ZpZXcgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcg
KyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikgKyAo
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmci
KSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiAr
IHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsg
YXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUg
c3RyaW5nIiArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUg
c3RyaW5nIiArIGF0b21pY1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nKSArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyAr
IEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZ1ZpZXcgKyAoTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmci
KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKHN0cmluZ1ZpZXcgKyBMIndp
ZGUgc3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyAr
IEwid2lkZSBzdHJpbmciKSk7Ci0jZW5kaWYKIH0KIAogVEVTVChXVEYsIENvbmNhdGVuYXRlQ2hh
cmFjdGVyQXJyYXlBbmRFbXB0eVN0cmluZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2lu
L1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAppbmRleCAyZTU0MzA4ODExMWQzMWE1OTdlZGYxYjMw
MTJhOTI0NmU4ZWYwMWNjLi45OWE5NzE0NGNhM2YxODViMzI2ZTM5MjM1ZTRmMjZmNTAwOTJhNmJi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dp
bi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4u
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5KCkKIAog
V0tTdHJpbmdSZWYgY3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRoKCkKIHsKLSAgICBhdXRvIHBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCks
IFN0cmluZyhMIlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CisgICAgYXV0byBw
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9y
eSgpLCBTdHJpbmcoIlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CiAgICAgcmV0
dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4YzkwODkyNTdkOWFj
YzQwNmY4ZjQwYjlhMmExZTE4M2ExNDdmZjNkLi40NjM2MDQyMWNmN2I2ZGM0MTE2M2MzZGFhZDc0
MmFiNDY4YzEzZDI2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTktMDMtMDUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9w
Z2FwIGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25s
eS5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAgICAg
ICAgU3RvcCBjb21waWxpbmcgd2l0aCAtRFVDSEFSX1RZUEU9d2NoYXJfdC4KKwogMjAxOS0wMy0w
NCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dQRV0gRW5hYmxlIHdlYiBwcm9jZXNzIHNhbmRib3gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363719</attachid>
            <date>2019-03-05 18:22:14 -0800</date>
            <delta_ts>2019-03-06 14:24:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195346-20190305182213.patch</filename>
            <type>text/plain</type>
            <size>126254</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhOWIxOWQ3MTE5NWVhNmI2YTA1Y2Zh
Njg3MjEyMjQ1ZGY3Y2U5NDAuLjg2NWQxYjIzM2YxMjYyOTM5MmFlZWJhY2UwNTNlNzUzYWI1MDNl
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTktMDMtMDUgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9
d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oOgorICAgICAgICAoV1RGOjp1Y2hhckFzV0NoYXIpOgorICAgICAg
ICAoV1RGOjp1Y2hhckFzV0NoYXJNdXRhYmxlKToKKyAgICAgICAgKFdURjo6d2NoYXJBc1VDaGFy
KToKKyAgICAgICAgKFdURjo6d2NoYXJBc1VDaGFyTXV0YWJsZSk6CisgICAgICAgIChXVEY6Ondj
aGFyVG9TdHJpbmcpOgorICAgICAgICBBZGQgc3RhdGljX2Fzc2VydC1ndWFyZGVkIHJlaW50ZXJw
cmV0X2Nhc3Qgd3JhcHBlcnMgZm9yIGdvaW5nIGJldHdlZW4gVUNoYXIqIGFuZCB3Y2hhcl90Ki4K
KworICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZp
bGVTeXN0ZW1JbXBsOjpnZXRGaW5hbFBhdGhOYW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV1RGOjpGaWxlU3lz
dGVtSW1wbDo6c3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgICogd3RmL3dpbi9MYW5ndWFnZVdp
bi5jcHA6CisgICAgICAgIChXVEY6OmxvY2FsZUluZm8pOgorICAgICAgICBVc2Ugd2NoYXIgaGVs
cGVycyB3aGVyZSBuZWVkZWQuCisKIDIwMTktMDItMjggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdlYWtIYXNoU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNlYmYy
MzQ5NTdkY2JlYzg4YzYzM2FjZDE2ZDU4ZGU2ZGNmODcxYS4uNDI1MWNkMmE1NTU1Yzc5NzEzY2Ex
NmI3N2EzYjAyZTJlMzRmMTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTAz
LTA1ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBb
V2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3RvcGdhcCBhbmQgbGVhcm4gdG8gbGl2
ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdseXBoUGFnZTo6ZmlsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2Ny
aWJlQ29udHJvbGxlcjo6aXRlbWl6ZVNoYXBlQW5kUGxhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
VW5pc2NyaWJlQ29udHJvbGxlcjo6c2hhcGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2lu
L0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmdldExvY2FsZUlu
Zm9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJTdHJpbmc6OkJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9y
VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6
CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJzIHdoZXJlIG5lZWRlZC4KKwogMjAxOS0wMy0wNSAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gU2hvdWxk
IG5vdCBzY3JvbGwgd2hlbiBjaGVja2JveCwgcmFkaW8sIHN1Ym1pdCwgcmVzZXQsIG9yIGJ1dHRv
biBpcyBzcGFjZWJhciBhY3RpdmF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTZkYjU2MGUxMzE4NDU2YmQ3OWQx
ZTdjNGY4ZmZmYzc1ODI1ZWQ3YS4uOTkxNjM3ZjY1N2IzYzc0NzczNDk0MjJjYjE5NzdkOTg5YTE1
ZmM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0wMy0wNSAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNI
QVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMpOgorICAgICAgICAqIFBsYXRmb3JtL3dp
bi9Nb2R1bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpNb2R1bGU6OmxvYWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0
OjpjcmVhdGVNZW51SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6b25NZW51Q29tbWFuZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OnNldFRvb2xUaXApOgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVycyB3aGVy
ZSBuZWVkZWQuCisKIDIwMTktMDMtMDUgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0syXSBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZm9sbG93
IGxpbmtzIHdpdGggJ2Rvd25sb2FkJyBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggN2U4MjdiNWJmNzQxYzRjYzc4MzZjZTI3ZDc1MzUwMDRkMTc4ZGY1My4uZmQwYmE1
NTg4NDcxMDM4OWY3Nzk3ODVkZjJjYjI5OTRmZDJkNDcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1MCBAQAorMjAxOS0wMy0wNSAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQ
RT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQWNjZXNzaWJsZUJh
c2UuY3BwOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OmdldF9hdHRyaWJ1dGUpOgorICAgICAg
ICAqIEFjY2Vzc2libGVUZXh0SW1wbC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6aW5z
ZXJ0VGV4dCk6CisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6cmVwbGFjZVRleHQpOgorICAgICAg
ICAqIENPTVByb3BlcnR5QmFnLmg6CisgICAgICAgIChIYXNoVHlwZT46OlJlYWQpOgorICAgICAg
ICAoSGFzaFR5cGU+OjpHZXRQcm9wZXJ0eUluZm8pOgorICAgICAgICAoSGFzaFR5cGU+OjpMb2Fk
T2JqZWN0KToKKyAgICAgICAgKiBET01DU1NDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUNTU1N0
eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQpOgorICAgICAgICAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9u
OjpzZXRQcm9wZXJ0eSk6CisgICAgICAgICogRE9NQ29yZUNsYXNzZXMuY3BwOgorICAgICAgICAo
RE9NTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01Ob2RlOjpyZW1vdmVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKERPTURvY3VtZW50OjpjcmVhdGVFbGVtZW50KToKKyAgICAg
ICAgKERPTURvY3VtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZSk6CisgICAgICAgIChET01Eb2N1
bWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyk6CisgICAgICAgIChET01Eb2N1bWVudDo6Z2V0
RWxlbWVudEJ5SWQpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmdldENvbXB1dGVkU3R5bGUpOgor
ICAgICAgICAoRE9NRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KToKKyAgICAgICAgKERPTVdpbmRvdzo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKERPTUVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChET01FbGVtZW50Ojpmb250KToKKyAgICAg
ICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01IVE1MRG9jdW1lbnQ6OndyaXRl
KToKKyAgICAgICAgKERPTUhUTUxEb2N1bWVudDo6d3JpdGVsbik6CisgICAgICAgIChET01IVE1M
RWxlbWVudDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAgKERPTUhUTUxFbGVtZW50OjpzZXRJbm5l
clRleHQpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZSk6CisgICAgICAg
IChET01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAoRE9NSFRN
TElucHV0RWxlbWVudDo6cmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlKToKKyAgICAgICAgKiBEZWZh
dWx0UG9saWN5RGVsZWdhdGUuY3BwOgorICAgICAgICAoRGVmYXVsdFBvbGljeURlbGVnYXRlOjpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKERlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZTo6ZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAgICAgICAqIE1hcnNoYWxsaW5n
SGVscGVycy5jcHA6CisgICAgICAgICogV2ViQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ2FjaGU6
OnNldENhY2hlRm9sZGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAoY3JlYXRlV2luZG93RmVhdHVyZXNQcm9wZXJ0eUJhZyk6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxp
bmdPZlN0cmluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3Ry
aW5nKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0R3Vlc3Nlc0ZvcldvcmQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2spOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4gY29uc3QpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSk6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJEYXRhU291cmNlOjpzdWJyZXNvdXJjZUZvclVSTCk6CisgICAgICAgICogV2Vi
RGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWls
c0ZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJh
c2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YSk6CisgICAgICAgIChX
ZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UpOgorICAgICAgICAq
IFdlYkRvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFy
Z2V0UGF0aCk6CisgICAgICAgICogV2ViRG93bmxvYWRDdXJsLmNwcDoKKyAgICAgICAgKFdlYkRv
d25sb2FkOjppbml0V2l0aFJlcXVlc3QpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OnNldERlc3Rp
bmF0aW9uKToKKyAgICAgICAgKiBXZWJFcnJvci5jcHA6CisgICAgICAgIChXZWJFcnJvcjo6aW5p
dCk6CisgICAgICAgIChXZWJFcnJvcjo6aXNQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgICog
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKyAgICAgICAgKFdl
YkZyYW1lOjpmaW5kRnJhbWVOYW1lZCk6CisgICAgICAgIChXZWJGcmFtZTo6c2V0VGV4dERpcmVj
dGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAoV2Vi
RnJhbWU6OnBhdXNlVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6c2VhcmNoRm9yTGFi
ZWxzQmVmb3JlRWxlbWVudCk6CisgICAgICAgIChXZWJGcmFtZTo6bWF0Y2hMYWJlbHNBZ2FpbnN0
RWxlbWVudCk6CisgICAgICAgIChXZWJGcmFtZTo6Y2FuUHJvdmlkZURvY3VtZW50U291cmNlKToK
KyAgICAgICAgKFdlYkZyYW1lOjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRX
b3JsZCk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojpy
ZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6OmFkZEl0ZW0pOgorICAgICAgICAoV2Vi
SGlzdG9yeTo6aXRlbUZvclVSTCk6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAg
ICAgICAoV2ViSGlzdG9yeUl0ZW06OnNldFRpdGxlKToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVt
OjpzZXRSU1NGZWVkUmVmZXJyZXIpOgorICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OmluaXRXaXRo
VVJMU3RyaW5nKToKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpzZXRBbHRlcm5hdGVUaXRsZSk6
CisgICAgICAgICogV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6ZXZh
bHVhdGVJbkZyb250ZW5kKToKKyAgICAgICAgKiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgor
ICAgICAgICAoTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBMUENUU1RSIGNvbnN0KToKKyAgICAg
ICAgKGNyZWF0ZVdlYktpdEJ1bmRsZSk6CisgICAgICAgIChXZWJMb2NhbGl6ZWRTdHJpbmcpOgor
ICAgICAgICAoV2ViTG9jYWxpemVkTFBDVFNUUik6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnZhbHVlRm9ySFRUUEhl
YWRlckZpZWxkKToKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjphZGRWYWx1ZSk6Cisg
ICAgICAgIChXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0SFRUUE1ldGhvZCk6CisgICAgICAgIChX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0VmFsdWUpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlv
bkNlbnRlci5jcHA6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6OnBvc3ROb3RpZmlj
YXRpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6OmFkZE9ic2Vy
dmVyKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6cmVtb3ZlT2JzZXJ2ZXIpOgor
ICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpn
ZXRJbnN0YW5jZUZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OnNldElu
c3RhbmNlKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpyZW1vdmVSZWZlcmVuY2VGb3JJZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzZXRBcHBsaWNhdGlvbklkKToKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6aW5pdFdpdGhE
YXRhKToKKyAgICAgICAgKiBXZWJVUkxDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYlVSTENy
ZWRlbnRpYWw6OmluaXRXaXRoVXNlcik6CisgICAgICAgICogV2ViVVJMUHJvdGVjdGlvblNwYWNl
LmNwcDoKKyAgICAgICAgKFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6aW5pdFdpdGhIb3N0KToKKyAg
ICAgICAgKFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6aW5pdFdpdGhQcm94eUhvc3QpOgorICAgICAg
ICAqIFdlYlVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjppbml0V2l0
aFVSTCk6CisgICAgICAgICogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UpOgorICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAodG9BdG9taWNTdHJpbmcpOgorICAgICAgICAodG9TdHJpbmcpOgorICAgICAg
ICAoY3JlYXRlQ29udGV4dE1lbnVGcm9tSXRlbXMpOgorICAgICAgICAoV2ViVmlldzo6b25NZW51
Q29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpzZXRUb29sVGlwKToKKyAgICAgICAgKFdlYlZp
ZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKToKKyAgICAgICAgKFdl
YlZpZXc6OnNldEdyb3VwTmFtZSk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9H
cm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3JvdXApOgorICAg
ICAgICAoV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBl
cnMgd2hlcmUgbmVlZGVkLgorCiAyMDE5LTAzLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFByb2dyYW1tYXRpYyBwYXN0ZSBhY2Nlc3Mg
c2hvdWxkIGJlIGdyYW50ZWQgd2hlbiBjb3B5aW5nIGFuZCBwYXN0aW5nIHdpdGhpbiB0aGUgc2Ft
ZSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oCmlu
ZGV4IGQ0MWY0NjI5NGQzNjA0ZWI2MDRjYjc0NzAxNmNlNTQzNjE3ZWRkZGYuLjVjN2UzNDQwZDNi
NGU4MDY2YjZlOWVlMTNjYzVkODgxZmU4MDEwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC93
aW4vV0NoYXJTdHJpbmdFeHRyYXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgS29uc3RhbnRpbiBUb2thcmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHly
aWdodCAoQykgMjAxOSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMSwzMCBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAoraW5saW5lIGNvbnN0IHdjaGFyX3QqIHVjaGFyQXNXQ2hhcihjb25zdCBVQ2hhciog
Y2hhcmFjdGVycykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXpl
b2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6
ZSIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFyX3QqPihjaGFyYWN0
ZXJzKTsKK30KKworaW5saW5lIHdjaGFyX3QqIHVjaGFyQXNXQ2hhck11dGFibGUoVUNoYXIqIGNo
YXJhY3RlcnMpCit7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9m
KFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1lIHNpemUi
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4oY2hhcmFjdGVycyk7Cit9
CisKK2lubGluZSBjb25zdCBVQ2hhciogd2NoYXJBc1VDaGFyKGNvbnN0IHdjaGFyX3QqIGNoYXJh
Y3RlcnMpCit7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVD
aGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1lIHNpemUiKTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGNoYXJhY3RlcnMpOwor
fQorCitpbmxpbmUgVUNoYXIqIHdjaGFyQXNVQ2hhck11dGFibGUod2NoYXJfdCogY2hhcmFjdGVy
cykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNoYXIp
LCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6ZSIpOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFVDaGFyKj4oY2hhcmFjdGVycyk7Cit9CisKIGlubGlu
ZSBWZWN0b3I8d2NoYXJfdD4gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIFZlY3Rvcjx3Y2hhcl90PiByZXN1bHQ7CkBAIC01NCw4ICs3OSw3
IEBAIGlubGluZSBWZWN0b3I8d2NoYXJfdD4gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogCiBpbmxpbmUgU3RyaW5nIHdjaGFyVG9TdHJpbmcoY29uc3Qg
d2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBh
bmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7Ci0gICAgcmV0dXJuIFN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7CisgICAgcmV0dXJu
IFN0cmluZyh3Y2hhckFzVUNoYXIoY2hhcmFjdGVycyksIGxlbmd0aCk7CiB9CiAKIGlubGluZSBT
dHJpbmcgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3Rl
cnMpCkBAIC02NSw2ICs4OSwxMCBAQCBpbmxpbmUgU3RyaW5nIG51bGxUZXJtaW5hdGVkV0NoYXJU
b1N0cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAordXNpbmcgV1RGOjp1Y2hhckFzV0NoYXI7Cit1c2luZyBXVEY6OnVjaGFyQXNXQ2hhck11dGFi
bGU7Cit1c2luZyBXVEY6OndjaGFyQXNVQ2hhcjsKK3VzaW5nIFdURjo6d2NoYXJBc1VDaGFyTXV0
YWJsZTsKIHVzaW5nIFdURjo6c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyOwogdXNpbmcgV1RG
Ojp3Y2hhclRvU3RyaW5nOwogdXNpbmcgV1RGOjpudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggZDY3MmFmNjM3NDY5M2NmMDUy
MWVjMzY4OTY4OWNlYmNjMDJlZGUzOC4uMjdhNWZmZWQ2NDdhOTM0ZWRmYjU1OTg3MGEzZmYyYzIw
YmU5MTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTUyLDEzICsx
NTIsMTMgQEAgc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIo
TUFYX1BBVEgpOwotICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBWT0xVTUVfTkFNRV9OVCkgPj0gTUFYX1BBVEgp
IHsKKyAgICBpZiAoOjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgdWNoYXJBc1dD
aGFyTXV0YWJsZShidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQp
ID49IE1BWF9QQVRIKSB7CiAgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgfQogICAgIGNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgYnVmZmVy
LnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVu
KHVjaGFyQXNXQ2hhcihidWZmZXIuZGF0YSgpKSkpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0
KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKQEAgLTI1MiwxOCArMjUyLDE2IEBAIGJvb2wgbW92ZUZp
bGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiBTdHJpbmcg
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBjb21wb25lbnQpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotCiAg
ICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCiAgICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChidWZmZXIuZGF0YSgpKTsKICAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAnOwog
Ci0gICAgaWYgKCFQYXRoQXBwZW5kVyhidWZmZXIuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQorICAgIGlmICghUGF0aEFwcGVuZFcodWNoYXJB
c1dDaGFyTXV0YWJsZShidWZmZXIuZGF0YSgpKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KGNvbXBvbmVudCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYnVm
ZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwotCisgICAgYnVmZmVyLnNocmluayh3
Y3NsZW4odWNoYXJBc1dDaGFyKGJ1ZmZlci5kYXRhKCkpKSk7CiAgICAgcmV0dXJuIFN0cmluZzo6
YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIH0KIApAQCAtMjc5LDkgKzI3Nyw3IEBAIFN0cmluZyBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0
cmluZ1ZpZXc+JiBjb21wCiAKIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmlu
Z1ZpZXcocGF0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0KLSAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICBhdXRvIGNoYXJhY3RlcnMg
PSB1Y2hhckFzV0NoYXIoU3RyaW5nVmlldyhwYXRoKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSk7
CiAgICAgaW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgY2hhcmFjdGVy
cywgcGF0aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAxOwogCiAgICAgY2hhciogYnVmZmVyOwpA
QCAtMzUwLDkgKzM0NiwxMCBAQCBzdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQogc3RhdGljIFN0
cmluZyBzdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQogewogICAgIFZlY3Rv
cjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVyUGF0
aFcoMCwgcGF0aElkZW50aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgYnVmZmVyLmRh
dGEoKSkpKQorICAgIGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmll
ciB8IENTSURMX0ZMQUdfQ1JFQVRFLCAwLCAwLCB1Y2hhckFzV0NoYXJNdXRhYmxlKGJ1ZmZlci5k
YXRhKCkpKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBidWZmZXIucmVzaXplKHdj
c2xlbihidWZmZXIuZGF0YSgpKSk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbih1Y2hhckFz
V0NoYXIoYnVmZmVyLmRhdGEoKSkpKTsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5nOjph
ZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogCiAgICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCmluZGV4IDMwOWNhNjYyN2VkOGFmYjMwODY3MzE1
ODY0ZmY4YzNlNjIwZGFkNTEuLjVhNDc0MjAwNTZhMjg5MmJhMzFiNWVhYjc1NGI3YjJjZmUyZjBh
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDQsNyArNDUsNyBAQCBzdGF0aWMgU3Ry
aW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUsIGNvbnN0IFN0cmluZyYgZmFsbGJhY2sp
CiAgICAgICAgIHJldHVybiBmYWxsYmFjazsKICAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsKICAg
ICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2NhbGVD
aGFycywgbG9jYWxlTmFtZUJ1Zik7Ci0gICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZvKGxh
bmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOworICAgIGxvY2Fs
ZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIHVjaGFyQXNXQ2hhck11
dGFibGUobG9jYWxlTmFtZUJ1ZiksIGxvY2FsZUNoYXJzKTsKICAgICBpZiAoIWxvY2FsZUNoYXJz
KQogICAgICAgICByZXR1cm4gZmFsbGJhY2s7CiAgICAgaWYgKGxvY2FsZU5hbWUuaXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
YWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENh
Y2hlV2luLmNwcAppbmRleCAwNzk0ODgxMzY3ZTAyMjE0NThhMGU3YjBhYzQzZDY3NDQ2ODlhNDUw
Li42NDhmZWEyYzdmOGZjNTEyMGU3MTJjODk4MGJjNjUyZmVkOTgwMTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApA
QCAtMjcsMTIgKzI3LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
PHdpbnNvY2syLmg+Ci0jaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgor
CisjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgPG1sYW5n
Lmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0zMDEsNyArMzAyLDcgQEAgUmVmUHRyPEZvbnQ+
IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZGVzY3IKIAogICAgICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgICAgIGxvZ0ZvbnQu
bGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwotICAgICAgICBTdHJpbmdWaWV3KGxpbmtlZEZv
bnRzLT5hdChsaW5rZWRGb250SW5kZXgpKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChsb2dG
b250LmxmRmFjZU5hbWUpOworICAgICAgICBTdHJpbmdWaWV3KGxpbmtlZEZvbnRzLT5hdChsaW5r
ZWRGb250SW5kZXgpKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh3Y2hhckFzVUNoYXJNdXRh
YmxlKGxvZ0ZvbnQubGZGYWNlTmFtZSkpOwogICAgICAgICBsb2dGb250LmxmRmFjZU5hbWVbbGlu
a2VkRm9udHMtPmF0KGxpbmtlZEZvbnRJbmRleCkubGVuZ3RoKCldID0gMDsKICAgICAgICAgRW51
bUZvbnRGYW1pbGllc0V4KGhkYywgJmxvZ0ZvbnQsIGxpbmtlZEZvbnRFbnVtUHJvYywgcmVpbnRl
cnByZXRfY2FzdDxMUEFSQU0+KCZoZm9udCksIDApOwogICAgICAgICBsaW5rZWRGb250SW5kZXgr
KzsKQEAgLTQ4NCw3ICs0ODUsNyBAQCBzdGF0aWMgR0RJT2JqZWN0PEhGT05UPiBjcmVhdGVHRElG
b250KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBMT05HIGRlc2lyZWRXZQogICAgIExPR0ZP
TlQgbG9nRm9udDsKICAgICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKICAg
ICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5KS5zdWJzdHJp
bmcoMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwotICAgIHRydW5j
YXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChsb2dGb250LmxmRmFjZU5hbWUp
OworICAgIHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh3Y2hhckFz
VUNoYXJNdXRhYmxlKGxvZ0ZvbnQubGZGYWNlTmFtZSkpOwogICAgIGxvZ0ZvbnQubGZGYWNlTmFt
ZVt0cnVuY2F0ZWRGYW1pbHkubGVuZ3RoKCldID0gMDsKICAgICBsb2dGb250LmxmUGl0Y2hBbmRG
YW1pbHkgPSAwOwogCkBAIC01OTgsNyArNTk5LDcgQEAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBh
YmlsaXRpZXM+IEZvbnRDYWNoZTo6Z2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllc0luRmFtaWwK
ICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NI
QVJTRVQ7CiAgICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1pbHkgPSBTdHJpbmdWaWV3KGZhbWls
eU5hbWUpLnN1YnN0cmluZygwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAx
KSk7Ci0gICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGxvZ0Zv
bnQubGZGYWNlTmFtZSk7CisgICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBj
b252ZXJ0KHdjaGFyQXNVQ2hhck11dGFibGUobG9nRm9udC5sZkZhY2VOYW1lKSk7CiAgICAgbG9n
Rm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWlseS5sZW5ndGgoKV0gPSAwOwogICAgIGxvZ0Zv
bnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2lu
LmNwcAppbmRleCA0YTU5ZTFiYmJmYTIxMjM1ZWIwZGY2N2JmMzA3NGE3MzE2Mzc1MzZjLi4wN2Zm
MjE1ZTY5Zjk4YTlkZWJkNDQzYjBjMDFhODRjZGIxNDY4Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ2Fpcm9XaW4uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJGb250Lmgi
CiAjaW5jbHVkZSAiSFduZERDLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNyArNTAsNyBAQCBib29s
IEdseXBoUGFnZTo6ZmlsbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpCiAg
ICAgU2VsZWN0T2JqZWN0KGRjLCBmb250LnBsYXRmb3JtRGF0YSgpLmhmb250KCkpOwogCiAgICAg
V09SRCBsb2NhbEdseXBoQnVmZmVyW0dseXBoUGFnZTo6c2l6ZSAqIDJdOwotICAgIERXT1JEIHJl
c3VsdCA9IEdldEdseXBoSW5kaWNlcyhkYywgYnVmZmVyLCBidWZmZXJMZW5ndGgsIGxvY2FsR2x5
cGhCdWZmZXIsIEdHSV9NQVJLX05PTkVYSVNUSU5HX0dMWVBIUyk7CisgICAgRFdPUkQgcmVzdWx0
ID0gR2V0R2x5cGhJbmRpY2VzKGRjLCB1Y2hhckFzV0NoYXIoYnVmZmVyKSwgYnVmZmVyTGVuZ3Ro
LCBsb2NhbEdseXBoQnVmZmVyLCBHR0lfTUFSS19OT05FWElTVElOR19HTFlQSFMpOwogICAgIGJv
b2wgc3VjY2VzcyA9IHJlc3VsdCAhPSBHRElfRVJST1IgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHJlc3VsdCkgPT0gYnVmZmVyTGVuZ3RoOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNpemU7IGkrKykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNv
bnRyb2xsZXIuY3BwCmluZGV4IDExMDQ1NDc2ZGI0NjY2NWJlNWViMjI5M2ExODRlMWUwYTJiZjYz
NWUuLmJkYzg3YWRjN2IyNDViYmUxZTE4NWI2YTQwNWMxNGMyZTllMzE2ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJl
Q29udHJvbGxlci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJIV25kREMuaCIKICNp
bmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQorI2luY2x1
ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZv
aWQgVW5pc2NyaWJlQ29udHJvbGxlcjo6aXRlbWl6ZVNoYXBlQW5kUGxhY2UoY29uc3QgVUNoYXIq
IGNwLCB1bnNpZ25lZCBzdHJpbmdPCiAgICAgbV9pdGVtcy5yZXNpemUoNik7CiAgICAgaW50IG51
bUl0ZW1zID0gMDsKICAgICBIUkVTVUxUIHJjID0gU19PSzsKLSAgICB3aGlsZSAocmMgPSA6OlNj
cmlwdEl0ZW1pemUoY3AsIGxlbmd0aCwgbV9pdGVtcy5zaXplKCkgLSAxLCAmbV9jb250cm9sLCAm
bV9zdGF0ZSwgbV9pdGVtcy5kYXRhKCksICZudW1JdGVtcykgPT0gRV9PVVRPRk1FTU9SWSkgewor
ICAgIHdoaWxlIChyYyA9IDo6U2NyaXB0SXRlbWl6ZSh1Y2hhckFzV0NoYXIoY3ApLCBsZW5ndGgs
IG1faXRlbXMuc2l6ZSgpIC0gMSwgJm1fY29udHJvbCwgJm1fc3RhdGUsIG1faXRlbXMuZGF0YSgp
LCAmbnVtSXRlbXMpID09IEVfT1VUT0ZNRU1PUlkpIHsKICAgICAgICAgbV9pdGVtcy5yZXNpemUo
bV9pdGVtcy5zaXplKCkgKiAyKTsKICAgICAgICAgcmVzZXRDb250cm9sQW5kU3RhdGUoKTsKICAg
ICB9CkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZShj
b25zdCBVQ2hhciogc3RyLCBpbnQgbGVuLCBTQ1JJUFRfSVRFTSBpdGVtLCBjb24KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgZG8gewotICAgICAgICBzaGFwZVJlc3VsdCA9IFNjcmlwdFNo
YXBlKGhkYywgZm9udERhdGEtPnNjcmlwdENhY2hlKCksIHN0ciwgbGVuLCBnbHlwaHMuc2l6ZSgp
LCAmaXRlbS5hLAorICAgICAgICBzaGFwZVJlc3VsdCA9IFNjcmlwdFNoYXBlKGhkYywgZm9udERh
dGEtPnNjcmlwdENhY2hlKCksIHVjaGFyQXNXQ2hhcihzdHIpLCBsZW4sIGdseXBocy5zaXplKCks
ICZpdGVtLmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzLmRhdGEo
KSwgY2x1c3RlcnMuZGF0YSgpLCB2aXN1YWxBdHRyaWJ1dGVzLmRhdGEoKSwgJmdseXBoQ291bnQp
OwogICAgICAgICBpZiAoc2hhcGVSZXN1bHQgPT0gRV9QRU5ESU5HKSB7CiAgICAgICAgICAgICAv
LyBUaGUgc2NyaXB0IGNhY2hlIGlzbid0IHByaW1lZCB3aXRoIGVub3VnaCBpbmZvIHlldC4gIFdl
IG5lZWQgdG8gc2VsZWN0IG91ciBIRk9OVCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCAxNTMxNWNhNzM1ZmYyZTdhYjQzNTE3MWU2
YzFiZGU2MDM3MzJjYmRlLi43YmFmZWFiNmQ5MDRiMjMwYmEyMjk0MDVhZmVlZjc4OWRkYTczYzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAK
QEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIExvY2FsZVdpbjo6Z2V0TG9jYWxlSW5mb1N0cmluZyhM
Q1RZUEUgdHlwZSkKICAgICBpZiAoYnVmZmVyU2l6ZVdpdGhOVUwgPD0gMCkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGJ1ZmZlclNpemVXaXRoTlVM
KTsKLSAgICA6OkdldExvY2FsZUluZm8obV9sY2lkLCB0eXBlLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXJTaXplV2l0aE5VTCk7CisgICAgOjpHZXRMb2NhbGVJbmZvKG1fbGNpZCwgdHlwZSwgdWNoYXJB
c1dDaGFyTXV0YWJsZShidWZmZXIuZGF0YSgpKSwgYnVmZmVyU2l6ZVdpdGhOVUwpOwogICAgIGJ1
ZmZlci5zaHJpbmsoYnVmZmVyU2l6ZVdpdGhOVUwgLSAxKTsKICAgICByZXR1cm4gU3RyaW5nOjph
ZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0JTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJp
bmcuY3BwCmluZGV4IDBmNDZjNWRjYWIyOWI3YjQ2M2JiNmVjZDMxYjBlYjNiNzU4YzIyM2MuLmY0
NjRlMzdiMzZmZDc3YjI5Y2E4Njg1ZTBiY2I5MjY1YzJlMjc4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CkBAIC02NSw3ICs2Niw3IEBAIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgU3RyaW5n
JiBzKQogICAgIGlmIChzLmlzTnVsbCgpKQogICAgICAgICBtX2JzdHIgPSAwOwogICAgIGVsc2UK
LSAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4oU3RyaW5nVmlldyhzKS51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSk7CisgICAgICAgIG1fYnN0ciA9IFN5c0FsbG9j
U3RyaW5nTGVuKHVjaGFyQXNXQ2hhcihTdHJpbmdWaWV3KHMpLnVwY29udmVydGVkQ2hhcmFjdGVy
cygpKSwgcy5sZW5ndGgoKSk7CiB9CiAKIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgVVJMJiB1cmwp
CkBAIC03Myw3ICs3NCw3IEBAIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAgICAg
aWYgKHVybC5pc051bGwoKSkKICAgICAgICAgbV9ic3RyID0gMDsKICAgICBlbHNlCi0gICAgICAg
IG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKFN0cmluZ1ZpZXcodXJsLnN0cmluZygpKS51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKSwgdXJsLnN0cmluZygpLmxlbmd0aCgpKTsKKyAgICAgICAgbV9i
c3RyID0gU3lzQWxsb2NTdHJpbmdMZW4odWNoYXJBc1dDaGFyKFN0cmluZ1ZpZXcodXJsLnN0cmlu
ZygpKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSksIHVybC5zdHJpbmcoKS5sZW5ndGgoKSk7CiB9
CiAKIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzKQpAQCAtODEsNyArODIs
NyBAQCBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgcykKICAgICBpZiAocy5p
c051bGwoKSkKICAgICAgICAgbV9ic3RyID0gMDsKICAgICBlbHNlCi0gICAgICAgIG1fYnN0ciA9
IFN5c0FsbG9jU3RyaW5nTGVuKFN0cmluZ1ZpZXcocy5zdHJpbmcoKSkudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCksIHMubGVuZ3RoKCkpOworICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmluZ0xl
bih1Y2hhckFzV0NoYXIoU3RyaW5nVmlldyhzLnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSksIHMubGVuZ3RoKCkpOwogfQogCiAjaWYgVVNFKENGKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGE1ZmQ5MzBhZTkxYjkxN2I5Y2Jh
MDg2NGJiYTU1MzRlY2IyYzFlMTMuLjBiNjgyYzQ4MzFlZTZkNGU0Y2U1ODRjNmUyYWMyOGUzNTVi
MTUwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTU1OSwxOSArNTU5LDE5IEBAIHN0YXRpYyBTdHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9t
VXJsT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB7CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdOdWxsVGVybWluYXRv
ciA9IE1BWF9QQVRIIC0gMTsKICAgICBib29sIHVzZWRVUkwgPSBmYWxzZTsKLSAgICBXQ0hBUiBm
c1BhdGhCdWZmZXJbTUFYX1BBVEhdOworICAgIFVDaGFyIGZzUGF0aEJ1ZmZlcltNQVhfUEFUSF07
CiAgICAgZnNQYXRoQnVmZmVyWzBdID0gMDsKLSAgICBpbnQgZXh0ZW5zaW9uTGVuID0gZXh0ZW5z
aW9uID8gbHN0cmxlbihleHRlbnNpb24pIDogMDsKKyAgICBpbnQgZXh0ZW5zaW9uTGVuID0gZXh0
ZW5zaW9uID8gd2NzbGVuKHVjaGFyQXNXQ2hhcihleHRlbnNpb24pKSA6IDA7CiAgICAgaW50IGZz
UGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiA9IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGlu
Z051bGxUZXJtaW5hdG9yIC0gZXh0ZW5zaW9uTGVuOwogCiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgc2l6ZV90IGxlbiA9IHN0ZDo6bWluPHNpemVfdD4odGl0bGUubGVuZ3Ro
KCksIGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbik7CiAgICAgICAgIFN0cmluZ1Zp
ZXcodGl0bGUpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZz
UGF0aEJ1ZmZlcik7CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKLSAgICAgICAgcGF0
aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyhmc1BhdGhCdWZmZXIsIGxlbik7CisgICAgICAgIHBhdGhS
ZW1vdmVCYWRGU0NoYXJhY3RlcnModWNoYXJBc1dDaGFyTXV0YWJsZShmc1BhdGhCdWZmZXIpLCBs
ZW4pOwogICAgIH0KIAotICAgIGlmICghbHN0cmxlbihmc1BhdGhCdWZmZXIpKSB7CisgICAgaWYg
KCF3Y3NsZW4odWNoYXJBc1dDaGFyKGZzUGF0aEJ1ZmZlcikpKSB7CiAgICAgICAgIFVSTCBrdXJs
KFVSTCgpLCB1cmwpOwogICAgICAgICB1c2VkVVJMID0gdHJ1ZTsKICAgICAgICAgLy8gVGhlIGZp
bGVuYW1lIGZvciBhbnkgY29udGVudCBiYXNlZCBkcmFnIG9yIGZpbGUgdXJsIHNob3VsZCBiZSB0
aGUgbGFzdCBlbGVtZW50IG9mIApAQCAtNTg3LDE1ICs1ODcsMTUgQEAgc3RhdGljIFN0cmluZyBm
aWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpdGwKICAgICAgICAgICAgIFN0cmluZ1ZpZXcodXJsKS5zdWJzdHJpbmcoMCwgbGVuKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOwogICAgICAgICB9CiAgICAg
ICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKLSAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFj
dGVycyhmc1BhdGhCdWZmZXIsIGxlbik7CisgICAgICAgIHBhdGhSZW1vdmVCYWRGU0NoYXJhY3Rl
cnModWNoYXJBc1dDaGFyTXV0YWJsZShmc1BhdGhCdWZmZXIpLCBsZW4pOwogICAgIH0KIAogICAg
IGlmICghZXh0ZW5zaW9uKQotICAgICAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFy
Kj4oZnNQYXRoQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoZnNQYXRoQnVmZmVyKTsK
IAogICAgIGlmICghaXNMaW5rICYmIHVzZWRVUkwpIHsKLSAgICAgICAgUGF0aFJlbmFtZUV4dGVu
c2lvbihmc1BhdGhCdWZmZXIsIGV4dGVuc2lvbik7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoc3Rh
dGljX2Nhc3Q8VUNoYXIqPihmc1BhdGhCdWZmZXIpKTsKKyAgICAgICAgUGF0aFJlbmFtZUV4dGVu
c2lvbih1Y2hhckFzV0NoYXJNdXRhYmxlKGZzUGF0aEJ1ZmZlciksIHVjaGFyQXNXQ2hhcihleHRl
bnNpb24pKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhmc1BhdGhCdWZmZXIpOwogICAgIH0KIAog
ICAgIHJldHVybiBtYWtlU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oZnNQYXRoQnVm
ZmVyKSwgZXh0ZW5zaW9uKTsKQEAgLTY1NSw3ICs2NTUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0
cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxs
QVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcg
ZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCBMIi5V
UkwiLCB0cnVlKTsKKyAgICBTdHJpbmcgZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JU
aXRsZSh1cmwsIHRpdGxlU3RyLCB1Ii5VUkwiLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0
cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBD
U3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC02ODQsNyArNjg0
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93
ID0gY29udGVudC5sZW5ndGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNpemUgPSBzdGQ6Om1pbjx1
bnNpZ25lZD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNG
aWxlTmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSku
Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKTsKKyAgICBT
dHJpbmdWaWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KHdjaGFyQXNVQ2hhck11dGFibGUoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7CiAg
ICAgR2xvYmFsVW5sb2NrKHVybEZpbGVEZXNjcmlwdG9yKTsKIAogICAgIGNoYXIqIGZpbGVDb250
ZW50cyA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKHVybEZpbGVDb250ZW50KSk7CkBA
IC05MjMsNyArOTIzLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVz
Y3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIH0KIAogICAgIGlu
dCBtYXhTaXplID0gc3RkOjptaW48aW50Pihmc1BhdGgubGVuZ3RoKCksIFdURl9BUlJBWV9MRU5H
VEgoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7Ci0gICAgU3RyaW5nVmlldyhmc1BhdGgpLnN1YnN0
cmluZygwLCBtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmZ2QtPmZnZFswXS5j
RmlsZU5hbWUpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSku
Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQod2NoYXJBc1VDaGFyTXV0YWJsZShmZ2QtPmZnZFsw
XS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIAogICAgIHJldHVybiBt
ZW1PYmo7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVj
dGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldp
bi5jcHAKaW5kZXggZWJiMzczODRjMzM3YmYxMmY1ZDZkZThhNmI0NmY2ZjA0ODFjNzhmOS4uMjQ2
NjVmYjIyNGJkMWZmMGJkY2RjN2ZiZTNjM2VjOTY5ZjkwYTcwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+
CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIApAQCAtNDMsNyArNDQsNyBA
QCBib29sIENvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKEhBTkRM
RSYgc2VydmVySWRlbnRpZmllciwgSEFORAogICAgICAgICB1bnNpZ25lZCB1bmlxdWVJRCA9IHJh
bmRvbU51bWJlcigpICogc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwogICAg
ICAgICBwaXBlTmFtZSA9IG1ha2VTdHJpbmcoIlxcXFwuXFxwaXBlXFxjb20uYXBwbGUuV2ViS2l0
LiIsIGhleCh1bmlxdWVJRCkpOwogCi0gICAgICAgIHNlcnZlcklkZW50aWZpZXIgPSA6OkNyZWF0
ZU5hbWVkUGlwZShwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSwKKyAgICAgICAgc2VydmVySWRlbnRpZmllciA9IDo6Q3JlYXRlTmFtZWRQaXBlKHN0cmluZ1Rv
TnVsbFRlcm1pbmF0ZWRXQ2hhcihwaXBlTmFtZSkuZGF0YSgpLAogICAgICAgICAgICAgUElQRV9B
Q0NFU1NfRFVQTEVYIHwgRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0UgfCBGSUxFX0ZMQUdf
T1ZFUkxBUFBFRCwKICAgICAgICAgICAgIFBJUEVfVFlQRV9NRVNTQUdFIHwgUElQRV9SRUFETU9E
RV9NRVNTQUdFLCAxLCBpbmxpbmVNZXNzYWdlTWF4U2l6ZSwgaW5saW5lTWVzc2FnZU1heFNpemUs
CiAgICAgICAgICAgICAwLCAwKTsKQEAgLTUyLDcgKzUzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpj
cmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIs
IEhBTkQKICAgICBpZiAoIXNlcnZlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGNsaWVudElkZW50aWZpZXIgPSA6OkNyZWF0ZUZpbGVXKHBpcGVOYW1lLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dS
SVRFLCAwLCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgMCk7CisgICAg
Y2xpZW50SWRlbnRpZmllciA9IDo6Q3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKHBpcGVOYW1lKS5kYXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAs
IE9QRU5fRVhJU1RJTkcsIEZJTEVfRkxBR19PVkVSTEFQUEVELCAwKTsKICAgICBpZiAoIWNsaWVu
dElkZW50aWZpZXIpIHsKICAgICAgICAgOjpDbG9zZUhhbmRsZShzZXJ2ZXJJZGVudGlmaWVyKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS93aW4vTW9kdWxlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL01vZHVsZVdp
bi5jcHAKaW5kZXggN2I2NWQ3Nzg2OTE2NjJmZGI1ZmY2MGQ3MzY4OWQyY2VjYzliMzJmYy4uMDVm
ODViMjViYTkxMjhiNTcwNWEzMjk3ZjliYTMwZmJkMjAwZDEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwCkBAIC0yOSwxMyArMjksMTQgQEAKIAogI2luY2x1ZGUg
PHNobHdhcGkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBi
b29sIE1vZHVsZTo6bG9hZCgpCiB7Ci0gICAgQVNTRVJUKCE6OlBhdGhJc1JlbGF0aXZlVyhtX3Bh
dGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKLSAgICBtX21vZHVs
ZSA9IDo6TG9hZExpYnJhcnlFeFcobV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CisgICAgQVNTRVJU
KCE6OlBhdGhJc1JlbGF0aXZlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5k
YXRhKCkpKTsKKyAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFcoc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hf
UEFUSCk7CiAgICAgcmV0dXJuIG1fbW9kdWxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwCmlu
ZGV4IDU3N2U0NjljYWRlMTExYmQxNDg0Y2M4MTQwYTRkMzQyZDU1ODdiNjMuLjFkNTNmMzJlMzE1
M2EwMjUxYTI1OGRhZTJlYmQ4NWRjNjAxZDc4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwCkBA
IC0yOCw4ICsyOCw4IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSA8V1RGL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxzaGx3
YXBpLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogCiAgICAgU3RyaW5nQnVpbGRlciBjb21tYW5kTGluZUJ1aWxkZXI7CiAgICAgY29tbWFuZExp
bmVCdWlsZGVyLmFwcGVuZCgiXCIiKTsKLSAgICBjb21tYW5kTGluZUJ1aWxkZXIuYXBwZW5kKFN0
cmluZyhwYXRoU3RyKSk7CisgICAgY29tbWFuZExpbmVCdWlsZGVyLmFwcGVuZChudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcocGF0aFN0cikpOwogICAgIGNvbW1hbmRMaW5lQnVpbGRlci5hcHBl
bmQoIlwiIik7CiAgICAgY29tbWFuZExpbmVCdWlsZGVyLmFwcGVuZCgiIC10eXBlICIpOwogICAg
IGNvbW1hbmRMaW5lQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIoc3RhdGljX2Nhc3Q8aW50
PihtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQcm94eVdpbi5jcHAKaW5kZXggYWY0MzVj
MTY1ZTY0YWU1NWU5ODdmZTM5YzgyMmQ2NGE5YmQwZDIwZC4uMWIwOGMzMjRiYmJkYjRlOTkzNzA4
YTZkZDU4YjA2MmE1N2VmNzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTcxLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlTWVudUl0ZW0o
Y29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSAmY29udGV4dCwgSE1FTlUgbWVudSwgY28KICAg
ICBzd2l0Y2ggKGRhdGEudHlwZSgpKSB7CiAgICAgY2FzZSBBY3Rpb25UeXBlOgogICAgIGNhc2Ug
Q2hlY2thYmxlQWN0aW9uVHlwZToKLSAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwg
TUZfU1RSSU5HLCBkYXRhLmFjdGlvbigpLCBkYXRhLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCkpOworICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3Mg
fCBNRl9TVFJJTkcsIGRhdGEuYWN0aW9uKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihk
YXRhLnRpdGxlKCkpLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VwYXJhdG9y
VHlwZToKICAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfU0VQQVJBVE9SLCBk
YXRhLmFjdGlvbigpLCBudWxscHRyKTsKQEAgLTc5LDcgKzgwLDcgQEAgc3RhdGljIHZvaWQgY3Jl
YXRlTWVudUl0ZW0oY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSAmY29udGV4dCwgSE1FTlUg
bWVudSwgY28KICAgICBjYXNlIFN1Ym1lbnVUeXBlOgogICAgICAgICBITUVOVSBzdWJtZW51ID0g
Y3JlYXRlTWVudShjb250ZXh0KTsKICAgICAgICAgcG9wdWxhdGUoY29udGV4dCwgc3VibWVudSwg
ZGF0YS5zdWJtZW51KCkpOwotICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9Q
T1BVUCwgKFVJTlRfUFRSKXN1Ym1lbnUsIGRhdGEudGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8
IE1GX1BPUFVQLCAoVUlOVF9QVFIpc3VibWVudSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KGRhdGEudGl0bGUoKSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDE0YjFkOWZhODFhOGYwZDM0MjZi
NGZiNTJlMmQ2MjY1YmJjYjk5YWEuLjQ5MGYxYmFlYmM1MjNlYjk1MmNmODU0NWIxZjAzYzlmZWZi
YzE3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTU5LDYg
KzU5LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02MDAsNyArNjAxLDcgQEAg
TFJFU1VMVCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0gd1BhcmFtLCBMUEFSQU0gbFAKIAogICAgIDo6R2V0TWVudUl0ZW1JbmZvKGhNZW51LCBp
bmRleCwgVFJVRSwgJm1lbnVJdGVtSW5mbyk7CiAKLSAgICBTdHJpbmcgdGl0bGUoYnVmZmVyLmRh
dGEoKSwgbWVudUl0ZW1JbmZvLmNjaCk7CisgICAgU3RyaW5nIHRpdGxlID0gd2NoYXJUb1N0cmlu
ZyhidWZmZXIuZGF0YSgpLCBtZW51SXRlbUluZm8uY2NoKTsKICAgICBDb250ZXh0TWVudUFjdGlv
biBhY3Rpb24gPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4obWVudUl0ZW1JbmZvLndJ
RCk7CiAgICAgYm9vbCBlbmFibGVkID0gIShtZW51SXRlbUluZm8uZlN0YXRlICYgTUZTX0RJU0FC
TEVEKTsKICAgICBib29sIGNoZWNrZWQgPSBtZW51SXRlbUluZm8uZlN0YXRlICYgTUZTX0NIRUNL
RUQ7CkBAIC04NzQsOCArODc1LDggQEAgdm9pZCBXZWJWaWV3OjpzZXRUb29sVGlwKGNvbnN0IFN0
cmluZyYgdG9vbFRpcCkKICAgICAgICAgaW5mby5jYlNpemUgPSBzaXplb2YoaW5mbyk7CiAgICAg
ICAgIGluZm8udUZsYWdzID0gVFRGX0lESVNIV05EOwogICAgICAgICBpbmZvLnVJZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8VUlOVF9QVFI+KG5hdGl2ZVdpbmRvdygpKTsKLSAgICAgICAgVmVjdG9yPFVD
aGFyPiB0b29sVGlwQ2hhcmFjdGVycyA9IHRvb2xUaXAuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3VnaCB0byBtYWtlIHRoZSBTZW5kTWVz
c2FnZSBjYWxsCi0gICAgICAgIGluZm8ubHBzelRleHQgPSBjb25zdF9jYXN0PFVDaGFyKj4odG9v
bFRpcENoYXJhY3RlcnMuZGF0YSgpKTsKKyAgICAgICAgVmVjdG9yPHdjaGFyX3Q+IHRvb2xUaXBD
aGFyYWN0ZXJzID0gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHRvb2xUaXApOyAvLyBSZXRh
aW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIFNlbmRNZXNzYWdlIGNhbGwKKyAgICAg
ICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KHRvb2xUaXBDaGFyYWN0ZXJz
LmRhdGEoKSk7CiAgICAgICAgIDo6U2VuZE1lc3NhZ2UobV90b29sVGlwV2luZG93LCBUVE1fVVBE
QVRFVElQVEVYVCwgMCwgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZpbmZvKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNTQyNDc3
YTllOWUwYTk0MmQ2NWJlMGVlMmM5MGI0ZDI5NjlhNmMzOC4uMDMwNDFlMzBkMWM4ZmFmNzRiMDNl
YmMwYzNhMWEwZTAxYTcxYWFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2li
bGVCYXNlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPG9sZWFjYy5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC0xNDMsNyArMTQ0LDcgQEAgSFJFU1VMVCBBY2Nlc3NpYmxlQmFz
ZTo6Z2V0X2F0dHJpYnV0ZShfSW5fIEJTVFIga2V5LCBfT3V0XyBWQVJJQU5UKiB2YWx1ZSkKICAg
ICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgQXRvbWljU3Ry
aW5nIGtleUF0b21pYyhrZXksIDo6U3lzU3RyaW5nTGVuKGtleSkpOworICAgIEF0b21pY1N0cmlu
ZyBrZXlBdG9taWMod2NoYXJBc1VDaGFyKGtleSksIDo6U3lzU3RyaW5nTGVuKGtleSkpOwogCiAg
ICAgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKGtleUF0b21pYywgdmFsdWUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlVGV4dEltcGwuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcAppbmRleCA5Zjg0
NTY4MmMyZmY4YzUxYjkxYmI4NGFkZjBkZGFlODkwZTBmZmM5Li44MTI4ODZkZjk4MGY0YmM4OWZm
YWYzNGVkMTJjMDQ4OWU5ODNiODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9BY2Nlc3NpYmxlVGV4dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Fj
Y2Vzc2libGVUZXh0SW1wbC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIldlYktp
dERMTC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Vk
aXRvci5oPgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVGV4dENv
bnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0
cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTk0LDcgKzU5
NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6Omluc2VydFRleHQobG9uZyBvZmZzZXQsIEJT
VFIqIHRleHQpCiAgICAgCiAgICAgYWRkU2VsZWN0aW9uKG9mZnNldCwgb2Zmc2V0KTsKIAotICAg
IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KCp0ZXh0LCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkuaW5zZXJ0VGV4dCh3Y2hhckFzVUNoYXIoKnRleHQpLCAwKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtNjU2LDcgKzY1Niw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVRleHQ6OnJlcGxhY2VU
ZXh0KGxvbmcgc3RhcnRPZmZzZXQsIGxvbmcgZW5kT2Zmc2V0LCBCU1RSKiB0ZXh0CiAKICAgICBh
ZGRTZWxlY3Rpb24oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CiAKLSAgICBmcmFtZS0+ZWRpdG9y
KCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KCp0ZXh0LCBFZGl0b3I6OlNlbGVjdFJlcGxhY2Vt
ZW50OjpZZXMsIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObyk7CisgICAgZnJhbWUtPmVkaXRvcigp
LnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh3Y2hhckFzVUNoYXIoKnRleHQpLCBFZGl0b3I6OlNl
bGVjdFJlcGxhY2VtZW50OjpZZXMsIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObyk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NPTVBy
b3BlcnR5QmFnLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCmlu
ZGV4IDIxNjVhMjM1NmQ5ZWFhMmNhYTA5NDQxZDE4ZmE4M2RlZjk0YjlmZDUuLjI2YTJlYzM1Njhj
NThkMmE5ODkwMzg1NGU3MGJlNzJmMmI1Yzc4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NPTVByb3BlcnR5QmFnLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q09NUHJvcGVydHlCYWcuaApAQCAtMjMsMTYgKzIzLDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCi0jaWZuZGVmIENPTVByb3BlcnR5QmFnX2gKLSNkZWZpbmUgQ09NUHJvcGVydHlCYWdfaAor
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDT01WYXJpYW50U2V0dGVyLmgiCiAjaW5jbHVkZSA8
b2NpZGwuaD4KICNpbmNsdWRlIDx1bmtud24uaD4KLQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLSNpbmNsdWRlICJDT01WYXJpYW50U2V0
dGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSA9IHR5cGVuYW1lIFdU
Rjo6U3RyaW5nLCB0eXBlbmFtZSBIYXNoVHlwZSA9IHR5cGVuYW1lIFdURjo6U3RyaW5nSGFzaD4K
IGNsYXNzIENPTVByb3BlcnR5QmFnIGZpbmFsIDogcHVibGljIElQcm9wZXJ0eUJhZywgcHVibGlj
IElQcm9wZXJ0eUJhZzIgewpAQCAtMTM3LDcgKzEzNSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgQ09NUHJvcGVydHlCYWc8VmFsdWVUeXBlLCBLZXlUeXBlLCBIYXNoVHlwZT46OlJlYWQo
TFBDCiAgICAgaWYgKCFwc3pQcm9wTmFtZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAot
ICAgIGF1dG8gaXQgPSBtX2hhc2hNYXAuZmluZChTdHJpbmcocHN6UHJvcE5hbWUpKTsKKyAgICBh
dXRvIGl0ID0gbV9oYXNoTWFwLmZpbmQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHBzelBy
b3BOYW1lKSk7CiAgICAgYXV0byBlbmQgPSBtX2hhc2hNYXAuZW5kKCk7CiAgICAgaWYgKGl0ID09
IGVuZCkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKQEAgLTIyMCw3ICsyMTgsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3BlcnR5QmFnPFZhbHVlVHlwZSwgS2V5VHlw
ZSwgSGFzaFR5cGU+OjpHZXRQcm9wZQogICAgICAgICBwUHJvcEJhZ1tqXS5wc3RyTmFtZSA9IChM
UE9MRVNUUilDb1Rhc2tNZW1BbGxvYyhzaXplb2Yod2NoYXJfdCkqKGN1cnJlbnQtPmtleS5sZW5n
dGgoKSsxKSk7CiAgICAgICAgIGlmICghcFByb3BCYWdbal0ucHN0ck5hbWUpCiAgICAgICAgICAg
ICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKLSAgICAgICAgd2NzY3B5X3MocFByb3BCYWdbal0ucHN0
ck5hbWUsIGN1cnJlbnQtPmtleS5sZW5ndGgoKSsxLCBzdGF0aWNfY2FzdDxTdHJpbmc+KGN1cnJl
bnQtPmtleSkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOworICAgICAg
ICB3Y3NjcHlfcyhwUHJvcEJhZ1tqXS5wc3RyTmFtZSwgY3VycmVudC0+a2V5Lmxlbmd0aCgpKzEs
IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjdXJyZW50LT5rZXkpLmRhdGEoKSk7CiAgICAg
ICAgICsrKnBjUHJvcGVydGllczsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0yMzEsNSAr
MjI5LDMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxWYWx1ZVR5
cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6TG9hZE9iamUKIHsKICAgICByZXR1cm4gRV9OT1RJTVBM
OwogfQotCi0jZW5kaWYgLy8gQ09NUHJvcGVydHlCYWdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRE9NQ1NTQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9ET01DU1NDbGFzc2VzLmNwcAppbmRleCBmZWJiOTJlZDgxM2QxODVmNTkzYjE3OTRhYzkwNDJi
ZTU2MWI4NWVmLi4wYTE3MGQzNzk0NDBiNzU1YWJiZDFlMTY1MmJlNmZhYmE1NjZhZDJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01DU1NDbGFzc2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01DU1NDbGFzc2VzLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAK
IC8vIERPTUNTU1N0eWxlRGVjbGFyYXRpb24gLSBET01DU1NTdHlsZURlY2xhcmF0aW9uIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtOTEsNyArOTIsNyBAQCBIUkVTVUxUIERPTUNT
U1N0eWxlRGVjbGFyYXRpb246OmNzc1RleHQoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkK
IAogSFJFU1VMVCBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KF9Jbl8gQlNUUiBj
c3NUZXh0KQogewotICAgIFdURjo6U3RyaW5nIGNzc1RleHRTdHJpbmcoY3NzVGV4dCk7CisgICAg
V1RGOjpTdHJpbmcgY3NzVGV4dFN0cmluZyA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhj
c3NUZXh0KTsKICAgICBtX3N0eWxlLT5zZXRDc3NUZXh0KGNzc1RleHRTdHJpbmcpOwogICAgIHJl
dHVybiBTX09LOwogfQpAQCAtMTAyLDcgKzEwMyw3IEBAIEhSRVNVTFQgRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShfSW5fIEJTVFIgcHJvcGVydHlOYW1lLCBfX2RlcmVm
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAKLSAg
ICBXVEY6OlN0cmluZyBwcm9wZXJ0eU5hbWVTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAgICBXVEY6
OlN0cmluZyBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmco
cHJvcGVydHlOYW1lKTsKICAgICBXVEY6OlN0cmluZyB2YWx1ZSA9IG1fc3R5bGUtPmdldFByb3Bl
cnR5VmFsdWUocHJvcGVydHlOYW1lU3RyaW5nKTsKICAgICAqcmVzdWx0ID0gV2ViQ29yZTo6QlN0
cmluZyh2YWx1ZSkucmVsZWFzZSgpOwogICAgIGlmICh2YWx1ZS5sZW5ndGgoKSAmJiAhKnJlc3Vs
dCkKQEAgLTEzOSw5ICsxNDAsOSBAQCBIUkVTVUxUIERPTUNTU1N0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5UHJpb3JpdHkoX0luXyBCU1RSIC8qcHJvcGVydHlOYW1lKi8sCiAKIEhSRVNVTFQg
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoX0luXyBCU1RSIHByb3BlcnR5TmFt
ZSwgX0luXyBCU1RSIHZhbHVlLCBfSW5fIEJTVFIgcHJpb3JpdHkpCiB7Ci0gICAgV1RGOjpTdHJp
bmcgcHJvcGVydHlOYW1lU3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgV1RGOjpTdHJpbmcgdmFs
dWVTdHJpbmcodmFsdWUpOwotICAgIFdURjo6U3RyaW5nIHByaW9yaXR5U3RyaW5nKHByaW9yaXR5
KTsKKyAgICBXVEY6OlN0cmluZyBwcm9wZXJ0eU5hbWVTdHJpbmcgPSBudWxsVGVybWluYXRlZFdD
aGFyVG9TdHJpbmcocHJvcGVydHlOYW1lKTsKKyAgICBXVEY6OlN0cmluZyB2YWx1ZVN0cmluZyA9
IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh2YWx1ZSk7CisgICAgV1RGOjpTdHJpbmcgcHJp
b3JpdHlTdHJpbmcgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcocHJpb3JpdHkpOwogICAg
IG1fc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5TmFtZVN0cmluZywgdmFsdWVTdHJpbmcsIHBy
aW9yaXR5U3RyaW5nKTsKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcAppbmRleCBjNTg4MGVhNGRkODUyYjVjMDBkZGFiM2M4MjVk
NmE5ZjZjZjA4M2NmLi4zYjNhNTEwMTZiYTI3YTY4Mjk2MDQ5OTUyMWVmMzYzMzM1OTc3ZDUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiRE9NRXZlbnRzQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIkRPTUhUTUxD
bGFzc2VzLmgiCiAjaW5jbHVkZSAiV2ViS2l0R3JhcGhpY3MuaCIKLQogI2luY2x1ZGUgPFdlYkNv
cmUvQXR0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ09NUHRyLmg+CkBAIC01Niw4ICs1NSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJU
cmVlQXNUZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxJbnRvVmlld09wdGlvbnMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlZEVsZW1lbnQuaD4KLQogI2luY2x1ZGUgPGluaXRndWlk
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisKIC8vIHsz
QjBDMEVGRi00NzhCLTRiMGItODI5MC1EMjMyMUUwOEUyM0V9CiBERUZJTkVfR1VJRChJSURfRE9N
RWxlbWVudCwgMHgzYjBjMGVmZiwgMHg0NzhiLCAweDRiMGIsIDB4ODIsIDB4OTAsIDB4ZDIsIDB4
MzIsIDB4MWUsIDB4OCwgMHhlMiwgMHgzZSk7CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCBIUkVTVUxU
IERPTU5vZGU6OnNldFRleHRDb250ZW50KF9Jbl8gQlNUUiAvKnRleHQqLykKIEhSRVNVTFQgRE9N
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50
TGlzdGVuZXIqIGxpc3RlbmVyLCBCT09MIHVzZUNhcHR1cmUpCiB7CiAgICAgYXV0byB3ZWJMaXN0
ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV9ub2RlLT5h
ZGRFdmVudExpc3RlbmVyKHR5cGUsIFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsK
KyAgICBtX25vZGUtPmFkZEV2ZW50TGlzdGVuZXIod2NoYXJBc1VDaGFyKHR5cGUpLCBXVEZNb3Zl
KHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTQy
Niw3ICs0MjYsNyBAQCBIUkVTVUxUIERPTU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoX0luXyBC
U1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKgogICAgIGlmICghbV9ub2RlKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExp
c3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fbm9kZS0+cmVtb3ZlRXZlbnRMaXN0ZW5l
cih0eXBlLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgbV9ub2RlLT5yZW1vdmVFdmVu
dExpc3RlbmVyKHdjaGFyQXNVQ2hhcih0eXBlKSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUpOwog
ICAgIHJldHVybiBTX09LOwogfQogCkBAIC02NDEsNyArNjQxLDcgQEAgSFJFU1VMVCBET01Eb2N1
bWVudDo6Y3JlYXRlRWxlbWVudChfSW5fIEJTVFIgdGFnTmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJ
RE9NRWxlbWUKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBTdHJpbmcgdGFnTmFtZVN0cmluZyh0YWdOYW1lKTsKKyAgICBTdHJpbmcgdGFnTmFtZVN0
cmluZyA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0YWdOYW1lKTsKICAgICBhdXRvIGNy
ZWF0ZUVsZW1lbnRSZXN1bHQgPSBtX2RvY3VtZW50LT5jcmVhdGVFbGVtZW50Rm9yQmluZGluZ3Mo
dGFnTmFtZVN0cmluZyk7CiAgICAgaWYgKGNyZWF0ZUVsZW1lbnRSZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC03MjAsNyArNzIwLDcgQEAgSFJFU1VMVCBE
T01Eb2N1bWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUoX0luXyBCU1RSIHRhZ05hbWUsIF9DT01f
T3V0cHRyX29wdF8gSUQKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBTdHJpbmcgdGFnTmFtZVN0cmluZyh0YWdOYW1lKTsKKyAgICBTdHJpbmcgdGFn
TmFtZVN0cmluZyA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0YWdOYW1lKTsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IGVsZW1lbnRzOwogICAgIGlmICghdGFnTmFtZVN0cmlu
Zy5pc051bGwoKSkKICAgICAgICAgZWxlbWVudHMgPSBtX2RvY3VtZW50LT5nZXRFbGVtZW50c0J5
VGFnTmFtZSh0YWdOYW1lU3RyaW5nKTsKQEAgLTc2Myw4ICs3NjMsOCBAQCBIUkVTVUxUIERPTURv
Y3VtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKF9Jbl8gQlNUUiBuYW1lc3BhY2VVUkksIF9J
bl8gQlNUUiBsbwogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAotICAgIFN0cmluZyBuYW1lc3BhY2VVUklTdHJpbmcobmFtZXNwYWNlVVJJKTsKLSAgICBTdHJp
bmcgbG9jYWxOYW1lU3RyaW5nKGxvY2FsTmFtZSk7CisgICAgU3RyaW5nIG5hbWVzcGFjZVVSSVN0
cmluZyA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhuYW1lc3BhY2VVUkkpOworICAgIFN0
cmluZyBsb2NhbE5hbWVTdHJpbmcgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobG9jYWxO
YW1lKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxpc3Q+IGVsZW1lbnRzOwogICAgIGlmICgh
bG9jYWxOYW1lU3RyaW5nLmlzTnVsbCgpKQogICAgICAgICBlbGVtZW50cyA9IG1fZG9jdW1lbnQt
PmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobmFtZXNwYWNlVVJJU3RyaW5nLCBsb2NhbE5hbWVTdHJp
bmcpOwpAQCAtNzgwLDcgKzc4MCw3IEBAIEhSRVNVTFQgRE9NRG9jdW1lbnQ6OmdldEVsZW1lbnRC
eUlkKF9Jbl8gQlNUUiBlbGVtZW50SWQsIF9DT01fT3V0cHRyX29wdF8gSURPTUVsCiAgICAgaWYg
KCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgU3RyaW5nIGlkU3Ry
aW5nKGVsZW1lbnRJZCk7CisgICAgU3RyaW5nIGlkU3RyaW5nID0gbnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKGVsZW1lbnRJZCk7CiAgICAgKnJlc3VsdCA9IERPTUVsZW1lbnQ6OmNyZWF0ZUlu
c3RhbmNlKG1fZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKGlkU3RyaW5nKSk7CiAgICAgcmV0dXJu
ICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOwogfQpAQCAtODA0LDcgKzgwNCw3IEBAIEhSRVNVTFQg
RE9NRG9jdW1lbnQ6OmdldENvbXB1dGVkU3R5bGUoX0luX29wdF8gSURPTUVsZW1lbnQqIGVsdCwg
X0luXyBCU1RSIHBzZXVkCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBhdXRvKiBkdiA9
IG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpOwotICAgIFN0cmluZyBwc2V1ZG9FbHRTdHJpbmcocHNl
dWRvRWx0KTsKKyAgICBTdHJpbmcgcHNldWRvRWx0U3RyaW5nID0gbnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKHBzZXVkb0VsdCk7CiAgICAgCiAgICAgaWYgKCFkdikKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKQEAgLTgyMSw3ICs4MjEsNyBAQCBIUkVTVUxUIERPTURvY3VtZW50OjpjcmVhdGVF
dmVudChfSW5fIEJTVFIgZXZlbnRUeXBlLCBfQ09NX091dHB0cl9vcHRfIElET01FdmVudAogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgICpyZXN1bHQgPSBudWxscHRyOwogCi0gICAgU3Ry
aW5nIGV2ZW50VHlwZVN0cmluZyhldmVudFR5cGUsIFN5c1N0cmluZ0xlbihldmVudFR5cGUpKTsK
KyAgICBTdHJpbmcgZXZlbnRUeXBlU3RyaW5nID0gd2NoYXJUb1N0cmluZyhldmVudFR5cGUsIFN5
c1N0cmluZ0xlbihldmVudFR5cGUpKTsKICAgICBhdXRvIGNyZWF0ZUV2ZW50UmVzdWx0ID0gbV9k
b2N1bWVudC0+Y3JlYXRlRXZlbnQoZXZlbnRUeXBlU3RyaW5nKTsKICAgICBpZiAoY3JlYXRlRXZl
bnRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC05MjQs
NyArOTI0LDcgQEAgSFJFU1VMVCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoX0luXyBCU1RS
IHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKgogICAgIGlmICghbV93aW5kb3cpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0byB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlz
dGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV93aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIo
dHlwZSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNhcHR1cmUpOworICAgIG1fd2luZG93LT5h
ZGRFdmVudExpc3RlbmVyKHdjaGFyQXNVQ2hhcih0eXBlKSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciks
IHVzZUNhcHR1cmUpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC05MzUsNyArOTM1LDcgQEAg
SFJFU1VMVCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoX0luXyBCU1RSIHR5cGUsIF9J
bl9vcHRfIElET01FdmVudExpc3RlbmUKICAgICBpZiAoIW1fd2luZG93KQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVh
dGUobGlzdGVuZXIpOwotICAgIG1fd2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdl
Ykxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBtX3dpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5l
cih3Y2hhckFzVUNoYXIodHlwZSksIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApAQCAtMTA2Niw3ICsxMDY2LDcgQEAgSFJFU1VMVCBET01FbGVtZW50Ojpn
ZXRBdHRyaWJ1dGUoX0luXyBCU1RSIG5hbWUsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQp
CiAgICAgKnJlc3VsdCA9IG51bGxwdHI7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7Ci0gICAgV1RGOjpTdHJpbmcgbmFtZVN0cmluZyhuYW1lLCBTeXNTdHJpbmdM
ZW4obmFtZSkpOworICAgIFdURjo6U3RyaW5nIG5hbWVTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKG5h
bWUsIFN5c1N0cmluZ0xlbihuYW1lKSk7CiAgICAgV1RGOjpTdHJpbmcmIGF0dHJWYWx1ZVN0cmlu
ZyA9IChXVEY6OlN0cmluZyYpIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKG5hbWVTdHJpbmcpOwog
ICAgICpyZXN1bHQgPSBCU3RyaW5nKGF0dHJWYWx1ZVN0cmluZykucmVsZWFzZSgpOwogICAgIGlm
IChhdHRyVmFsdWVTdHJpbmcubGVuZ3RoKCkgJiYgISpyZXN1bHQpCkBAIC0xMDc5LDggKzEwNzks
OCBAQCBIUkVTVUxUIERPTUVsZW1lbnQ6OnNldEF0dHJpYnV0ZShfSW5fIEJTVFIgbmFtZSwgX0lu
XyBCU1RSIHZhbHVlKQogICAgIGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgV1RGOjpTdHJpbmcgbmFtZVN0cmluZyhuYW1lLCBTeXNTdHJpbmdMZW4obmFtZSkp
OwotICAgIFdURjo6U3RyaW5nIHZhbHVlU3RyaW5nKHZhbHVlLCBTeXNTdHJpbmdMZW4odmFsdWUp
KTsKKyAgICBXVEY6OlN0cmluZyBuYW1lU3RyaW5nID0gd2NoYXJUb1N0cmluZyhuYW1lLCBTeXNT
dHJpbmdMZW4obmFtZSkpOworICAgIFdURjo6U3RyaW5nIHZhbHVlU3RyaW5nID0gd2NoYXJUb1N0
cmluZyh2YWx1ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSk7CiAgICAgYXV0byByZXN1bHQgPSBtX2Vs
ZW1lbnQtPnNldEF0dHJpYnV0ZShuYW1lU3RyaW5nLCB2YWx1ZVN0cmluZyk7CiAgICAgcmV0dXJu
IHJlc3VsdC5oYXNFeGNlcHRpb24oKSA/IEVfRkFJTCA6IFNfT0s7CiB9CkBAIC0xMjkyLDcgKzEy
OTIsNyBAQCBIUkVTVUxUIERPTUVsZW1lbnQ6OmZvbnQoX091dF8gV2ViRm9udERlc2NyaXB0aW9u
KiB3ZWJGb250RGVzY3JpcHRpb24pCiAgICAgVUNoYXIqIGZhbWlseUNoYXJhY3RlcnNCdWZmZXIg
PSBuZXcgVUNoYXJbZmFtaWx5Lmxlbmd0aCgpXTsKICAgICBTdHJpbmdWaWV3KGZhbWlseS5zdHJp
bmcoKSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlcik7
CiAKLSAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZhbWlseUNoYXJhY3RlcnNCdWZm
ZXI7CisgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHkgPSB1Y2hhckFzV0NoYXIoZmFtaWx5
Q2hhcmFjdGVyc0J1ZmZlcik7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHlMZW5ndGgg
PSBmYW1pbHkubGVuZ3RoKCk7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5zaXplID0gZm9udERl
c2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOwogICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+Ym9sZCA9
IGlzRm9udFdlaWdodEJvbGQoZm9udERlc2NyaXB0aW9uLndlaWdodCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCAzY2YzOGI0NTY2M2VlNWU4OWY0
OTlhZjY3NzEyYmMzOWM3YzVhNjM5Li5kZDM0ZjkzZjc5OTliOGUyMGQ1NmI4YzJhYWQ3MmMyYzUy
NDJjMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1MQ2xhc3Nl
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwCkBA
IC0yNSw4ICsyNSw4IEBACiAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRlICJET01I
VE1MQ2xhc3Nlcy5oIgotI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAKKyNpbmNsdWRlICJXZWJGcmFt
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09N
UHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgpAQCAtNDUsNiArNDUsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUZXh0Q29udHJvbC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0zNzIsNyArMzczLDcgQEAgSFJF
U1VMVCBET01IVE1MRG9jdW1lbnQ6OndyaXRlKF9Jbl8gQlNUUiB0ZXh0KQogICAgIGlmICghbV9k
b2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fZG9jdW1lbnQtPndyaXRl
KG51bGxwdHIsIHsgU3RyaW5nIHsgdGV4dCB9IH0pOworICAgIG1fZG9jdW1lbnQtPndyaXRlKG51
bGxwdHIsIHsgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRleHQpIH0pOwogICAgIHJldHVy
biBTX09LOwogfQogICAgIApAQCAtMzgxLDcgKzM4Miw3IEBAIEhSRVNVTFQgRE9NSFRNTERvY3Vt
ZW50Ojp3cml0ZWxuKF9Jbl8gQlNUUiB0ZXh0KQogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fZG9jdW1lbnQtPndyaXRlbG4obnVsbHB0ciwgeyBT
dHJpbmcgeyB0ZXh0IH0gfSk7CisgICAgbV9kb2N1bWVudC0+d3JpdGVsbihudWxscHRyLCB7IG51
bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZXh0KSB9KTsKICAgICByZXR1cm4gU19PSzsKIH0K
ICAgICAKQEAgLTUxMSw3ICs1MTIsNyBAQCBIUkVTVUxUIERPTUhUTUxFbGVtZW50OjpzZXRJbm5l
ckhUTUwoX0luXyBCU1RSIGh0bWwpCiB7CiAgICAgQVNTRVJUKGlzPEhUTUxFbGVtZW50PihtX2Vs
ZW1lbnQpKTsKICAgICBIVE1MRWxlbWVudCogaHRtbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxl
bWVudD4obV9lbGVtZW50KTsKLSAgICBTdHJpbmcgaHRtbFN0cmluZyhodG1sLCBTeXNTdHJpbmdM
ZW4oaHRtbCkpOworICAgIFN0cmluZyBodG1sU3RyaW5nID0gd2NoYXJUb1N0cmluZyhodG1sLCBT
eXNTdHJpbmdMZW4oaHRtbCkpOwogICAgIGh0bWxFbGVtZW50LT5zZXRJbm5lckhUTUwoaHRtbFN0
cmluZyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC01MzAsNyArNTMxLDcgQEAgSFJFU1VMVCBE
T01IVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KF9Jbl8gQlNUUiB0ZXh0KQogewogICAgIEFTU0VS
VChpczxIVE1MRWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTEVsZW1lbnQqIGh0bWxFbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG1fZWxlbWVudCk7Ci0gICAgV1RGOjpTdHJpbmcg
dGV4dFN0cmluZyh0ZXh0LCBTeXNTdHJpbmdMZW4odGV4dCkpOworICAgIFN0cmluZyB0ZXh0U3Ry
aW5nID0gd2NoYXJUb1N0cmluZyh0ZXh0LCBTeXNTdHJpbmdMZW4odGV4dCkpOwogICAgIGh0bWxF
bGVtZW50LT5zZXRJbm5lclRleHQodGV4dFN0cmluZyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBA
IC0xMTg1LDcgKzExODYsNyBAQCBIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUo
X0luXyBCU1RSIHR5cGUpCiB7CiAgICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZWxl
bWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwotICAgIFdURjo6U3RyaW5nIHR5cGVTdHJpbmco
dHlwZSwgU3lzU3RyaW5nTGVuKHR5cGUpKTsKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHdjaGFy
VG9TdHJpbmcodHlwZSwgU3lzU3RyaW5nTGVuKHR5cGUpKTsKICAgICBpbnB1dEVsZW1lbnQuc2V0
VHlwZSh0eXBlU3RyaW5nKTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTEyMjgsNyArMTIyOSw3
IEBAIEhSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVGb3JVc2VyKF9Jbl8gQlNU
UiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7
CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKm1fZWxlbWVudCk7Ci0gICAgaW5wdXRFbGVtZW50LnNldFZhbHVlRm9yVXNlcihT
dHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPih2YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsK
KyAgICBpbnB1dEVsZW1lbnQuc2V0VmFsdWVGb3JVc2VyKHdjaGFyVG9TdHJpbmcodmFsdWUsIFN5
c1N0cmluZ0xlbih2YWx1ZSkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTMyNiw3ICsx
MzI3LDcgQEAgSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpyZXBsYWNlQ2hhcmFjdGVyc0lu
UmFuZ2UoaW50IHN0YXJ0VGFyZ2V0LCBpbnQgZW5kVGEKICAgICBIVE1MSW5wdXRFbGVtZW50JiBp
bnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsKIAog
ICAgIFN0cmluZyBuZXdWYWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZSgpOwotICAgIFN0cmluZyB3
ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPihyZXBsYWNlbWVudFN0
cmluZyksIFN5c1N0cmluZ0xlbihyZXBsYWNlbWVudFN0cmluZykpOworICAgIFN0cmluZyB3ZWJD
b3JlUmVwbGFjZW1lbnRTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKHJlcGxhY2VtZW50U3RyaW5nLCBT
eXNTdHJpbmdMZW4ocmVwbGFjZW1lbnRTdHJpbmcpKTsKICAgICBuZXdWYWx1ZS5yZXBsYWNlKHN0
YXJ0VGFyZ2V0LCBlbmRUYXJnZXQgLSBzdGFydFRhcmdldCwgd2ViQ29yZVJlcGxhY2VtZW50U3Ry
aW5nKTsKICAgICBpbnB1dEVsZW1lbnQuc2V0VmFsdWUobmV3VmFsdWUpOwogICAgIGlucHV0RWxl
bWVudC5zZXRTZWxlY3Rpb25SYW5nZShpbmRleCwgbmV3VmFsdWUubGVuZ3RoKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKaW5kZXgg
ZThlNWY1YzRjYzExYTEyMDgzYmJlNGI1MThiMmM0ODZlZDU2OGM4OS4uYTU4YmJmMzIzZTQxYWE0
ZDFhNTYzOWRlZDQxOTJhMmFiNTZlNmMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNs
dWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRlICJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKIAot
I2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0NPTVB0ci5oPgorI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTExOSw3ICsxMjAsNyBA
QCBIUkVTVUxUIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihfSW5fb3B0XyBJV2ViVmlldwogICAgICAgICAgICAgQlN0cmluZyB1cmw7CiAgICAg
ICAgICAgICAvLyBBIGZpbGUgVVJMIHNob3VsZG4ndCBmYWxsIHRocm91Z2ggdG8gaGVyZSwgYnV0
IGlmIGl0IGRpZCwKICAgICAgICAgICAgIC8vIGl0IHdvdWxkIGJlIGEgc2VjdXJpdHkgcmlzayB0
byBvcGVuIGl0LgotICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXF1ZXN0LT5VUkwoJnVybCkp
ICYmICFTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkuc3RhcnRzV2l0aCgiZmlsZToiKSkg
eworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXF1ZXN0LT5VUkwoJnVybCkpICYmICF3Y2hh
clRvU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpLnN0YXJ0c1dpdGgoImZpbGU6IikpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogT3BlbiB0aGUgVVJMIG5vdCBieSBtZWFucyBvZiBh
IHdlYmZyYW1lLCBidXQgYnkgaGFuZGluZyBpdCBvdmVyIHRvIHRoZSBzeXN0ZW0gYW5kIGxldHRp
bmcgaXQgZGV0ZXJtaW5lIGhvdyB0byBvcGVuIHRoYXQgcGFydGljdWxhciBVUkwgc2NoZW1lLiAg
U2VlIGRvY3VtZW50YXRpb24gZm9yIFtOU1dvcmtzcGFjZSBvcGVuVVJMXQogICAgICAgICAgICAg
ICAgIDsKICAgICAgICAgICAgIH0KQEAgLTE0OSw3ICsxNTAsNyBAQCBIUkVTVUxUIERlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZTo6ZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUoX0luX29wdF8gSVdlYlZpZXcq
IHdlYlZpZQogICAgIEJTdHJpbmcgdXJsOwogICAgIHJlcXVlc3QtPlVSTCgmdXJsKTsKIAotICAg
IGlmIChTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkuc3RhcnRzV2l0aCgiZmlsZToiKSkg
eworICAgIGlmICh3Y2hhclRvU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpLnN0YXJ0c1dp
dGgoImZpbGU6IikpIHsKICAgICAgICAgQk9PTCBpc0RpcmVjdG9yeSA9IEZBTFNFOwogICAgICAg
ICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGF0dHJzOwogICAgICAgICBpZiAoR2V0RmlsZUF0
dHJpYnV0ZXNFeCh1cmwsIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmF0dHJzKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IDc0NzFhMTE2
YzczMmRiZWY4ZmZmMTEwYzNkMTFiYzM2Yzg5ZThiODEuLmU0Y2Q5MDU3MmQ4ODExMmJhZmY2ZGVj
ODBhZjMyZDNmZGY1NjE4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01h
cnNoYWxsaW5nSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDAsNyArNDEsNyBAQCBDRkRpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyBNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkRpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcwogCiBVUkwgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKEJTVFIgdXJsU3Ry
KQogewotICAgIHJldHVybiBVUkwoVVJMKCksIFN0cmluZyh1cmxTdHIsIFN5c1N0cmluZ0xlbih1
cmxTdHIpKSk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgd2NoYXJUb1N0cmluZyh1cmxTdHIsIFN5
c1N0cmluZ0xlbih1cmxTdHIpKSk7CiB9CiAKIEJTVFIgTWFyc2hhbGxpbmdIZWxwZXJzOjpVUkxU
b0JTVFIoY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKaW5k
ZXggYjc2MmZkNjEyOWEzZjc4ZTE1OGFhMjNkYjkxZGI3OGNkM2FjODRlMy4uYzE2MjY3OWQ4NTlk
YjU0Yjg1YTNhMGJjNmFiNGY2Y2EwYjQxNzRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNh
Y2hlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0No
YXJTdHJpbmdFeHRyYXMuaD4KIAogI2lmIFVTRShDVVJMKQogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vy
bENhY2hlTWFuYWdlci5oPgpAQCAtMjYxLDcgKzI2Miw3IEBAIEhSRVNVTFQgV2ViQ2FjaGU6OmNh
Y2hlRm9sZGVyKF9fZGVyZWZfb3V0X29wdCBCU1RSKiBsb2NhdGlvbikKIEhSRVNVTFQgV2ViQ2Fj
aGU6OnNldENhY2hlRm9sZGVyKF9Jbl8gQlNUUiBsb2NhdGlvbikKIHsKICNpZiBVU0UoQ1VSTCkK
LSAgICBTdHJpbmcgY2FjaGVGb2xkZXIobG9jYXRpb24sIFN5c1N0cmluZ0xlbihsb2NhdGlvbikp
OworICAgIFN0cmluZyBjYWNoZUZvbGRlciA9IHdjaGFyVG9TdHJpbmcobG9jYXRpb24sIFN5c1N0
cmluZ0xlbihsb2NhdGlvbikpOwogICAgIFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OnNpbmds
ZXRvbigpLnNldENhY2hlRGlyZWN0b3J5KGNhY2hlRm9sZGVyKTsKICAgICByZXR1cm4gU19PSzsK
ICNlbGlmIFVTRShDRlVSTENPTk5FQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA4MzMx
Y2E5NDA0ZTU5MTVlNzM2Y2UxMGFiZGZmYjk4YWIyZmI0YjZjLi4wYjIxZTZkNTNmMGYxNzJkZTM4
ZTgyNjk0OTQ3Y2RhMDQ0NzEwZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTYwLDYgKzYw
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudVdpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMTcxLDIwICsxNzIsMjAgQEAgc3RhdGljIENPTVB0cjxJUHJvcGVydHlCYWc+
IGNyZWF0ZVdpbmRvd0ZlYXR1cmVzUHJvcGVydHlCYWcoY29uc3QgV2luZG93RmVhdHVyZXMKIHsK
ICAgICBIYXNoTWFwPFN0cmluZywgQ09NVmFyaWFudD4gbWFwOwogICAgIGlmIChmZWF0dXJlcy54
KQotICAgICAgICBtYXAuc2V0KFdlYldpbmRvd0ZlYXR1cmVzWEtleSwgKmZlYXR1cmVzLngpOwor
ICAgICAgICBtYXAuc2V0KHdjaGFyQXNVQ2hhcihXZWJXaW5kb3dGZWF0dXJlc1hLZXkpLCAqZmVh
dHVyZXMueCk7CiAgICAgaWYgKGZlYXR1cmVzLnkpCi0gICAgICAgIG1hcC5zZXQoV2ViV2luZG93
RmVhdHVyZXNZS2V5LCAqZmVhdHVyZXMueSk7CisgICAgICAgIG1hcC5zZXQod2NoYXJBc1VDaGFy
KFdlYldpbmRvd0ZlYXR1cmVzWUtleSksICpmZWF0dXJlcy55KTsKICAgICBpZiAoZmVhdHVyZXMu
d2lkdGgpCi0gICAgICAgIG1hcC5zZXQoV2ViV2luZG93RmVhdHVyZXNXaWR0aEtleSwgKmZlYXR1
cmVzLndpZHRoKTsKKyAgICAgICAgbWFwLnNldCh3Y2hhckFzVUNoYXIoV2ViV2luZG93RmVhdHVy
ZXNXaWR0aEtleSksICpmZWF0dXJlcy53aWR0aCk7CiAgICAgaWYgKGZlYXR1cmVzLmhlaWdodCkK
LSAgICAgICAgbWFwLnNldChXZWJXaW5kb3dGZWF0dXJlc0hlaWdodEtleSwgKmZlYXR1cmVzLmhl
aWdodCk7Ci0gICAgbWFwLnNldChXZWJXaW5kb3dGZWF0dXJlc01lbnVCYXJWaXNpYmxlS2V5LCBm
ZWF0dXJlcy5tZW51QmFyVmlzaWJsZSk7Ci0gICAgbWFwLnNldChXZWJXaW5kb3dGZWF0dXJlc1N0
YXR1c0JhclZpc2libGVLZXksIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpOwotICAgIG1hcC5z
ZXQoV2ViV2luZG93RmVhdHVyZXNUb29sQmFyVmlzaWJsZUtleSwgZmVhdHVyZXMudG9vbEJhclZp
c2libGUpOwotICAgIG1hcC5zZXQoV2ViV2luZG93RmVhdHVyZXNTY3JvbGxiYXJzVmlzaWJsZUtl
eSwgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUpOwotICAgIG1hcC5zZXQoV2ViV2luZG93RmVh
dHVyZXNSZXNpemFibGVLZXksIGZlYXR1cmVzLnJlc2l6YWJsZSk7Ci0gICAgbWFwLnNldChXZWJX
aW5kb3dGZWF0dXJlc0Z1bGxzY3JlZW5LZXksIGZlYXR1cmVzLmZ1bGxzY3JlZW4pOwotICAgIG1h
cC5zZXQoV2ViV2luZG93RmVhdHVyZXNEaWFsb2dLZXksIGZlYXR1cmVzLmRpYWxvZyk7CisgICAg
ICAgIG1hcC5zZXQod2NoYXJBc1VDaGFyKFdlYldpbmRvd0ZlYXR1cmVzSGVpZ2h0S2V5KSwgKmZl
YXR1cmVzLmhlaWdodCk7CisgICAgbWFwLnNldCh3Y2hhckFzVUNoYXIoV2ViV2luZG93RmVhdHVy
ZXNNZW51QmFyVmlzaWJsZUtleSksIGZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKTsKKyAgICBtYXAu
c2V0KHdjaGFyQXNVQ2hhcihXZWJXaW5kb3dGZWF0dXJlc1N0YXR1c0JhclZpc2libGVLZXkpLCBm
ZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlKTsKKyAgICBtYXAuc2V0KHdjaGFyQXNVQ2hhcihXZWJX
aW5kb3dGZWF0dXJlc1Rvb2xCYXJWaXNpYmxlS2V5KSwgZmVhdHVyZXMudG9vbEJhclZpc2libGUp
OworICAgIG1hcC5zZXQod2NoYXJBc1VDaGFyKFdlYldpbmRvd0ZlYXR1cmVzU2Nyb2xsYmFyc1Zp
c2libGVLZXkpLCBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSk7CisgICAgbWFwLnNldCh3Y2hh
ckFzVUNoYXIoV2ViV2luZG93RmVhdHVyZXNSZXNpemFibGVLZXkpLCBmZWF0dXJlcy5yZXNpemFi
bGUpOworICAgIG1hcC5zZXQod2NoYXJBc1VDaGFyKFdlYldpbmRvd0ZlYXR1cmVzRnVsbHNjcmVl
bktleSksIGZlYXR1cmVzLmZ1bGxzY3JlZW4pOworICAgIG1hcC5zZXQod2NoYXJBc1VDaGFyKFdl
YldpbmRvd0ZlYXR1cmVzRGlhbG9nS2V5KSwgZmVhdHVyZXMuZGlhbG9nKTsKIAogICAgIHJldHVy
biBDT01QdHI8SVByb3BlcnR5QmFnPihBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8Q09NVmFyaWFu
dD46OmFkb3B0KG1hcCkpOwogfQpAQCAtNDI0LDcgKzQyNSw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xp
ZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTCiAgICAgaWYgKCFyZXN1bHRCU1RSKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXN1bHQgPSBTdHJpbmcocmVzdWx0QlNUUiwgU3lzU3RyaW5nTGVuKHJlc3VsdEJTVFIpKTsK
KyAgICByZXN1bHQgPSB3Y2hhclRvU3RyaW5nKHJlc3VsdEJTVFIsIFN5c1N0cmluZ0xlbihyZXN1
bHRCU1RSKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0NywxNSArNjQ4LDE1IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYgZmls
ZUNob29zZXIpCiAgICAgb2ZuLmxTdHJ1Y3RTaXplID0gc2l6ZW9mKG9mbik7CiAgICAgb2ZuLmh3
bmRPd25lciA9IHZpZXdXaW5kb3c7CiAgICAgU3RyaW5nIGFsbEZpbGVzID0gYWxsRmlsZXNUZXh0
KCk7Ci0gICAgYWxsRmlsZXMuYXBwZW5kKEwiXDAqLipcMFwwIiwgNik7CisgICAgYWxsRmlsZXMu
YXBwZW5kKHUiXDAqLipcMFwwIiwgNik7CiAKLSAgICBWZWN0b3I8VUNoYXI+IGZpbHRlckNoYXJh
Y3RlcnMgPSBhbGxGaWxlcy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOyAvLyBSZXRh
aW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIEdldE9wZW5GaWxlTmFtZSBjYWxsCisg
ICAgVmVjdG9yPHdjaGFyX3Q+IGZpbHRlckNoYXJhY3RlcnMgPSBzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoYWxsRmlsZXMpOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2Ug
dGhlIEdldE9wZW5GaWxlTmFtZSBjYWxsCiAgICAgb2ZuLmxwc3RyRmlsdGVyID0gZmlsdGVyQ2hh
cmFjdGVycy5kYXRhKCk7CiAKICAgICBvZm4ubHBzdHJGaWxlID0gZmlsZUJ1Zi5kYXRhKCk7CiAg
ICAgb2ZuLm5NYXhGaWxlID0gZmlsZUJ1Zi5zaXplKCk7CiAgICAgU3RyaW5nIGRpYWxvZ1RpdGxl
ID0gdXBsb2FkRmlsZVRleHQoKTsKLSAgICBWZWN0b3I8VUNoYXI+IGRpYWxvZ1RpdGxlQ2hhcmFj
dGVycyA9IGRpYWxvZ1RpdGxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJl
dGFpbiBidWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFrZSB0aGUgR2V0T3BlbkZpbGVOYW1lIGNhbGwK
KyAgICBWZWN0b3I8d2NoYXJfdD4gZGlhbG9nVGl0bGVDaGFyYWN0ZXJzID0gc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGRpYWxvZ1RpdGxlKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3Vn
aCB0byBtYWtlIHRoZSBHZXRPcGVuRmlsZU5hbWUgY2FsbAogICAgIG9mbi5scHN0clRpdGxlID0g
ZGlhbG9nVGl0bGVDaGFyYWN0ZXJzLmRhdGEoKTsKICAgICBvZm4uRmxhZ3MgPSBPRk5fRU5BQkxF
U0laSU5HIHwgT0ZOX0ZJTEVNVVNURVhJU1QgfCBPRk5fUEFUSE1VU1RFWElTVCB8IE9GTl9FWFBM
T1JFUjsKICAgICBpZiAobXVsdGlGaWxlKQpAQCAtNjY0LDE0ICs2NjUsMTQgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJiBmaWxlQ2hvb3Nl
cikKICAgICBpZiAoR2V0T3BlbkZpbGVOYW1lKCZvZm4pKSB7CiAgICAgICAgIFdDSEFSKiBmaWxl
cyA9IGZpbGVCdWYuZGF0YSgpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlTGlzdDsKLSAg
ICAgICAgU3RyaW5nIGZpbGUoZmlsZXMpOworICAgICAgICBTdHJpbmcgZmlsZSA9IG51bGxUZXJt
aW5hdGVkV0NoYXJUb1N0cmluZyhmaWxlcyk7CiAgICAgICAgIGlmIChtdWx0aUZpbGUpIHsKICAg
ICAgICAgICAgIHdoaWxlICghZmlsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAvLyBX
aGVuIHVzaW5nIHRoZSBPRk5fRVhQTE9SRVIgZmxhZywgdGhlIGZpbGUgbGlzdCBpcyBudWxsIGRl
bGltaXRlZC4KICAgICAgICAgICAgICAgICAvLyBXaGVuIHlvdSBjcmVhdGUgYSBTdHJpbmcgZnJv
bSBhIHB0ciB0byB0aGlzIGxpc3QsIGl0IHdpbGwgdXNlIHN0cmxlbiB0byBsb29rIGZvciB0aGUg
bnVsbCBjaGFyYWN0ZXIuCiAgICAgICAgICAgICAgICAgLy8gVGhlbiB3ZSBmaW5kIHRoZSBuZXh0
IGZpbGUgcGF0aCBzdHJpbmcgYnkgdXNpbmcgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHdlIGp1
c3QgY3JlYXRlZC4KICAgICAgICAgICAgICAgICBXQ0hBUiogbmV4dEZpbGVQdHIgPSBmaWxlcyAr
IGZpbGUubGVuZ3RoKCkgKyAxOwotICAgICAgICAgICAgICAgIFN0cmluZyBuZXh0RmlsZShuZXh0
RmlsZVB0cik7CisgICAgICAgICAgICAgICAgU3RyaW5nIG5leHRGaWxlID0gbnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKG5leHRGaWxlUHRyKTsKICAgICAgICAgICAgICAgICAvLyBJZiBtdWx0
aXBsZSBmaWxlcyBhcmUgc2VsZWN0ZWQsIHRoZXJlIHdpbGwgYmUgYSBkaXJlY3RvcnkgbmFtZSBm
aXJzdCwgd2hpY2ggd2UgZG9uJ3Qgd2FudCB0byBhZGQgdG8gdGhlIHZlY3Rvci4KICAgICAgICAg
ICAgICAgICAvLyBXZSBrbm93IGEgc2luZ2xlIGZpbGUgd2FzIHNlbGVjdGVkIGlmIHRoZXJlIGlz
IG9ubHkgb25lIGZpbGVuYW1lIGluIHRoZSBsaXN0LiAgCiAgICAgICAgICAgICAgICAgLy8gSW4g
dGhhdCBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIHNraXAgYWRkaW5nIHRoZSBmaXJzdCAoYW5kIG9u
bHkpIG5hbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBhYWUxZTAwMGY4ZmFjOThlMzcyMjk0
MDAxYzY5YzRjNzBlZDUzZmY5Li5hN2E2MTBmN2I2NmI4MDQ1Nzc3MzRiNzM1NTBjNzU1YzQyNDY0
MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUg
IldlYktpdERMTC5oIgogI2luY2x1ZGUgIldlYkVkaXRvckNsaWVudC5oIgogCisjaW5jbHVkZSAi
RE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJOb3Rp
ZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRl
ICJXZWJWaWV3LmgiCi0jaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlIDxjb211
dGlsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclR5cGlu
Z0dlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
d2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTc1OCw3ICs3NTksNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgaW50KiBtaXNz
cGVsbGluZ0xvYwogICAgICAgICByZXR1cm47CiAKICAgICBpbml0Vmlld1NwZWNpZmljU3BlbGxp
bmcobV93ZWJWaWV3KTsKLSAgICBlZC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKG1fd2ViVmlldywg
dGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxpbmdM
b2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgIGVkLT5jaGVja1NwZWxsaW5nT2ZTdHJp
bmcobV93ZWJWaWV3LCB1Y2hhckFzV0NoYXIodGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSks
IHRleHQubGVuZ3RoKCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsK
IH0KIAogU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9y
TWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBpbnB1dFdvcmQpCkBAIC03ODAsNyArNzgxLDcg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcg
dGV4dCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwKIAogICAgIGluaXRWaWV3U3BlY2lmaWNTcGVsbGlu
ZyhtX3dlYlZpZXcpOwogICAgIENPTVB0cjxJRW51bVdlYkdyYW1tYXJEZXRhaWxzPiBlbnVtRGV0
YWlsc09iajsKLSAgICBpZiAoRkFJTEVEKGVkLT5jaGVja0dyYW1tYXJPZlN0cmluZyhtX3dlYlZp
ZXcsIHRleHQudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksICZlbnVtRGV0
YWlsc09iaiwgYmFkR3JhbW1hckxvY2F0aW9uLCBiYWRHcmFtbWFyTGVuZ3RoKSkpCisgICAgaWYg
KEZBSUxFRChlZC0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcobV93ZWJWaWV3LCB1Y2hhckFzV0NoYXIo
dGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSksIHRleHQubGVuZ3RoKCksICZlbnVtRGV0YWls
c09iaiwgYmFkR3JhbW1hckxvY2F0aW9uLCBiYWRHcmFtbWFyTGVuZ3RoKSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC03OTcsNyArNzk4LDcgQEAgdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9y
PEdyYW1tYXJEZXRhaWwKICAgICAgICAgQlN0cmluZyB1c2VyRGVzYzsKICAgICAgICAgaWYgKEZB
SUxFRChkZXRhaWxPYmotPnVzZXJEZXNjcmlwdGlvbigmdXNlckRlc2MpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0gU3RyaW5nKHVzZXJE
ZXNjLCBTeXNTdHJpbmdMZW4odXNlckRlc2MpKTsKKyAgICAgICAgZGV0YWlsLnVzZXJEZXNjcmlw
dGlvbiA9IHdjaGFyVG9TdHJpbmcodXNlckRlc2MsIFN5c1N0cmluZ0xlbih1c2VyRGVzYykpOwog
CiAgICAgICAgIENPTVB0cjxJRW51bVNwZWxsaW5nR3Vlc3Nlcz4gZW51bUd1ZXNzZXNPYmo7CiAg
ICAgICAgIGlmIChGQUlMRUQoZGV0YWlsT2JqLT5ndWVzc2VzKCZlbnVtR3Vlc3Nlc09iaikpKQpA
QCAtODA2LDcgKzgwNyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0
cmluZyhTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsCiAgICAgICAgICAgICBC
U3RyaW5nIGd1ZXNzOwogICAgICAgICAgICAgaWYgKGVudW1HdWVzc2VzT2JqLT5OZXh0KDEsICZn
dWVzcywgJmZldGNoZWQpICE9IFNfT0spCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBkZXRhaWwuZ3Vlc3Nlcy5hcHBlbmQoU3RyaW5nKGd1ZXNzLCBTeXNTdHJpbmdMZW4oZ3Vl
c3MpKSk7CisgICAgICAgICAgICBkZXRhaWwuZ3Vlc3Nlcy5hcHBlbmQod2NoYXJUb1N0cmluZyhn
dWVzcywgU3lzU3RyaW5nTGVuKGd1ZXNzKSkpOwogICAgICAgICB9CiAKICAgICAgICAgZGV0YWls
cy5hcHBlbmQoZGV0YWlsKTsKQEAgLTg3OCw3ICs4NzksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNv
bnRleAogICAgICAgICBCU3RyaW5nIGd1ZXNzOwogICAgICAgICBpZiAoZW51bUd1ZXNzZXNPYmot
Pk5leHQoMSwgJmd1ZXNzLCAmZmV0Y2hlZCkgIT0gU19PSykKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBndWVzc2VzLmFwcGVuZChTdHJpbmcoZ3Vlc3MsIFN5c1N0cmluZ0xlbihndWVzcykp
KTsKKyAgICAgICAgZ3Vlc3Nlcy5hcHBlbmQod2NoYXJUb1N0cmluZyhndWVzcywgU3lzU3RyaW5n
TGVuKGd1ZXNzKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDExNTk1YjJmNmM3MGI0YWU0YjcxYzY3ZTYzZWJjNjM1YzU4YzhjNzguLmNlMWRhM2QyODg5
ZmVhMGNkYmQ3N2RjOTFmZTY3OWM2MTJiYzY3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTgzLDYgKzgzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dWJyZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CkBAIC04MTEsMTIgKzgxMiwxMiBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlcwogewog
ICAgIC8vIEZJWE1FOiBOZWVkIENoaWNrZW5DYXQgdG8gaW5jbHVkZSBDRk5ldHdvcmsvQ0ZVUkxF
cnJvci5oIHRvIGdldCB0aGVzZSB2YWx1ZXMKICAgICAvLyBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3Vs
ZCBjcmVhdGUgb3VyIG93biBlcnJvciBkb21haW4vY29kZXMuCi0gICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwgLTk5OSwgcmVxdWVzdC51cmwoKSwgU3Ry
aW5nKCJDYW5jZWxsZWQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IobnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwgLTk5OSwgcmVxdWVzdC51cmwoKSwg
U3RyaW5nKCJDYW5jZWxsZWQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0g
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0
RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklO
RygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IiwgIldlYktpdEVy
cm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3JpcHRpb24iKSk7CisgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKFdlYktpdEVycm9yRG9tYWlu
KSwgV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKSwgV0VC
X1VJX1NUUklORygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0Iiwg
IldlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3JpcHRpb24iKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9j
a2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtODI2LDEyICs4Mjcs
MTIgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVu
dEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVIKIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21h
aW4pLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJ
TkcoIlRoZSBVUkwgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5v
dFNob3dVUkwgZGVzY3JpcHRpb24iKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IobnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JDYW5u
b3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIGNhblx4RTJc
eDgwXHg5OXQgYmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9u
IikpOwogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcnJ1cHRl
ZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
LSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJL
aXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCks
IFdFQl9VSV9TVFJJTkcoIkZyYW1lIGxvYWQgaW50ZXJydXB0ZWQiLCAiV2ViS2l0RXJyb3JGcmFt
ZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlIGRlc2NyaXB0aW9uIikpOworICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhXZWJLaXRFcnJvckRv
bWFpbiksIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVx
dWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiRnJhbWUgbG9hZCBpbnRlcnJ1cHRlZCIsICJXZWJL
aXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgZGVzY3JpcHRpb24iKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dNSU1F
VHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtODQxLDIwICs4
NDIsMjAgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd01J
TUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb24KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJVUkxF
cnJvckRvbWFpbiksIC0xMTAwLCByZXNwb25zZS51cmwoKSwgU3RyaW5nKCJGaWxlIGRvZXMgbm90
IGV4aXN0LiIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihudWxsVGVybWluYXRlZFdDaGFy
VG9TdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtMTEwMCwgcmVzcG9uc2UudXJsKCksIFN0cmlu
ZygiRmlsZSBkb2VzIG5vdCBleGlzdC4iKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktp
dEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2Uu
dXJsKCksIFdFQl9VSV9TVFJJTkcoIlBsdWctaW4gaGFuZGxlZCBsb2FkIiwgIldlYktpdEVycm9y
UGx1Z0luV2lsbEhhbmRsZUxvYWQgZGVzY3JpcHRpb24iKSk7CisgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2Vi
S2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2UudXJsKCksIFdFQl9VSV9TVFJJ
TkcoIlBsdWctaW4gaGFuZGxlZCBsb2FkIiwgIldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxv
YWQgZGVzY3JpcHRpb24iKSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZEZhbGxCYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmIChlcnJvci5l
cnJvckNvZGUoKSA9PSBXZWJVUkxFcnJvckNhbmNlbGxlZCAmJiBlcnJvci5kb21haW4oKSA9PSBT
dHJpbmcoV2ViVVJMRXJyb3JEb21haW4pKQorICAgIGlmIChlcnJvci5lcnJvckNvZGUoKSA9PSBX
ZWJVUkxFcnJvckNhbmNlbGxlZCAmJiBlcnJvci5kb21haW4oKSA9PSBudWxsVGVybWluYXRlZFdD
aGFyVG9TdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoZXJyb3IuZXJyb3JDb2RlKCkgPT0gV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxl
TG9hZCAmJiBlcnJvci5kb21haW4oKSA9PSBTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pKQorICAg
IGlmIChlcnJvci5lcnJvckNvZGUoKSA9PSBXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2Fk
ICYmIGVycm9yLmRvbWFpbigpID09IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhXZWJLaXRF
cnJvckRvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpA
QCAtMTExNiw3ICsxMTE3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVnaW4KICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3IgcmVzb3Vy
Y2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJvckNvZGUsIHBsdWdpblZpZXcu
dXJsKCksIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IobnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBwbHVn
aW5WaWV3LnVybCgpLCBTdHJpbmcoKSk7CiAgICAgQ09NUHRyPElXZWJFcnJvcj4gZXJyb3IoQWRv
cHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShyZXNvdXJjZUVycm9yLCB1c2VySW5mb0Jh
Zy5nZXQoKSkpOwogICAgICAKICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+cGx1Z0luRmFpbGVk
V2l0aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291cmNlKGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CkBAIC0xMTQwLDEwICsxMTQxLDEwIEBAIFJlZlB0
cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgSFRNCiAKICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDT01WYXJp
YW50PiBhcmd1bWVudHM7CiAKLSAgICAgICAgICAgIGFyZ3VtZW50cy5zZXQoV2ViRW1iZWRkZWRW
aWV3QXR0cmlidXRlc0tleSwgdmlld0FyZ3VtZW50c0JhZyk7Ci0gICAgICAgICAgICBhcmd1bWVu
dHMuc2V0KFdlYkVtYmVkZGVkVmlld0Jhc2VVUkxLZXksIHVybC5zdHJpbmcoKSk7Ci0gICAgICAg
ICAgICBhcmd1bWVudHMuc2V0KFdlYkVtYmVkZGVkVmlld0NvbnRhaW5pbmdFbGVtZW50S2V5LCBj
b250YWluaW5nRWxlbWVudCk7Ci0gICAgICAgICAgICBhcmd1bWVudHMuc2V0KFdlYkVtYmVkZGVk
Vmlld01JTUVUeXBlS2V5LCBtaW1lVHlwZSk7CisgICAgICAgICAgICBhcmd1bWVudHMuc2V0KHdj
aGFyQXNVQ2hhcihXZWJFbWJlZGRlZFZpZXdBdHRyaWJ1dGVzS2V5KSwgdmlld0FyZ3VtZW50c0Jh
Zyk7CisgICAgICAgICAgICBhcmd1bWVudHMuc2V0KHdjaGFyQXNVQ2hhcihXZWJFbWJlZGRlZFZp
ZXdCYXNlVVJMS2V5KSwgdXJsLnN0cmluZygpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50cy5zZXQo
d2NoYXJBc1VDaGFyKFdlYkVtYmVkZGVkVmlld0NvbnRhaW5pbmdFbGVtZW50S2V5KSwgY29udGFp
bmluZ0VsZW1lbnQpOworICAgICAgICAgICAgYXJndW1lbnRzLnNldCh3Y2hhckFzVUNoYXIoV2Vi
RW1iZWRkZWRWaWV3TUlNRVR5cGVLZXkpLCBtaW1lVHlwZSk7CiAKICAgICAgICAgICAgIENPTVB0
cjxJUHJvcGVydHlCYWc+IGFyZ3VtZW50c0JhZyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8Q09N
VmFyaWFudD46OmFkb3B0KGFyZ3VtZW50cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApp
bmRleCAyMjFlMjJmMzg2MDVhNTFmMDczN2VhZDNjOGJlOWMzOTVjNDI0ZGM3Li4yNWUxOTQ1YjA3
MDkxY2VmY2Q5MDA5ZDA4Y2FlM2ViM2Y2NDFkMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDx3Y2hhci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNDUwLDcgKzQ1MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCkKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkKIHsKICAgICBTdHJpbmcgdGl0bGUgPSBtYWtl
U3RyaW5nKCJXZWIgSW5zcGVjdG9yICIsIHN0YXRpY19jYXN0PFVDaGFyPigweDIwMTQpLCAnICcs
IG1faW5zcGVjdGVkVVJMKTsKLSAgICA6OlNldFdpbmRvd1RleHQobV9mcm9udGVuZEh3bmQsIHRp
dGxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICA6OlNldFdp
bmRvd1RleHQobV9mcm9udGVuZEh3bmQsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0aXRs
ZSkuZGF0YSgpKTsKIH0KIAogTFJFU1VMVCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6b25H
ZXRNaW5NYXhJbmZvKFdQQVJBTSwgTFBBUkFNIGxQYXJhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNj
YTljNGVmMDM4ZS4uY2E2NWUwOWU0N2MxYzQ3YTAwNWY5YmViMDA4OWJlYzU1MWFlOTFmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTI2LDE0ICsyNiwx
MyBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIK
IAotI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIk1lbW9yeVN0cmVhbS5oIgogI2luY2x1
ZGUgIldlYkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3IuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViSFRNTFJlcHJlc2VudGF0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0U3RhdGlzdGljc1ByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJNdXRhYmxlVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlLmgiCkBA
IC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC0zNDQsNyArMzQ0LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpzdWJyZXNvdXJj
ZUZvclVSTChfSW5fIEJTVFIgdXJsLCBfQ09NX091dHB0cl9vcHRfIElXZWJSZXMKICAgICBpZiAo
IWRvYykKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSA9IGRvYy0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5jYWNoZWRSZXNvdXJjZShT
dHJpbmcodXJsKSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZG9jLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLmNhY2hlZFJlc291cmNlKG51bGxUZXJtaW5hdGVkV0NoYXJU
b1N0cmluZyh1cmwpKTsKIAogICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcAppbmRleCBmOTk2M2YxYzA2ODk2ZDdhMmNiMmQ3MzNhMThlZmFhYWYzY2U0ODA4Li5jOGE4
MmMzMDFhY2U3YTE1MjllYTc1ZjdhNTBlNzllOTY4NmExZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTI3LDExICsyNywxMSBAQAog
ICovCiAKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJXZWJLaXRE
TEwuaCIKIAogI2luY2x1ZGUgIkNPTUVudW1WYXJpYW50LmgiCiAjaW5jbHVkZSAiQ09NUHJvcGVy
dHlCYWcuaCIKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKKyNpbmNsdWRlICJXZWJL
aXRETEwuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCkBAIC00Myw2
ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKICNpbmNsdWRlICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCkBAIC0yNzks
NyArMjgwLDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JEYXRhYmFz
ZShfSW5fIEJTVFIgZGF0YWJhc2VOYW1lLCBfSW5fb3B0XwogICAgIGlmICghd2ViU2VjdXJpdHlP
cmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGRldGFpbHMgPSBEYXRh
YmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKFN0cmluZyhk
YXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSwKKyAgICBhdXRvIGRldGFp
bHMgPSBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KHdjaGFyVG9TdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VOYW1lKSks
CiAgICAgICAgICp3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICBp
ZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkpCkBAIC0zMzEsNyArMzMyLDcgQEAgSFJFU1VMVCBX
ZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKF9Jbl8gQlNUUiBkYXRhYmFzZU5hbWUs
IF9Jbl9vcHRfIElXZWIKICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxldGVEYXRh
YmFzZSh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpLCBTdHJpbmco
ZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VOYW1lKSkpOworICAgIERhdGFiYXNl
VHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4tPnNl
Y3VyaXR5T3JpZ2luKCktPmRhdGEoKSwgd2NoYXJUb1N0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0
cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTQwNCw3
ICs0MDUsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEoX0luXyBCU1RS
IG9yaWdpbiwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogICAgIGlmICh0aGlzICE9IHNfc2hh
cmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhvcmlnaW4pLT5kYXRhKCksIHF1b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6
OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHdj
aGFyQXNVQ2hhcihvcmlnaW4pKS0+ZGF0YSgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsK
IH0KQEAgLTQyMiw3ICs0MjMsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hE
aWRNb2RpZnlEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaQogICAgIENPTVB0
cjxXZWJTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4oQWRvcHRDT00sIFdlYlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSkpOwog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdXNlckluZm87Ci0gICAgdXNlckluZm8uc2V0
KFdlYkRhdGFiYXNlTmFtZUtleSwgZGF0YWJhc2VOYW1lKTsKKyAgICB1c2VySW5mby5zZXQod2No
YXJBc1VDaGFyKFdlYkRhdGFiYXNlTmFtZUtleSksIGRhdGFiYXNlTmFtZSk7CiAgICAgQ09NUHRy
PElQcm9wZXJ0eUJhZz4gdXNlckluZm9CYWcoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPFN0cmlu
Zz46OmFkb3B0KHVzZXJJbmZvKSk7CiAKICAgICBub3RpZnlDZW50ZXItPnBvc3ROb3RpZmljYXRp
b25OYW1lKGRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTmFtZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCks
IHVzZXJJbmZvQmFnLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNw
cAppbmRleCBhZjc5NTJhN2U3NTZhYjE2Y2VlYzZlYjFlNGFkZDNmYWRjMmZkNzM5Li40ZTZjYzFj
YmEzYzk1MGZmZDk3MWI2Y2UzNmU0NzkwZDgyMDVkYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWQuY3BwCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSAiV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJXZWJVUkxDcmVkZW50aWFsLmgiCiAj
aW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rvd25s
b2FkQnVuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNDUs
NiArNDMsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93
aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAg
LTEzNiw3ICsxMzYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0
UGF0aChfSW5fIEJTVFIgdGFyZ2V0UGF0aCwgX19kZXJlZl9vdXRfbwogICAgIGlmICghdGFyZ2V0
UGF0aCkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIAotICAgIFN0cmluZyBidW5kbGUo
dGFyZ2V0UGF0aCwgU3lzU3RyaW5nTGVuKHRhcmdldFBhdGgpKTsKKyAgICBTdHJpbmcgYnVuZGxl
ID0gd2NoYXJUb1N0cmluZyh0YXJnZXRQYXRoLCBTeXNTdHJpbmdMZW4odGFyZ2V0UGF0aCkpOwog
ICAgIGlmIChidW5kbGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAppbmRleCA5OWI2
MjdmMWFhYzAzYWVkZjUwNjg3ZmM3ZjMzNmJiOTVkOWNkZDIwLi5lNTA3ZTcwMGE3NzAwY2IxMDY0
OWU5ZjA2YjE3YmEzYjY1MmM4MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEb3dubG9hZEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
d25sb2FkQ3VybC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K
ICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTk0LDcgKzk1LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9h
ZDo6aW5pdFdpdGhSZXF1ZXN0KAogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdDsKLSAgICByZXNvdXJjZVJlcXVlc3Quc2V0VVJMKFVS
TCh7IH0sIFN0cmluZyh1cmwpKSk7CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFVSTChVUkwoeyB9
LCBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodXJsKSkpOwogCiAgICAgY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVyTWFwID0gd2ViUmVxdWVzdC0+aHR0cEhlYWRlckZpZWxkcygpOwogICAg
IGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJNYXAuYmVnaW4o
KTsgaXQgIT0gaGVhZGVyTWFwLmVuZCgpOyArK2l0KQpAQCAtMTc0LDcgKzE3NSw3IEBAIEhSRVNV
TFQgV2ViRG93bmxvYWQ6OnNldERlc3RpbmF0aW9uKAogICAgICAgICByZXR1cm4gRV9GQUlMOwog
CiAgICAgc2l6ZV90IGxlbiA9IHdjc2xlbihwYXRoKTsKLSAgICBtX2Rlc3RpbmF0aW9uID0gU3Ry
aW5nKHBhdGgsIGxlbik7CisgICAgbV9kZXN0aW5hdGlvbiA9IHdjaGFyVG9TdHJpbmcocGF0aCwg
bGVuKTsKICAgICBtX2Rvd25sb2FkLT5zZXREZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAppbmRleCA3
YzJkMTBhNTEyYjNlZDQ5N2Y2NjM4NDY5N2M2OThiZmNhNzU1YWM5Li4zYjAxOTc1ZjNmNDU1OWU0
ODA3ODg3MmI0MjQzY2FmNzQzMWNjOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3Iu
Y3BwCkBAIC0yNSw5ICsyNSwxMCBAQAogCiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVk
ZSAiV2ViRXJyb3IuaCIKLSNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2luY2x1ZGUgIldlYktpdC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9Db3JlR3JhcGhpY3MuaD4KQEAgLTEwNyw3ICsxMDgsNyBAQCBVTE9ORyBXZWJFcnJvcjo6UmVs
ZWFzZSgpCiAKIEhSRVNVTFQgV2ViRXJyb3I6OmluaXQoX0luXyBCU1RSIGRvbWFpbiwgaW50IGNv
ZGUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgbV9lcnJvciA9IFJlc291cmNlRXJyb3IoU3RyaW5n
KGRvbWFpbiwgU3lzU3RyaW5nTGVuKGRvbWFpbikpLCBjb2RlLCBVUkwoVVJMKCksIFN0cmluZyh1
cmwsIFN5c1N0cmluZ0xlbih1cmwpKSksIFN0cmluZygpKTsKKyAgICBtX2Vycm9yID0gUmVzb3Vy
Y2VFcnJvcih3Y2hhclRvU3RyaW5nKGRvbWFpbiwgU3lzU3RyaW5nTGVuKGRvbWFpbikpLCBjb2Rl
LCBVUkwoVVJMKCksIHdjaGFyVG9TdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkpLCBTdHJp
bmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgIApAQCAtMjA4LDcgKzIwOSw3IEBAIEhSRVNV
TFQgV2ViRXJyb3I6OmlzUG9saWN5Q2hhbmdlRXJyb3IoX091dF8gQk9PTCogcmVzdWx0KQogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9
IG1fZXJyb3IuZG9tYWluKCkgPT0gU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKQorICAgICpyZXN1
bHQgPSBtX2Vycm9yLmRvbWFpbigpID09IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhXZWJL
aXRFcnJvckRvbWFpbikKICAgICAgICAgJiYgbV9lcnJvci5lcnJvckNvZGUoKSA9PSBXZWJLaXRF
cnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2U7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNGFkMzE2NjAxN2YzOTlh
ZjljODMzOTUwOTZjM2ZkNTdlNTYxMDgzMC4uMDFjNWZiZThmNWIzMTEyZDJlNzM2MDFjNGUxYzY1
MDlhOGQ4YTA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMTA1LDYg
KzEwNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogI2lmIFVTRShDRykKICNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CkBAIC01NjUsMTYgKzU2NiwxNiBAQCBI
UkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVx
dWVzdCkKIAogdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFz
ZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewotICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1l
VHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CisgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5n
ID0gd2NoYXJUb1N0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAg
aWYgKCFtaW1lVHlwZSkKICAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1sIjsKIAot
ICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdMZW4o
dGV4dEVuY29kaW5nTmFtZSkpOworICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyA9IHdjaGFyVG9T
dHJpbmcodGV4dEVuY29kaW5nTmFtZSwgU3lzU3RyaW5nTGVuKHRleHRFbmNvZGluZ05hbWUpKTsK
IAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVhbGx5IGJlIHVzaW5nIE1hcnNoYWxsaW5nSGVs
cGVyczo6QlNUUlRvS1VSTCBoZXJlLAogICAgIC8vIGJ1dCB0aGF0IHdvdWxkIHR1cm4gYSBudWxs
IEJTVFIgaW50byBhIG51bGwgVVJMLCBhbmQgd2UgY3Jhc2ggaW5zaWRlIG9mCiAgICAgLy8gV2Vi
Q29yZSBpZiB3ZSB1c2UgYSBudWxsIFVSTCBpbiBjb25zdHJ1Y3RpbmcgdGhlIFJlc291cmNlUmVx
dWVzdC4KLSAgICBVUkwgYmFzZUNvcmVVUkwgPSBVUkwoVVJMKCksIFN0cmluZyhiYXNlVVJMID8g
YmFzZVVSTCA6IEwiIiwgU3lzU3RyaW5nTGVuKGJhc2VVUkwpKSk7CisgICAgVVJMIGJhc2VDb3Jl
VVJMID0gVVJMKFVSTCgpLCB3Y2hhclRvU3RyaW5nKGJhc2VVUkwgPyBiYXNlVVJMIDogTCIiLCBT
eXNTdHJpbmdMZW4oYmFzZVVSTCkpKTsKIAogICAgIFVSTCBmYWlsaW5nQ29yZVVSTCA9IE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTChmYWlsaW5nVVJMKTsKIApAQCAtNzMxLDcgKzczMiw3
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmZpbmRGcmFtZU5hbWVkKF9Jbl8gQlNUUiBuYW1lLCBfQ09N
X091dHB0cl9vcHRfIElXZWJGcmFtZSoqIGZyCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAg
IHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBGcmFtZSogZm91bmRGcmFtZSA9IGNvcmVGcmFt
ZS0+dHJlZSgpLmZpbmQoQXRvbWljU3RyaW5nKG5hbWUsIFN5c1N0cmluZ0xlbihuYW1lKSksICpj
b3JlRnJhbWUpOworICAgIEZyYW1lKiBmb3VuZEZyYW1lID0gY29yZUZyYW1lLT50cmVlKCkuZmlu
ZChBdG9taWNTdHJpbmcod2NoYXJBc1VDaGFyKG5hbWUpLCBTeXNTdHJpbmdMZW4obmFtZSkpLCAq
Y29yZUZyYW1lKTsKICAgICBpZiAoIWZvdW5kRnJhbWUpCiAgICAgICAgIHJldHVybiBTX09LOwog
CkBAIC05NzYsNyArOTc3LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihf
SW5fIEJTVFIgZGlyZWN0aW9uKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4g
RV9VTkVYUEVDVEVEOwogCi0gICAgU3RyaW5nIGRpcmVjdGlvblN0cmluZyhkaXJlY3Rpb24sIFN5
c1N0cmluZ0xlbihkaXJlY3Rpb24pKTsKKyAgICBTdHJpbmcgZGlyZWN0aW9uU3RyaW5nID0gd2No
YXJUb1N0cmluZyhkaXJlY3Rpb24sIFN5c1N0cmluZ0xlbihkaXJlY3Rpb24pKTsKICAgICBpZiAo
ZGlyZWN0aW9uU3RyaW5nID09ICJhdXRvIikKICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5z
ZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uOjpOYXR1cmFsKTsKICAgICBl
bHNlIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gImx0ciIpCkBAIC0xMTY4LDcgKzExNjksNyBAQCBI
UkVTVUxUIFdlYkZyYW1lOjpwYXVzZUFuaW1hdGlvbihfSW5fIEJTVFIgYW5pbWF0aW9uTmFtZSwg
X0luX29wdF8gSURPTU5vZGUqIG5vZAogICAgIGlmICghZG9tTm9kZSkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgICphbmltYXRpb25XYXNSdW5uaW5nID0gZnJhbWUtPmFuaW1hdGlvbigp
LnBhdXNlQW5pbWF0aW9uQXRUaW1lKGRvd25jYXN0PEVsZW1lbnQ+KCpkb21Ob2RlLT5ub2RlKCkp
LCBTdHJpbmcoYW5pbWF0aW9uTmFtZSwgU3lzU3RyaW5nTGVuKGFuaW1hdGlvbk5hbWUpKSwgc2Vj
b25kc0Zyb21Ob3cpOworICAgICphbmltYXRpb25XYXNSdW5uaW5nID0gZnJhbWUtPmFuaW1hdGlv
bigpLnBhdXNlQW5pbWF0aW9uQXRUaW1lKGRvd25jYXN0PEVsZW1lbnQ+KCpkb21Ob2RlLT5ub2Rl
KCkpLCB3Y2hhclRvU3RyaW5nKGFuaW1hdGlvbk5hbWUsIFN5c1N0cmluZ0xlbihhbmltYXRpb25O
YW1lKSksIHNlY29uZHNGcm9tTm93KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTE4Nyw3
ICsxMTg4LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6cGF1c2VUcmFuc2l0aW9uKF9Jbl8gQlNUUiBw
cm9wZXJ0eU5hbWUsIF9Jbl9vcHRfIElET01Ob2RlKiBub2QKICAgICBpZiAoIWRvbU5vZGUpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqdHJhbnNpdGlvbldhc1J1bm5pbmcgPSBmcmFt
ZS0+YW5pbWF0aW9uKCkucGF1c2VUcmFuc2l0aW9uQXRUaW1lKGRvd25jYXN0PEVsZW1lbnQ+KCpk
b21Ob2RlLT5ub2RlKCkpLCBTdHJpbmcocHJvcGVydHlOYW1lLCBTeXNTdHJpbmdMZW4ocHJvcGVy
dHlOYW1lKSksIHNlY29uZHNGcm9tTm93KTsKKyAgICAqdHJhbnNpdGlvbldhc1J1bm5pbmcgPSBm
cmFtZS0+YW5pbWF0aW9uKCkucGF1c2VUcmFuc2l0aW9uQXRUaW1lKGRvd25jYXN0PEVsZW1lbnQ+
KCpkb21Ob2RlLT5ub2RlKCkpLCB3Y2hhclRvU3RyaW5nKHByb3BlcnR5TmFtZSwgU3lzU3RyaW5n
TGVuKHByb3BlcnR5TmFtZSkpLCBzZWNvbmRzRnJvbU5vdyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKQEAgLTEzMTUsNyArMTMxNiw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnNlYXJjaEZvckxhYmVs
c0JlZm9yZUVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCB1bnNpZ25lZCBjTGFiCiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBsYWJlbFN0cmluZ3MoY0xhYmVscyk7CiAgICAgZm9yIChpbnQgaT0wOyBp
PGNMYWJlbHM7IGkrKykKLSAgICAgICAgbGFiZWxTdHJpbmdzW2ldID0gU3RyaW5nKGxhYmVsc1tp
XSwgU3lzU3RyaW5nTGVuKGxhYmVsc1tpXSkpOworICAgICAgICBsYWJlbFN0cmluZ3NbaV0gPSB3
Y2hhclRvU3RyaW5nKGxhYmVsc1tpXSwgU3lzU3RyaW5nTGVuKGxhYmVsc1tpXSkpOwogICAgIEVs
ZW1lbnQgKmNvcmVFbGVtZW50ID0gZWxlbWVudEZyb21ET01FbGVtZW50KGJlZm9yZUVsZW1lbnQp
OwogICAgIGlmICghY29yZUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xMzU1
LDcgKzEzNTYsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50
KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElETwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gbGFiZWxTdHJpbmdzKGNMYWJlbHMpOwogICAgIGZvciAoaW50IGk9MDsgaTxjTGFiZWxzOyBp
KyspCi0gICAgICAgIGxhYmVsU3RyaW5nc1tpXSA9IFN0cmluZyhsYWJlbHNbaV0sIFN5c1N0cmlu
Z0xlbihsYWJlbHNbaV0pKTsKKyAgICAgICAgbGFiZWxTdHJpbmdzW2ldID0gd2NoYXJUb1N0cmlu
ZyhsYWJlbHNbaV0sIFN5c1N0cmluZ0xlbihsYWJlbHNbaV0pKTsKICAgICBFbGVtZW50ICpjb3Jl
RWxlbWVudCA9IGVsZW1lbnRGcm9tRE9NRWxlbWVudChhZ2FpbnN0RWxlbWVudCk7CiAgICAgaWYg
KCFjb3JlRWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTEzODMsNyArMTM4NCw3
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmNhblByb3ZpZGVEb2N1bWVudFNvdXJjZShib29sKiByZXN1
bHQpCiAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgdXJsUmVzcG9uc2UpIHsKICAgICAgICAgQlN0
cmluZyBtaW1lVHlwZUJTdHI7CiAgICAgICAgIGlmIChTVUNDRUVERUQodXJsUmVzcG9uc2UtPk1J
TUVUeXBlKCZtaW1lVHlwZUJTdHIpKSkgewotICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlKG1p
bWVUeXBlQlN0ciwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlQlN0cikpOworICAgICAgICAgICAgU3Ry
aW5nIG1pbWVUeXBlID0gd2NoYXJUb1N0cmluZyhtaW1lVHlwZUJTdHIsIFN5c1N0cmluZ0xlbiht
aW1lVHlwZUJTdHIpKTsKICAgICAgICAgICAgICpyZXN1bHQgPSBtaW1lVHlwZSA9PSAidGV4dC9o
dG1sIiB8fCBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1hNTE1JTUVUeXBlKG1pbWVUeXBl
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5OTQsNyArMTk5NSw3IEBAIEhSRVNVTFQgV2ViRnJh
bWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJblNjcmlwdFdvcmxkKElXZWJTY3JpcHRX
b3JsZCogaVdvCiAgICAgICAgIHJldHVybiBFX0lOVkFMSURBUkc7CiAKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZSh0aGlzKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nKHNjcmlwdCwg
U3lzU3RyaW5nTGVuKHNjcmlwdCkpOworICAgIFN0cmluZyBzdHJpbmcgPSB3Y2hhclRvU3RyaW5n
KHNjcmlwdCwgU3lzU3RyaW5nTGVuKHNjcmlwdCkpOwogCiAgICAgLy8gU3RhcnQgb2ZmIHdpdGgg
c29tZSBndWVzcyBhdCBhIGZyYW1lIGFuZCBhIGdsb2JhbCBvYmplY3QsIHdlJ2xsIHRyeSB0byBk
byBiZXR0ZXIuLi4hCiAgICAgSlNET01XaW5kb3cqIGFueVdvcmxkR2xvYmFsT2JqZWN0ID0gY29y
ZUZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCBmZjlkYTI0YzFmYzhjNDFi
YzBiM2I3MGI4ZDNkOTI1NmRkNGM2MzI3Li5kOGU4YzQwOTdlMTIxZDBlZDk1MjZjMGVhMjUyN2Qz
NDRkNzI1YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtMjcs
NyArMjcsNiBAQAogI2luY2x1ZGUgIldlYkhpc3RvcnkuaCIKIAogI2luY2x1ZGUgIk1lbW9yeVN0
cmVhbS5oIgotI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVy
cy5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBA
IC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
d2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSAiQ0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcuaCIKQEAgLTQxNCw3ICs0MTQsNyBAQCBIUkVTVUxUIFdlYkhpc3Rv
cnk6OnJlbW92ZUl0ZW0oSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSkKICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwogCi0gICAgU3RyaW5nIHVybFN0cmluZyh1cmxCU3RyLCBT
eXNTdHJpbmdMZW4odXJsQlN0cikpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSB3Y2hhclRvU3Ry
aW5nKHVybEJTdHIsIFN5c1N0cmluZ0xlbih1cmxCU3RyKSk7CiAgICAgaWYgKHVybFN0cmluZy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBI
UkVTVUxUIFdlYkhpc3Rvcnk6OmFkZEl0ZW0oSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSwgYm9vbCBk
aXNjYXJkRHVwbGljYXRlLCBib29sKgogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1
cm4gaHI7CiAKLSAgICBTdHJpbmcgdXJsU3RyaW5nKHVybEJTdHIsIFN5c1N0cmluZ0xlbih1cmxC
U3RyKSk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IHdjaGFyVG9TdHJpbmcodXJsQlN0ciwgU3lz
U3RyaW5nTGVuKHVybEJTdHIpKTsKICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtNTMzLDcgKzUzMyw3IEBAIEhSRVNVTFQgV2ViSGlzdG9y
eTo6aXRlbUZvclVSTChfSW5fIEJTVFIgdXJsQlN0ciwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViSGlz
dG9yeUl0CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgKml0ZW0gPSBudWxscHRyOwog
Ci0gICAgU3RyaW5nIHVybFN0cmluZyh1cmxCU3RyLCBTeXNTdHJpbmdMZW4odXJsQlN0cikpOwor
ICAgIFN0cmluZyB1cmxTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKHVybEJTdHIsIFN5c1N0cmluZ0xl
bih1cmxCU3RyKSk7CiAgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApp
bmRleCBhODU1OWE1ZmQyMjdjYmQyYjE3ZWFmMjg1ZWE2Mzk1ZWFmZjhhNmNjLi45ZjlhYzkyODU3
NTdjOThlYzQwYTg3MGY5ZDc0ZmU2Y2U5ZmMyMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xOTgsNyArMTk5LDcgQEAgSFJFU1VMVCBXZWJI
aXN0b3J5SXRlbTo6c2V0TGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWwoREFURSB0aW1lKQogCiBIUkVT
VUxUIFdlYkhpc3RvcnlJdGVtOjpzZXRUaXRsZShfSW5fIEJTVFIgdGl0bGUpCiB7Ci0gICAgbV9o
aXN0b3J5SXRlbS0+c2V0VGl0bGUoU3RyaW5nKHRpdGxlLCBTeXNTdHJpbmdMZW4odGl0bGUpKSk7
CisgICAgbV9oaXN0b3J5SXRlbS0+c2V0VGl0bGUod2NoYXJUb1N0cmluZyh0aXRsZSwgU3lzU3Ry
aW5nTGVuKHRpdGxlKSkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yMTYsNyArMjE3LDcg
QEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6UlNTRmVlZFJlZmVycmVyKF9fZGVyZWZfb3V0X29w
dCBCU1RSKiB1cmwpCiAKIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OnNldFJTU0ZlZWRSZWZlcnJl
cihfSW5fIEJTVFIgdXJsKQogewotICAgIG1faGlzdG9yeUl0ZW0tPnNldFJlZmVycmVyKFN0cmlu
Zyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSk7CisgICAgbV9oaXN0b3J5SXRlbS0+c2V0UmVmZXJy
ZXIod2NoYXJUb1N0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1cmwpKSk7CiAKICAgICByZXR1cm4g
U19PSzsKIH0KQEAgLTQwOCw3ICs0MDksNyBAQCBVTE9ORyBXZWJIaXN0b3J5SXRlbTo6UmVsZWFz
ZSgpCiBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjppbml0V2l0aFVSTFN0cmluZyhfSW5fIEJTVFIg
dXJsU3RyaW5nLCBfSW5fIEJTVFIgdGl0bGUsIERBVEUgbGFzdFZpc2l0ZWQpCiB7CiAgICAgaGlz
dG9yeUl0ZW1XcmFwcGVycygpLnJlbW92ZShtX2hpc3RvcnlJdGVtLmdldCgpKTsKLSAgICBtX2hp
c3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZShTdHJpbmcodXJsU3RyaW5nLCBTeXNTdHJp
bmdMZW4odXJsU3RyaW5nKSksIFN0cmluZyh0aXRsZSwgU3lzU3RyaW5nTGVuKHRpdGxlKSkpOwor
ICAgIG1faGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKHdjaGFyVG9TdHJpbmcodXJs
U3RyaW5nLCBTeXNTdHJpbmdMZW4odXJsU3RyaW5nKSksIHdjaGFyVG9TdHJpbmcodGl0bGUsIFN5
c1N0cmluZ0xlbih0aXRsZSkpKTsKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlz
dG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgcmV0dXJuIFNfT0s7CkBAIC00NTQsNyArNDU1
LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6bGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWwoX091
dF8gREFURSogbGFzdFZpc2l0ZWQpCiAKIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OnNldEFsdGVy
bmF0ZVRpdGxlKF9Jbl8gQlNUUiB0aXRsZSkKIHsKLSAgICBtX2FsdGVybmF0ZVRpdGxlID0gU3Ry
aW5nKHRpdGxlLCBTeXNTdHJpbmdMZW4odGl0bGUpKTsKKyAgICBtX2FsdGVybmF0ZVRpdGxlID0g
d2NoYXJUb1N0cmluZyh0aXRsZSwgU3lzU3RyaW5nTGVuKHRpdGxlKSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGY2
MjE5YTY2ZGFhOTVkYzU2MjI0MTViM2Y5OTAzNzVlN2I3ZmI3MmMuLmUyYTI1NDkyNjIzM2E0ZWI0
Mzc5MzdmZTEwOWNjMGZmYTk1NzljY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5z
cGVjdG9yLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yMTEsNyArMjEyLDcgQEAgSFJFU1VM
VCBXZWJJbnNwZWN0b3I6OmV2YWx1YXRlSW5Gcm9udGVuZChfSW5fIEJTVFIgYlNjcmlwdCkKICAg
ICBpZiAoIWluc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybiBTX09LOwogCi0gICAgU3RyaW5n
IHNjcmlwdChiU2NyaXB0LCBTeXNTdHJpbmdMZW4oYlNjcmlwdCkpOworICAgIFN0cmluZyBzY3Jp
cHQgPSB3Y2hhclRvU3RyaW5nKGJTY3JpcHQsIFN5c1N0cmluZ0xlbihiU2NyaXB0KSk7CiAgICAg
aW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmV2YWx1YXRlRm9yVGVzdEluRnJv
bnRlbmQoc2NyaXB0KTsKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGRlMDIyMWY1NDVmM2Rm
NGE2YWQxMGMwYWE5NmQzNmNiOGQ5MTYzZjIuLmJiOThjNDg3ZjQxMTc5MTNkMWViMjM2NWVmY2Q1
ZjVkMzk4N2RmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2Fs
aXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxp
emFibGVTdHJpbmdzLmNwcApAQCAtMjQsMjAgKzI0LDE5IEBACiAgKi8KIAogI2luY2x1ZGUgIldl
YktpdERMTC5oIgotCiAjaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAKLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCisjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBjbGFzcyBMb2Nh
bGl6ZWRTdHJpbmc7CiAKQEAgLTgxLDcgKzgwLDcgQEAgcHJpdmF0ZToKIExvY2FsaXplZFN0cmlu
Zzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3N0cmluZy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKTsKKyAgICAgICAgcmV0dXJuIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhciht
X3N0cmluZykuZGF0YSgpOwogCiAgICAgbV9zdHJpbmcgPSBtX2NmU3RyaW5nOwogCkBAIC04OSw3
ICs4OCw3IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAg
ICAgIGlmIChtX3N0cmluZ1tpXSA9PSAnQCcgJiYgKG1fc3RyaW5nW2kgLSAxXSA9PSAnJScgfHwg
KGkgPiAyICYmIG1fc3RyaW5nW2kgLSAxXSA9PSAnJCcgJiYgbV9zdHJpbmdbaSAtIDJdID49ICcx
JyAmJiBtX3N0cmluZ1tpIC0gMl0gPD0gJzknICYmIG1fc3RyaW5nW2kgLSAzXSA9PSAnJScpKSkK
ICAgICAgICAgICAgIG1fc3RyaW5nLnJlcGxhY2UoaSwgMSwgInMiKTsKIAotICAgIHJldHVybiBt
X3N0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKTsKKyAgICByZXR1
cm4gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fc3RyaW5nKS5kYXRhKCk7CiB9CiAKIHN0
YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQpAQCAtMTI0LDcgKzEyMyw3IEBA
IHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogICAgIGlmICh3Y3NjYXRf
cyhwYXRoU3RyLCBNQVhfUEFUSCwgTCJcXFdlYktpdC5yZXNvdXJjZXMiKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBTdHJpbmcgYnVuZGxlUGF0aFN0cmluZyhwYXRoU3RyKTsKKyAgICBTdHJp
bmcgYnVuZGxlUGF0aFN0cmluZyA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhwYXRoU3Ry
KTsKICAgICBpZiAoIWJ1bmRsZVBhdGhTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0y
MjcsNyArMjI2LDcgQEAgQ0ZTdHJpbmdSZWYgV2ViTG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXph
YmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRsZSwgTFBDVFMKICAgICBpZiAoIWtleSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbG9jYWxpemVkU3RyaW5nKHN0cmluZ3NCdW5k
bGUsIFN0cmluZyhrZXkpKTsKKyAgICByZXR1cm4gbG9jYWxpemVkU3RyaW5nKHN0cmluZ3NCdW5k
bGUsIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhrZXkpKTsKIH0KIAogTFBDVFNUUiBXZWJM
b2NhbGl6ZWRMUENUU1RSKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRs
ZSwgTFBDVFNUUiBrZXkpCkBAIC0yMzUsNyArMjM0LDcgQEAgTFBDVFNUUiBXZWJMb2NhbGl6ZWRM
UENUU1RSKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRsZSwgTFBDVFNU
UgogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBsb2NhbGl6
ZWRTdHJpbmcoc3RyaW5nc0J1bmRsZSwgU3RyaW5nKGtleSkpOworICAgIHJldHVybiBsb2NhbGl6
ZWRTdHJpbmcoc3RyaW5nc0J1bmRsZSwgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGtleSkp
OwogfQogCiB2b2lkIFNldFdlYkxvY2FsaXplZFN0cmluZ01haW5CdW5kbGUoQ0ZCdW5kbGVSZWYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAK
aW5kZXggMWZlMTE0NWFlYzIwMDg4YTZmYjFmYmY5OGRiMDMyYzA2ZDA5YjI4NS4uZmM5YTk3NmU1
NWJjMGY5NjdmM2JhMzU3MGI1ZmYzMzgzNjljOTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtMjYsMTUgKzI2LDE1IEBACiAj
aW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViTXV0YWJsZVVSTFJlcXVlc3QuaCIK
IAotI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgog
I2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb3JtRGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAog
I2lmIFVTRShDRikKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlQ0ZXaW4uaD4KQEAgLTIz
OSw3ICsyMzksNyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojp2YWx1ZUZvckhUVFBI
ZWFkZXJGaWVsZChfSW5fIEJTVFIgZmllbGQsIF9fZGVyZWZfbwogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogICAgIH0KIAotICAgICpyZXN1bHQgPSBCU3RyaW5nKG1fcmVxdWVzdC5odHRwSGVh
ZGVyRmllbGQoU3RyaW5nKGZpZWxkLCBTeXNTdHJpbmdMZW4oZmllbGQpKSkpLnJlbGVhc2UoKTsK
KyAgICAqcmVzdWx0ID0gQlN0cmluZyhtX3JlcXVlc3QuaHR0cEhlYWRlckZpZWxkKHdjaGFyVG9T
dHJpbmcoZmllbGQsIFN5c1N0cmluZ0xlbihmaWVsZCkpKSkucmVsZWFzZSgpOwogICAgIHJldHVy
biBTX09LOwogfQogCkBAIC0yNzIsNyArMjcyLDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6aXNFcXVhbChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogb3RoZXIsIF9PdXRfIEJPT0wK
IAogSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6YWRkVmFsdWUoX0luXyBCU1RSIHZhbHVl
LCBfSW5fIEJTVFIgZmllbGQpCiB7Ci0gICAgbV9yZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChX
VEY6OkF0b21pY1N0cmluZyh2YWx1ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSksIFN0cmluZyhmaWVs
ZCwgU3lzU3RyaW5nTGVuKGZpZWxkKSkpOworICAgIG1fcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmll
bGQoQXRvbWljU3RyaW5nKHdjaGFyQXNVQ2hhcih2YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkp
LCB3Y2hhclRvU3RyaW5nKGZpZWxkLCBTeXNTdHJpbmdMZW4oZmllbGQpKSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKQEAgLTMxNiw3ICszMTYsNyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1
ZXN0OjpzZXRIVFRQQm9keVN0cmVhbShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhKQogCiBIUkVTVUxU
IFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRIVFRQTWV0aG9kKF9Jbl8gQlNUUiBtZXRob2QpCiB7
Ci0gICAgbV9yZXF1ZXN0LnNldEhUVFBNZXRob2QoU3RyaW5nKG1ldGhvZCkpOworICAgIG1fcmVx
dWVzdC5zZXRIVFRQTWV0aG9kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtZXRob2QpKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMzQ2LDggKzM0Niw4IEBAIEhSRVNVTFQgV2ViTXV0
YWJsZVVSTFJlcXVlc3Q6OnNldFVSTChfSW5fIEJTVFIgdXJsKQogCiBIUkVTVUxUIFdlYk11dGFi
bGVVUkxSZXF1ZXN0OjpzZXRWYWx1ZShfSW5fIEJTVFIgdmFsdWUsIF9Jbl8gQlNUUiBmaWVsZCkK
IHsKLSAgICBTdHJpbmcgdmFsdWVTdHJpbmcodmFsdWUsIFN5c1N0cmluZ0xlbih2YWx1ZSkpOwot
ICAgIFN0cmluZyBmaWVsZFN0cmluZyhmaWVsZCwgU3lzU3RyaW5nTGVuKGZpZWxkKSk7CisgICAg
U3RyaW5nIHZhbHVlU3RyaW5nID0gd2NoYXJUb1N0cmluZyh2YWx1ZSwgU3lzU3RyaW5nTGVuKHZh
bHVlKSk7CisgICAgU3RyaW5nIGZpZWxkU3RyaW5nID0gd2NoYXJUb1N0cmluZyhmaWVsZCwgU3lz
U3RyaW5nTGVuKGZpZWxkKSk7CiAgICAgbV9yZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChmaWVs
ZFN0cmluZywgdmFsdWVTdHJpbmcpOwogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggZjU3Zjdl
MzhjZDlkYzI5Y2ZjZmMyYzY0ZGIwNjI2ZGY5MTdhOTZkYS4uYTcyM2RhOTNhOThlNzczMWM4NDFi
MGFjYWI4ODQ5Y2ZjMGJmYzYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTExMyw3ICsxMTQsNyBA
QCBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRD
ZW50ZXJJbnRlcm5hbCgpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpwb3N0Tm90aWZp
Y2F0aW9uSW50ZXJuYWwoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBCU1RSIG5vdGlm
aWNhdGlvbk5hbWUsIElVbmtub3duKiBhbk9iamVjdCkKIHsKLSAgICBTdHJpbmcgbmFtZShub3Rp
ZmljYXRpb25OYW1lLCBTeXNTdHJpbmdMZW4obm90aWZpY2F0aW9uTmFtZSkpOworICAgIFN0cmlu
ZyBuYW1lID0gd2NoYXJUb1N0cmluZyhub3RpZmljYXRpb25OYW1lLCBTeXNTdHJpbmdMZW4obm90
aWZpY2F0aW9uTmFtZSkpOwogICAgIE1hcHBlZE9ic2VydmVyczo6aXRlcmF0b3IgaXQgPSBkLT5t
X21hcHBlZE9ic2VydmVycy5maW5kKG5hbWUpOwogICAgIGlmIChpdCA9PSBkLT5tX21hcHBlZE9i
c2VydmVycy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDcgKzE0NSw3IEBAIEhSRVNV
TFQgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVyKF9DT01fT3V0cHRyX29wdF8g
SVdlYk5vdGlmaWNhdGlvbkNlCiAKIEhSRVNVTFQgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjphZGRP
YnNlcnZlcihfSW5fb3B0XyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCBfSW5f
IEJTVFIgbm90aWZpY2F0aW9uTmFtZSwgX0luX29wdF8gSVVua25vd24qIGFuT2JqZWN0KQogewot
ICAgIFN0cmluZyBuYW1lKG5vdGlmaWNhdGlvbk5hbWUsIFN5c1N0cmluZ0xlbihub3RpZmljYXRp
b25OYW1lKSk7CisgICAgU3RyaW5nIG5hbWUgPSB3Y2hhclRvU3RyaW5nKG5vdGlmaWNhdGlvbk5h
bWUsIFN5c1N0cmluZ0xlbihub3RpZmljYXRpb25OYW1lKSk7CiAgICAgTWFwcGVkT2JzZXJ2ZXJz
OjppdGVyYXRvciBpdCA9IGQtPm1fbWFwcGVkT2JzZXJ2ZXJzLmZpbmQobmFtZSk7CiAgICAgaWYg
KGl0ICE9IGQtPm1fbWFwcGVkT2JzZXJ2ZXJzLmVuZCgpKQogICAgICAgICBpdC0+dmFsdWUuYXBw
ZW5kKE9iamVjdE9ic2VydmVyUGFpcihhbk9iamVjdCwgb2JzZXJ2ZXIpKTsKQEAgLTE4Myw3ICsx
ODQsNyBAQCBIUkVTVUxUIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6cG9zdE5vdGlmaWNhdGlvbk5h
bWUoX0luXyBCU1RSIG5vdGlmaWNhdGlvbk5hbWUsCiAKIEhSRVNVTFQgV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpyZW1vdmVPYnNlcnZlcihfSW5fb3B0XyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIq
IGFuT2JzZXJ2ZXIsIF9Jbl8gQlNUUiBub3RpZmljYXRpb25OYW1lLCBfSW5fb3B0XyBJVW5rbm93
biogYW5PYmplY3QpCiB7Ci0gICAgU3RyaW5nIG5hbWUobm90aWZpY2F0aW9uTmFtZSwgU3lzU3Ry
aW5nTGVuKG5vdGlmaWNhdGlvbk5hbWUpKTsKKyAgICBTdHJpbmcgbmFtZSA9IHdjaGFyVG9TdHJp
bmcobm90aWZpY2F0aW9uTmFtZSwgU3lzU3RyaW5nTGVuKG5vdGlmaWNhdGlvbk5hbWUpKTsKICAg
ICBNYXBwZWRPYnNlcnZlcnM6Oml0ZXJhdG9yIGl0ID0gZC0+bV9tYXBwZWRPYnNlcnZlcnMuZmlu
ZChuYW1lKTsKICAgICBpZiAoaXQgPT0gZC0+bV9tYXBwZWRPYnNlcnZlcnMuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAKaW5kZXggMDI1YzIwYmVhMjM4Y2Q2YTQ5NWEyNTBmNmM1NTBjYTdmNTI3OWQ2OS4uNmVj
NzM1NmEwMTJjMDNmNzA2YjgzMDQyN2ZlMDU1OGMzNDUzZWUyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMjMsMTkgKzIzLDEzIEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0RExM
LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKIAogI2luY2x1ZGUgIk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcC5oIgorI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIgot
Ci0jaWYgVVNFKENHKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0NBQ0ZMYXllclRyZWVIb3N0Lmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01Q
dHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYXNjYWRlLmg+CkBAIC01MSw2ICs0NSwxMiBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8
Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVy
VHJlZUhvc3QuaD4KKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIHN0
ZDo6bnVtZXJpY19saW1pdHM7CkBAIC0xNTYsNyArMTU2LDcgQEAgV2ViUHJlZmVyZW5jZXMqIFdl
YlByZWZlcmVuY2VzOjpnZXRJbnN0YW5jZUZvcklkZW50aWZpZXIoQlNUUiBpZGVudGlmaWVyKQog
ICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHNoYXJlZFN0YW5kYXJkUHJlZmVy
ZW5jZXMoKTsKIAotICAgIFdURjo6U3RyaW5nIGlkZW50aWZpZXJTdHJpbmcoaWRlbnRpZmllciwg
U3lzU3RyaW5nTGVuKGlkZW50aWZpZXIpKTsKKyAgICBXVEY6OlN0cmluZyBpZGVudGlmaWVyU3Ry
aW5nID0gd2NoYXJUb1N0cmluZyhpZGVudGlmaWVyLCBTeXNTdHJpbmdMZW4oaWRlbnRpZmllcikp
OwogICAgIGlmIChpZGVudGlmaWVyU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHNo
YXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2Vi
UHJlZmVyZW5jZXM6OnNldEluc3RhbmNlKFdlYlByZWZlcmVuY2VzKiBpbnN0YW5jZSwgQlNUUiBp
ZGVudGlmaWVyKQogewogICAgIGlmICghaWRlbnRpZmllciB8fCAhaW5zdGFuY2UpCiAgICAgICAg
IHJldHVybjsKLSAgICBXVEY6OlN0cmluZyBpZGVudGlmaWVyU3RyaW5nKGlkZW50aWZpZXIsIFN5
c1N0cmluZ0xlbihpZGVudGlmaWVyKSk7CisgICAgV1RGOjpTdHJpbmcgaWRlbnRpZmllclN0cmlu
ZyA9IHdjaGFyVG9TdHJpbmcoaWRlbnRpZmllciwgU3lzU3RyaW5nTGVuKGlkZW50aWZpZXIpKTsK
ICAgICBpZiAoaWRlbnRpZmllclN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICB3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcygpLmFkZChpZGVudGlmaWVyU3RyaW5nLCBpbnN0YW5j
ZSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVtb3ZlUmVmZXJl
bmNlRm9ySWRlbnRpZmllcihCU1RSIGlkZW50aWZpZXIpCiAgICAgaWYgKCFpZGVudGlmaWVyIHx8
IHdlYlByZWZlcmVuY2VzSW5zdGFuY2VzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXVEY6OlN0cmluZyBpZGVudGlmaWVyU3RyaW5nKGlkZW50aWZpZXIsIFN5c1N0cmluZ0xl
bihpZGVudGlmaWVyKSk7CisgICAgV1RGOjpTdHJpbmcgaWRlbnRpZmllclN0cmluZyA9IHdjaGFy
VG9TdHJpbmcoaWRlbnRpZmllciwgU3lzU3RyaW5nTGVuKGlkZW50aWZpZXIpKTsKICAgICBpZiAo
aWRlbnRpZmllclN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJQcmVm
ZXJlbmNlcyogd2ViUHJlZmVyZW5jZSA9IHdlYlByZWZlcmVuY2VzSW5zdGFuY2VzKCkuZ2V0KGlk
ZW50aWZpZXJTdHJpbmcpOwpAQCAtMjIwMSw3ICsyMjAxLDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c2V0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZChCT09MIGVuYWJsZWQpCiAKIEhS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEFwcGxpY2F0aW9uSWQoQlNUUiBhcHBsaWNhdGlvbklk
KQogewotICAgIG1fYXBwbGljYXRpb25JZCA9IFN0cmluZyhhcHBsaWNhdGlvbklkKS5jcmVhdGVD
RlN0cmluZygpOworICAgIG1fYXBwbGljYXRpb25JZCA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0
cmluZyhhcHBsaWNhdGlvbklkKS5jcmVhdGVDRlN0cmluZygpOwogICAgIHJldHVybiBTX09LOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0
NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uZDU3YWUxNmI0NDRhMTdkYmQzODdmOTky
M2I0MzZiMjU0ZTI0Mjk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgogI2lu
Y2x1ZGUgIk1lbW9yeVN0cmVhbS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtOTgsOSArOTksOSBAQCBIUkVTVUxUIFdlYlJlc291cmNlOjppbml0
V2l0aERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIHVybCwgX0luXyBCUwog
ewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgbV91cmwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJT
VFJUb0tVUkwodXJsKTsKLSAgICBtX21pbWVUeXBlID0gU3RyaW5nKG1pbWVUeXBlKTsKLSAgICBt
X3RleHRFbmNvZGluZ05hbWUgPSBTdHJpbmcodGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgbV9mcmFt
ZU5hbWUgPSBTdHJpbmcoZnJhbWVOYW1lKTsKKyAgICBtX21pbWVUeXBlID0gbnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKG1pbWVUeXBlKTsKKyAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGV4dEVuY29kaW5nTmFtZSk7CisgICAgbV9mcmFtZU5h
bWUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoZnJhbWVOYW1lKTsKIAogICAgIHJldHVy
biBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3Jl
ZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNw
cAppbmRleCBlNzU5NDZiMjg0MjU0NzJlODFiY2Y3YjM4ZjliMGMzMTg5NjE2MTlmLi43YTdiMDVi
NWEwYWQ3ZmJhYzgzYjMwNjg5YjJlN2RhYjIyNzE5NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC0xMjAsNyArMTIxLDcgQEAgSFJFU1VMVCBXZWJVUkxDcmVkZW50aWFsOjppbml0V2l0
aFVzZXIoX0luXyBCU1RSIHVzZXIsIF9Jbl8gQlNUUiBwYXNzd29yZCwgV2ViVVIKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKICAgICB9CiAKLSAgICBtX2NyZWRlbnRpYWwgPSBDcmVkZW50aWFsKFN0
cmluZyh1c2VyLCBTeXNTdHJpbmdMZW4odXNlcikpLCBTdHJpbmcocGFzc3dvcmQsIFN5c1N0cmlu
Z0xlbihwYXNzd29yZCkpLCBjb3JlUGVyc2lzdGVuY2UpOworICAgIG1fY3JlZGVudGlhbCA9IENy
ZWRlbnRpYWwod2NoYXJUb1N0cmluZyh1c2VyLCBTeXNTdHJpbmdMZW4odXNlcikpLCB3Y2hhclRv
U3RyaW5nKHBhc3N3b3JkLCBTeXNTdHJpbmdMZW4ocGFzc3dvcmQpKSwgY29yZVBlcnNpc3RlbmNl
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKaW5kZXggZDcyMThjOTQyNzA4MDNmNmRjMjRkMTE5
MDcwNzg1MjcxNTQ3NjdiZi4uODhkYTQ4MGMxYWI3MWI1OWU4MTY0ZjBkNTk4NDk4M2FiZGI2ZmNi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UuY3BwCkBAIC0yMywxMSArMjMsMTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNs
dWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRlICJXZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuaCIKIAorI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTY0LDggKzE2NSw4IEBAIEhSRVNV
TFQgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjppbml0V2l0aEhvc3QoX0luXyBCU1RSIGhvc3QsIGlu
dCBwb3J0LCBfSW5fIEJTVFIKICAgICBlbHNlIGlmIChCU3RyaW5nKHByb3RvY29sKSA9PSB3ZWJV
UkxQcm90ZWN0aW9uU3BhY2VGVFBTQlN0cmluZykKICAgICAgICAgc2VydmVyVHlwZSA9IFByb3Rl
Y3Rpb25TcGFjZVNlcnZlckZUUFM7CiAKLSAgICBtX3Byb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rp
b25TcGFjZShTdHJpbmcoaG9zdCwgU3lzU3RyaW5nTGVuKGhvc3QpKSwgcG9ydCwgc2VydmVyVHlw
ZSwgCi0gICAgICAgIFN0cmluZyhyZWFsbSwgU3lzU3RyaW5nTGVuKHJlYWxtKSksIGNvcmVTY2hl
bWUoYXV0aGVudGljYXRpb25NZXRob2QpKTsKKyAgICBtX3Byb3RlY3Rpb25TcGFjZSA9IFByb3Rl
Y3Rpb25TcGFjZSh3Y2hhclRvU3RyaW5nKGhvc3QsIFN5c1N0cmluZ0xlbihob3N0KSksIHBvcnQs
IHNlcnZlclR5cGUsCisgICAgICAgIHdjaGFyVG9TdHJpbmcocmVhbG0sIFN5c1N0cmluZ0xlbihy
ZWFsbSkpLCBjb3JlU2NoZW1lKGF1dGhlbnRpY2F0aW9uTWV0aG9kKSk7CiAKICAgICByZXR1cm4g
U19PSzsKIH0KQEAgLTE4OSw4ICsxOTAsOCBAQCBIUkVTVUxUIFdlYlVSTFByb3RlY3Rpb25TcGFj
ZTo6aW5pdFdpdGhQcm94eUhvc3QoX0luXyBCU1RSIGhvc3QsIGludCBwb3J0LCBfSW5fCiAgICAg
ZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIG1fcHJvdGVjdGlvblNw
YWNlID0gUHJvdGVjdGlvblNwYWNlKFN0cmluZyhob3N0LCBTeXNTdHJpbmdMZW4oaG9zdCkpLCBw
b3J0LCBzZXJ2ZXJUeXBlLCAKLSAgICAgICAgU3RyaW5nKHJlYWxtLCBTeXNTdHJpbmdMZW4ocmVh
bG0pKSwgY29yZVNjaGVtZShhdXRoZW50aWNhdGlvbk1ldGhvZCkpOworICAgIG1fcHJvdGVjdGlv
blNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHdjaGFyVG9TdHJpbmcoaG9zdCwgU3lzU3RyaW5nTGVu
KGhvc3QpKSwgcG9ydCwgc2VydmVyVHlwZSwKKyAgICAgICAgd2NoYXJUb1N0cmluZyhyZWFsbSwg
U3lzU3RyaW5nTGVuKHJlYWxtKSksIGNvcmVTY2hlbWUoYXV0aGVudGljYXRpb25NZXRob2QpKTsK
IAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVz
cG9uc2UuY3BwCmluZGV4IDU2OWI5ODI2NGI0NWI4ODc4YjU4NzJjMzMxMmZlMTM4NDJjNTIwYzcu
LjIzMDQ1YWYxYjEyMzdmMjAyNTM3NWQ5MGY5Y2YyNWVkMzNiMzM1OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTI1LDIwICsyNSwxMCBAQAogCiAj
aW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKIAotI2luY2x1ZGUgIldlYktpdERMTC5oIgotI2lu
Y2x1ZGUgIldlYktpdC5oIgotCiAjaW5jbHVkZSAiQ09NUHJvcGVydHlCYWcuaCIKICNpbmNsdWRl
ICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKLQotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ29yZUdyYXBoaWNzLmg+Ci0jZW5kaWYKLQotI2lmIFVTRShDRlVSTENPTk5FQ1RJT04p
Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KLSNlbmRpZgotCisjaW5jbHVk
ZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9C
U3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC00Nyw2ICszNywxNSBAQAogI2luY2x1ZGUg
PHNobHdhcGkuaD4KICNpbmNsdWRlIDx3Y2hhci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KKworI2lmIFVTRShDRykK
KyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjZW5kaWYKKworI2lmIFVT
RShDRlVSTENPTk5FQ1RJT04pCisjaW5jbHVkZSA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4K
KyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMjk1LDcgKzI5NCw3IEBA
IEhSRVNVTFQgV2ViVVJMUmVzcG9uc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aChfT3V0XyBsb25n
IGxvbmcqIHJlc3VsdCkKIAogSFJFU1VMVCBXZWJVUkxSZXNwb25zZTo6aW5pdFdpdGhVUkwoX0lu
XyBCU1RSIHVybCwgX0luXyBCU1RSIG1pbWVUeXBlLCBpbnQgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
LCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSkKIHsKLSAgICBtX3Jlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZShNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgU3RyaW5nKG1p
bWVUeXBlKSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBTdHJpbmcodGV4dEVuY29kaW5nTmFtZSkp
OworICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKE1hcnNoYWxsaW5nSGVscGVyczo6
QlNUUlRvS1VSTCh1cmwpLCBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWltZVR5cGUpLCBl
eHBlY3RlZENvbnRlbnRMZW5ndGgsIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZXh0RW5j
b2RpbmdOYW1lKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDQ4MTIzODQ3
MTNjOGI5OWRhNWNiYTViNjNmMjU0NDQ5ZmU1MGM2NDIuLjZiMjFiYWY2NzAyMWQ0NDZkN2Y2Nzk5
ZmRjODdhMzI5ZGJmODNjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsOSArMjYsOSBAQAogCiAjaW5jbHVk
ZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCi0KICNpbmNs
dWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC04Myw3ICs4Myw3IEBAIEhSRVNVTFQgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8KIAogSFJFU1VM
VCBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OnBhcnNlKF9Jbl8gQlNUUiBwYXR0ZXJuU3RyaW5n
KQogewotICAgIG1fcGF0dGVybiA9IFVzZXJDb250ZW50VVJMUGF0dGVybihTdHJpbmcocGF0dGVy
blN0cmluZywgU3lzU3RyaW5nTGVuKHBhdHRlcm5TdHJpbmcpKSk7CisgICAgbV9wYXR0ZXJuID0g
VXNlckNvbnRlbnRVUkxQYXR0ZXJuKHdjaGFyVG9TdHJpbmcocGF0dGVyblN0cmluZywgU3lzU3Ry
aW5nTGVuKHBhdHRlcm5TdHJpbmcpKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFjZjIwODlkZTY2ODBlY2EzODU2ZjU3M2My
Mjk1MTc0OGYwYS4uYmU0ZDA3MWIxMDdmMGViYTU2ZWViYzg5YjU0OTVjMmQ0ODllNGVkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE2OSwxMyArMTY5LDI1IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGNvbWRlZi5oPgorI2luY2x1ZGUgPGNvbXV0
aWwuaD4KICNpbmNsdWRlIDxkMmQxLmg+CisjaW5jbHVkZSA8ZGltbS5oPgorI2luY2x1ZGUgPG9s
ZWFjYy5oPgorI2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVk
ZSA8d2luZG93c3guaD4KKyNpbmNsdWRlIDx3aW51c2VyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYv
UkFNU2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJT
dHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCiAjaWYgVVNF
KENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4KQEAgLTIwNSwxOCArMjE3
LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxTY3JlZW5Db250cm9sbGVyLmg+CiAjZW5kaWYK
IAotI2luY2x1ZGUgPFNobE9iai5oPgotI2luY2x1ZGUgPGNvbXV0aWwuaD4KLSNpbmNsdWRlIDxk
aW1tLmg+Ci0jaW5jbHVkZSA8b2xlYWNjLmg+Ci0jaW5jbHVkZSA8d2NoYXIuaD4KLSNpbmNsdWRl
IDx3aW5kb3dzeC5oPgotI2luY2x1ZGUgPHdpbnVzZXIuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+Ci0KICNk
ZWZpbmUgV0VCS0lUX0RSQVdJTkcgNAogCiAvLyBTb2Z0IGxpbmsgZnVuY3Rpb25zIGZvciBnZXN0
dXJlcyBhbmQgcGFubmluZyBmZWVkYmFjawpAQCAtMjU2LDE3ICsyNTYsMTcgQEAgV2ViVmlldyog
a2l0KFBhZ2UqIHBhZ2UpCiAKIHN0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIHRvQXRvbWljU3Ry
aW5nKEJTVFIgYnN0cikKIHsKLSAgICByZXR1cm4gQXRvbWljU3RyaW5nKGJzdHIsIFN5c1N0cmlu
Z0xlbihic3RyKSk7CisgICAgcmV0dXJuIEF0b21pY1N0cmluZyh3Y2hhckFzVUNoYXIoYnN0ciks
IFN5c1N0cmluZ0xlbihic3RyKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRvU3RyaW5n
KEJTVFIgYnN0cikKIHsKLSAgICByZXR1cm4gU3RyaW5nKGJzdHIsIFN5c1N0cmluZ0xlbihic3Ry
KSk7CisgICAgcmV0dXJuIHdjaGFyVG9TdHJpbmcoYnN0ciwgU3lzU3RyaW5nTGVuKGJzdHIpKTsK
IH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgdG9TdHJpbmcoQlN0cmluZyAmYnN0cikKIHsKLSAg
ICByZXR1cm4gU3RyaW5nKGJzdHIsIFN5c1N0cmluZ0xlbihic3RyKSk7CisgICAgcmV0dXJuIHdj
aGFyVG9TdHJpbmcoYnN0ciwgU3lzU3RyaW5nTGVuKGJzdHIpKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBVUkwgdG9VUkwoQlNUUiBic3RyKQpAQCAtMTU5OCwxMyArMTU5OCwxMyBAQCBzdGF0aWMgSE1F
TlUgY3JlYXRlQ29udGV4dE1lbnVGcm9tSXRlbXMoY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRl
bT4mIGl0ZW1zKQogICAgICAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
QWN0aW9uVHlwZToKICAgICAgICAgY2FzZSBDaGVja2FibGVBY3Rpb25UeXBlOgotICAgICAgICAg
ICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfU1RSSU5HLCBpdGVtLmFjdGlvbigpLCBp
dGVtLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOworICAg
ICAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfU1RSSU5HLCBpdGVtLmFjdGlv
bigpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoaXRlbS50aXRsZSgpKS5kYXRhKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU2VwYXJhdG9yVHlwZToKICAgICAgICAg
ICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1NFUEFSQVRPUiwgaXRlbS5hY3Rpb24o
KSwgbnVsbHB0cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdWJtZW51VHlw
ZToKLSAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1BPUFVQLCAoVUlO
VF9QVFIpY3JlYXRlQ29udGV4dE1lbnVGcm9tSXRlbXMoaXRlbS5zdWJNZW51SXRlbXMoKSksIGl0
ZW0udGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAg
ICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9QT1BVUCwgKFVJTlRfUFRSKWNy
ZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1zKGl0ZW0uc3ViTWVudUl0ZW1zKCkpLCBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoaXRlbS50aXRsZSgpKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0xODE0LDcgKzE4MTQsNyBAQCB2b2lkIFdlYlZpZXc6
Om9uTWVudUNvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICA6OkRlc3Ry
b3lNZW51KG1fY3VycmVudENvbnRleHRNZW51KTsKICAgICBtX2N1cnJlbnRDb250ZXh0TWVudSA9
IG51bGxwdHI7CiAKLSAgICBTdHJpbmcgdGl0bGUoYnVmZmVyLmRhdGEoKSwgbWVudUl0ZW1JbmZv
LmNjaCk7CisgICAgU3RyaW5nIHRpdGxlID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZGF0YSgpLCBt
ZW51SXRlbUluZm8uY2NoKTsKICAgICBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24gPSBzdGF0aWNf
Y2FzdDxDb250ZXh0TWVudUFjdGlvbj4obWVudUl0ZW1JbmZvLndJRCk7CiAKICAgICBpZiAoYWN0
aW9uID49IENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZykgewpAQCAtMzIzNCw4ICsz
MjM0LDggQEAgdm9pZCBXZWJWaWV3OjpzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYgdG9vbFRpcCkK
ICAgICAgICAgaW5mby5jYlNpemUgPSBzaXplb2YoaW5mbyk7CiAgICAgICAgIGluZm8udUZsYWdz
ID0gVFRGX0lESVNIV05EOwogICAgICAgICBpbmZvLnVJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUlO
VF9QVFI+KG1fdmlld1dpbmRvdyk7Ci0gICAgICAgIFZlY3RvcjxVQ2hhcj4gdG9vbFRpcENoYXJh
Y3RlcnMgPSBtX3Rvb2xUaXAuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0
YWluIGJ1ZmZlciBsb25nIGVub3VnaCB0byBtYWtlIHRoZSBTZW5kTWVzc2FnZSBjYWxsCi0gICAg
ICAgIGluZm8ubHBzelRleHQgPSBjb25zdF9jYXN0PFVDaGFyKj4odG9vbFRpcENoYXJhY3RlcnMu
ZGF0YSgpKTsKKyAgICAgICAgVmVjdG9yPHdjaGFyX3Q+IHRvb2xUaXBDaGFyYWN0ZXJzID0gc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fdG9vbFRpcCk7IC8vIFJldGFpbiBidWZmZXIgbG9u
ZyBlbm91Z2ggdG8gbWFrZSB0aGUgU2VuZE1lc3NhZ2UgY2FsbAorICAgICAgICBpbmZvLmxwc3pU
ZXh0ID0gY29uc3RfY2FzdDx3Y2hhcl90Kj4odG9vbFRpcENoYXJhY3RlcnMuZGF0YSgpKTsKICAg
ICAgICAgOjpTZW5kTWVzc2FnZShtX3Rvb2xUaXBId25kLCBUVE1fVVBEQVRFVElQVEVYVCwgMCwg
cmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZpbmZvKSk7CiAgICAgfQogCkBAIC0zNjU1LDcgKzM2
NTUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9t
U3RyaW5nKF9Jbl8gQlNUUiBzY3JpcHQsIC8vIGFzcwogICAgIGlmICghY29yZUZyYW1lKQogICAg
ICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgYXV0byBzY3JpcHRFeGVjdXRpb25SZXN1
bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoV1RGOjpTdHJpbmcoc2NyaXB0
KSwgdHJ1ZSk7CisgICAgYXV0byBzY3JpcHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNj
cmlwdCgpLmV4ZWN1dGVTY3JpcHQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHNjcmlwdCks
IHRydWUpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uUmVzdWx0KQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogICAgIGVsc2UgaWYgKHNjcmlwdEV4ZWN1dGlvblJlc3VsdC5pc1N0cmluZygpKSB7
CkBAIC00MDE0LDcgKzQwMTQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnNldEdyb3VwTmFtZShfSW5f
IEJTVFIgZ3JvdXBOYW1lKQogICAgIGlmIChtX3dlYlZpZXdHcm91cCkKICAgICAgICAgbV93ZWJW
aWV3R3JvdXAtPnJlbW92ZVdlYlZpZXcodGhpcyk7CiAKLSAgICBtX3dlYlZpZXdHcm91cCA9IFdl
YlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBsb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgobV9wcmVmZXJlbmNlcy5nZXQoKSkpOworICAgIG1fd2ViVmlld0dyb3VwID0gV2ViVmlld0dy
b3VwOjpnZXRPckNyZWF0ZSh3Y2hhckFzVUNoYXIoZ3JvdXBOYW1lKSwgbG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoKG1fcHJlZmVyZW5jZXMuZ2V0KCkpKTsKICAgICBtX3dlYlZpZXdHcm91cC0+YWRk
V2ViVmlldyh0aGlzKTsKIAogICAgIGlmICghbV9wYWdlKQpAQCAtNjkzNCw3ICs2OTM0LDcgQEAg
SFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1l
LCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAg
IFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQq
PihpV29ybGQpOwotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNj
cmlwdD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRl
bGlzdENvdW50KSwKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJT
Y3JpcHQ+KHdjaGFyQXNVQ2hhcihzb3VyY2UpLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwKICAgICAgICAgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0LCBibGFja2xpc3RDb3VudCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVu
dFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwKICAg
ICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFs
bEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250
ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQod29ybGQtPndvcmxkKCksIFdURk1vdmUodXNl
clNjcmlwdCkpOwpAQCAtNjk2MSw3ICs2OTYxLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2Vy
U3R5bGVTaGVldFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gc3R5
bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwo
dXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5n
VmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLAorICAgIGF1dG8gc3R5bGVTaGVldCA9
IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHdjaGFyQXNVQ2hhcihzb3VyY2UpLCB0
b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9T
dHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCiAgICAgICAgIGluamVjdGVk
RnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmpl
Y3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVz
ZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBX
VEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1
cm4gU19PSzsKQEAgLTcxMTMsNyArNzExMyw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVmlzaXRl
ZExpbmtzKF9faW5vdXRfZWNvdW50X2Z1bGwodmlzaXRlZFVSTENvdW50KSBCU1RSKiB2aXNpCiAg
ICAgICAgIEJTVFIgdXJsID0gdmlzaXRlZFVSTHNbaV07CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCA9IFN5c1N0cmluZ0xlbih1cmwpOwogCi0gICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkVmlz
aXRlZExpbmsoU3RyaW5nKHVybCwgbGVuZ3RoKSk7CisgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUu
YWRkVmlzaXRlZExpbmsod2NoYXJUb1N0cmluZyh1cmwsIGxlbmd0aCkpOwogICAgIH0KIAogICAg
IHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCmluZGV4IDUwZGYwM2ViNjAw
NDRlYTA3OGZlYWMzYjU3YzJiZTljNzZhOWE3ZjEuLjk0NzZhZGMwMGM2NGRkYzY5YTZhOWM4NTYx
OGUwMTc2ODQ4MTEwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKQEAgLTk3LDkgKzk3
LDYgQEAgZW5kaWYgKCkKIAogaWYgKE5PVCBBUFBMRSkKICAgICBmaW5kX3BhY2thZ2UoSUNVIFJF
UVVJUkVEKQotICAgIGlmIChXSU4zMikKLSAgICAgICAgYWRkX2RlZmluaXRpb25zKC1EVUNIQVJf
VFlQRT13Y2hhcl90KQotICAgIGVuZGlmICgpCiBlbHNlICgpCiAgICAgYWRkX2RlZmluaXRpb25z
KC1EVV9ESVNBQkxFX1JFTkFNSU5HPTEgLURVX1NIT1dfQ1BMVVNQTFVTX0FQST0wKQogICAgIHNl
dChJQ1VfTElCUkFSSUVTIGxpYmljdWNvcmUuZHlsaWIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4
IDAxN2IyNmQ5YjAxZDI4NTYxMzI2YjhlZDY4Mjc3M2UxNjdjODkzOWYuLmZhNjgxNDVhZThiYWI1
ODIxMjliMWM0MmE3NjM4ZjU0NGIwMzRkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zV2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0xNTMs
NyArMTUzLDYgQEAgc2V0KFBBTF9MSUJSQVJZX1RZUEUgU1RBVElDKQogc2V0KFdlYktpdExlZ2Fj
eV9MSUJSQVJZX1RZUEUgU0hBUkVEKQogCiBmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQotYWRk
X2RlZmluaXRpb25zKC1EVUNIQVJfVFlQRT13Y2hhcl90KQogCiAjIElmIDx3aW5zb2NrMi5oPiBp
cyBub3QgaW5jbHVkZWQgYmVmb3JlIDx3aW5kb3dzLmg+IHJlZGVmaW5pdGlvbiBlcnJvcnMgb2Nj
dXIKICMgdW5sZXNzIF9XSU5TT0NLQVBJXyBpcyBkZWZpbmVkIGJlZm9yZSA8d2luZG93cy5oPiBp
cyBpbmNsdWRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDIxMTZjZjk3MGU1NzgwMTQ5NjMzZjZlZDY0YWE3MTliZDZlOGI5MWYuLjBmOTFiYWVi
NTdjN2ZmMTRlZTBiZTQyMDBhNzIxNDQxOWU3MmU3ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wMy0wNSAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0g
UmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0
aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBEZWxldGUgd2NoYXIgdGVzdHMgLS0g
dGhlc2Ugd2VyZSBNU1ZDLW9ubHkgYW5kIHdlIHdvbid0IGJlIHVzaW5nIFN0cmluZzo6b3BlcmF0
b3IrIGdvaW5nIGZvcndhcmQgYW55d2F5LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpydW5VSVNjcmlwdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGxpYnJh
cnlQYXRoRm9yRHVtcFJlbmRlclRyZWUpOgorICAgICAgICAoZmluZEZvbnRGYWxsYmFjayk6Cisg
ICAgICAgIChhZGRGb250RmFsbGJhY2tJZlByZXNlbnQpOgorICAgICAgICAocmVtb3ZlRm9udEZh
bGxiYWNrSWZQcmVzZW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OmNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIFVzZSB3Y2hhciBoZWxw
ZXJzIHdoZXJlIG5lZWRlZC4KKwogMjAxOS0wMy0wNSAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1
ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0
byBmb2xsb3cgbGlua3Mgd2l0aCAnZG93bmxvYWQnIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5jcHAKaW5kZXggNjIyMjI0MmEwYTg5MDMxZDZkYTFiOGEzOGY5MDg3YTE1Zjdl
MWFkYS4uNTc5ZGYwMzExYTRmNjAxNWI0YWViYTk3MjRkOTdlZjhkZDgyMzhmNCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTY1LDYgKzY1LDEwIEBACiAjaW5jbHVkZSA8Q2Fy
Ym9uL0NhcmJvbi5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CisjZW5kaWYKKwogRklMRSogdGVzdFJlc3Vs
dCA9IHN0ZG91dDsKIAogY29uc3QgdW5zaWduZWQgVGVzdFJ1bm5lcjo6dmlld1dpZHRoID0gODAw
OwpAQCAtMjQ2NCw3ICsyNDY4LDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHNjcmlwdCwgSlNWYWx1ZVJlCiAgICAgaWYg
KCFtX1VJU2NyaXB0Q29udGV4dCkKICAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAKKyNpZiBQTEFURk9STShX
SU4pCisgICAgU3RyaW5nIHNjcmlwdFN0cmluZyA9IHdjaGFyVG9TdHJpbmcoSlNTdHJpbmdHZXRD
aGFyYWN0ZXJzUHRyKHNjcmlwdCksIEpTU3RyaW5nR2V0TGVuZ3RoKHNjcmlwdCkpOworI2Vsc2UK
ICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nKEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQp
LCBKU1N0cmluZ0dldExlbmd0aChzY3JpcHQpKTsKKyNlbmRpZgogICAgIG1fVUlTY3JpcHRDb250
ZXh0LT5ydW5VSVNjcmlwdChzY3JpcHRTdHJpbmcsIGNhbGxiYWNrSUQpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBkYWU1ZGU3NjEwNTc2
ZTZlNjM4MjZhYWY2ZjZiNjkwZGM4Y2IxZTQzLi41MzkxYjA0ODA0ZDVkOThkNTdiZTgwMGIyMDUz
ZWFiMTZhMzYyNzU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIK
ICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0KICNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1Rlc3RSdW5uZXJVdGlscy5oPgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJL
aXQuaD4KQEAgLTY3LDYgKzY2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oPgogCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgU3RyaW5n
IGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQogICAgICAgICB3c3RyaW5nIHBhdGggPSBi
dWZmZXIuZGF0YSgpOwogICAgICAgICBpZiAoIXBhdGguZW1wdHkoKSAmJiAocGF0aFtwYXRoLmxl
bmd0aCgpIC0gMV0gIT0gTCdcXCcpKQogICAgICAgICAgICAgcGF0aC5hcHBlbmQoTCJcXCIpOwot
ICAgICAgICByZXR1cm4gU3RyaW5nIChwYXRoLmRhdGEoKSwgcGF0aC5sZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiB3Y2hhclRvU3RyaW5nKHBhdGguZGF0YSgpLCBwYXRoLmxlbmd0aCgpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCk7CkBAIC0xMDM4LDEzICsxMDM4LDEzIEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRG
YWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxs
YmFjayA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsKIAogICAgIHdjaGFy
X3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKLSAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBh
dGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwg
X01BWF9QQVRIKSkKKyAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwYXRoVG9Gb250RmFsbGJhY2spLmRhdGEoKSwgX01BWF9QQVRIKSkKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBpZiAoITo6UGF0aElzRGlyZWN0b3J5
VyhmdWxsUGF0aCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgU3RyaW5n
IHBhdGhUb0NoZWNrID0gZnVsbFBhdGg7CisgICAgU3RyaW5nIHBhdGhUb0NoZWNrID0gbnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZ1bGxQYXRoKTsKIAogICAgIHN0YXRpYyBjb25zdCBTdHJp
bmcgbGF5b3V0VGVzdHMgPSAiTGF5b3V0VGVzdHMiOwogCkBAIC0xMDY5LDcgKzEwNjksNyBAQCBz
dGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogICAg
IGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIHBvcyA9IHBvc3NpYmxlUGF0aHMuYmVnaW4o
KTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5kKCk7ICsrcG9zKSB7CiAgICAgICAgIHBhdGhUb0Zv
bnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAi
cmVzb3VyY2VzXFwiKTsKIAotICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHBhdGhUb0Zv
bnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCisgICAg
ICAgIGlmICg6OlBhdGhJc0RpcmVjdG9yeVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBh
dGhUb0ZvbnRGYWxsYmFjaykuZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXRoVG9Gb250
RmFsbGJhY2s7CiAgICAgfQogCkBAIC0xMDgzLDcgKzEwODMsNyBAQCBzdGF0aWMgdm9pZCBhZGRG
b250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogCiAg
ICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3Mi
KTsKIAotICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNX
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmb250RmFsbGJhY2spLmRhdGEoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24o
Zm9udEZhbGxiYWNrLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMTA5Niw3ICsxMDk2LDcg
QEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYg
Zm9udEZhbGxiYWNrUGF0aCkKIAogICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRp
YmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKLSAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZv
bnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCisgICAg
aWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZm9udEZh
bGxiYWNrKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICA6OnNldFBlcnNpc3RlbnRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKG51bGxwdHIpOwpAQCAtMTU0MSwxMiArMTU0MSwxMiBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIFN0cmluZyBkZXNrdG9w
TmFtZSA9IG1ha2VTdHJpbmcoImRlc2t0b3AiLCBwcm9jZXNzSWQpOwogICAgIEhERVNLIGRlc2t0
b3AgPSBudWxscHRyOwogCi0gICAgYXV0byB3aW5kb3dzU3RhdGlvbiA9IDo6Q3JlYXRlV2luZG93
U3RhdGlvbih3aW5kb3dTdGF0aW9uTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSwgQ1dGX0NSRUFURV9PTkxZLCBXSU5TVEFfQUxMX0FDQ0VTUywgbnVsbHB0cik7Cisg
ICAgYXV0byB3aW5kb3dzU3RhdGlvbiA9IDo6Q3JlYXRlV2luZG93U3RhdGlvbihzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIod2luZG93U3RhdGlvbk5hbWUpLmRhdGEoKSwgQ1dGX0NSRUFURV9P
TkxZLCBXSU5TVEFfQUxMX0FDQ0VTUywgbnVsbHB0cik7CiAgICAgaWYgKHdpbmRvd3NTdGF0aW9u
KSB7CiAgICAgICAgIGlmICghOjpTZXRQcm9jZXNzV2luZG93U3RhdGlvbih3aW5kb3dzU3RhdGlv
bikpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlNldFByb2Nlc3NXaW5kb3dTdGF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yICVsdVxuIiwgOjpHZXRMYXN0RXJyb3IoKSk7CiAKLSAgICAgICAg
ZGVza3RvcCA9IDo6Q3JlYXRlRGVza3RvcChkZXNrdG9wTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgR0VORVJJQ19BTEwsIG51
bGxwdHIpOworICAgICAgICBkZXNrdG9wID0gOjpDcmVhdGVEZXNrdG9wKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihkZXNrdG9wTmFtZSkuZGF0YSgpLCBudWxscHRyLCBudWxscHRyLCAwLCBH
RU5FUklDX0FMTCwgbnVsbHB0cik7CiAgICAgICAgIGlmICghZGVza3RvcCkKICAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNyZWF0ZSBkZXNrdG9wIHdpdGggZXJyb3IgJWx1
XG4iLCA6OkdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKaW5kZXggOWFiY2JiM2E4N2Q4
YzA3MmQ5NmQwNDJkYmZmMGFhZTRjZDdjNjZmMS4uMGUzYmY5OGY4ODIxNGZjNDdjOWI1MzM1Zjc0
YjA2ZDNlNTNhMjk2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nT3BlcmF0b3JzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdPcGVyYXRvcnMuY3BwCkBAIC0yNTAsNzggKzI1MCw2IEBAIFRFU1QoV1RGLCBTdHJpbmdP
cGVyYXRvcnMpCiAgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyAr
IGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsgbGl0ZXJhbCk7CiAg
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIChsaXRlcmFsICsg
c3RyaW5nICsgbGl0ZXJhbCArIGF0b21pY1N0cmluZyArIGxpdGVyYWwpKTsKICAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nVmlldyArIGxpdGVyYWwpICsgKHN0cmluZyAr
IGxpdGVyYWwpICsgKGF0b21pY1N0cmluZyArIGxpdGVyYWwpKTsKLQotI2lmIENPTVBJTEVSKE1T
VkMpCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMSwgTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDEsIHN0cmluZyArIEwid2lk
ZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBMIndpZGUgc3Ry
aW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMSwg
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDAsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMCwgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKTsKLQotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5n
KSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmlu
ZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArIChMIndpZGUg
c3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRl
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoYXRv
bWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsg
KEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcg
KyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRv
bWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmlu
ZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0KLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDAsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5n
IiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCAoTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcp
KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBzdHJpbmdWaWV3ICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDAsIHN0cmluZ1ZpZXcgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdW
aWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygw
LCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0
cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJp
bmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwi
d2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIGF0
b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNT
dHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgKEwid2lkZSBzdHJpbmci
ICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0
cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdW
aWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3
ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsg
c3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSArIChMIndp
ZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5n
KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsg
KEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3Ry
aW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5n
IikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKGF0b21pY1N0cmlu
ZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3
KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsg
YXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykgKyAoTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRv
bWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0
cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJ
RVMoMiwgYXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmlu
ZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLQot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgYXRvbWlj
U3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmci
ICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBz
dHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwi
d2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBz
dHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0
cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0cmlu
ZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsg
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIChMIndpZGUg
c3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nVmll
dyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAo
c3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3Ry
aW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykg
KyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3Ry
aW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIEwi
d2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBM
IndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5n
VmlldyArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWlj
U3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSNlbmRpZgogfQogCiBU
RVNUKFdURiwgQ29uY2F0ZW5hdGVDaGFyYWN0ZXJBcnJheUFuZEVtcHR5U3RyaW5nKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCmluZGV4IDJl
NTQzMDg4MTExZDMxYTU5N2VkZjFiMzAxMmE5MjQ2ZThlZjAxY2MuLjk5YTk3MTQ0Y2EzZjE4NWIz
MjZlMzkyMzVlNGYyNmY1MDA5MmE2YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
d2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dp
bi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIFN0cmlu
ZyBtb2R1bGVEaXJlY3RvcnkoKQogCiBXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBh
dGgoKQogewotICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVzdFdlYktpdEFQSUluamVjdGVkQnVu
ZGxlLmRsbCIpKTsKKyAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIFN0cmluZygiVGVzdFdlYktpdEFQSUluamVjdGVk
QnVuZGxlLmRsbCIpKTsKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
cGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IDhjOTA4OTI1N2Q5YWNjNDA2ZjhmNDBiOWEyYTFlMTgzYTE0N2ZmM2QuLjQ2MzYw
NDIxY2Y3YjZkYzQxMTYzYzNkYWFkNzQyYWI0NjhjMTNkMjYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMy0wNSAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1E
VUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZf
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291
cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlOgorICAgICAgICBTdG9wIGNvbXBpbGluZyB3aXRoIC1EVUNIQVJfVFlQ
RT13Y2hhcl90LgorCiAyMDE5LTAzLTA0ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBFbmFibGUgd2ViIHByb2Nlc3Mgc2FuZGJveAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363792</attachid>
            <date>2019-03-06 14:24:34 -0800</date>
            <delta_ts>2019-03-06 16:15:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195346-20190306142433.patch</filename>
            <type>text/plain</type>
            <size>113122</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmM3MzM1YWI4ZDQzNTQ0NmQyYTFiZTBjN2JhMGJlNzczMTU4ODliLi4xYmEzZTllMmQ4NTY3NmEx
NjllNDcxMzAzMmZkMmNjNWJlNDA4OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3Bn
YXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGN1cnJlbnRX
b3JraW5nRGlyZWN0b3J5KToKKyAgICAgICAgKGZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3Rl
bSk6CisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMgbmVlZGVkLgor
CiAyMDE5LTAzLTA1ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IG9wX3N3aXRjaF9jaGFyIGJyb2tlbiBmb3Igcm9wZSBzdHJpbmdzIGFmdGVyIEpTUm9wZVN0cmlu
ZyBsYXlvdXQgcmV3cml0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCAxYTliMTlkNzExOTVlYTZiNmEwNWNmYTY4NzIxMjI0NWRm
N2NlOTQwLi5lYjcxMjI3NDcwMDY0MzcwMzY3MTJjMTA3YWZhOGZkZjQyNzIzOTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3Rv
cGdhcCBhbmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oOgorICAgICAgICAoV1RGOjp3Y2hhckZyb20pOgorICAgICAgICAoV1RG
Ojp1Y2hhckZyb20pOgorICAgICAgICAoV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjp3Y2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
QWRkIHN0YXRpY19hc3NlcnQtZ3VhcmRlZCByZWludGVycHJldF9jYXN0IHdyYXBwZXJzIGZvciBn
b2luZyBiZXR3ZWVuIFVDaGFyKiBhbmQgd2NoYXJfdCouCisgICAgICAgIFJlcGxhY2UgZXhpc3Rp
bmcgdG9TdHJpbmcgaGVscGVycyB3aXRoIGEgU3RyaW5nKGNvbnN0IHdjaGFyX3QqKSBjb25zdHJ1
Y3Rvci4KKworICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaW5kRGF0YSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaW5hbFBhdGhOYW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmNyZWF0ZVN5bWJvbGljTGluayk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxl
dGVGaWxlKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om1vdmVGaWxlKToKKyAgICAgICAg
KFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAg
IChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUlt
cGw6OmdlbmVyYXRlVGVtcG9yYXJ5UGF0aCk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBs
OjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpoYXJkTGlua09yQ29weUZpbGUp
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkp
OgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpsb2Nh
bGVJbmZvKToKKyAgICAgICAgKiB3dGYvd2luL1BhdGhXYWxrZXIuY3BwOgorICAgICAgICAoV1RG
OjpQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAyLTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBXZWFrSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2NGU2OTZhODRlM2ZjMjVl
ZTFlYzAzNjExYjY4ODhjM2M0YjA5Y2IuLmVmNzVjMmU2YjQ3MTRmYzZkM2RiZDJhYjAyY2QzNmQy
ZGE0OTBjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOS0wMy0wNiAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3Zl
IC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFy
MTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRMaW5rZWRGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaW5rZWRGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlOjpmaWxsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb3dubG9hZEJ1bmRsZTo6YXBwZW5kUmVzdW1lRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpEb3dubG9hZEJ1bmRsZTo6ZXh0cmFjdFJlc3VtZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMQ0lERnJvbUxv
Y2FsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkxDSURGcm9tTG9jYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZVdpbjo6Z2V0TG9jYWxlSW5mb1N0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QlN0cmluZzo6QlN0
cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRXZWJMb2NEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZURlc2NyaXB0b3JEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDRkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdMYWJlbEZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBl
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TU0xL
ZXlHZW5lcmF0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsbEZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJz
IGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBBc3NlcnRpb24gRmFpbGVkOiBtX2RhdGFiYXNlUXVldWUuaXNLaWxsZWQo
KSBpbiBVbmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlEQkRhdGFiYXNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
OWIxYTZkMTM4NTE4MTg4NjI1NGVhZDBkMTBkOThjOTgzMWJiZjgyZi4uMzMyNTA1NzRlM2NlYWU0
ODFiODIzMWVjZTJlMjJkOTgyZmJhMDE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
OS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAg
ICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRv
IGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMpOgor
ICAgICAgICAqIFBsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpN
b2R1bGU6OmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xh
dW5jaGVyV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVNZW51SXRlbSk6CisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0VG9vbFRp
cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5k
bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJzIGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzg0
OTApOiBZb3VUdWJlLmNvbTogUmV0dXJuaW5nIFBpUCB0byBTYWZhcmkgYWZ0ZXIgc2xlZXBpbmcg
ZGV2aWNlIGxvc2VzIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA3ZTgyN2I1
YmY3NDFjNGNjNzgzNmNlMjdkNzUzNTAwNGQxNzhkZjUzLi4wZDU0MDY3Mzc3Zjk2ZDk1MDU3MDk2
OGU2ZGRkYjQ0YzNmZjc0MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTggQEAKKzIwMTktMDMtMDYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2Fw
IGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAg
KEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0cmlidXRlKToKKyAgICAgICAgKiBDT01Qcm9wZXJ0eUJh
Zy5oOgorICAgICAgICAoSGFzaFR5cGU+OjpHZXRQcm9wZXJ0eUluZm8pOgorICAgICAgICAoSGFz
aFR5cGU+OjpMb2FkT2JqZWN0KToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAg
ICAgIChET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTU5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01F
bGVtZW50Ojpmb250KToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChE
T01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAoRE9NSFRNTElu
cHV0RWxlbWVudDo6cmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlKToKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsdWdpblBhdGhz
RnJvbVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXRQbHVn
aW5QYXRoc0luRGlyZWN0b3JpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTW96aWxs
YVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFdpbmRvd3NNZWRpYVBs
YXllclBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRBZG9iZUFjcm9iYXRQ
bHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSmF2YVBsdWdpbkRpcmVjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OmFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFZlcnNpb25J
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlUG9z
dFJlYWRGaWxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrR3JhbW1hck9mU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0
ZVdpbmRvd1RpdGxlKToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6ZmluZEZyYW1lTmFtZWQpOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RTVFIgY29uc3QpOgorICAg
ICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxS
ZXF1ZXN0OjphZGRWYWx1ZSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgICh0b0F0
b21pY1N0cmluZyk6CisgICAgICAgIChjcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyk6CisgICAg
ICAgIChXZWJWaWV3OjpzZXRUb29sVGlwKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAzLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIFByb2dyYW1tYXRpYyBwYXN0ZSBhY2Nlc3Mgc2hvdWxkIGJl
IGdyYW50ZWQgd2hlbiBjb3B5aW5nIGFuZCBwYXN0aW5nIHdpdGhpbiB0aGUgc2FtZSBvcmlnaW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZTU1MGE3MjQ0YjY0MWQyODkxZWE0MTNkM2FkYjljZWNl
MTRiOGE3ZC4uOGNhZGI5NmE0MDZjYTg2YWY1ZGRlYzIwYWQ1MTVkMTVlNmJiYTFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTc0OCw3ICs3NDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RGlyZWN0
b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKQogICAgIC8vIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmMzgxNDA3LmFzcHgK
ICAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVyKGJ1ZmZlckxlbmd0aCk7CiAgICAgRFdPUkQgbGVu
Z3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3Ro
LCBidWZmZXIuZGF0YSgpKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0
cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsKTsKKyAgICBTdHJpbmcg
ZGlyZWN0b3J5U3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOwog
ICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxw
YXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2MiwxNSArMTA2MiwxNCBAQCBzdGF0
aWMgYm9vbCBmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgVmVjdG9yJiBidWZmZQogI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gaHR0cHM6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjUyNDcuYXNw
eCNtYXhwYXRoCiAgICAgLy8gVXNlIGxvbmcgVU5DIHRvIHBhc3MgdGhlIGxvbmcgcGF0aCBuYW1l
IHRvIHRoZSBXaW5kb3dzIEFQSXMuCi0gICAgU3RyaW5nIGxvbmdVTkNQYXRoTmFtZSA9IFdURjo6
bWFrZVN0cmluZygiXFxcXD9cXCIsIGZpbGVOYW1lKTsKLSAgICBhdXRvIHBhdGhOYW1lID0gc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGxvbmdVTkNQYXRoTmFtZSk7CisgICAgYXV0byBwYXRo
TmFtZSA9IG1ha2VTdHJpbmcoIlxcXFw/XFwiLCBmaWxlTmFtZSkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKTsKICAgICBzdHJ1Y3QgX3N0YXQgc3RhdHVzIHsgfTsKLSAgICBpZiAoX3dz
dGF0KHBhdGhOYW1lLmRhdGEoKSwgJnN0YXR1cykpCisgICAgaWYgKF93c3RhdCh3Y2hhckZyb20o
cGF0aE5hbWUuZGF0YSgpKSwgJnN0YXR1cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoKHN0YXR1cy5zdF9tb2RlICYgU19JRk1UKSAhPSBTX0lGUkVHKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBGSUxFKiBmID0gX3dmb3BlbihwYXRoTmFtZS5kYXRhKCksIEwicmIiKTsK
KyAgICBGSUxFKiBmID0gX3dmb3Blbih3Y2hhckZyb20ocGF0aE5hbWUuZGF0YSgpKSwgTCJyYiIp
OwogI2Vsc2UKICAgICBhdXRvIHBhdGhOYW1lID0gZmlsZU5hbWUudXRmOCgpOwogICAgIHN0cnVj
dCBzdGF0IHN0YXR1cyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggZmEwZmI0MmUwN2VmNDM2YTVjYzA4MDA2ZTZkZDMyZGI3
MGMzZWM0Ny4uNzNlZWEzMWYxMjZkNDdhOWI5MDk2NDg0OTYyY2I0NDk5ZjcxZDZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC0xMDksNyArMTA4LDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMK
ICAgICAgICAgICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwog
ICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7
CiAgICAgICAgICAgICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8g
dGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0
YW5kYXJkTmFtZTsKLSAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcod2luVGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgIFN0cmluZyB0
aW1lWm9uZU5hbWUod2luVGltZVpvbmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3Qg
dG0gZ3RtID0gdDsKICAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCmluZGV4IGFhNWM5ZmNlNWRjNmFhOGNiMTA2ZjMxYTAzMzIwZmE1MTJhYzky
ZjIuLjk4NmRmODVmODViMGNmMDQ0MWU4ZTJlMzViZDUwNzZhNzBhMWI0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaApAQCAtMzQsNiArMzQsMTEgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4K
ICNlbmRpZgogCisjaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
VEYgewogCiAvLyBEZWNsYXJhdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKQEAgLTMzMCw2ICsz
MzUsMTQgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdDsKICNlbmRp
ZgogCisjaWYgT1MoV0lORE9XUykgJiYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNTkKKyAg
ICBTdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAg
ICAgICA6IFN0cmluZyh1Y2hhckZyb20oY2hhcmFjdGVycyksIGxlbmd0aCkgeyB9CisKKyAgICBT
dHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykKKyAgICAgICAgOiBTdHJpbmcoY2hhcmFj
dGVycywgd2NzbGVuKGNoYXJhY3RlcnMpKSB7IH0KKyNlbmRpZgorCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVUNoYXIq
LCBzaXplX3QpOwogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RhdGljIFN0
cmluZyBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNh
cGFjaXR5PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9XQ2hhclN0
cmluZ0V4dHJhcy5oIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMu
aAppbmRleCBkNDFmNDYyOTRkMzYwNGViNjA0Y2I3NDcwMTZjZTU0MzYxN2VkZGRmLi45MDYzNTUy
ZjhhMGE0M2RjZmY2YzZjNjhjYjVmYmM0ZTQ4MDEwYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDE3IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNDYgKzI2LDMzIEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSA8d2NoYXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQogbmFtZXNwYWNlIFdURiB7CiAKLWlubGluZSBWZWN0b3I8d2NoYXJfdD4gc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoraW5saW5lIGNvbnN0
IHdjaGFyX3QqIHdjaGFyRnJvbShjb25zdCBVQ2hhciogY2hhcmFjdGVycykKIHsKLSAgICBWZWN0
b3I8d2NoYXJfdD4gcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAg
ICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkg
KyAxKTsKLQotICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVyczggPSBzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzOCgpOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJpbmcuaW1wbCgpLT5sZW5ndGgoKTsg
KytpKQotICAgICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoY2hhcmFjdGVyczhb
aV0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMxNiA9IHN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChjaGFyYWN0ZXJzMTYsIHN0cmluZy5pbXBsKCktPmxlbmd0aCgpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoMCk7Ci0gICAgfQorICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQg
VUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgd2NoYXJfdCo+KGNoYXJhY3RlcnMpOworfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKK2lu
bGluZSB3Y2hhcl90KiB3Y2hhckZyb20oVUNoYXIqIGNoYXJhY3RlcnMpCit7CisgICAgc3RhdGlj
X2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hh
cl90IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1lIHNpemUiKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx3Y2hhcl90Kj4oY2hhcmFjdGVycyk7CiB9CiAKLWlubGluZSBTdHJpbmcgd2NoYXJU
b1N0cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitpbmxp
bmUgY29uc3QgVUNoYXIqIHVjaGFyRnJvbShjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQogewog
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBh
c3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7Ci0gICAgcmV0dXJu
IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0
aCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihjaGFyYWN0ZXJz
KTsKIH0KIAotaW5saW5lIFN0cmluZyBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoY29uc3Qg
d2NoYXJfdCogY2hhcmFjdGVycykKK2lubGluZSBVQ2hhciogdWNoYXJGcm9tKHdjaGFyX3QqIGNo
YXJhY3RlcnMpCiB7Ci0gICAgcmV0dXJuIHdjaGFyVG9TdHJpbmcoY2hhcmFjdGVycywgd2NzbGVu
KGNoYXJhY3RlcnMpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXpl
b2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6
ZSIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFVDaGFyKj4oY2hhcmFjdGVycyk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OnN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcjsKLXVzaW5nIFdURjo6d2NoYXJUb1N0cmluZzsKLXVzaW5nIFdURjo6bnVsbFRlcm1p
bmF0ZWRXQ2hhclRvU3RyaW5nOwordXNpbmcgV1RGOjp1Y2hhckZyb207Cit1c2luZyBXVEY6Ondj
aGFyRnJvbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBkNjcyYWY2Mzc0
NjkzY2YwNTIxZWMzNjg5Njg5Y2ViY2MwMmVkZTM4Li41Y2Q5OTM0ZGUzYTY0YTVjNjQyNmRlODM3
MTRjMzUxMDYyOGFkNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC01
MSw3ICs1MSw3IEBAIHN0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVU
b1RpbWV0ID0gMTE2NDQ0NzM2MDA7CiAKIHN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBw
YXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKIHsKLSAgICBIQU5ETEUgaGFuZGxlID0g
RmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwg
JmZpbmREYXRhKTsKKyAgICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcod2NoYXJGcm9t
KHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAmZmluZERhdGEp
OwogICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBGaW5kQ2xvc2UoaGFuZGxlKTsKQEAgLTE1MiwxMyArMTUyLDEzIEBAIHN0
YXRpYyBTdHJpbmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsK
LSAgICBpZiAoOjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7CisgICAgaWYg
KDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIHdjaGFyRnJvbShidWZmZXIuZGF0
YSgpKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7CiAgICAg
ICAgIGNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQog
ICAgIGNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVy
LmRhdGEoKSkpOworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0
YSgpKSkpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
QEAgLTIyMSw3ICsyMjEsNyBAQCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZv
bGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogYm9vbCBjcmVhdGVTeW1ib2xp
Y0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlu
a1BhdGgpCiB7Ci0gICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGljTGlua1coc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKHN5bWJvbGljTGlua1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHRhcmdldFBhdGgpLmRhdGEoKSwgMCk7CisgICAgcmV0dXJuICE6OkNyZWF0
ZVN5bWJvbGljTGlua1cod2NoYXJGcm9tKHN5bWJvbGljTGlua1BhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCB3Y2hhckZyb20odGFyZ2V0UGF0aC5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIDApOwogfQogCiBib29sIGZpbGVFeGlzdHMo
Y29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMjMzLDM3ICsyMzMsMzUgQEAgYm9vbCBmaWxlRXhpc3Rz
KGNvbnN0IFN0cmluZyYgcGF0aCkKIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKLSAgICByZXR1cm4gISFEZWxldGVGaWxl
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7CisgICAgcmV0
dXJuICEhRGVsZXRlRmlsZVcod2NoYXJGcm9tKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKSk7CiB9CiAKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgcmV0
dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5h
bWUpLmRhdGEoKSk7CisgICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5Vyh3Y2hhckZyb20oZmls
ZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKIH0KIAogYm9v
bCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkK
IHsKICAgICBTdHJpbmcgb2xkRmlsZW5hbWUgPSBvbGRQYXRoOwogICAgIFN0cmluZyBuZXdGaWxl
bmFtZSA9IG5ld1BhdGg7Ci0gICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihvbGRGaWxlbmFtZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIobmV3RmlsZW5hbWUpLmRhdGEoKSwgTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJ
TEVfUkVQTEFDRV9FWElTVElORyk7CisgICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KHdjaGFyRnJv
bShvbGRGaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIHdj
aGFyRnJvbShuZXdGaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSksIE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOwog
fQogCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFY
X1BBVEgpOwotCiAgICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0
ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKICAgICBidWZmZXJbcGF0aC5sZW5ndGgo
KV0gPSAnXDAnOwogCi0gICAgaWYgKCFQYXRoQXBwZW5kVyhidWZmZXIuZGF0YSgpLCBzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQorICAgIGlmICghUGF0aEFw
cGVuZFcod2NoYXJGcm9tKGJ1ZmZlci5kYXRhKCkpLCB3Y2hhckZyb20oY29tcG9uZW50LmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAotICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLQorICAg
IGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSkpOwogICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKQEAgLTI3OSw5ICsyNzcs
NyBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNv
bnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcAogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJh
Y3RlcnMgPSBTdHJpbmdWaWV3KHBhdGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotCi0gICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgYXV0
byBjaGFyYWN0ZXJzID0gd2NoYXJGcm9tKFN0cmluZ1ZpZXcocGF0aCkudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCkpOwogICAgIGludCBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAs
IGNoYXJhY3RlcnMsIHBhdGgubGVuZ3RoKCksIDAsIDAsIDAsIDApIC0gMTsKIAogICAgIGNoYXIq
IGJ1ZmZlcjsKQEAgLTI5Nyw3ICsyOTMsNyBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKLSAgICBpZiAoU0hD
cmVhdGVEaXJlY3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZnVsbFBhdGgp
LmRhdGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgeworICAgIGlmIChTSENyZWF0ZURpcmVjdG9y
eUV4KDAsIHdjaGFyRnJvbShmdWxsUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgRFdPUkQgZXJyb3IgPSBH
ZXRMYXN0RXJyb3IoKTsKICAgICAgICAgaWYgKGVycm9yICE9IEVSUk9SX0ZJTEVfRVhJU1RTICYm
IGVycm9yICE9IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7CiAgICAgICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgcGF0aCAlcyIsIHBhdGguYXNjaWkoKS5kYXRhKCkpOwpAQCAtMzE0
LDcgKzMxMCw3IEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAKIFN0cmluZyBwYXRoR2V0
RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcoOjpQYXRoRmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihwYXRoKS5kYXRhKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nKDo6UGF0aEZpbmRGaWxlTmFt
ZSh3Y2hhckZyb20ocGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkp
KTsKIH0KIAogU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMzUw
LDkgKzM0NiwxMCBAQCBzdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQogc3RhdGljIFN0cmluZyBz
dG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQogewogICAgIFZlY3RvcjxVQ2hh
cj4gYnVmZmVyKE1BWF9QQVRIKTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVyUGF0aFcoMCwg
cGF0aElkZW50aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgYnVmZmVyLmRhdGEoKSkp
KQorICAgIGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENT
SURMX0ZMQUdfQ1JFQVRFLCAwLCAwLCB3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSkpKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRh
KCkpKTsKKworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgp
KSkpOwogICAgIFN0cmluZyBkaXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVy
KSk7CiAKICAgICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5
LCAiQXBwbGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwpAQCAtMzk3LDcgKzM5NCw3IEBA
IHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nJik+JiBhY3Rpb24pCiAKICAgICAgICAgQVNTRVJUKHdjc2xlbih0ZW1wRmls
ZSkgPT0gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wRmlsZSkgLSAxKTsKIAotICAgICAgICBwcm9wb3Nl
ZFBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3Ry
aW5nKHRlbXBQYXRoKSwgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBGaWxlKSk7Cisg
ICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmcodGVt
cFBhdGgpLCBTdHJpbmcodGVtcEZpbGUpKTsKICAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2Vk
UGF0aCkpOwpAQCAtNDExLDcgKzQwOCw3IEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIAogICAgIFN0cmluZyBwcm9w
b3NlZFBhdGggPSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZoYW5kbGVdKGNvbnN0IFN0cmluZyYg
cHJvcG9zZWRQYXRoKSB7CiAgICAgICAgIC8vIHVzZSBDUkVBVEVfTkVXIHRvIGF2b2lkIG92ZXJ3
cml0aW5nIGFuIGV4aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCi0gICAgICAgIGhhbmRs
ZSA9IDo6Q3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHByb3Bvc2VkUGF0
aCkuZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVX
LCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZp
bGVXKHdjaGFyRnJvbShwcm9wb3NlZFBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVX
LCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwogCiAgICAgICAgIHJldHVybiBpc0hhbmRsZVZh
bGlkKGhhbmRsZSkgfHwgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFEWV9FWElTVFM7CiAg
ICAgfSk7CkBAIC00NDIsNyArNDM5LDcgQEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgfQogCiAgICAgU3RyaW5n
IGRlc3RpbmF0aW9uID0gcGF0aDsKLSAgICByZXR1cm4gQ3JlYXRlRmlsZShzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVzaXJlZEFjY2Vzcywgc2hhcmVN
b2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwor
ICAgIHJldHVybiBDcmVhdGVGaWxlKHdjaGFyRnJvbShkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIGRlc2lyZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwg
Y3JlYXRpb25EaXNwb3NpdGlvbiwgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKIH0KIAogdm9p
ZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCkBAIC01MDEsNyArNDk4LDcg
QEAgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQogCiBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKLSAgICByZXR1cm4gISE6OkNvcHlG
aWxlKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzb3VyY2UpLmRhdGEoKSwgc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIFRSVUUpOworICAgIHJldHVy
biAhITo6Q29weUZpbGUod2NoYXJGcm9tKHNvdXJjZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLmRhdGEoKSksIHdjaGFyRnJvbShkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSksIFRSVUUpOwogfQogCiBTdHJpbmcgbG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCkKQEAgLTU3Miw3ICs1NjksNyBAQCBib29sIGRlbGV0ZU5vbkVt
cHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKICAgICBTSEZJTEVPUFNU
UlVDVCBkZWxldGVPcGVyYXRpb24gPSB7CiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgIEZPX0RF
TEVURSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgp
LmRhdGEoKSwKKyAgICAgICAgd2NoYXJGcm9tKGRpcmVjdG9yeVBhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpLAogICAgICAgICBMIiIsCiAgICAgICAgIEZPRl9OT0NP
TkZJUk1BVElPTiB8IEZPRl9OT0VSUk9SVUkgfCBGT0ZfU0lMRU5ULAogICAgICAgICBmYWxzZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCmluZGV4IDMwOWNhNjYyN2VkOGFmYjMwODY3MzE1
ODY0ZmY4YzNlNjIwZGFkNTEuLmZjMWZjNTI3NmVkYzE5NjNhYjdmNDBhMTEwZWQzOGI1MGY0OGE2
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDQsNyArNDUsNyBAQCBzdGF0aWMgU3Ry
aW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUsIGNvbnN0IFN0cmluZyYgZmFsbGJhY2sp
CiAgICAgICAgIHJldHVybiBmYWxsYmFjazsKICAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsKICAg
ICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2NhbGVD
aGFycywgbG9jYWxlTmFtZUJ1Zik7Ci0gICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZvKGxh
bmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOworICAgIGxvY2Fs
ZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIHdjaGFyRnJvbShsb2Nh
bGVOYW1lQnVmKSwgbG9jYWxlQ2hhcnMpOwogICAgIGlmICghbG9jYWxlQ2hhcnMpCiAgICAgICAg
IHJldHVybiBmYWxsYmFjazsKICAgICBpZiAobG9jYWxlTmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vUGF0aFdhbGtlci5jcHAKaW5kZXggYzZkM2Y5NzA2MDQ5Y2IxM2M5ZWY2MzU1ZWJiNjNhNTA3
OTg1MDIyMS4uZTc2NWY5NzRlN2ZlYTMzYzAyNzg3Y2UxMmQ1NmRhZWEzOTllNGMwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3dpbi9QYXRoV2Fsa2VyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
IFBhdGhXYWxrZXI6OlBhdGhXYWxrZXIoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0
cmluZyYgcGF0dGVybikKIHsKICAgICBTdHJpbmcgcGF0aCA9IGRpcmVjdG9yeSArICJcXCIgKyBw
YXR0ZXJuOwotICAgIG1faGFuZGxlID0gOjpGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmbV9kYXRhKTsKKyAgICBtX2hhbmRsZSA9IDo6Rmlu
ZEZpcnN0RmlsZVcod2NoYXJGcm9tKHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpLCAmbV9kYXRhKTsKIH0KIAogUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcAppbmRleCAwNzk0ODgxMzY3ZTAyMjE0NThhMGU3YjBhYzQzZDY3NDQ2ODlhNDUwLi5kMTRm
MmQ1ZTQ3M2E3YTA3MzVjNjM2MmZjNjBiNTNhOTc4OTFiOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMTEy
LDcgKzExMiw3IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kTGlua2VkRm9udHMoV0NIQVIq
IGxpbmtlZEZvbnRzLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvCiAgICAgICAgIHVuc2lnbmVkIGog
PSBpOwogICAgICAgICB3aGlsZSAoaiA8IGxlbmd0aCAmJiBsaW5rZWRGb250c1tqXSkKICAgICAg
ICAgICAgIGorKzsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQod2NoYXJUb1N0cmluZyhsaW5rZWRG
b250cyArIGksIGogLSBpKSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKFN0cmluZyhsaW5rZWRG
b250cyArIGksIGogLSBpKSk7CiAgICAgICAgIGkgPSBqICsgMTsKICAgICB9CiB9CkBAIC0xMzEs
MTQgKzEzMSwxNCBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4qIGdldExpbmtlZEZvbnRz
KFN0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgRFdPUkQgbGlu
a2VkRm9udHNCdWZmZXJTaXplID0gMDsKLSAgICBpZiAoOjpSZWdRdWVyeVZhbHVlRXgoZm9udExp
bmtLZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmYW1pbHkpLmRhdGEoKSwgMCwgbnVs
bHB0ciwgbnVsbHB0ciwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgPT0gRVJST1JfRklMRV9OT1Rf
Rk9VTkQpIHsKKyAgICBpZiAoOjpSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIHdjaGFyRnJv
bShmYW1pbHkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCBudWxs
cHRyLCBudWxscHRyLCAmbGlua2VkRm9udHNCdWZmZXJTaXplKSA9PSBFUlJPUl9GSUxFX05PVF9G
T1VORCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIlRoZSBmb250IGxpbmsga2V5ICVzIGRvZXMg
bm90IGV4aXN0IGluIHRoZSByZWdpc3RyeS4iLCBmYW1pbHkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciB1
bnNpZ25lZCBJbml0aWFsQnVmZmVyU2l6ZSB7IDI1NiAvIHNpemVvZihXQ0hBUikgfTsKICAgICBW
ZWN0b3I8V0NIQVIsIEluaXRpYWxCdWZmZXJTaXplPiBsaW5rZWRGb250cyhyb3VuZFVwVG9NdWx0
aXBsZU9mPHNpemVvZihXQ0hBUik+KGxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgLyBzaXplb2YoV0NI
QVIpKTsKLSAgICBpZiAoOjpSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihmYW1pbHkpLmRhdGEoKSwgMCwgbnVsbHB0ciwgcmVpbnRlcnByZXRf
Y2FzdDxCWVRFKj4obGlua2VkRm9udHMuZGF0YSgpKSwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkg
PT0gRVJST1JfU1VDQ0VTUykgeworICAgIGlmICg6OlJlZ1F1ZXJ5VmFsdWVFeChmb250TGlua0tl
eSwgd2NoYXJGcm9tKGZhbWlseS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSksIDAsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KGxpbmtlZEZvbnRzLmRhdGEo
KSksICZsaW5rZWRGb250c0J1ZmZlclNpemUpID09IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gbGlua2VkRm9udHNCdWZmZXJTaXplIC8gc2l6ZW9mKFdDSEFSKTsK
ICAgICAgICAgYXBwZW5kTGlua2VkRm9udHMobGlua2VkRm9udHMuZGF0YSgpLCBsZW5ndGgsIHJl
c3VsdCk7CiAgICAgfQpAQCAtMjg1LDcgKzI4NSw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6
OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2Ny
CiAgICAgICAgIFNlbGVjdE9iamVjdChoZGMsIGhmb250KTsKICAgICAgICAgV0NIQVIgbmFtZVtM
Rl9GQUNFU0laRV07CiAgICAgICAgIEdldFRleHRGYWNlKGhkYywgTEZfRkFDRVNJWkUsIG5hbWUp
OwotICAgICAgICBmYW1pbHlOYW1lID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG5hbWUp
OworICAgICAgICBmYW1pbHlOYW1lID0gU3RyaW5nKG5hbWUpOwogCiAgICAgICAgIGlmIChjb250
YWluc0NoYXJhY3RlciB8fCBjdXJyZW50Rm9udENvbnRhaW5zQ2hhcmFjdGVyKGhkYywgY2hhcmFj
dGVyKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxGb250
PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyCiAKICAgICAgICAgTE9HRk9OVCBsb2dGb250OwogICAgICAgICBsb2dGb250
LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKLSAgICAgICAgU3RyaW5nVmlldyhsaW5rZWRG
b250cy0+YXQobGlua2VkRm9udEluZGV4KSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQobG9n
Rm9udC5sZkZhY2VOYW1lKTsKKyAgICAgICAgU3RyaW5nVmlldyhsaW5rZWRGb250cy0+YXQobGlu
a2VkRm9udEluZGV4KSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGxvZ0Zv
bnQubGZGYWNlTmFtZSkpOwogICAgICAgICBsb2dGb250LmxmRmFjZU5hbWVbbGlua2VkRm9udHMt
PmF0KGxpbmtlZEZvbnRJbmRleCkubGVuZ3RoKCldID0gMDsKICAgICAgICAgRW51bUZvbnRGYW1p
bGllc0V4KGhkYywgJmxvZ0ZvbnQsIGxpbmtlZEZvbnRFbnVtUHJvYywgcmVpbnRlcnByZXRfY2Fz
dDxMUEFSQU0+KCZoZm9udCksIDApOwogICAgICAgICBsaW5rZWRGb250SW5kZXgrKzsKQEAgLTMz
MCw3ICszMzAsNyBAQCBWZWN0b3I8U3RyaW5nPiBGb250Q2FjaGU6OnN5c3RlbUZvbnRGYW1pbGll
cygpCiAKIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25BbmRMb2dG
b250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBMT0dGT05U
JiBmb250LCBBdG9taWNTdHJpbmcmIG91dEZvbnRGYW1pbHlOYW1lKQogewotICAgIEF0b21pY1N0
cmluZyBmYW1pbHlOYW1lID0gd2NoYXJUb1N0cmluZyhmb250LmxmRmFjZU5hbWUsIHdjc25sZW4o
Zm9udC5sZkZhY2VOYW1lLCBMRl9GQUNFU0laRSkpOworICAgIEF0b21pY1N0cmluZyBmYW1pbHlO
YW1lKHVjaGFyRnJvbShmb250LmxmRmFjZU5hbWUpLCB3Y3NubGVuKGZvbnQubGZGYWNlTmFtZSwg
TEZfRkFDRVNJWkUpKTsKICAgICBSZWZQdHI8Rm9udD4gZm9udERhdGEgPSBmb250Rm9yRmFtaWx5
KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CiAgICAgaWYgKGZvbnREYXRhKQogICAgICAg
ICBvdXRGb250RmFtaWx5TmFtZSA9IGZhbWlseU5hbWU7CkBAIC00ODQsNyArNDg0LDcgQEAgc3Rh
dGljIEdESU9iamVjdDxIRk9OVD4gY3JlYXRlR0RJRm9udChjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseSwgTE9ORyBkZXNpcmVkV2UKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5s
ZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7CiAgICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1p
bHkgPSBTdHJpbmdWaWV3KGZhbWlseSkuc3Vic3RyaW5nKDAsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihMRl9GQUNFU0laRSAtIDEpKTsKLSAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0Q2hhcmFjdGVyc1dp
dGhVcGNvbnZlcnQobG9nRm9udC5sZkZhY2VOYW1lKTsKKyAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGxvZ0ZvbnQubGZGYWNlTmFtZSkpOwog
ICAgIGxvZ0ZvbnQubGZGYWNlTmFtZVt0cnVuY2F0ZWRGYW1pbHkubGVuZ3RoKCldID0gMDsKICAg
ICBsb2dGb250LmxmUGl0Y2hBbmRGYW1pbHkgPSAwOwogCkBAIC01OTgsNyArNTk4LDcgQEAgVmVj
dG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IEZvbnRDYWNoZTo6Z2V0Rm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllc0luRmFtaWwKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5s
ZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7CiAgICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1p
bHkgPSBTdHJpbmdWaWV3KGZhbWlseU5hbWUpLnN1YnN0cmluZygwLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7Ci0gICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CisgICAgdHJ1bmNhdGVkRmFtaWx5
LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250LmxmRmFjZU5hbWUp
KTsKICAgICBsb2dGb250LmxmRmFjZU5hbWVbdHJ1bmNhdGVkRmFtaWx5Lmxlbmd0aCgpXSA9IDA7
CiAgICAgbG9nRm9udC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCBhNTdlNjliMmE3ZGE2ZTYyNTAyMWZjMmU4MTg2MDRh
OGIzNDU4OGJiLi5hOTY5MmIzMWE1MzQzZDExZDQ5NTU4Njg3ZDQ0MzdlZmMwMzY5YzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtNDcsNyArNDcsNyBAQCBG
b250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJgogCiAgICAgTE9HRk9OVCBsb2dGb250OwogICAgIG1lbXNl
dCgmbG9nRm9udCwgMCwgc2l6ZW9mKExPR0ZPTlQpKTsKLSAgICB3Y3NuY3B5KGxvZ0ZvbnQubGZG
YWNlTmFtZSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fbmFtZSkuZGF0YSgpLCBMRl9G
QUNFU0laRSAtIDEpOworICAgIHdjc25jcHkobG9nRm9udC5sZkZhY2VOYW1lLCB3Y2hhckZyb20o
bV9uYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgTEZfRkFDRVNJ
WkUgLSAxKTsKIAogICAgIGxvZ0ZvbnQubGZIZWlnaHQgPSAtc2l6ZTsKICAgICBpZiAocmVuZGVy
aW5nTW9kZSA9PSBGb250UmVuZGVyaW5nTW9kZTo6Tm9ybWFsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVO
b2RlQ2Fpcm9XaW4uY3BwCmluZGV4IDRhNTllMWJiYmZhMjEyMzVlYjBkZjY3YmYzMDc0YTczMTYz
NzUzNmMuLjM4Y2FhOGI5ZDliMmNkYjUyMWZiNTNjOTdlZGQ4ZDYwNDVjMjEyOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9k
ZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJIV25kREMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw3ICs1
MCw3IEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZl
ckxlbmd0aCkKICAgICBTZWxlY3RPYmplY3QoZGMsIGZvbnQucGxhdGZvcm1EYXRhKCkuaGZvbnQo
KSk7CiAKICAgICBXT1JEIGxvY2FsR2x5cGhCdWZmZXJbR2x5cGhQYWdlOjpzaXplICogMl07Ci0g
ICAgRFdPUkQgcmVzdWx0ID0gR2V0R2x5cGhJbmRpY2VzKGRjLCBidWZmZXIsIGJ1ZmZlckxlbmd0
aCwgbG9jYWxHbHlwaEJ1ZmZlciwgR0dJX01BUktfTk9ORVhJU1RJTkdfR0xZUEhTKTsKKyAgICBE
V09SRCByZXN1bHQgPSBHZXRHbHlwaEluZGljZXMoZGMsIHdjaGFyRnJvbShidWZmZXIpLCBidWZm
ZXJMZW5ndGgsIGxvY2FsR2x5cGhCdWZmZXIsIEdHSV9NQVJLX05PTkVYSVNUSU5HX0dMWVBIUyk7
CiAgICAgYm9vbCBzdWNjZXNzID0gcmVzdWx0ICE9IEdESV9FUlJPUiAmJiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocmVzdWx0KSA9PSBidWZmZXJMZW5ndGg7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdseXBoUGFnZTo6c2l6ZTsgaSsrKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKaW5k
ZXggNzk5ZTM0NzQwMzk0MDYzNTEwZTk1NGI2YWYzMDk5OGU3ZDI1ZTJhZC4uNDQyZGM0OGVmNWJh
YWUzYWUzNTExYmFmZTc1Y2ZmNzAwMzhiM2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWZQdHI8
SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMpCiAgICAgICAgIG1lbXNldCgmc2ZpLCAwLCBzaXplb2Yoc2ZpKSk7CiAKICAgICAgICAg
U3RyaW5nIHRtcEZpbGVuYW1lID0gZmlsZW5hbWVzWzBdOwotICAgICAgICBpZiAoIVNIR2V0Rmls
ZUluZm8oc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHRtcEZpbGVuYW1lKS5kYXRhKCksIDAs
ICZzZmksIHNpemVvZihzZmkpLCBTSEdGSV9JQ09OIHwgU0hHRklfU0hFTExJQ09OU0laRSB8IFNI
R0ZJX1NNQUxMSUNPTikpCisgICAgICAgIGlmICghU0hHZXRGaWxlSW5mbyh3Y2hhckZyb20odG1w
RmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCAmc2Zp
LCBzaXplb2Yoc2ZpKSwgU0hHRklfSUNPTiB8IFNIR0ZJX1NIRUxMSUNPTlNJWkUgfCBTSEdGSV9T
TUFMTElDT04pKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJY29uKHNmaS5oSWNvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCBjODQ4YjYxYjljNThkOGYyOWYxZWJiMzA5NmJjYTEx
NzJkZTFiMzI3Li5hMjM2YTgzYzZiZTAyMGYxY2IwZWQxYzdkMzI1NjRmMDg5MmFlYmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtMTQy
LDcgKzE0Miw3IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgbWltZVR5cGVDYWNoZSgpCiAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKICAg
ICAgICAgQ0FMUFdTVFIgbWltZVR5cGVBcnJheSA9IHByb3BWYXJNaW1lVHlwZUFycmF5LmNhbHB3
c3RyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZVR5cGVBcnJheS5jRWxl
bXM7IGkrKykKLSAgICAgICAgICAgIGNhY2hlZFR5cGVzLmdldCgpLmFkZChudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pKTsKKyAgICAgICAgICAgIGNh
Y2hlZFR5cGVzLmdldCgpLmFkZChTdHJpbmcobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pKTsKICAg
ICB9CiAKICAgICBQcm9wVmFyaWFudENsZWFyKCZwcm9wVmFyTWltZVR5cGVBcnJheSk7CkBAIC00
NzAsMTEgKzQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
c3RhcnRDcmVhdGVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIHVybAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBDT01QdHI8SVVua25vd24+IGNhbmNlbENvb2tpZTsKLSAgICBWZWN0b3I8
d2NoYXJfdD4gdXJsU291cmNlID0gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHVybCk7Cisg
ICAgVmVjdG9yPFVDaGFyPiB1cmxTb3VyY2UgPSB1cmwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKTsKIAogICAgIEFzeW5jQ2FsbGJhY2sqIGNhbGxiYWNrID0gbmV3IEFzeW5jQ2FsbGJh
Y2sodGhpcywgZmFsc2UpOwogCi0gICAgaWYgKEZBSUxFRChtX3NvdXJjZVJlc29sdmVyLT5CZWdp
bkNyZWF0ZU9iamVjdEZyb21VUkwodXJsU291cmNlLmRhdGEoKSwgTUZfUkVTT0xVVElPTl9NRURJ
QVNPVVJDRSwgbnVsbHB0ciwgJmNhbmNlbENvb2tpZSwgY2FsbGJhY2ssIG51bGxwdHIpKSkKKyAg
ICBpZiAoRkFJTEVEKG1fc291cmNlUmVzb2x2ZXItPkJlZ2luQ3JlYXRlT2JqZWN0RnJvbVVSTCh3
Y2hhckZyb20odXJsU291cmNlLmRhdGEoKSksIE1GX1JFU09MVVRJT05fTUVESUFTT1VSQ0UsIG51
bGxwdHIsICZjYW5jZWxDb29raWUsIGNhbGxiYWNrLCBudWxscHRyKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCmluZGV4
IDExMDQ1NDc2ZGI0NjY2NWJlNWViMjI5M2ExODRlMWUwYTJiZjYzNWUuLjQ3NGM0ODYwZmYxMDA0
NDA5OWI2YWYzZjliZmI5YjQwY2Q3ODhkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgi
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgV1RGOjpVbmljb2RlOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVW5pc2NyaWJlQ29udHJv
bGxlcjo6aXRlbWl6ZVNoYXBlQW5kUGxhY2UoY29uc3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBzdHJp
bmdPCiAgICAgbV9pdGVtcy5yZXNpemUoNik7CiAgICAgaW50IG51bUl0ZW1zID0gMDsKICAgICBI
UkVTVUxUIHJjID0gU19PSzsKLSAgICB3aGlsZSAocmMgPSA6OlNjcmlwdEl0ZW1pemUoY3AsIGxl
bmd0aCwgbV9pdGVtcy5zaXplKCkgLSAxLCAmbV9jb250cm9sLCAmbV9zdGF0ZSwgbV9pdGVtcy5k
YXRhKCksICZudW1JdGVtcykgPT0gRV9PVVRPRk1FTU9SWSkgeworICAgIHdoaWxlIChyYyA9IDo6
U2NyaXB0SXRlbWl6ZSh3Y2hhckZyb20oY3ApLCBsZW5ndGgsIG1faXRlbXMuc2l6ZSgpIC0gMSwg
Jm1fY29udHJvbCwgJm1fc3RhdGUsIG1faXRlbXMuZGF0YSgpLCAmbnVtSXRlbXMpID09IEVfT1VU
T0ZNRU1PUlkpIHsKICAgICAgICAgbV9pdGVtcy5yZXNpemUobV9pdGVtcy5zaXplKCkgKiAyKTsK
ICAgICAgICAgcmVzZXRDb250cm9sQW5kU3RhdGUoKTsKICAgICB9CkBAIC00MjgsNyArNDI4LDcg
QEAgYm9vbCBVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZShjb25zdCBVQ2hhciogc3RyLCBpbnQg
bGVuLCBTQ1JJUFRfSVRFTSBpdGVtLCBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ZG8gewotICAgICAgICBzaGFwZVJlc3VsdCA9IFNjcmlwdFNoYXBlKGhkYywgZm9udERhdGEtPnNj
cmlwdENhY2hlKCksIHN0ciwgbGVuLCBnbHlwaHMuc2l6ZSgpLCAmaXRlbS5hLAorICAgICAgICBz
aGFwZVJlc3VsdCA9IFNjcmlwdFNoYXBlKGhkYywgZm9udERhdGEtPnNjcmlwdENhY2hlKCksIHdj
aGFyRnJvbShzdHIpLCBsZW4sIGdseXBocy5zaXplKCksICZpdGVtLmEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzLmRhdGEoKSwgY2x1c3RlcnMuZGF0YSgpLCB2aXN1
YWxBdHRyaWJ1dGVzLmRhdGEoKSwgJmdseXBoQ291bnQpOwogICAgICAgICBpZiAoc2hhcGVSZXN1
bHQgPT0gRV9QRU5ESU5HKSB7CiAgICAgICAgICAgICAvLyBUaGUgc2NyaXB0IGNhY2hlIGlzbid0
IHByaW1lZCB3aXRoIGVub3VnaCBpbmZvIHlldC4gIFdlIG5lZWQgdG8gc2VsZWN0IG91ciBIRk9O
VCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9E
b3dubG9hZEJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKaW5kZXggMzhmZDYwYjkyMGI2MTg0NzlkZTE2OGViYjdm
NGUyOTZkYWVlODU5OC4uZGQ4NTIxM2FhNzg0M2JhZjM5NGYxNTEyZjNiZGQ3N2NlZjA1OTExOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRC
dW5kbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rv
d25sb2FkQnVuZGxlV2luLmNwcApAQCAtNTksOSArNTksOSBAQCBib29sIGFwcGVuZFJlc3VtZURh
dGEoY29uc3QgY2hhciogcmVzdW1lQnl0ZXMsIHVpbnQzMl90IHJlc3VtZUxlbmd0aCwgY29uc3Qg
U3RyaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgU3RyaW5nIG51bGxpZmll
ZFBhdGggPSBidW5kbGVQYXRoOworICAgIGF1dG8gbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGgu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKICAgICBGSUxFKiBidW5kbGUgPSAwOwot
ICAgIGlmIChfd2ZvcGVuX3MoJmJ1bmRsZSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG51
bGxpZmllZFBhdGgpLmRhdGEoKSwgVEVYVCgiYWIiKSkgfHwgIWJ1bmRsZSkgeworICAgIGlmIChf
d2ZvcGVuX3MoJmJ1bmRsZSwgd2NoYXJGcm9tKG51bGxpZmllZFBhdGguZGF0YSgpKSwgVEVYVCgi
YWIiKSkgfHwgIWJ1bmRsZSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGZp
bGUgJXMgdG8gYXBwZW5kIHJlc3VtZSBkYXRhIiwgYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05OCw5ICs5OCw5IEBAIGJvb2wgZXh0
cmFjdFJlc3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8Y2hhcj4mIHJl
c3VtZURhdGEpCiAgICAgfQogCiAgICAgLy8gT3BlbiBhIGhhbmRsZSB0byB0aGUgYnVuZGxlIGZp
bGUKLSAgICBTdHJpbmcgbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGg7CisgICAgYXV0byBudWxs
aWZpZWRQYXRoID0gYnVuZGxlUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwog
ICAgIEZJTEUqIGJ1bmRsZSA9IDA7Ci0gICAgaWYgKF93Zm9wZW5fcygmYnVuZGxlLCBzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIobnVsbGlmaWVkUGF0aCkuZGF0YSgpLCBURVhUKCJyK2IiKSkg
fHwgIWJ1bmRsZSkgeworICAgIGlmIChfd2ZvcGVuX3MoJmJ1bmRsZSwgd2NoYXJGcm9tKG51bGxp
ZmllZFBhdGguZGF0YSgpKSwgVEVYVCgicitiIikpIHx8ICFidW5kbGUpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGdldCByZXN1bWUgZGF0YSIsIGJ1bmRs
ZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKaW5kZXggMTUz
MTVjYTczNWZmMmU3YWI0MzUxNzFlNmMxYmRlNjAzNzMyY2JkZS4uOTUyNDZkNGEyOTQ4MzVlYzg2
MDNiN2U5OTM5NDc3NGM2NWYyMzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBMQ0lEIExDSURG
cm9tTG9jYWxlSW50ZXJuYWwoTENJRCB1c2VyRGVmYXVsdExDSUQsIGNvbnN0IFN0cmluZyYgdXNl
ckRlZmF1CiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZXh0cmFjdExhbmd1YWdl
Q29kZShsb2NhbGUpLCB1c2VyRGVmYXVsdExhbmd1YWdlQ29kZSkpCiAgICAgICAgIHJldHVybiB1
c2VyRGVmYXVsdExDSUQ7Ci0gICAgcmV0dXJuIExvY2FsZU5hbWVUb0xDSUQoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGxvY2FsZSkuZGF0YSgpLCAwKTsKKyAgICByZXR1cm4gTG9jYWxlTmFt
ZVRvTENJRCh3Y2hhckZyb20obG9jYWxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSwgMCk7CiB9CiAKIHN0YXRpYyBMQ0lEIExDSURGcm9tTG9jYWxlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxlKQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxv
Y2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKICAgICBjb25zdCBzaXplX3QgbGFuZ3Vh
Z2VDb2RlQnVmZmVyU2l6ZSA9IDk7CiAgICAgV0NIQVIgbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlW2xh
bmd1YWdlQ29kZUJ1ZmZlclNpemVdOwogICAgIDo6R2V0TG9jYWxlSW5mbyhMT0NBTEVfVVNFUl9E
RUZBVUxULCBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCBsb3dlcmNhc2VMYW5ndWFnZUNvZGUsIGxh
bmd1YWdlQ29kZUJ1ZmZlclNpemUpOwotICAgIFN0cmluZyB1c2VyRGVmYXVsdExhbmd1YWdlQ29k
ZSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhsb3dlcmNhc2VMYW5ndWFnZUNvZGUpOwor
ICAgIFN0cmluZyB1c2VyRGVmYXVsdExhbmd1YWdlQ29kZShsb3dlcmNhc2VMYW5ndWFnZUNvZGUp
OwogCiAgICAgTENJRCBsY2lkID0gTENJREZyb21Mb2NhbGVJbnRlcm5hbChMT0NBTEVfVVNFUl9E
RUZBVUxULCB1c2VyRGVmYXVsdExhbmd1YWdlQ29kZSwgU3RyaW5nKGxvY2FsZSkpOwogICAgIGlm
ICghbGNpZCkKQEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIExvY2FsZVdpbjo6Z2V0TG9jYWxlSW5m
b1N0cmluZyhMQ1RZUEUgdHlwZSkKICAgICBpZiAoYnVmZmVyU2l6ZVdpdGhOVUwgPD0gMCkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGJ1ZmZlclNp
emVXaXRoTlVMKTsKLSAgICA6OkdldExvY2FsZUluZm8obV9sY2lkLCB0eXBlLCBidWZmZXIuZGF0
YSgpLCBidWZmZXJTaXplV2l0aE5VTCk7CisgICAgOjpHZXRMb2NhbGVJbmZvKG1fbGNpZCwgdHlw
ZSwgd2NoYXJGcm9tKGJ1ZmZlci5kYXRhKCkpLCBidWZmZXJTaXplV2l0aE5VTCk7CiAgICAgYnVm
ZmVyLnNocmluayhidWZmZXJTaXplV2l0aE5VTCAtIDEpOwogICAgIHJldHVybiBTdHJpbmc6OmFk
b3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmlu
Zy5jcHAKaW5kZXggMGY0NmM1ZGNhYjI5YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYy4uMDI3
Y2RkZDMyYTdkNTdhMzA4YjQyYjg4ODNkMmI1YjM5NDEwNjhhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0
cmFzLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KQEAgLTY1LDcgKzY2LDcgQEAgQlN0cmluZzo6QlN0cmluZyhjb25zdCBTdHJpbmcm
IHMpCiAgICAgaWYgKHMuaXNOdWxsKCkpCiAgICAgICAgIG1fYnN0ciA9IDA7CiAgICAgZWxzZQot
ICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbihTdHJpbmdWaWV3KHMpLnVwY29udmVy
dGVkQ2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsKKyAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NT
dHJpbmdMZW4od2NoYXJGcm9tKFN0cmluZ1ZpZXcocykudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkp
LCBzLmxlbmd0aCgpKTsKIH0KIAogQlN0cmluZzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkKQEAg
LTczLDcgKzc0LDcgQEAgQlN0cmluZzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICBpZiAo
dXJsLmlzTnVsbCgpKQogICAgICAgICBtX2JzdHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAgbV9i
c3RyID0gU3lzQWxsb2NTdHJpbmdMZW4oU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkpLnVwY29udmVy
dGVkQ2hhcmFjdGVycygpLCB1cmwuc3RyaW5nKCkubGVuZ3RoKCkpOworICAgICAgICBtX2JzdHIg
PSBTeXNBbGxvY1N0cmluZ0xlbih3Y2hhckZyb20oU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpKSwgdXJsLnN0cmluZygpLmxlbmd0aCgpKTsKIH0KIAogQlN0
cmluZzo6QlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHMpCkBAIC04MSw3ICs4Miw3IEBAIEJT
dHJpbmc6OkJTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzKQogICAgIGlmIChzLmlzTnVsbCgp
KQogICAgICAgICBtX2JzdHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lzQWxs
b2NTdHJpbmdMZW4oU3RyaW5nVmlldyhzLnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KSwgcy5sZW5ndGgoKSk7CisgICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHdjaGFy
RnJvbShTdHJpbmdWaWV3KHMuc3RyaW5nKCkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgcy5s
ZW5ndGgoKSk7CiB9CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IDBlNDA4MGI4NTY3NmEw
YTQ2MWJiZjk2YmExNzMyMzVmNWI3ZGI2M2MuLmEzM2U4MjdjOWQ4ZDAxOTA0OWU1Zjk4ODI1NGNh
ODZiYTAwNzk1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIGJvb2wg
Z2V0V2ViTG9jRGF0YShjb25zdCBEcmFnRGF0YU1hcCogZGF0YU9iamVjdCwgU3RyaW5nJiB1cmws
IFN0cmluZyogdGkKICAgICBpZiAoIWRhdGFPYmplY3QtPmNvbnRhaW5zKGNmSERyb3BGb3JtYXQo
KS0+Y2ZGb3JtYXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3NjcHkoZmlsZW5h
bWUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkYXRhT2JqZWN0LT5nZXQoY2ZIRHJvcEZv
cm1hdCgpLT5jZkZvcm1hdClbMF0pLmRhdGEoKSk7CisgICAgd2NzY3B5KGZpbGVuYW1lLCB3Y2hh
ckZyb20oZGF0YU9iamVjdC0+Z2V0KGNmSERyb3BGb3JtYXQoKS0+Y2ZGb3JtYXQpWzBdLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiAgICAgaWYgKF93Y3NpY21wKFBh
dGhGaW5kRXh0ZW5zaW9uVyhmaWxlbmFtZSksIEwiLnVybCIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7ICAgIAogCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBzdGF0aWMgYm9vbCBnZXRXZWJMb2NEYXRh
KGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhT2JqZWN0LCBTdHJpbmcmIHVybCwgU3RyaW5nKiB0aQog
CiAgICAgaWYgKHRpdGxlKSB7CiAgICAgICAgIFBhdGhSZW1vdmVFeHRlbnNpb24oZmlsZW5hbWUp
OwotICAgICAgICAqdGl0bGUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoZmlsZW5hbWUp
OworICAgICAgICAqdGl0bGUgPSBTdHJpbmcoZmlsZW5hbWUpOwogICAgIH0KICAgICAKLSAgICB1
cmwgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodXJsQnVmZmVyKTsKKyAgICB1cmwgPSBT
dHJpbmcodXJsQnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTg1LDcgKzE4NSw3IEBAIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIAogICAgIGlmIChjYkRhdGEpIHsKICAgICAg
ICAgUFdTVFIgYnVmZmVyID0gc3RhdGljX2Nhc3Q8UFdTVFI+KEdsb2JhbExvY2soY2JEYXRhKSk7
Ci0gICAgICAgIF9zbndwcmludGYoYnVmZmVyLCBzaXplLCBMIiVzXG4lcyIsIHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihtdXRhYmxlVVJMKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihtdXRhYmxlVGl0bGUpLmRhdGEoKSk7CisgICAgICAgIF9zbndwcmludGYoYnVmZmVy
LCBzaXplLCBMIiVzXG4lcyIsIHdjaGFyRnJvbShtdXRhYmxlVVJMLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgd2NoYXJGcm9tKG11dGFibGVUaXRsZS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogICAgICAgICBHbG9iYWxVbmxvY2soY2JE
YXRhKTsKICAgICB9CiAgICAgcmV0dXJuIGNiRGF0YTsKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lk
IGdldEZpbGVEZXNjcmlwdG9yRGF0YShJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgaW50JiBzaXpl
LCBTdHJpbmcmIHBhdGhuYW1lKQogCiAgICAgRklMRUdST1VQREVTQ1JJUFRPUiogZmdkID0gc3Rh
dGljX2Nhc3Q8RklMRUdST1VQREVTQ1JJUFRPUio+KEdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCkp
OwogICAgIHNpemUgPSBmZ2QtPmZnZFswXS5uRmlsZVNpemVMb3c7Ci0gICAgcGF0aG5hbWUgPSBu
dWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKTsKKyAgICBw
YXRobmFtZSA9IFN0cmluZyhmZ2QtPmZnZFswXS5jRmlsZU5hbWUpOwogCiAgICAgR2xvYmFsVW5s
b2NrKHN0b3JlLmhHbG9iYWwpOwogICAgIDo6UmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwpAQCAt
NTI1LDkgKzUyNSwxMCBAQCBTdHJpbmcgZ2V0VVJMKGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhLCBE
cmFnRGF0YTo6RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYQogICAgIGlmICghZ2V0RGF0
YU1hcEl0ZW0oZGF0YSwgZmlsZW5hbWVXRm9ybWF0KCksIHN0cmluZ0RhdGEpKQogICAgICAgICBn
ZXREYXRhTWFwSXRlbShkYXRhLCBmaWxlbmFtZUZvcm1hdCgpLCBzdHJpbmdEYXRhKTsKIAotICAg
IGlmIChzdHJpbmdEYXRhLmlzRW1wdHkoKSB8fCAoIVBhdGhGaWxlRXhpc3RzKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihzdHJpbmdEYXRhKS5kYXRhKCkpICYmICFQYXRoSXNVTkMoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKHN0cmluZ0RhdGEpLmRhdGEoKSkpKQorICAgIGF1dG8gd2No
YXJEYXRhID0gd2NoYXJGcm9tKHN0cmluZ0RhdGEuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpOworICAgIGlmIChzdHJpbmdEYXRhLmlzRW1wdHkoKSB8fCAoIVBhdGhGaWxl
RXhpc3RzKHdjaGFyRGF0YSkgJiYgIVBhdGhJc1VOQyh3Y2hhckRhdGEpKSkKICAgICAgICAgcmV0
dXJuIHVybDsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQsIChj
b25zdCBVbmlDaGFyICopc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN0cmluZ0RhdGEpLmRh
dGEoKSwgd2NzbGVuKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdHJpbmdEYXRhKS5kYXRh
KCkpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVW5pQ2hhciAqKXdjaGFyRGF0YSwgd2NzbGVuKHdjaGFyRGF0YSkpKTsKICAgICBpZiAodXJs
RnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkgJiYgdGl0bGUpCiAgICAgICAgICp0
aXRsZSA9IHVybDsKICNlbmRpZgpAQCAtNzQyLDcgKzc0Myw3IEBAIHZvaWQgZ2V0Q0ZEYXRhKElE
YXRhT2JqZWN0KiBkYXRhLCBGT1JNQVRFVEMqIGZvcm1hdCwgVmVjdG9yPFN0cmluZz4mIGRhdGFT
dHJpbmdzCiAgICAgZm9yIChVSU5UIGkgPSAwOyBpIDwgZmlsZUNvdW50OyBpKyspIHsKICAgICAg
ICAgaWYgKCFEcmFnUXVlcnlGaWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIFdURl9BUlJBWV9MRU5H
VEgoZmlsZW5hbWUpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBkYXRhU3RyaW5n
cy5hcHBlbmQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKSk7CisgICAgICAg
IGRhdGFTdHJpbmdzLmFwcGVuZChTdHJpbmcoZmlsZW5hbWUpKTsKICAgICB9CiAKICAgICBHbG9i
YWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CkBAIC03OTcsNyArNzk4LDcgQEAgdm9pZCBzZXRDRkRh
dGEoSURhdGFPYmplY3QqIGRhdGEsIEZPUk1BVEVUQyogZm9ybWF0LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZGF0YVMKICAgICBkcm9wRmlsZXMtPnBGaWxlcyA9IHNpemVvZihEUk9QRklMRVMpOwog
ICAgIGRyb3BGaWxlcy0+ZldpZGUgPSBUUlVFOwogICAgIFN0cmluZyBmaWxlbmFtZSA9IGRhdGFT
dHJpbmdzLmZpcnN0KCk7Ci0gICAgd2NzY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8TFBXU1RSPihkcm9w
RmlsZXMgKyAxKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkp
OworICAgIHdjc2NweShyZWludGVycHJldF9jYXN0PExQV1NUUj4oZHJvcEZpbGVzICsgMSksIHdj
aGFyRnJvbShmaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkp
OwogICAgIEdsb2JhbFVubG9jayhtZWRpdW0uaEdsb2JhbCk7CiAgICAgZGF0YS0+U2V0RGF0YShm
b3JtYXQsICZtZWRpdW0sIEZBTFNFKTsKICAgICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggNDc5
ZTBjYWFmNzM5MDE5Nzg5ODQwYjBmODc2ZjZkNGY3OTY0YjNlZS4uMTgzZGE1NzZmMzY0ZDkxZWQy
YjYxMTUxNzdmODFhZjhmMzQxZDAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0RhdGFXaW4uY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTU4LDcgKzE1Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IERyYWdE
YXRhOjphc0ZpbGVuYW1lcygpIGNvbnN0CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1GaWxlczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9w
LCBpLCBmaWxlbmFtZSwgV1RGX0FSUkFZX0xFTkdUSChmaWxlbmFtZSkpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChudWxsVGVybWluYXRlZFdD
aGFyVG9TdHJpbmcoZmlsZW5hbWUpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KGZpbGVuYW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGcmVlIHVwIG1lbW9yeSBmcm9t
IGRyYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5k
ZXggMTI1NTQ4MGI0MGEyNmEyNDE4ZmEyM2E2YjEwZGU2ODY0NGI5ZGU2MS4uZTFiYzFiN2MxNzNi
NjQ3NmUwZjgwZjU3NWE4NzA1YTkxMGRjZDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTc0LDggKzc0LDggQEAgRHJhZ0ltYWdlUmVmIGRp
c3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0KQogRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUpCiB7CiAgICAgU0hGSUxFSU5GTyBzaGZpIHsgfTsKLSAgICBTdHJp
bmcgZm5hbWUgPSBmaWxlbmFtZTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0RmlsZUluZm8oc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGZuYW1lKS5kYXRhKCksIEZJTEVfQVRUUklCVVRFX05PUk1B
TCwgJnNoZmksIHNpemVvZihzaGZpKSwgU0hHRklfSUNPTiB8IFNIR0ZJX1VTRUZJTEVBVFRSSUJV
VEVTKSkpCisgICAgYXV0byBmbmFtZSA9IGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCk7CisgICAgaWYgKEZBSUxFRChTSEdldEZpbGVJbmZvKHdjaGFyRnJvbShmbmFtZS5k
YXRhKCkpLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsICZzaGZpLCBzaXplb2Yoc2hmaSksIFNIR0ZJ
X0lDT04gfCBTSEdGSV9VU0VGSUxFQVRUUklCVVRFUykpKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIElDT05JTkZPIGljb25JbmZvOwpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBGb250Q2Fz
Y2FkZSBkcmFnTGFiZWxGb250KGludCBzaXplLCBib29sIGJvbGQsIEZvbnRSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluCiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwogICAg
IGRlc2NyaXB0aW9uLnNldFdlaWdodChib2xkID8gYm9sZFdlaWdodFZhbHVlKCkgOiBub3JtYWxX
ZWlnaHRWYWx1ZSgpKTsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkobnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKG1ldHJpY3MubGZTbUNhcHRpb25Gb250LmxmRmFjZU5hbWUpKTsKKyAg
ICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoU3RyaW5nKG1ldHJpY3MubGZTbUNhcHRpb25Gb250
LmxmRmFjZU5hbWUpKTsKICAgICBkZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKChmbG9hdClz
aXplKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoKGZsb2F0KXNpemUpOwogICAg
IGRlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXgg
YjM1MGYxY2M3MTJlYThjMDM1ZTJjMmQyZDA2NTAzNmY5ZDNlNTBlMy4uMDEyNTkyMjU2Yjk2YmFh
ZTJhMDA2OGFkNTg0ZmJjY2I2OGYwZThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBAIHN0
YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24p
CiAgICAgRFdPUkQgY29udGVudFR5cGVTdHJMZW4gPSBzaXplb2YoY29udGVudFR5cGVTdHIpOwog
ICAgIERXT1JEIGtleVR5cGU7CiAKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFs
dWUoSEtFWV9DTEFTU0VTX1JPT1QsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHQpLmRh
dGEoKSwgTCJDb250ZW50IFR5cGUiLCAma2V5VHlwZSwgY29udGVudFR5cGVTdHIsICZjb250ZW50
VHlwZVN0ckxlbik7CisgICAgSFJFU1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlf
Q0xBU1NFU19ST09ULCB3Y2hhckZyb20oZXh0LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpKSwgTCJDb250ZW50IFR5cGUiLCAma2V5VHlwZSwgY29udGVudFR5cGVTdHIsICZj
b250ZW50VHlwZVN0ckxlbik7CiAKICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYg
a2V5VHlwZSA9PSBSRUdfU1opCi0gICAgICAgIHJldHVybiB3Y2hhclRvU3RyaW5nKGNvbnRlbnRU
eXBlU3RyLCBjb250ZW50VHlwZVN0ckxlbiAvIHNpemVvZihjb250ZW50VHlwZVN0clswXSkgLSAx
KTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhjb250ZW50VHlwZVN0ciwgY29udGVudFR5cGVTdHJM
ZW4gLyBzaXplb2YoY29udGVudFR5cGVTdHJbMF0pIC0gMSk7CiAKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CkBAIC01NiwxMCArNTYsMTAgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBEV09S
RCBleHRTdHJMZW4gPSBzaXplb2YoZXh0U3RyKTsKICAgICBEV09SRCBrZXlUeXBlOwogCi0gICAg
SFJFU1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfQ0xBU1NFU19ST09ULCBzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCBMIkV4dGVuc2lvbiIsICZrZXlU
eXBlLCBleHRTdHIsICZleHRTdHJMZW4pOworICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0UmVnaXN0
cnlWYWx1ZShIS0VZX0NMQVNTRVNfUk9PVCwgd2NoYXJGcm9tKHBhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBMIkV4dGVuc2lvbiIsICZrZXlUeXBlLCBleHRTdHIs
ICZleHRTdHJMZW4pOwogCiAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIGtleVR5
cGUgPT0gUkVHX1NaKQotICAgICAgICByZXR1cm4gd2NoYXJUb1N0cmluZyhleHRTdHIgKyAxLCBl
eHRTdHJMZW4gLyBzaXplb2YoZXh0U3RyWzBdKSAtIDIpOworICAgICAgICByZXR1cm4gU3RyaW5n
KGV4dFN0ciArIDEsIGV4dFN0ckxlbiAvIHNpemVvZihleHRTdHJbMF0pIC0gMik7CiAKICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKaW5kZXggYTVmZDkzMGFlOTFiOTE3YjljYmEwODY0YmJhNTUzNGVjYjJjMWUx
My4uOTM2ZGNmNTE3YTE2OGMzMDM3MTEyOGQ0OTMxZWU0OWIyNGJhZWMzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzQxLDcgKzM0MSw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyKQog
ICAgICAgICBmb3IgKFVJTlQgaSA9IDA7IGkgPCBmaWxlQ291bnQ7IGkrKykgewogICAgICAgICAg
ICAgaWYgKCFEcmFnUXVlcnlGaWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIFdURl9BUlJBWV9MRU5H
VEgoZmlsZW5hbWUpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJl
YWRlci5yZWFkRmlsZW5hbWUobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKSk7
CisgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKFN0cmluZyhmaWxlbmFtZSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgR2xvYmFsVW5sb2NrKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTU1NSwy
MyArNTU1LDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJz
KFBXU1RSIHBzeiwgc2l6ZV90IGxlbmd0aCkKICAgICBwc3pbd3JpdGVUb10gPSAwOwogfQogCi1z
dGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFVDaGFyKiBleHRlbnNpb24sIGJvb2wgaXNM
aW5rKQorc3RhdGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwg
Ym9vbCBpc0xpbmspCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBmc1BhdGhNYXhMZW5ndGhF
eGNsdWRpbmdOdWxsVGVybWluYXRvciA9IE1BWF9QQVRIIC0gMTsKICAgICBib29sIHVzZWRVUkwg
PSBmYWxzZTsKLSAgICBXQ0hBUiBmc1BhdGhCdWZmZXJbTUFYX1BBVEhdOworICAgIFVDaGFyIGZz
UGF0aEJ1ZmZlcltNQVhfUEFUSF07CiAgICAgZnNQYXRoQnVmZmVyWzBdID0gMDsKLSAgICBpbnQg
ZXh0ZW5zaW9uTGVuID0gZXh0ZW5zaW9uID8gbHN0cmxlbihleHRlbnNpb24pIDogMDsKLSAgICBp
bnQgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uID0gZnNQYXRoTWF4TGVuZ3RoRXhj
bHVkaW5nTnVsbFRlcm1pbmF0b3IgLSBleHRlbnNpb25MZW47CisgICAgaW50IGZzUGF0aE1heExl
bmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiA9IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ051bGxUZXJt
aW5hdG9yIC0gZXh0ZW5zaW9uLmxlbmd0aCgpOwogCiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgc2l6ZV90IGxlbiA9IHN0ZDo6bWluPHNpemVfdD4odGl0bGUubGVuZ3RoKCks
IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbik7CiAgICAgICAgIFN0cmluZ1ZpZXco
dGl0bGUpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0
aEJ1ZmZlcik7CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKLSAgICAgICAgcGF0aFJl
bW92ZUJhZEZTQ2hhcmFjdGVycyhmc1BhdGhCdWZmZXIsIGxlbik7CisgICAgICAgIHBhdGhSZW1v
dmVCYWRGU0NoYXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7CiAgICAgfQog
Ci0gICAgaWYgKCFsc3RybGVuKGZzUGF0aEJ1ZmZlcikpIHsKKyAgICBpZiAoIXdjc2xlbih3Y2hh
ckZyb20oZnNQYXRoQnVmZmVyKSkpIHsKICAgICAgICAgVVJMIGt1cmwoVVJMKCksIHVybCk7CiAg
ICAgICAgIHVzZWRVUkwgPSB0cnVlOwogICAgICAgICAvLyBUaGUgZmlsZW5hbWUgZm9yIGFueSBj
b250ZW50IGJhc2VkIGRyYWcgb3IgZmlsZSB1cmwgc2hvdWxkIGJlIHRoZSBsYXN0IGVsZW1lbnQg
b2YgCkBAIC01ODcsMTggKzU4NiwxOCBAQCBzdGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJv
bVVybE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bAogICAgICAg
ICAgICAgU3RyaW5nVmlldyh1cmwpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIH0KICAgICAgICAgZnNQYXRoQnVmZmVy
W2xlbl0gPSAwOwotICAgICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKGZzUGF0aEJ1ZmZl
ciwgbGVuKTsKKyAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQ
YXRoQnVmZmVyKSwgbGVuKTsKICAgICB9CiAKLSAgICBpZiAoIWV4dGVuc2lvbikKLSAgICAgICAg
cmV0dXJuIFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGZzUGF0aEJ1ZmZlcikpOworICAgIGlm
IChleHRlbnNpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKGZzUGF0aEJ1ZmZl
cik7CiAKICAgICBpZiAoIWlzTGluayAmJiB1c2VkVVJMKSB7Ci0gICAgICAgIFBhdGhSZW5hbWVF
eHRlbnNpb24oZnNQYXRoQnVmZmVyLCBleHRlbnNpb24pOwotICAgICAgICByZXR1cm4gU3RyaW5n
KHN0YXRpY19jYXN0PFVDaGFyKj4oZnNQYXRoQnVmZmVyKSk7CisgICAgICAgIFBhdGhSZW5hbWVF
eHRlbnNpb24od2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIHdjaGFyRnJvbShleHRlbnNpb24uY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKKyAgICAgICAgcmV0dXJuIFN0
cmluZyhmc1BhdGhCdWZmZXIpOwogICAgIH0KIAotICAgIHJldHVybiBtYWtlU3RyaW5nKHN0YXRp
Y19jYXN0PGNvbnN0IFVDaGFyKj4oZnNQYXRoQnVmZmVyKSwgZXh0ZW5zaW9uKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZyhjb25zdF9jYXN0PGNvbnN0IFVDaGFyKj4oZnNQYXRoQnVmZmVyKSwgZXh0
ZW5zaW9uKTsKIH0KIAogLy8gd3JpdGVGaWxlVG9EYXRhT2JqZWN0IHRha2VzIG93bmVyc2hpcCBv
ZiBmaWxlRGVzY3JpcHRvciBhbmQgZmlsZUNvbnRlbnQKQEAgLTY1NSw3ICs2NTQsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBB
U1NFUlQodXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQu
CiAKLSAgICBTdHJpbmcgZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSh1cmws
IHRpdGxlU3RyLCBMIi5VUkwiLCB0cnVlKTsKKyAgICBTdHJpbmcgZnNQYXRoID0gZmlsZXN5c3Rl
bVBhdGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOwogICAgIFN0
cmluZyBjb250ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAi
XHJcbiIpOwogICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAK
QEAgLTY4NCw3ICs2ODMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0
KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBmZ2QtPmZnZFsw
XS5uRmlsZVNpemVMb3cgPSBjb250ZW50Lmxlbmd0aCgpOwogCiAgICAgdW5zaWduZWQgbWF4U2l6
ZSA9IHN0ZDo6bWluPHVuc2lnbmVkPihmc1BhdGgubGVuZ3RoKCksIFdURl9BUlJBWV9MRU5HVEgo
ZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7Ci0gICAgU3RyaW5nVmlldyhmc1BhdGgpLnN1YnN0cmlu
ZygwLCBtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmZ2QtPmZnZFswXS5jRmls
ZU5hbWUpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkp
OwogICAgIEdsb2JhbFVubG9jayh1cmxGaWxlRGVzY3JpcHRvcik7CiAKICAgICBjaGFyKiBmaWxl
Q29udGVudHMgPSBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayh1cmxGaWxlQ29udGVudCkp
OwpAQCAtOTE0LDcgKzkxMyw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmls
ZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iLCAwKTsKLSAgICBmc1BhdGgg
PSBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgcHJlZmVycmVkVGl0bGUsIGV4dGVu
c2lvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZmFsc2UpOworICAg
IGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRs
ZSwgZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsK
ICAgICAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CkBAIC05MjMsNyArOTIyLDcgQEAgc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJgogICAgIH0KIAogICAgIGludCBtYXhTaXplID0gc3RkOjptaW48aW50
Pihmc1BhdGgubGVuZ3RoKCksIFdURl9BUlJBWV9MRU5HVEgoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1l
KSk7Ci0gICAgU3RyaW5nVmlldyhmc1BhdGgpLnN1YnN0cmluZygwLCBtYXhTaXplKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpOworICAgIFN0cmluZ1Zp
ZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZl
cnQodWNoYXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwogICAgIEdsb2JhbFVubG9jayht
ZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKQEAgLTk2MSw4ICs5NjAsNyBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
ZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyB3aW5kb3dzIGRvZXMgbm90IGVuam95IGEgbGVh
ZGluZyBzbGFzaCBvbiBwYXRocwogICAgICAgICBpZiAobG9jYWxQYXRoWzBdID09ICcvJykKICAg
ICAgICAgICAgIGxvY2FsUGF0aCA9IGxvY2FsUGF0aC5zdWJzdHJpbmcoMSk7Ci0gICAgICAgIGF1
dG8gbG9jYWxQYXRoV2lkZSA9IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihsb2NhbFBhdGgp
OwotICAgICAgICBMUENXU1RSIGxvY2FsUGF0aFN0ciA9IGxvY2FsUGF0aFdpZGUuZGF0YSgpOwor
ICAgICAgICBMUENXU1RSIGxvY2FsUGF0aFN0ciA9IHdjaGFyRnJvbShsb2NhbFBhdGguY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOwogICAgICAgICBpZiAobG9jYWxQYXRo
U3RyICYmIHdjc2xlbihsb2NhbFBhdGhTdHIpICsgMSA8IE1BWF9QQVRIKQogICAgICAgICAgICAg
d2NzY3B5X3MoZmlsZVBhdGgsIE1BWF9QQVRILCBsb2NhbFBhdGhTdHIpOwogICAgICAgICBlbHNl
CkBAIC05NzIsNyArOTcwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250
ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgV0NI
QVIgZXh0ZW5zaW9uW01BWF9QQVRIXTsKICAgICAgICAgaWYgKCE6OkdldFRlbXBQYXRoKFdURl9B
UlJBWV9MRU5HVEgodGVtcFBhdGgpLCB0ZW1wUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgaWYgKCE6OlBhdGhBcHBlbmQodGVtcFBhdGgsIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihmaWxlTmFtZSkuZGF0YSgpKSkKKyAgICAgICAgaWYgKCE6OlBhdGhBcHBlbmQodGVt
cFBhdGgsIHdjaGFyRnJvbShmaWxlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIExQQ1dTVFIgZm91bmRF
eHRlbnNpb24gPSA6OlBhdGhGaW5kRXh0ZW5zaW9uKHRlbXBQYXRoKTsKICAgICAgICAgaWYgKGZv
dW5kRXh0ZW5zaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U1NMS2V5R2VuZXJhdG9yV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xL
ZXlHZW5lcmF0b3JXaW4uY3BwCmluZGV4IGZkNjgwNmVmZDkzZjZmNjZiNTgwOTlmYzUwYTgzMTY4
YzY1MjkxNWQuLmIwMGUyNmM5ZWU3NDY4ZjQ1MjY3YjZhNDM4NjA1NjYwNWFmMTA1OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3Bw
CkBAIC02Nyw4ICs2Nyw4IEBAIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlCiAgICAgICAgIFN0cmlu
ZyBsb2NhbENoYWxsZW5nZSA9IGNoYWxsZW5nZTsKIAogICAgICAgICAvLyBXaW5kb3dzIEFQSSB3
b24ndCB3cml0ZSB0byBvdXIgYnVmZmVyLCBhbHRob3VnaCBpdCdzIG5vdCBkZWNsYXJlZCB3aXRo
IGNvbnN0LgotICAgICAgICBhdXRvIGxvY2FsQ2hhbGxlbmdlV2lkZSA9IHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihsb2NhbENoYWxsZW5nZSk7Ci0gICAgICAgIHJlcXVlc3RJbmZvLnB3c3pD
aGFsbGVuZ2VTdHJpbmcgPSBjb25zdF9jYXN0PHdjaGFyX3QqPihsb2NhbENoYWxsZW5nZVdpZGUu
ZGF0YSgpKTsKKyAgICAgICAgYXV0byBsb2NhbENoYWxsZW5nZVdpZGUgPSBsb2NhbENoYWxsZW5n
ZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgICAgICByZXF1ZXN0SW5mby5w
d3N6Q2hhbGxlbmdlU3RyaW5nID0gY29uc3RfY2FzdDx3Y2hhcl90Kj4od2NoYXJGcm9tKGxvY2Fs
Q2hhbGxlbmdlV2lkZS5kYXRhKCkpKTsKIAogICAgICAgICBDUllQVF9BTEdPUklUSE1fSURFTlRJ
RklFUiBzaWduQWxnbyB7IH07CiAgICAgICAgIHNpZ25BbGdvLnBzek9iaklkID0gY29uc3RfY2Fz
dDxjaGFyKj4oc3pPSURfUlNBX1NIQTFSU0EpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA1YmRhYmI2MjgwZWRhMjk3NDJjOTY2ZDUw
ZWQzZWVmMGFhMWEwNzQ4Li5iYzM0NDJmMmQ1YmY5OWQ2OTk3ODcwZDExNTAwZDA0NDg5YTM2YTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNw
cApAQCAtNDAsNyArNDAsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIFN0cmluZyBudWxsaWZpZWRQYXRoID0gZmlsZVBhdGg7Ci0gICAg
SEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIobnVsbGlmaWVkUGF0aCkuZGF0YSgpLCBHRU5FUklDX1JFQUQsIEZJTEVfU0hBUkVfUkVBRCwg
MCwgT1BFTl9FWElTVElORywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKyAgICBIQU5ETEUg
ZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKHdjaGFyRnJvbShudWxsaWZpZWRQYXRoLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgR0VORVJJQ19SRUFELCBGSUxFX1NIQVJF
X1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CiAgICAg
aWYgKGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGNyZWF0ZSBzaGFyZWQgYnVmZmVyLCBHZXRM
YXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcAppbmRleCA2ZTQxMzgxNjRiZTQ4YjBmMzIwMWEwMWI2ZjhiOTIyNGRi
MzU2YjZhLi4yOGExZTQxYWE3ZWUwM2NkMGRjYTkzNThhNTdkM2ExZjNjNmY5M2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTQwLDcgKzQwLDYg
QEAKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVj
dC5oPgogCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtMzE4LDcgKzMxNyw3IEBAIENvbG9yIFJlbmRl
clRoZW1lV2luOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKE9wdGlv
blNldDxTdHlsZUNvCiBzdGF0aWMgdm9pZCBmaWxsRm9udERlc2NyaXB0aW9uKEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgTE9HRk9OVCYgbG9nRm9udCwgZmxvYXQgZm9u
dFNpemUpCiB7ICAgIAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0cnVl
KTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KG51bGxUZXJtaW5hdGVkV0NoYXJU
b1N0cmluZyhsb2dGb250LmxmRmFjZU5hbWUpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25l
RmFtaWx5KFN0cmluZyhsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICBmb250RGVzY3JpcHRpb24u
c2V0U3BlY2lmaWVkU2l6ZShmb250U2l6ZSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdo
dChsb2dGb250LmxmV2VpZ2h0ID49IDcwMCA/IGJvbGRXZWlnaHRWYWx1ZSgpIDogbm9ybWFsV2Vp
Z2h0VmFsdWUoKSk7IC8vIEZJWE1FOiBVc2UgcmVhbCB3ZWlnaHQuCiAgICAgZm9udERlc2NyaXB0
aW9uLnNldElzSXRhbGljKGxvZ0ZvbnQubGZJdGFsaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IGViYjM3Mzg0YzMzN2JmMTJm
NWQ2ZGU4YTZiNDZmNmYwNDgxYzc4ZjkuLmIwZjkyYjQ5Y2RkNzcwY2IxNDYyMjZkMDgyNGVlMDhh
MWI2MmJhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25u
ZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVj
dGlvbldpbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIElQQyB7CiAKQEAgLTQzLDcgKzQ0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2
ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKICAg
ICAgICAgdW5zaWduZWQgdW5pcXVlSUQgPSByYW5kb21OdW1iZXIoKSAqIHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKICAgICAgICAgcGlwZU5hbWUgPSBtYWtlU3RyaW5nKCJc
XFxcLlxccGlwZVxcY29tLmFwcGxlLldlYktpdC4iLCBoZXgodW5pcXVlSUQpKTsKIAotICAgICAg
ICBzZXJ2ZXJJZGVudGlmaWVyID0gOjpDcmVhdGVOYW1lZFBpcGUocGlwZU5hbWUuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksCisgICAgICAgIHNlcnZlcklkZW50aWZpZXIg
PSA6OkNyZWF0ZU5hbWVkUGlwZSh3Y2hhckZyb20ocGlwZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCkpLAogICAgICAgICAgICAgUElQRV9BQ0NFU1NfRFVQTEVYIHwg
RklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0UgfCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwKICAg
ICAgICAgICAgIFBJUEVfVFlQRV9NRVNTQUdFIHwgUElQRV9SRUFETU9ERV9NRVNTQUdFLCAxLCBp
bmxpbmVNZXNzYWdlTWF4U2l6ZSwgaW5saW5lTWVzc2FnZU1heFNpemUsCiAgICAgICAgICAgICAw
LCAwKTsKQEAgLTUyLDcgKzUzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRD
bGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKICAgICBpZiAo
IXNlcnZlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNsaWVudElk
ZW50aWZpZXIgPSA6OkNyZWF0ZUZpbGVXKHBpcGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBPUEVO
X0VYSVNUSU5HLCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgMCk7CisgICAgY2xpZW50SWRlbnRpZmll
ciA9IDo6Q3JlYXRlRmlsZVcod2NoYXJGcm9tKHBpcGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwg
T1BFTl9FWElTVElORywgRklMRV9GTEFHX09WRVJMQVBQRUQsIDApOwogICAgIGlmICghY2xpZW50
SWRlbnRpZmllcikgewogICAgICAgICA6OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3dpbi9Nb2R1bGVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2lu
LmNwcAppbmRleCA3YjY1ZDc3ODY5MTY2MmZkYjVmZjYwZDczNjg5ZDJjZWNjOWIzMmZjLi4wYWZl
YjM5OTAzMzkxZTJjM2I5OGQ2YjNkNTFhYjliNmZkNmNlN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vd2luL01vZHVsZVdpbi5jcHAKQEAgLTI5LDEzICsyOSwxNCBAQAogCiAjaW5jbHVkZSA8
c2hsd2FwaS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJv
b2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAgICBBU1NFUlQoITo6UGF0aElzUmVsYXRpdmVXKG1fcGF0
aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwotICAgIG1fbW9kdWxl
ID0gOjpMb2FkTGlicmFyeUV4VyhtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKKyAgICBBU1NFUlQo
ITo6UGF0aElzUmVsYXRpdmVXKHdjaGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpKSk7CisgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKHdj
aGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAw
LCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAgICAgcmV0dXJuIG1fbW9kdWxlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJv
Y2Vzc0xhdW5jaGVyV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dp
bi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwCmluZGV4IDU3N2U0NjljYWRlMTExYmQxNDg0Y2M4MTQw
YTRkMzQyZDU1ODdiNjMuLjA5Nzg5Y2IzNjIxYzQ4ODJkZTI0MDZiZmZmZTRhY2FlNzEwMjU2NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNz
TGF1bmNoZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dp
bi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwCkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGNvbW1hbmRMaW5lQnVpbGRlci5hcHBlbmQo
U3RyaW5nOjpudW1iZXIocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNsaWVudElkZW50aWZp
ZXIpKSk7CiAgICAgY29tbWFuZExpbmVCdWlsZGVyLmFwcGVuZCgnXDAnKTsKIAotICAgIGF1dG8g
Y29tbWFuZExpbmUgPSBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tbWFuZExpbmVCdWls
ZGVyLnRvU3RyaW5nKCkpOworICAgIGF1dG8gY29tbWFuZExpbmUgPSBjb21tYW5kTGluZUJ1aWxk
ZXIudG9TdHJpbmcoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogCiAgICAgU1RB
UlRVUElORk8gc3RhcnR1cEluZm8geyB9OwogICAgIHN0YXJ0dXBJbmZvLmNiID0gc2l6ZW9mKHN0
YXJ0dXBJbmZvKTsKICAgICBzdGFydHVwSW5mby5kd0ZsYWdzID0gU1RBUlRGX1VTRVNIT1dXSU5E
T1c7CiAgICAgc3RhcnR1cEluZm8ud1Nob3dXaW5kb3cgPSBTV19ISURFOwogICAgIFBST0NFU1Nf
SU5GT1JNQVRJT04gcHJvY2Vzc0luZm9ybWF0aW9uIHsgfTsKLSAgICBCT09MIHJlc3VsdCA9IDo6
Q3JlYXRlUHJvY2VzcygwLCBjb21tYW5kTGluZS5kYXRhKCksIDAsIDAsIHRydWUsIDAsIDAsIDAs
ICZzdGFydHVwSW5mbywgJnByb2Nlc3NJbmZvcm1hdGlvbik7CisgICAgQk9PTCByZXN1bHQgPSA6
OkNyZWF0ZVByb2Nlc3MoMCwgd2NoYXJGcm9tKGNvbW1hbmRMaW5lLmRhdGEoKSksIDAsIDAsIHRy
dWUsIDAsIDAsIDAsICZzdGFydHVwSW5mbywgJnByb2Nlc3NJbmZvcm1hdGlvbik7CiAKICAgICAv
LyBXZSBjYW4gbm93IGNsb3NlIHRoZSBjbGllbnQgaWRlbnRpZmllciBoYW5kbGUuCiAgICAgOjpD
bG9zZUhhbmRsZShjbGllbnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcAppbmRleCBhZjQzNWMxNjVl
NjRhZTU1ZTk4N2ZlMzljODIyZDY0YTliZDBkMjBkLi41NmNkOGVjMjFiNTZiMTI3Zjc1MmYyZjg1
ZGQ4ZjdkMmQxMDY0Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViQ29udGV4dE1lbnVQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtNzEsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVNZW51SXRlbShjb25z
dCBDb250ZXh0TWVudUNvbnRleHREYXRhICZjb250ZXh0LCBITUVOVSBtZW51LCBjbwogICAgIHN3
aXRjaCAoZGF0YS50eXBlKCkpIHsKICAgICBjYXNlIEFjdGlvblR5cGU6CiAgICAgY2FzZSBDaGVj
a2FibGVBY3Rpb25UeXBlOgotICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9T
VFJJTkcsIGRhdGEuYWN0aW9uKCksIGRhdGEudGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1G
X1NUUklORywgZGF0YS5hY3Rpb24oKSwgd2NoYXJGcm9tKGRhdGEudGl0bGUoKS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFNlcGFyYXRvclR5cGU6CiAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1NF
UEFSQVRPUiwgZGF0YS5hY3Rpb24oKSwgbnVsbHB0cik7CkBAIC03OSw3ICs4MCw3IEBAIHN0YXRp
YyB2b2lkIGNyZWF0ZU1lbnVJdGVtKGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEgJmNvbnRl
eHQsIEhNRU5VIG1lbnUsIGNvCiAgICAgY2FzZSBTdWJtZW51VHlwZToKICAgICAgICAgSE1FTlUg
c3VibWVudSA9IGNyZWF0ZU1lbnUoY29udGV4dCk7CiAgICAgICAgIHBvcHVsYXRlKGNvbnRleHQs
IHN1Ym1lbnUsIGRhdGEuc3VibWVudSgpKTsKLSAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZs
YWdzIHwgTUZfUE9QVVAsIChVSU5UX1BUUilzdWJtZW51LCBkYXRhLnRpdGxlKCkuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOworICAgICAgICA6OkFwcGVuZE1lbnUobWVu
dSwgZmxhZ3MgfCBNRl9QT1BVUCwgKFVJTlRfUFRSKXN1Ym1lbnUsIHdjaGFyRnJvbShkYXRhLnRp
dGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IDE0YjFkOWZhODFhOGYwZDM0MjZiNGZiNTJlMmQ2MjY1YmJjYjk5YWEuLjVkZjY1NWI3MzYz
NjgyNDgzYWYxMGE2MWU5ZTliMzFhMjQxNTJjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3Ry
aW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC04NzUsNyArODc2LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRUb29sVGlwKGNvbnN0IFN0
cmluZyYgdG9vbFRpcCkKICAgICAgICAgaW5mby51RmxhZ3MgPSBUVEZfSURJU0hXTkQ7CiAgICAg
ICAgIGluZm8udUlkID0gcmVpbnRlcnByZXRfY2FzdDxVSU5UX1BUUj4obmF0aXZlV2luZG93KCkp
OwogICAgICAgICBWZWN0b3I8VUNoYXI+IHRvb2xUaXBDaGFyYWN0ZXJzID0gdG9vbFRpcC5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdo
IHRvIG1ha2UgdGhlIFNlbmRNZXNzYWdlIGNhbGwKLSAgICAgICAgaW5mby5scHN6VGV4dCA9IGNv
bnN0X2Nhc3Q8VUNoYXIqPih0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpOworICAgICAgICBpbmZv
Lmxwc3pUZXh0ID0gY29uc3RfY2FzdDx3Y2hhcl90Kj4od2NoYXJGcm9tKHRvb2xUaXBDaGFyYWN0
ZXJzLmRhdGEoKSkpOwogICAgICAgICA6OlNlbmRNZXNzYWdlKG1fdG9vbFRpcFdpbmRvdywgVFRN
X1VQREFURVRJUFRFWFQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaW5mbykpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcAppbmRleCBmOTg3ZWI3YTMxMmNh
NjIyNWM4NWU5YWIxZTc5ZWYwNWUyZGJmNjIxLi4xZWFiNjMzZmYwMmNkMjdjY2EyYjMxYmM2NmQz
N2U4NjMzODI0NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5p
dGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3Qq
IGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7Ci0gICAgSE1PRFVMRSBsaWIgPSA6OkxvYWRMaWJy
YXJ5KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSk7CisgICAgSE1P
RFVMRSBsaWIgPSA6OkxvYWRMaWJyYXJ5KHdjaGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKICAgICBpZiAoIWxpYikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxl
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5k
ZXggNTQyNDc3YTllOWUwYTk0MmQ2NWJlMGVlMmM5MGI0ZDI5NjlhNmMzOC4uZTBhNzY1ZTM2ZTlj
N2NjNzlmOWFkMDljZjY2NzZhYWEwYmM5MzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0FjY2Vzc2libGVCYXNlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPG9sZWFjYy5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xNDMsNyArMTQ0LDcgQEAgSFJFU1VMVCBBY2Nl
c3NpYmxlQmFzZTo6Z2V0X2F0dHJpYnV0ZShfSW5fIEJTVFIga2V5LCBfT3V0XyBWQVJJQU5UKiB2
YWx1ZSkKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAg
QXRvbWljU3RyaW5nIGtleUF0b21pYyhrZXksIDo6U3lzU3RyaW5nTGVuKGtleSkpOworICAgIEF0
b21pY1N0cmluZyBrZXlBdG9taWModWNoYXJGcm9tKGtleSksIDo6U3lzU3RyaW5nTGVuKGtleSkp
OwogCiAgICAgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKGtleUF0b21pYywgdmFsdWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaAppbmRleCAyMTY1YTIzNTZk
OWVhYTJjYWEwOTQ0MWQxOGZhODNkZWY5NGI5ZmQ1Li4xYWE5NGJhNzYyYjJhOTUzMTYwNjRlYTMy
ODFlMDM4Y2JmNjg3OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Q
cm9wZXJ0eUJhZy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NPTVByb3BlcnR5QmFn
LmgKQEAgLTIzLDE2ICsyMywxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBD
T01Qcm9wZXJ0eUJhZ19oCi0jZGVmaW5lIENPTVByb3BlcnR5QmFnX2gKKyNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ09NVmFyaWFudFNldHRlci5oIgogI2luY2x1ZGUgPG9jaWRsLmg+CiAjaW5j
bHVkZSA8dW5rbnduLmg+Ci0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotCi0jaW5jbHVkZSAiQ09NVmFyaWFudFNldHRlci5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUgPSB0eXBlbmFtZSBXVEY6OlN0cmluZywgdHlw
ZW5hbWUgSGFzaFR5cGUgPSB0eXBlbmFtZSBXVEY6OlN0cmluZ0hhc2g+CiBjbGFzcyBDT01Qcm9w
ZXJ0eUJhZyBmaW5hbCA6IHB1YmxpYyBJUHJvcGVydHlCYWcsIHB1YmxpYyBJUHJvcGVydHlCYWcy
IHsKQEAgLTIyMCw3ICsyMTgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3Bl
cnR5QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpHZXRQcm9wZQogICAgICAgICBw
UHJvcEJhZ1tqXS5wc3RyTmFtZSA9IChMUE9MRVNUUilDb1Rhc2tNZW1BbGxvYyhzaXplb2Yod2No
YXJfdCkqKGN1cnJlbnQtPmtleS5sZW5ndGgoKSsxKSk7CiAgICAgICAgIGlmICghcFByb3BCYWdb
al0ucHN0ck5hbWUpCiAgICAgICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKLSAgICAgICAg
d2NzY3B5X3MocFByb3BCYWdbal0ucHN0ck5hbWUsIGN1cnJlbnQtPmtleS5sZW5ndGgoKSsxLCBz
dGF0aWNfY2FzdDxTdHJpbmc+KGN1cnJlbnQtPmtleSkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpOworICAgICAgICB3Y3NjcHlfcyhwUHJvcEJhZ1tqXS5wc3RyTmFtZSwg
Y3VycmVudC0+a2V5Lmxlbmd0aCgpKzEsIHdjaGFyRnJvbShjdXJyZW50LT5rZXkuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKICAgICAgICAgKysqcGNQcm9wZXJ0aWVz
OwogICAgIH0KICAgICByZXR1cm4gU19PSzsKQEAgLTIzMSw1ICsyMjksMyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIENPTVByb3BlcnR5QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5
cGU+OjpMb2FkT2JqZQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9Ci0KLSNlbmRpZiAvLyBD
T01Qcm9wZXJ0eUJhZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01D
b3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5j
cHAKaW5kZXggYzU4ODBlYTRkZDg1MmI1YzAwZGRhYjNjODI1ZDZhOWY2Y2YwODNjZi4uZWFkYTNl
NmJjNTVjMDAxN2ZlYzlmMGVjMTk1OGQ5YzQxYzc3ZWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkRP
TUV2ZW50c0NsYXNzZXMuaCIKICNpbmNsdWRlICJET01IVE1MQ2xhc3Nlcy5oIgogI2luY2x1ZGUg
IldlYktpdEdyYXBoaWNzLmgiCi0KICNpbmNsdWRlIDxXZWJDb3JlL0F0dHIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgpAQCAtNTYs
OCArNTUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsSW50b1ZpZXdPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dHlsZWRFbGVtZW50Lmg+Ci0KICNpbmNsdWRlIDxpbml0Z3VpZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorCiAvLyB7M0IwQzBFRkYtNDc4Qi00YjBiLTgy
OTAtRDIzMjFFMDhFMjNFfQogREVGSU5FX0dVSUQoSUlEX0RPTUVsZW1lbnQsIDB4M2IwYzBlZmYs
IDB4NDc4YiwgMHg0YjBiLCAweDgyLCAweDkwLCAweGQyLCAweDMyLCAweDFlLCAweDgsIDB4ZTIs
IDB4M2UpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgSFJFU1VMVCBET01Ob2RlOjpzZXRUZXh0Q29u
dGVudChfSW5fIEJTVFIgLyp0ZXh0Ki8pCiBIUkVTVUxUIERPTU5vZGU6OmFkZEV2ZW50TGlzdGVu
ZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwg
Qk9PTCB1c2VDYXB0dXJlKQogewogICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3Rl
bmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBl
LCBXVEZNb3ZlKHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CisgICAgbV9ub2RlLT5hZGRFdmVu
dExpc3RlbmVyKHVjaGFyRnJvbSh0eXBlKSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNhcHR1
cmUpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00MjYsNyArNDI2LDcgQEAgSFJFU1VMVCBE
T01Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9N
RXZlbnRMaXN0ZW5lcioKICAgICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
ICAgICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVy
KTsKLSAgICBtX25vZGUtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVz
ZUNhcHR1cmUpOworICAgIG1fbm9kZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih1Y2hhckZyb20odHlw
ZSksIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
OTI0LDcgKzkyNCw3IEBAIEhSRVNVTFQgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKF9Jbl8g
QlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lcioKICAgICBpZiAoIW1fd2luZG93
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVu
dExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fd2luZG93LT5hZGRFdmVudExpc3Rl
bmVyKHR5cGUsIFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKKyAgICBtX3dpbmRv
dy0+YWRkRXZlbnRMaXN0ZW5lcih1Y2hhckZyb20odHlwZSksIFdURk1vdmUod2ViTGlzdGVuZXIp
LCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtOTM1LDcgKzkzNSw3IEBA
IEhSRVNVTFQgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBf
SW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lCiAgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKICAgICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGxpc3RlbmVyKTsKLSAgICBtX3dpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3
ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgbV93aW5kb3ctPnJlbW92ZUV2ZW50TGlzdGVu
ZXIodWNoYXJGcm9tKHR5cGUpLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIEhSRVNVTFQgRE9NRWxlbWVudDo6Zm9u
dChfT3V0XyBXZWJGb250RGVzY3JpcHRpb24qIHdlYkZvbnREZXNjcmlwdGlvbikKICAgICBVQ2hh
ciogZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlciA9IG5ldyBVQ2hhcltmYW1pbHkubGVuZ3RoKCldOwog
ICAgIFN0cmluZ1ZpZXcoZmFtaWx5LnN0cmluZygpKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVy
dChmYW1pbHlDaGFyYWN0ZXJzQnVmZmVyKTsKIAotICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+ZmFt
aWx5ID0gZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlcjsKKyAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZh
bWlseSA9IHdjaGFyRnJvbShmYW1pbHlDaGFyYWN0ZXJzQnVmZmVyKTsKICAgICB3ZWJGb250RGVz
Y3JpcHRpb24tPmZhbWlseUxlbmd0aCA9IGZhbWlseS5sZW5ndGgoKTsKICAgICB3ZWJGb250RGVz
Y3JpcHRpb24tPnNpemUgPSBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCk7CiAgICAgd2Vi
Rm9udERlc2NyaXB0aW9uLT5ib2xkID0gaXNGb250V2VpZ2h0Qm9sZChmb250RGVzY3JpcHRpb24u
d2VpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENs
YXNzZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmlu
ZGV4IDNjZjM4YjQ1NjYzZWU1ZTg5ZjQ5OWFmNjc3MTJiYzM5YzdjNWE2MzkuLjRjMWZmNjNiZGY2
OTAzZGQwMjA1M2FjYjllZjk4ZmEwYmQzYmRjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTEyMjgsNyArMTIyOCw3IEBAIEhSRVNVTFQgRE9NSFRN
TElucHV0RWxlbWVudDo6c2V0VmFsdWVGb3JVc2VyKF9Jbl8gQlNUUiB2YWx1ZSkKIHsKICAgICBB
U1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxl
bWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVu
dCk7Ci0gICAgaW5wdXRFbGVtZW50LnNldFZhbHVlRm9yVXNlcihTdHJpbmcoc3RhdGljX2Nhc3Q8
VUNoYXIqPih2YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKKyAgICBpbnB1dEVsZW1lbnQu
c2V0VmFsdWVGb3JVc2VyKFN0cmluZyh2YWx1ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSkpOwogICAg
IHJldHVybiBTX09LOwogfQogCkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBIUkVTVUxUIERPTUhUTUxJ
bnB1dEVsZW1lbnQ6OnJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZShpbnQgc3RhcnRUYXJnZXQsIGlu
dCBlbmRUYQogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwogCiAgICAgU3RyaW5nIG5ld1ZhbHVlID0gaW5w
dXRFbGVtZW50LnZhbHVlKCk7Ci0gICAgU3RyaW5nIHdlYkNvcmVSZXBsYWNlbWVudFN0cmluZyhz
dGF0aWNfY2FzdDxVQ2hhcio+KHJlcGxhY2VtZW50U3RyaW5nKSwgU3lzU3RyaW5nTGVuKHJlcGxh
Y2VtZW50U3RyaW5nKSk7CisgICAgU3RyaW5nIHdlYkNvcmVSZXBsYWNlbWVudFN0cmluZyhyZXBs
YWNlbWVudFN0cmluZywgU3lzU3RyaW5nTGVuKHJlcGxhY2VtZW50U3RyaW5nKSk7CiAgICAgbmV3
VmFsdWUucmVwbGFjZShzdGFydFRhcmdldCwgZW5kVGFyZ2V0IC0gc3RhcnRUYXJnZXQsIHdlYkNv
cmVSZXBsYWNlbWVudFN0cmluZyk7CiAgICAgaW5wdXRFbGVtZW50LnNldFZhbHVlKG5ld1ZhbHVl
KTsKICAgICBpbnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIG5ld1ZhbHVlLmxl
bmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2VXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZVdpbi5jcHAKaW5kZXggODE0ZTJiYjZkYzM5MWZjMmZmYTFhOTViNjllNDZkNDU4
MGMwMzY1My4uZmJlZWI4OTBhNzJjOWNlZWEwMTVjZDExM2JiMjc0ODY1NzcxYmFjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdp
bi5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFBsdWdpblBhdGhz
RnJvbVJlZ2lzdHJ5KEhLRVkgcm9vdEtleSwgSGFzaFNldDxTdHJpbmc+JiBwYXQKICAgICAgICAg
aWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTIHx8IHR5cGUgIT0gUkVHX1NaKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgcGF0aHMuYWRkKHdjaGFyVG9TdHJpbmcocGF0aFN0ciwg
cGF0aFN0clNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBwYXRocy5hZGQoU3Ry
aW5nKHBhdGhTdHIsIHBhdGhTdHJTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKICAgICB9CiAK
ICAgICBSZWdDbG9zZUtleShrZXkpOwpAQCAtODMsNyArODMsNyBAQCB2b2lkIFBsdWdpbkRhdGFi
YXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykg
Y29uc3QKICAgICBmb3IgKGF1dG8mIGRpcmVjdG9yeSA6IG1fcGx1Z2luRGlyZWN0b3JpZXMpIHsK
ICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBkaXJlY3RvcnkgKyAiXFwqIjsKIAotICAgICAgICBo
RmluZCA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXR0ZXJu
KS5kYXRhKCksICZmaW5kRmlsZURhdGEpOworICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVX
KHdjaGFyRnJvbShwYXR0ZXJuLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSwgJmZpbmRGaWxlRGF0YSk7CiAKICAgICAgICAgaWYgKGhGaW5kID09IElOVkFMSURfSEFORExF
X1ZBTFVFKQogICAgICAgICAgICAgY29udGludWU7CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUGx1
Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4m
IHBhdGhzKSBjb25zdAogICAgICAgICAgICAgaWYgKGZpbmRGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1
dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSB3Y2hhclRvU3RyaW5nKGZpbmRGaWxl
RGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CisgICAgICAg
ICAgICBTdHJpbmcgZmlsZW5hbWUoZmluZEZpbGVEYXRhLmNGaWxlTmFtZSwgd2NzbGVuKGZpbmRG
aWxlRGF0YS5jRmlsZU5hbWUpKTsKICAgICAgICAgICAgIGlmICghKHN0YXJ0c1dpdGhMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZmlsZW5hbWUsICJucCIpICYmIGZpbGVuYW1lLmVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoImRsbCIpKQogICAgICAgICAgICAgICAgICYmICEoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZmlsZW5hbWUsICJwbHVnaW4uZGxsIikgJiYgZGlyZWN0b3J5LmVu
ZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoInNob2Nrd2F2ZSAxMCIpKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTE4MCwxMSArMTgwLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRN
b3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAg
ICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGggPSB3Y2hhclRvU3RyaW5n
KG5hbWUsIG5hbWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CisgICAgICAgICAgICBTdHJpbmcgZXh0
ZW5zaW9uc1BhdGggPSBTdHJpbmcobmFtZSwgbmFtZUxlbikgKyAiXFxFeHRlbnNpb25zIjsKICAg
ICAgICAgICAgIEhLRVkgZXh0ZW5zaW9uc0tleTsKIAogICAgICAgICAgICAgLy8gVHJ5IG9wZW5p
bmcgdGhlIGtleQotICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwgc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGV4dGVuc2lvbnNQYXRoKS5kYXRhKCksIDAsIEtFWV9SRUFE
LCAmZXh0ZW5zaW9uc0tleSk7CisgICAgICAgICAgICByZXN1bHQgPSBSZWdPcGVuS2V5RXgoa2V5
LCB3Y2hhckZyb20oZXh0ZW5zaW9uc1BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpLCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNLZXkpOwogCiAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAvLyBOb3cgZ2V0
IHRoZSBwbHVnaW5zIGRpcmVjdG9yeQpAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9y
aWVzKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFJlZ1F1ZXJ5VmFsdWVFeChleHRlbnNpb25z
S2V5LCBURVhUKCJQbHVnaW5zIiksIDAsICZ0eXBlLCAoTFBCWVRFKSZwbHVnaW5zRGlyZWN0b3J5
U3RyLCAmcGx1Z2luc0RpcmVjdG9yeVNpemUpOwogCiAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQotICAgICAgICAgICAgICAgICAg
ICBkaXJlY3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBw
bHVnaW5zRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CisgICAgICAgICAgICAg
ICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1
Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogCiAgICAgICAgICAgICAg
ICAgUmVnQ2xvc2VLZXkoZXh0ZW5zaW9uc0tleSk7CiAgICAgICAgICAgICB9CkBAIC0yMTIsNyAr
MjEyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRp
cmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAgICBEV09SRCBwbHVnaW5EaXJlY3Rv
cnlTaXplID0gOjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKFRFWFQoIiVTWVNURU1EUklWRSVc
XFBGaWxlc1xcUGx1Z2lucyIpLCBwbHVnaW5EaXJlY3RvcnlTdHIsIFdURl9BUlJBWV9MRU5HVEgo
cGx1Z2luRGlyZWN0b3J5U3RyKSk7CiAKICAgICBpZiAocGx1Z2luRGlyZWN0b3J5U2l6ZSA+IDAg
JiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBXVEZfQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVjdG9y
eVN0cikpCi0gICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKHBsdWdpbkRp
cmVjdG9yeVN0ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKKyAgICAgICAgZGlyZWN0b3Jp
ZXMuYXBwZW5kKFN0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNpemUg
LSAxKSk7CiAKICAgICBEV09SRCB0eXBlOwogICAgIFdDSEFSIGluc3RhbGxhdGlvbkRpcmVjdG9y
eVN0cltfTUFYX1BBVEhdOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVj
dG9yCiAgICAgSFJFU1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFD
SElORSwgTCJTb2Z0d2FyZVxcTWljcm9zb2Z0XFxNZWRpYVBsYXllciIsIEwiSW5zdGFsbGF0aW9u
IERpcmVjdG9yeSIsICZ0eXBlLCAmaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyLCAmaW5zdGFsbGF0
aW9uRGlyZWN0b3J5U2l6ZSk7CiAKICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYg
dHlwZSA9PSBSRUdfU1opCi0gICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5n
KGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0ciwgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNp
emVvZihXQ0hBUikgLSAxKSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcoaW5z
dGFsbGF0aW9uRGlyZWN0b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplIC8gc2l6ZW9m
KFdDSEFSKSAtIDEpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBs
dWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCkBAIC0yNDUsMTAgKzI0
NSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5
KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJP
Ul9TVUNDRVNTKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGludD4gYWNy
b2JhdFZlcnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcod2NoYXJUb1N0cmluZyhuYW1lLCBuYW1l
TGVuKSk7CisgICAgICAgIFZlY3RvcjxpbnQ+IGFjcm9iYXRWZXJzaW9uID0gcGFyc2VWZXJzaW9u
U3RyaW5nKFN0cmluZyhuYW1lLCBuYW1lTGVuKSk7CiAgICAgICAgIGlmIChjb21wYXJlVmVyc2lv
bnMoYWNyb2JhdFZlcnNpb24sIGxhdGVzdEFjcm9iYXRWZXJzaW9uKSkgewogICAgICAgICAgICAg
bGF0ZXN0QWNyb2JhdFZlcnNpb24gPSBhY3JvYmF0VmVyc2lvbjsKLSAgICAgICAgICAgIGxhdGVz
dEFjcm9iYXRWZXJzaW9uU3RyaW5nID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKTsKKyAg
ICAgICAgICAgIGxhdGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nID0gU3RyaW5nKG5hbWUsIG5hbWVM
ZW4pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTgsMTAgKzI1OCwxMCBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBk
aXJlY3RvcmllcykKICAgICAgICAgRFdPUkQgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSA9IHNpemVv
ZihhY3JvYmF0SW5zdGFsbFBhdGhTdHIpOwogCiAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1Z2lu
S2V5UGF0aCA9ICJTb2Z0d2FyZVxcQWRvYmVcXEFjcm9iYXQgUmVhZGVyXFwiICsgbGF0ZXN0QWNy
b2JhdFZlcnNpb25TdHJpbmcgKyAiXFxJbnN0YWxsUGF0aCI7Ci0gICAgICAgIHJlc3VsdCA9IGdl
dFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoYWNyb2JhdFBsdWdpbktleVBhdGgpLmRhdGEoKSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0
YWxsUGF0aFN0ciwgJmFjcm9iYXRJbnN0YWxsUGF0aFNpemUpOworICAgICAgICByZXN1bHQgPSBn
ZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgd2NoYXJGcm9tKGFjcm9iYXRQbHVn
aW5LZXlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgJnR5
cGUsIGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgJmFjcm9iYXRJbnN0YWxsUGF0aFNpemUpOwogCiAg
ICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICAgICAgU3RyaW5n
IGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSB3Y2hhclRvU3RyaW5nKGFjcm9iYXRJbnN0YWxsUGF0
aFN0ciwgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJy
b3dzZXIiOworICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSBTdHJp
bmcoYWNyb2JhdEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9m
KFdDSEFSKSAtIDEpICsgIlxcYnJvd3NlciI7CiAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBl
bmQoYWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTAsMTAg
KzI5MCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBsdWdpbkRpcmVjdG9yeShWZWN0
b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VD
Q0VTUykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFZlY3RvcjxpbnQ+IGphdmFWZXJz
aW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOwor
ICAgICAgICBWZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyhTdHJp
bmcobmFtZSwgbmFtZUxlbikpOwogICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKGphdmFWZXJz
aW9uLCBsYXRlc3RKYXZhVmVyc2lvbikpIHsKICAgICAgICAgICAgIGxhdGVzdEphdmFWZXJzaW9u
ID0gamF2YVZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvblN0cmluZyA9IHdj
aGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lv
blN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MzA1LDEyICszMDUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEphdmFQbHVnaW5EaXJlY3Rv
cnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBEV09SRCB1c2VOZXdQbHVn
aW5TaXplOwogCiAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luS2V5UGF0aCA9ICJTb2Z0d2FyZVxc
SmF2YVNvZnRcXEphdmEgUGx1Zy1pblxcIiArIGxhdGVzdEphdmFWZXJzaW9uU3RyaW5nOwotICAg
ICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGphdmFQbHVnaW5LZXlQYXRoKS5kYXRhKCksIEwiVXNlTmV3
SmF2YVBsdWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFsdWUsICZ1c2VOZXdQbHVnaW5TaXpl
KTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUs
IHdjaGFyRnJvbShqYXZhUGx1Z2luS2V5UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSksIEwiVXNlTmV3SmF2YVBsdWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFs
dWUsICZ1c2VOZXdQbHVnaW5TaXplKTsKIAogICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NV
Q0NFU1MgJiYgdXNlTmV3UGx1Z2luVmFsdWUgPT0gMSkgewotICAgICAgICAgICAgcmVzdWx0ID0g
Z2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihqYXZhUGx1Z2luS2V5UGF0aCkuZGF0YSgpLCBMIkphdmFIb21lIiwgJnR5cGUsIGph
dmFJbnN0YWxsUGF0aFN0ciwgJmphdmFJbnN0YWxsUGF0aFNpemUpOworICAgICAgICAgICAgcmVz
dWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHdjaGFyRnJvbShqYXZh
UGx1Z2luS2V5UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIEwi
SmF2YUhvbWUiLCAmdHlwZSwgamF2YUluc3RhbGxQYXRoU3RyLCAmamF2YUluc3RhbGxQYXRoU2l6
ZSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAg
ICAgICAgICBTdHJpbmcgamF2YVBsdWdpbkRpcmVjdG9yeSA9IHdjaGFyVG9TdHJpbmcoamF2YUlu
c3RhbGxQYXRoU3RyLCBqYXZhSW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsg
IlxcYmluXFxuZXdfcGx1Z2luIjsKKyAgICAgICAgICAgICAgICBTdHJpbmcgamF2YVBsdWdpbkRp
cmVjdG9yeSA9IFN0cmluZyhqYXZhSW5zdGFsbFBhdGhTdHIsIGphdmFJbnN0YWxsUGF0aFNpemUg
LyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxiaW5cXG5ld19wbHVnaW4iOwogICAgICAgICAgICAg
ICAgIGRpcmVjdG9yaWVzLmFwcGVuZChqYXZhUGx1Z2luRGlyZWN0b3J5KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHNh
ZmFyaVBsdWdpbnNEaXJlY3RvcnkoKQogICAgICAgICBpZiAoIVBhdGhSZW1vdmVGaWxlU3BlYyht
b2R1bGVGaWxlTmFtZVN0cikpCiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICAgICAgcGx1
Z2luc0RpcmVjdG9yeSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtb2R1bGVGaWxlTmFt
ZVN0cikgKyAiXFxQbHVnaW5zIjsKKyAgICAgICAgcGx1Z2luc0RpcmVjdG9yeSA9IFN0cmluZyht
b2R1bGVGaWxlTmFtZVN0cikgKyAiXFxQbHVnaW5zIjsKICAgICB9CiBleGl0OgogICAgIHJldHVy
biBwbHVnaW5zRGlyZWN0b3J5OwpAQCAtMzUyLDEwICszNTIsMTAgQEAgc3RhdGljIGlubGluZSB2
b2lkIGFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0
b3JpZXMpCiAgICAgV0NIQVIgbWFjcm9tZWRpYURpcmVjdG9yeVN0cltNQVhfUEFUSF07CiAKICAg
ICBQYXRoQ29tYmluZShtYWNyb21lZGlhRGlyZWN0b3J5U3RyLCBzeXN0ZW1EaXJlY3RvcnlTdHIs
IFRFWFQoIm1hY3JvbWVkXFxGbGFzaCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKKyAgICBkaXJl
Y3Rvcmllcy5hcHBlbmQoU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIAogICAgIFBh
dGhDb21iaW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0ciwgVEVY
VCgibWFjcm9tZWRcXFNob2Nrd2F2ZSAxMCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobnVs
bFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKKyAgICBk
aXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIH0KIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggOTRiYmE2YTllN2I2
NjU0OGE2OGIzNjdiMzg3NTg5NWVmZTliNTI2NS4uZDU4Y2IyNjBkYjg4MTM2OWU3YzQxNzliZTdl
NDAzMmRmNTcwNmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5QYWNrYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBTdHJpbmcg
Z2V0VmVyc2lvbkluZm8oY29uc3QgTFBWT0lEIHZlcnNpb25JbmZvRGF0YSwgY29uc3QgU3RyaW5n
JiBpbmZvKQogICAgIFVJTlQgYnVmZmVyTGVuZ3RoOwogICAgIFN0cmluZyBzdWJJbmZvID0gIlxc
U3RyaW5nZmlsZUluZm9cXDA0MDkwNEU0XFwiICsgaW5mbzsKICAgICBib29sIHJldHZhbCA9IFZl
clF1ZXJ5VmFsdWVXKHZlcnNpb25JbmZvRGF0YSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKHN1YkluZm8pLmRhdGEoKSwKKyAgICAgICAgd2NoYXJGcm9tKHN1YkluZm8uY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLAogICAgICAgICAmYnVmZmVyLCAm
YnVmZmVyTGVuZ3RoKTsKICAgICBpZiAoIXJldHZhbCB8fCBidWZmZXJMZW5ndGggPT0gMCkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTY2LDEzICsxNjYsMTMgQEAgdm9pZCBQbHVnaW5Q
YWNrYWdlOjpkZXRlcm1pbmVRdWlya3MoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIGJvb2wgUGx1
Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKIHsKICAgICBEV09SRCB2ZXJzaW9uSW5mb1NpemUsIHpl
cm9IYW5kbGU7Ci0gICAgdmVyc2lvbkluZm9TaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVco
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAmemVyb0hhbmRsZSk7
CisgICAgdmVyc2lvbkluZm9TaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcod2NoYXJGcm9t
KG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksICZ6ZXJvSGFu
ZGxlKTsKICAgICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFZlY3RvcjxjaGFyPiB2ZXJzaW9uSW5mb0RhdGEodmVyc2lvbkluZm9TaXplKTsK
IAotICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmRh
dGEoKSkpCisgICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHdjaGFyRnJvbShtX3BhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCB2ZXJzaW9uSW5mb1NpemUs
IHZlcnNpb25JbmZvRGF0YS5kYXRhKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X25hbWUgPSBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiUHJvZHVjdE5h
bWUiKTsKQEAgLTIzOCwxMSArMjM4LDExIEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9hZCgpCiAK
ICAgICAgICAgU3RyaW5nIHBhdGggPSBtX3BhdGguc3Vic3RyaW5nKDAsIG1fcGF0aC5yZXZlcnNl
RmluZCgnXFwnKSk7CiAKLSAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKQorICAgICAgICBpZiAoITo6U2V0
Q3VycmVudERpcmVjdG9yeVcod2NoYXJGcm9tKHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAv
LyBMb2FkIHRoZSBsaWJyYXJ5Ci0gICAgICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4Vyhz
dHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIExPQURfV0lUSF9B
TFRFUkVEX1NFQVJDSF9QQVRIKTsKKyAgICAgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhX
KHdjaGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
LCAwLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAKICAgICAgICAgaWYgKCE6OlNl
dEN1cnJlbnREaXJlY3RvcnlXKGN1cnJlbnRQYXRoKSkgewogICAgICAgICAgICAgaWYgKG1fbW9k
dWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3V2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dp
bi5jcHAKaW5kZXggNGE2NjNlMDY0OGM1MzE5NWFiMDllMDA1Y2FlNTNlNDU0OTdiZDkzOS4uMDk4
OWJkZTc1OWQyNTBlMzYwM2ZmNDRmMWUwNTY4NzNmOGJmYmIzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBAIC03NTUsMTMgKzc1
NSwxMyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hh
cj4mIGJ1ZmZlciwgdWludDMyX3QgbGVuLCBjb25zdAogCiAgICAgLy8gR2V0IGZpbGUgaW5mbwog
ICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgYXR0cnM7Ci0gICAgaWYgKCFHZXRGaWxlQXR0
cmlidXRlc0V4VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSwg
R2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmYXR0cnMpKQorICAgIGlmICghR2V0RmlsZUF0dHJpYnV0
ZXNFeFcod2NoYXJGcm9tKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmYXR0cnMpKQogICAgICAgICByZXR1cm4g
TlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAKICAgICBpZiAoYXR0cnMuZHdGaWxlQXR0cmlidXRlcyAm
IEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9U
X0ZPVU5EOwogCi0gICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSwgRklMRV9SRUFEX0RBVEEsIEZJTEVf
U0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgMCwgMCk7CisgICAgSEFORExFIGZpbGVIYW5k
bGUgPSBDcmVhdGVGaWxlVyh3Y2hhckZyb20oZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpLCBGSUxFX1JFQURfREFUQSwgRklMRV9TSEFSRV9SRUFELCAwLCBP
UEVOX0VYSVNUSU5HLCAwLCAwKTsKICAgICAKICAgICBpZiAoZmlsZUhhbmRsZSA9PSBJTlZBTElE
X0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKaW5kZXggODMzMWNhOTQwNGU1OTE1ZTczNmNlMTBhYmRmZmI5OGFiMmZi
NGI2Yy4uZTNjNmNiMGE1OWFmMmY0MjQ4OWY1MjcwY2NhMTkzNTVlZGU5YjMwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQ
b3B1cE1lbnVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5j
bHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY0NiwxNyArNjQ3LDE2IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYgZmls
ZUNob29zZXIpCiAKICAgICBvZm4ubFN0cnVjdFNpemUgPSBzaXplb2Yob2ZuKTsKICAgICBvZm4u
aHduZE93bmVyID0gdmlld1dpbmRvdzsKLSAgICBTdHJpbmcgYWxsRmlsZXMgPSBhbGxGaWxlc1Rl
eHQoKTsKLSAgICBhbGxGaWxlcy5hcHBlbmQoTCJcMCouKlwwXDAiLCA2KTsKKyAgICBTdHJpbmcg
YWxsRmlsZXMgPSBtYWtlU3RyaW5nKGFsbEZpbGVzVGV4dCgpLCBTdHJpbmcoIlwwKi4qXDBcMCIs
IDYpKTsKIAogICAgIFZlY3RvcjxVQ2hhcj4gZmlsdGVyQ2hhcmFjdGVycyA9IGFsbEZpbGVzLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBidWZmZXIgbG9uZyBlbm91
Z2ggdG8gbWFrZSB0aGUgR2V0T3BlbkZpbGVOYW1lIGNhbGwKLSAgICBvZm4ubHBzdHJGaWx0ZXIg
PSBmaWx0ZXJDaGFyYWN0ZXJzLmRhdGEoKTsKKyAgICBvZm4ubHBzdHJGaWx0ZXIgPSB3Y2hhckZy
b20oZmlsdGVyQ2hhcmFjdGVycy5kYXRhKCkpOwogCiAgICAgb2ZuLmxwc3RyRmlsZSA9IGZpbGVC
dWYuZGF0YSgpOwogICAgIG9mbi5uTWF4RmlsZSA9IGZpbGVCdWYuc2l6ZSgpOwogICAgIFN0cmlu
ZyBkaWFsb2dUaXRsZSA9IHVwbG9hZEZpbGVUZXh0KCk7CiAgICAgVmVjdG9yPFVDaGFyPiBkaWFs
b2dUaXRsZUNoYXJhY3RlcnMgPSBkaWFsb2dUaXRsZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIEdldE9wZW5G
aWxlTmFtZSBjYWxsCi0gICAgb2ZuLmxwc3RyVGl0bGUgPSBkaWFsb2dUaXRsZUNoYXJhY3RlcnMu
ZGF0YSgpOworICAgIG9mbi5scHN0clRpdGxlID0gd2NoYXJGcm9tKGRpYWxvZ1RpdGxlQ2hhcmFj
dGVycy5kYXRhKCkpOwogICAgIG9mbi5GbGFncyA9IE9GTl9FTkFCTEVTSVpJTkcgfCBPRk5fRklM
RU1VU1RFWElTVCB8IE9GTl9QQVRITVVTVEVYSVNUIHwgT0ZOX0VYUExPUkVSOwogICAgIGlmICht
dWx0aUZpbGUpCiAgICAgICAgIG9mbi5GbGFncyA9IG9mbi5GbGFncyB8IE9GTl9BTExPV01VTFRJ
U0VMRUNUOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYWFlMWUwMDBmOGZhYzk4ZTM3MjI5NDAw
MWM2OWM0YzcwZWQ1M2ZmOS4uOTEwYmU4N2UyNWJkNjRkNWQxNjUzMjBhYTA0MmYwOTBkZGU4NDNk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJX
ZWJLaXRETEwuaCIKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKIAorI2luY2x1ZGUgIkRP
TUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZp
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAi
V2ViVmlldy5oIgotI2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSA8Y29tdXRp
bC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJUeXBpbmdH
ZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC03NTgsNyArNzU5LDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIGludCogbWlzc3Bl
bGxpbmdMb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5n
KG1fd2ViVmlldyk7Ci0gICAgZWQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhtX3dlYlZpZXcsIHRl
eHQudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIG1pc3NwZWxsaW5nTG9j
YXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBlZC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5n
KG1fd2ViVmlldywgd2NoYXJGcm9tKHRleHQudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkpLCB0ZXh0
Lmxlbmd0aCgpLCBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CiB9CiAK
IFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3Nw
ZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgaW5wdXRXb3JkKQpAQCAtNzgwLDcgKzc4MSw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQs
IFZlY3RvcjxHcmFtbWFyRGV0YWlsCiAKICAgICBpbml0Vmlld1NwZWNpZmljU3BlbGxpbmcobV93
ZWJWaWV3KTsKICAgICBDT01QdHI8SUVudW1XZWJHcmFtbWFyRGV0YWlscz4gZW51bURldGFpbHNP
Ymo7Ci0gICAgaWYgKEZBSUxFRChlZC0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcobV93ZWJWaWV3LCB0
ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpLCAmZW51bURldGFpbHNP
YmosIGJhZEdyYW1tYXJMb2NhdGlvbiwgYmFkR3JhbW1hckxlbmd0aCkpKQorICAgIGlmIChGQUlM
RUQoZWQtPmNoZWNrR3JhbW1hck9mU3RyaW5nKG1fd2ViVmlldywgd2NoYXJGcm9tKHRleHQudXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzKCkpLCB0ZXh0Lmxlbmd0aCgpLCAmZW51bURldGFpbHNPYmosIGJh
ZEdyYW1tYXJMb2NhdGlvbiwgYmFkR3JhbW1hckxlbmd0aCkpKQogICAgICAgICByZXR1cm47CiAK
ICAgICB3aGlsZSAodHJ1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggMjIxZTIy
ZjM4NjA1YTUxZjA3MzdlYWQzYzhiZTljMzk1YzQyNGRjNy4uNTllZWRhNmI4NDU3YTlmYjQzZGQz
NzhkOWE2NjM2NjA2MjJlZTdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSA8d2NoYXIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTQ1MCw3ICs0NTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpk
ZXN0cm95SW5zcGVjdG9yVmlldygpCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1
cGRhdGVXaW5kb3dUaXRsZSgpCiB7CiAgICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZygiV2Vi
IEluc3BlY3RvciAiLCBzdGF0aWNfY2FzdDxVQ2hhcj4oMHgyMDE0KSwgJyAnLCBtX2luc3BlY3Rl
ZFVSTCk7Ci0gICAgOjpTZXRXaW5kb3dUZXh0KG1fZnJvbnRlbmRId25kLCB0aXRsZS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgOjpTZXRXaW5kb3dUZXh0KG1f
ZnJvbnRlbmRId25kLCB3Y2hhckZyb20odGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpKTsKIH0KIAogTFJFU1VMVCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
b25HZXRNaW5NYXhJbmZvKFdQQVJBTSwgTFBBUkFNIGxQYXJhbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcAppbmRleCA0YWQzMTY2MDE3ZjM5OWFmOWM4MzM5NTA5NmMzZmQ1N2U1NjEw
ODMwLi41OTY4M2I5NGUxMzY3Mzc0ZDIyODhmMTZjNzE4ZWVmZjE4NDQzYjJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0
cmluZ0V4dHJhcy5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3Jl
R3JhcGhpY3MuaD4KQEAgLTczMSw3ICs3MzIsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpmaW5kRnJh
bWVOYW1lZChfSW5fIEJTVFIgbmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViRnJhbWUqKiBmcgog
ICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAg
RnJhbWUqIGZvdW5kRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5maW5kKEF0b21pY1N0cmluZyhu
YW1lLCBTeXNTdHJpbmdMZW4obmFtZSkpLCAqY29yZUZyYW1lKTsKKyAgICBGcmFtZSogZm91bmRG
cmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgpLmZpbmQoQXRvbWljU3RyaW5nKHVjaGFyRnJvbShuYW1l
KSwgU3lzU3RyaW5nTGVuKG5hbWUpKSwgKmNvcmVGcmFtZSk7CiAgICAgaWYgKCFmb3VuZEZyYW1l
KQogICAgICAgICByZXR1cm4gU19PSzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5kZXggZGUwMjIxZjU0NWYzZGY0YTZhZDEwYzBh
YTk2ZDM2Y2I4ZDkxNjNmMi4uZGQ1NzdjYzQ0MzhjYjk1ZGUxZTJkMDFmMDJmYmFhNGY2NmUzM2Rm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJp
bmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmlu
Z3MuY3BwCkBAIC0yNCwyMCArMjQsMTkgQEAKICAqLwogCiAjaW5jbHVkZSAiV2ViS2l0RExMLmgi
Ci0KICNpbmNsdWRlICJXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIKIAotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaD4KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIGNsYXNzIExvY2FsaXplZFN0cmlu
ZzsKIApAQCAtODEsNyArODAsNyBAQCBwcml2YXRlOgogTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRv
ciBMUENUU1RSKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
OworICAgICAgICByZXR1cm4gd2NoYXJGcm9tKG1fc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKTsKIAogICAgIG1fc3RyaW5nID0gbV9jZlN0cmluZzsKIApAQCAt
ODksNyArODgsNyBAQCBMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RTVFIoKSBjb25zdAog
ICAgICAgICBpZiAobV9zdHJpbmdbaV0gPT0gJ0AnICYmIChtX3N0cmluZ1tpIC0gMV0gPT0gJyUn
IHx8IChpID4gMiAmJiBtX3N0cmluZ1tpIC0gMV0gPT0gJyQnICYmIG1fc3RyaW5nW2kgLSAyXSA+
PSAnMScgJiYgbV9zdHJpbmdbaSAtIDJdIDw9ICc5JyAmJiBtX3N0cmluZ1tpIC0gM10gPT0gJyUn
KSkpCiAgICAgICAgICAgICBtX3N0cmluZy5yZXBsYWNlKGksIDEsICJzIik7CiAKLSAgICByZXR1
cm4gbV9zdHJpbmcuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCk7CisgICAg
cmV0dXJuIHdjaGFyRnJvbShtX3N0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSk7CiB9CiAKIHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmlu
ZGV4IDFmZTExNDVhZWMyMDA4OGE2ZmIxZmJmOThkYjAzMmMwNmQwOWIyODUuLmE3ZTAwNDFiNzQ2
Y2ZjZjdlMDFiYWM4MDAxODVlOTg3MTM0N2Y0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTI2LDE1ICsyNiwxNSBAQAogI2lu
Y2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIldlYk11dGFibGVVUkxSZXF1ZXN0LmgiCiAK
LSNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKICNp
bmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9ybURhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKICNp
ZiBVU0UoQ0YpCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUNGV2luLmg+CkBAIC0yNzIs
NyArMjcyLDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6aXNFcXVhbChfSW5fb3B0
XyBJV2ViVVJMUmVxdWVzdCogb3RoZXIsIF9PdXRfIEJPT0wKIAogSFJFU1VMVCBXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6YWRkVmFsdWUoX0luXyBCU1RSIHZhbHVlLCBfSW5fIEJTVFIgZmllbGQpCiB7
Ci0gICAgbV9yZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChXVEY6OkF0b21pY1N0cmluZyh2YWx1
ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSksIFN0cmluZyhmaWVsZCwgU3lzU3RyaW5nTGVuKGZpZWxk
KSkpOworICAgIG1fcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoQXRvbWljU3RyaW5nKHVjaGFy
RnJvbSh2YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkpLCBTdHJpbmcoZmllbGQsIFN5c1N0cmlu
Z0xlbihmaWVsZCkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAppbmRleCAzZmY4MWNmMjA4OWRlNjY4MGVjYTM4NTZmNTczYzIyOTUxNzQ4ZjBh
Li4yYmE3YTU0ZDg4ZTljOThkNDgyNjBiNmY4ZTQ0N2QzZWMxMTJhYmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTY5LDEzICsxNjksMjUgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93
c1RvdWNoLmg+CiAjaW5jbHVkZSA8Y29tZGVmLmg+CisjaW5jbHVkZSA8Y29tdXRpbC5oPgogI2lu
Y2x1ZGUgPGQyZDEuaD4KKyNpbmNsdWRlIDxkaW1tLmg+CisjaW5jbHVkZSA8b2xlYWNjLmg+Cisj
aW5jbHVkZSA8c2hsb2JqLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3aW5kb3dz
eC5oPgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNp
bmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+
CiAjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAtMjA1LDE4ICsyMTcsNiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnVsbFNjcmVlbkNvbnRyb2xsZXIuaD4KICNlbmRpZgogCi0jaW5jbHVk
ZSA8U2hsT2JqLmg+Ci0jaW5jbHVkZSA8Y29tdXRpbC5oPgotI2luY2x1ZGUgPGRpbW0uaD4KLSNp
bmNsdWRlIDxvbGVhY2MuaD4KLSNpbmNsdWRlIDx3Y2hhci5oPgotI2luY2x1ZGUgPHdpbmRvd3N4
Lmg+Ci0jaW5jbHVkZSA8d2ludXNlci5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+Ci0jaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KLQogI2RlZmluZSBXRUJL
SVRfRFJBV0lORyA0CiAKIC8vIFNvZnQgbGluayBmdW5jdGlvbnMgZm9yIGdlc3R1cmVzIGFuZCBw
YW5uaW5nIGZlZWRiYWNrCkBAIC0yNTYsNyArMjU2LDcgQEAgV2ViVmlldyoga2l0KFBhZ2UqIHBh
Z2UpCiAKIHN0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKEJTVFIgYnN0
cikKIHsKLSAgICByZXR1cm4gQXRvbWljU3RyaW5nKGJzdHIsIFN5c1N0cmluZ0xlbihic3RyKSk7
CisgICAgcmV0dXJuIEF0b21pY1N0cmluZyh1Y2hhckZyb20oYnN0ciksIFN5c1N0cmluZ0xlbihi
c3RyKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRvU3RyaW5nKEJTVFIgYnN0cikKQEAg
LTE1OTgsMTMgKzE1OTgsMTMgQEAgc3RhdGljIEhNRU5VIGNyZWF0ZUNvbnRleHRNZW51RnJvbUl0
ZW1zKGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICAgICAgc3dpdGNo
IChpdGVtLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFjdGlvblR5cGU6CiAgICAgICAgIGNhc2Ug
Q2hlY2thYmxlQWN0aW9uVHlwZToKLSAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFn
cyB8IE1GX1NUUklORywgaXRlbS5hY3Rpb24oKSwgaXRlbS50aXRsZSgpLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51
LCBmbGFncyB8IE1GX1NUUklORywgaXRlbS5hY3Rpb24oKSwgd2NoYXJGcm9tKGl0ZW0udGl0bGUo
KS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgU2VwYXJhdG9yVHlwZToKICAgICAgICAgICAgIDo6QXBwZW5k
TWVudShtZW51LCBmbGFncyB8IE1GX1NFUEFSQVRPUiwgaXRlbS5hY3Rpb24oKSwgbnVsbHB0cik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdWJtZW51VHlwZToKLSAgICAgICAg
ICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1BPUFVQLCAoVUlOVF9QVFIpY3JlYXRl
Q29udGV4dE1lbnVGcm9tSXRlbXMoaXRlbS5zdWJNZW51SXRlbXMoKSksIGl0ZW0udGl0bGUoKS5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAgICAgICA6OkFw
cGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9QT1BVUCwgKFVJTlRfUFRSKWNyZWF0ZUNvbnRleHRN
ZW51RnJvbUl0ZW1zKGl0ZW0uc3ViTWVudUl0ZW1zKCkpLCB3Y2hhckZyb20oaXRlbS50aXRsZSgp
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTMyMzUsNyArMzIzNSw3IEBAIHZvaWQgV2ViVmll
dzo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAgICAgIGluZm8udUZsYWdz
ID0gVFRGX0lESVNIV05EOwogICAgICAgICBpbmZvLnVJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUlO
VF9QVFI+KG1fdmlld1dpbmRvdyk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gdG9vbFRpcENoYXJh
Y3RlcnMgPSBtX3Rvb2xUaXAuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0
YWluIGJ1ZmZlciBsb25nIGVub3VnaCB0byBtYWtlIHRoZSBTZW5kTWVzc2FnZSBjYWxsCi0gICAg
ICAgIGluZm8ubHBzelRleHQgPSBjb25zdF9jYXN0PFVDaGFyKj4odG9vbFRpcENoYXJhY3RlcnMu
ZGF0YSgpKTsKKyAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KHdj
aGFyRnJvbSh0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpKTsKICAgICAgICAgOjpTZW5kTWVzc2Fn
ZShtX3Rvb2xUaXBId25kLCBUVE1fVVBEQVRFVElQVEVYVCwgMCwgcmVpbnRlcnByZXRfY2FzdDxM
UEFSQU0+KCZpbmZvKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0pTQ09ubHkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKaW5kZXgg
NTBkZjAzZWI2MDA0NGVhMDc4ZmVhYzNiNTdjMmJlOWM3NmE5YTdmMS4uOTQ3NmFkYzAwYzY0ZGRj
NjlhNmE5Yzg1NjE4ZTAxNzY4NDgxMTA0NCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlv
bnNKU0NPbmx5LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQpA
QCAtOTcsOSArOTcsNiBAQCBlbmRpZiAoKQogCiBpZiAoTk9UIEFQUExFKQogICAgIGZpbmRfcGFj
a2FnZShJQ1UgUkVRVUlSRUQpCi0gICAgaWYgKFdJTjMyKQotICAgICAgICBhZGRfZGVmaW5pdGlv
bnMoLURVQ0hBUl9UWVBFPXdjaGFyX3QpCi0gICAgZW5kaWYgKCkKIGVsc2UgKCkKICAgICBhZGRf
ZGVmaW5pdGlvbnMoLURVX0RJU0FCTEVfUkVOQU1JTkc9MSAtRFVfU0hPV19DUExVU1BMVVNfQVBJ
PTApCiAgICAgc2V0KElDVV9MSUJSQVJJRVMgbGliaWN1Y29yZS5keWxpYikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4u
Y21ha2UKaW5kZXggYWUzYTllZmY2MmFjZDJjNzhjNGRmMjU2MjUwM2Y2YjAyZmViY2IwNi4uNjFm
YTQ4NWIyNWRlYjU1ZmU4MzNlNzI5NGMwZTE3OWVhNmY1OWNmOCAxMDA2NDQKLS0tIGEvU291cmNl
L2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21h
a2UKQEAgLTE1OCw3ICsxNTgsNiBAQCBzZXQoUEFMX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBzZXQo
V2ViS2l0TGVnYWN5X0xJQlJBUllfVFlQRSBTSEFSRUQpCiAKIGZpbmRfcGFja2FnZShJQ1UgUkVR
VUlSRUQpCi1hZGRfZGVmaW5pdGlvbnMoLURVQ0hBUl9UWVBFPXdjaGFyX3QpCiAKICMgSWYgPHdp
bnNvY2syLmg+IGlzIG5vdCBpbmNsdWRlZCBiZWZvcmUgPHdpbmRvd3MuaD4gcmVkZWZpbml0aW9u
IGVycm9ycyBvY2N1cgogIyB1bmxlc3MgX1dJTlNPQ0tBUElfIGlzIGRlZmluZWQgYmVmb3JlIDx3
aW5kb3dzLmg+IGlzIGluY2x1ZGVkCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggY2ExNTVlODI5MjZhZjE3NzQxOWVhMzUwNDRiMWYxOGU3MTUwZDZk
Yy4uNGMzOWUwN2Y1MmFjOTExNWVhMTM0MjQ3ZTc4MzkxMjNhODdjMjFlNSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisy
MDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAg
ICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3RvcGdhcCBhbmQgbGVhcm4g
dG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIERlbGV0ZSB3Y2hh
ciB0ZXN0cyAtLSB0aGVzZSB3ZXJlIE1TVkMtb25seSBhbmQgd2Ugd29uJ3QgYmUgdXNpbmcgU3Ry
aW5nOjpvcGVyYXRvcisgZ29pbmcgZm9yd2FyZCBhbnl3YXkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoZmluZEZvbnRGYWxsYmFj
ayk6CisgICAgICAgIChhZGRGb250RmFsbGJhY2tJZlByZXNlbnQpOgorICAgICAgICAocmVtb3Zl
Rm9udEZhbGxiYWNrSWZQcmVzZW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlV0aWw6Om1vZHVsZURpcmVjdG9yeSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpV
dGlsOjpjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVy
cyBhcyBuZWVkZWQuCisKIDIwMTktMDMtMDYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4K
IAogICAgICAgICBDb25zaWRlciBzdXBwb3J0aW5nIHRoZSBgcmVmZXJyZXJwb2xpY3lgIGF0dHJp
YnV0ZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IGRhZTVkZTc2MTA1NzZlNmU2MzgyNmFhZjZmNmI2OTBkYzhjYjFlNDMuLjUxNjFmZWI2YjU1MzQ0
Nzk4YjgzZTFjMzg1YzhmYTg1NmUwMDBkMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIldlYkNvcmVU
ZXN0U3VwcG9ydC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKICNpbmNsdWRlICJXb3Jr
UXVldWUuaCIKLQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVGVzdFJ1bm5lclV0aWxzLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0TGVnYWN5L1dlYktpdC5oPgpAQCAtNjcsNiArNjYsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
d2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgpAQCAtMTAzOCw3ICsxMDM4LDcg
QEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkK
ICAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFt
ZShwYXRoT3JVcmwpOwogCiAgICAgd2NoYXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOwotICAgIGlm
ICghX3dmdWxscGF0aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBfTUFYX1BBVEgpKQorICAgIGlmICghX3dmdWxscGF0
aChmdWxsUGF0aCwgd2NoYXJGcm9tKHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIF9NQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCiAgICAgaWYgKCE6OlBhdGhJc0RpcmVjdG9yeVcoZnVsbFBhdGgpKQpAQCAt
MTA2OSw3ICsxMDY5LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNo
YXIqIHBhdGhPclVybCkKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBwb3MgPSBw
b3NzaWJsZVBhdGhzLmJlZ2luKCk7IHBvcyAhPSBwb3NzaWJsZVBhdGhzLmVuZCgpOyArK3Bvcykg
ewogICAgICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoKnBvcywgInJlc291cmNlc1xcIik7CiAKLSAgICAgICAgaWYgKDo6UGF0aElz
RGlyZWN0b3J5VyhwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpKQorICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHdjaGFyRnJvbShw
YXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
KSkKICAgICAgICAgICAgIHJldHVybiBwYXRoVG9Gb250RmFsbGJhY2s7CiAgICAgfQogCkBAIC0x
MDgzLDcgKzEwODMsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoY29u
c3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogCiAgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAi
TWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKIAotICAgIGlmICghOjpQYXRoRmls
ZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0
YSgpKSkKKyAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKHdjaGFyRnJvbShmb250RmFsbGJhY2su
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgOjpzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihmb250RmFsbGJh
Y2suY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBzdGF0aWMg
dm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJh
Y2tQYXRoKQogCiAgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1m
YWxsYmFjay5jc3MiKTsKIAotICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNr
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICBpZiAoITo6UGF0
aEZpbGVFeGlzdHNXKHdjaGFyRnJvbShmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgOjpzZXRQZXJzaXN0
ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihudWxscHRyKTsKQEAgLTE1NDEsMTIgKzE1NDEsMTIg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBTdHJpbmcgZGVz
a3RvcE5hbWUgPSBtYWtlU3RyaW5nKCJkZXNrdG9wIiwgcHJvY2Vzc0lkKTsKICAgICBIREVTSyBk
ZXNrdG9wID0gbnVsbHB0cjsKIAotICAgIGF1dG8gd2luZG93c1N0YXRpb24gPSA6OkNyZWF0ZVdp
bmRvd1N0YXRpb24od2luZG93U3RhdGlvbk5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCksIENXRl9DUkVBVEVfT05MWSwgV0lOU1RBX0FMTF9BQ0NFU1MsIG51bGxwdHIp
OworICAgIGF1dG8gd2luZG93c1N0YXRpb24gPSA6OkNyZWF0ZVdpbmRvd1N0YXRpb24od2NoYXJG
cm9tKHdpbmRvd1N0YXRpb25OYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0
YSgpKSwgQ1dGX0NSRUFURV9PTkxZLCBXSU5TVEFfQUxMX0FDQ0VTUywgbnVsbHB0cik7CiAgICAg
aWYgKHdpbmRvd3NTdGF0aW9uKSB7CiAgICAgICAgIGlmICghOjpTZXRQcm9jZXNzV2luZG93U3Rh
dGlvbih3aW5kb3dzU3RhdGlvbikpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlNldFBy
b2Nlc3NXaW5kb3dTdGF0aW9uIGZhaWxlZCB3aXRoIGVycm9yICVsdVxuIiwgOjpHZXRMYXN0RXJy
b3IoKSk7CiAKLSAgICAgICAgZGVza3RvcCA9IDo6Q3JlYXRlRGVza3RvcChkZXNrdG9wTmFtZS5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
MCwgR0VORVJJQ19BTEwsIG51bGxwdHIpOworICAgICAgICBkZXNrdG9wID0gOjpDcmVhdGVEZXNr
dG9wKHdjaGFyRnJvbShkZXNrdG9wTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSksIG51bGxwdHIsIG51bGxwdHIsIDAsIEdFTkVSSUNfQUxMLCBudWxscHRyKTsKICAg
ICAgICAgaWYgKCFkZXNrdG9wKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQg
dG8gY3JlYXRlIGRlc2t0b3Agd2l0aCBlcnJvciAlbHVcbiIsIDo6R2V0TGFzdEVycm9yKCkpOwog
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdPcGVyYXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
T3BlcmF0b3JzLmNwcAppbmRleCA5YWJjYmIzYTg3ZDhjMDcyZDk2ZDA0MmRiZmYwYWFlNGNkN2M2
NmYxLi4wZTNiZjk4Zjg4MjE0ZmM0N2M5YjUzMzVmNzRiMDZkM2U1M2EyOTZkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKQEAgLTI1
MCw3OCArMjUwLDYgQEAgVEVTVChXVEYsIFN0cmluZ09wZXJhdG9ycykKICAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVy
YWwgKyBhdG9taWNTdHJpbmcgKyBsaXRlcmFsKTsKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBzdHJpbmdWaWV3ICsgKGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWlj
U3RyaW5nICsgbGl0ZXJhbCkpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChz
dHJpbmdWaWV3ICsgbGl0ZXJhbCkgKyAoc3RyaW5nICsgbGl0ZXJhbCkgKyAoYXRvbWljU3RyaW5n
ICsgbGl0ZXJhbCkpOwotCi0jaWYgQ09NUElMRVIoTVNWQykKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygxLCBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMSwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDEsIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmdWaWV3KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBzdHJpbmdW
aWV3ICsgTCJ3aWRlIHN0cmluZyIpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgc3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0KLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyAr
IEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5n
IiArIGF0b21pY1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChM
IndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNT
dHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcg
KyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoTCJ3aWRlIHN0cmlu
ZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWlj
U3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDAsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgTCJ3aWRlIHN0cmlu
ZyIgKyAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykpOwotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcp
ICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDAsIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBM
IndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgc3RyaW5n
VmlldyArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0
cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBz
dHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsg
c3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBzdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUg
c3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3Ry
aW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwot
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJp
bmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21p
Y1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmlu
ZyIgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmlu
ZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAo
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykg
KyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndp
ZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdW
aWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcgKyBMIndpZGUgc3RyaW5n
IikgKyAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRl
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MiwgTCJ3aWRlIHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJp
bmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBz
dHJpbmciICsgc3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5n
IiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmci
KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndp
ZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChhdG9taWNT
dHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0
cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiAr
IHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcg
KyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyAr
IEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9t
aWNTdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDIsIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nVmlldyArIEwi
d2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3
aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5n
VmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykgKyAoTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCBzdHJpbmdWaWV3ICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0
b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikp
OwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0
b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0
cmluZyIgKyAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiArIHN0cmlu
ZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBM
IndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgKEwid2lkZSBzdHJpbmciICsg
c3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikp
OwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsgTCJ3aWRl
IHN0cmluZyIpICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBM
IndpZGUgc3RyaW5nIikpOwotI2VuZGlmCiB9CiAKIFRFU1QoV1RGLCBDb25jYXRlbmF0ZUNoYXJh
Y3RlckFycmF5QW5kRW1wdHlTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9Q
bGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKaW5kZXggMmU1NDMwODgxMTFkMzFhNTk3ZWRmMWIzMDEy
YTkyNDZlOGVmMDFjYy4uYjJhMTk1MDc2YjI0OWVlN2NmNzI5MzA0MWI0OGMzNjE2ZDIzZTAwNCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNw
cApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPFNobHdhcGkuaD4KICNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93
aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogbmFt
ZXNwYWNlIFV0aWwgewpAQCAtNDAsMTIgKzM5LDEyIEBAIHN0YXRpYyBTdHJpbmcgbW9kdWxlRGly
ZWN0b3J5KCkKICAgICB3Y2hhcl90IGZpbGVuYW1lW2J1ZmZlckxlbmd0aF07CiAgICAgYXV0byBs
ZW4gPSBHZXRNb2R1bGVGaWxlTmFtZShudWxscHRyLCBmaWxlbmFtZSwgYnVmZmVyTGVuZ3RoKTsK
ICAgICBBU1NFUlQobGVuID4gMCk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUod2NoYXJUb1N0cmluZyhmaWxlbmFtZSwgbGVuKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmRpcmVjdG9yeU5hbWUoU3RyaW5nKGZpbGVuYW1lLCBsZW4pKTsKIH0KIAogV0tTdHJpbmdSZWYg
Y3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRoKCkKIHsKLSAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIFN0cmluZyhMIlRl
c3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmco
IlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CiAgICAgcmV0dXJuIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkMmYxOWQ3OTcxMjA3NWRiNTUzNmY5NWJm
ZWIwMjg5ZGQ0ZTZlNDYwLi4yOGE0MGI5MTc3OWEzMjRhZTAxMTYyM2ZiYTdlNjc2ODhiY2NhMWMy
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTktMDMtMDYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisg
ICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFy
biB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAgICAgICAgU3RvcCBjb21w
aWxpbmcgd2l0aCAtRFVDSEFSX1RZUEU9d2NoYXJfdC4KKwogMjAxOS0wMy0wNiAgRG9uIE9sbXN0
ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gRW5hYmxl
IGFkZGl0aW9uYWwgZXhwZXJpbWVudGFsIGZlYXR1cmVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363807</attachid>
            <date>2019-03-06 16:16:00 -0800</date>
            <delta_ts>2019-03-06 16:19:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195346-20190306161559.patch</filename>
            <type>text/plain</type>
            <size>113113</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmM3MzM1YWI4ZDQzNTQ0NmQyYTFiZTBjN2JhMGJlNzczMTU4ODliLi4xYmEzZTllMmQ4NTY3NmEx
NjllNDcxMzAzMmZkMmNjNWJlNDA4OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3Bn
YXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGN1cnJlbnRX
b3JraW5nRGlyZWN0b3J5KToKKyAgICAgICAgKGZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3Rl
bSk6CisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMgbmVlZGVkLgor
CiAyMDE5LTAzLTA1ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IG9wX3N3aXRjaF9jaGFyIGJyb2tlbiBmb3Igcm9wZSBzdHJpbmdzIGFmdGVyIEpTUm9wZVN0cmlu
ZyBsYXlvdXQgcmV3cml0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCAxYTliMTlkNzExOTVlYTZiNmEwNWNmYTY4NzIxMjI0NWRm
N2NlOTQwLi5lYjcxMjI3NDcwMDY0MzcwMzY3MTJjMTA3YWZhOGZkZjQyNzIzOTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3Rv
cGdhcCBhbmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oOgorICAgICAgICAoV1RGOjp3Y2hhckZyb20pOgorICAgICAgICAoV1RG
Ojp1Y2hhckZyb20pOgorICAgICAgICAoV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjp3Y2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
QWRkIHN0YXRpY19hc3NlcnQtZ3VhcmRlZCByZWludGVycHJldF9jYXN0IHdyYXBwZXJzIGZvciBn
b2luZyBiZXR3ZWVuIFVDaGFyKiBhbmQgd2NoYXJfdCouCisgICAgICAgIFJlcGxhY2UgZXhpc3Rp
bmcgdG9TdHJpbmcgaGVscGVycyB3aXRoIGEgU3RyaW5nKGNvbnN0IHdjaGFyX3QqKSBjb25zdHJ1
Y3Rvci4KKworICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaW5kRGF0YSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaW5hbFBhdGhOYW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmNyZWF0ZVN5bWJvbGljTGluayk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxl
dGVGaWxlKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om1vdmVGaWxlKToKKyAgICAgICAg
KFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAg
IChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUlt
cGw6OmdlbmVyYXRlVGVtcG9yYXJ5UGF0aCk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBs
OjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpoYXJkTGlua09yQ29weUZpbGUp
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkp
OgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpsb2Nh
bGVJbmZvKToKKyAgICAgICAgKiB3dGYvd2luL1BhdGhXYWxrZXIuY3BwOgorICAgICAgICAoV1RG
OjpQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAyLTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBXZWFrSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2NGU2OTZhODRlM2ZjMjVl
ZTFlYzAzNjExYjY4ODhjM2M0YjA5Y2IuLmVmNzVjMmU2YjQ3MTRmYzZkM2RiZDJhYjAyY2QzNmQy
ZGE0OTBjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOS0wMy0wNiAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3Zl
IC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFy
MTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRMaW5rZWRGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaW5rZWRGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlOjpmaWxsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb3dubG9hZEJ1bmRsZTo6YXBwZW5kUmVzdW1lRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpEb3dubG9hZEJ1bmRsZTo6ZXh0cmFjdFJlc3VtZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMQ0lERnJvbUxv
Y2FsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkxDSURGcm9tTG9jYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZVdpbjo6Z2V0TG9jYWxlSW5mb1N0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QlN0cmluZzo6QlN0
cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRXZWJMb2NEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZURlc2NyaXB0b3JEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDRkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdMYWJlbEZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBl
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TU0xL
ZXlHZW5lcmF0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsbEZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJz
IGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBBc3NlcnRpb24gRmFpbGVkOiBtX2RhdGFiYXNlUXVldWUuaXNLaWxsZWQo
KSBpbiBVbmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlEQkRhdGFiYXNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
OWIxYTZkMTM4NTE4MTg4NjI1NGVhZDBkMTBkOThjOTgzMWJiZjgyZi4uMzMyNTA1NzRlM2NlYWU0
ODFiODIzMWVjZTJlMjJkOTgyZmJhMDE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
OS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAg
ICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRv
IGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMpOgor
ICAgICAgICAqIFBsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpN
b2R1bGU6OmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xh
dW5jaGVyV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVNZW51SXRlbSk6CisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0VG9vbFRp
cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5k
bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJzIGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzg0
OTApOiBZb3VUdWJlLmNvbTogUmV0dXJuaW5nIFBpUCB0byBTYWZhcmkgYWZ0ZXIgc2xlZXBpbmcg
ZGV2aWNlIGxvc2VzIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA3ZTgyN2I1
YmY3NDFjNGNjNzgzNmNlMjdkNzUzNTAwNGQxNzhkZjUzLi4wZDU0MDY3Mzc3Zjk2ZDk1MDU3MDk2
OGU2ZGRkYjQ0YzNmZjc0MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTggQEAKKzIwMTktMDMtMDYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2Fw
IGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAg
KEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0cmlidXRlKToKKyAgICAgICAgKiBDT01Qcm9wZXJ0eUJh
Zy5oOgorICAgICAgICAoSGFzaFR5cGU+OjpHZXRQcm9wZXJ0eUluZm8pOgorICAgICAgICAoSGFz
aFR5cGU+OjpMb2FkT2JqZWN0KToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAg
ICAgIChET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTU5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01F
bGVtZW50Ojpmb250KToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChE
T01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAoRE9NSFRNTElu
cHV0RWxlbWVudDo6cmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlKToKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsdWdpblBhdGhz
RnJvbVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXRQbHVn
aW5QYXRoc0luRGlyZWN0b3JpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTW96aWxs
YVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFdpbmRvd3NNZWRpYVBs
YXllclBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRBZG9iZUFjcm9iYXRQ
bHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSmF2YVBsdWdpbkRpcmVjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OmFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFZlcnNpb25J
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlUG9z
dFJlYWRGaWxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrR3JhbW1hck9mU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0
ZVdpbmRvd1RpdGxlKToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6ZmluZEZyYW1lTmFtZWQpOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RTVFIgY29uc3QpOgorICAg
ICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxS
ZXF1ZXN0OjphZGRWYWx1ZSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgICh0b0F0
b21pY1N0cmluZyk6CisgICAgICAgIChjcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyk6CisgICAg
ICAgIChXZWJWaWV3OjpzZXRUb29sVGlwKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAzLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIFByb2dyYW1tYXRpYyBwYXN0ZSBhY2Nlc3Mgc2hvdWxkIGJl
IGdyYW50ZWQgd2hlbiBjb3B5aW5nIGFuZCBwYXN0aW5nIHdpdGhpbiB0aGUgc2FtZSBvcmlnaW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZTU1MGE3MjQ0YjY0MWQyODkxZWE0MTNkM2FkYjljZWNl
MTRiOGE3ZC4uOGNhZGI5NmE0MDZjYTg2YWY1ZGRlYzIwYWQ1MTVkMTVlNmJiYTFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTc0OCw3ICs3NDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RGlyZWN0
b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKQogICAgIC8vIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmMzgxNDA3LmFzcHgK
ICAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVyKGJ1ZmZlckxlbmd0aCk7CiAgICAgRFdPUkQgbGVu
Z3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3Ro
LCBidWZmZXIuZGF0YSgpKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0
cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsKTsKKyAgICBTdHJpbmcg
ZGlyZWN0b3J5U3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOwog
ICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxw
YXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2MiwxNSArMTA2MiwxNCBAQCBzdGF0
aWMgYm9vbCBmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgVmVjdG9yJiBidWZmZQogI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gaHR0cHM6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjUyNDcuYXNw
eCNtYXhwYXRoCiAgICAgLy8gVXNlIGxvbmcgVU5DIHRvIHBhc3MgdGhlIGxvbmcgcGF0aCBuYW1l
IHRvIHRoZSBXaW5kb3dzIEFQSXMuCi0gICAgU3RyaW5nIGxvbmdVTkNQYXRoTmFtZSA9IFdURjo6
bWFrZVN0cmluZygiXFxcXD9cXCIsIGZpbGVOYW1lKTsKLSAgICBhdXRvIHBhdGhOYW1lID0gc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGxvbmdVTkNQYXRoTmFtZSk7CisgICAgYXV0byBwYXRo
TmFtZSA9IG1ha2VTdHJpbmcoIlxcXFw/XFwiLCBmaWxlTmFtZSkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKTsKICAgICBzdHJ1Y3QgX3N0YXQgc3RhdHVzIHsgfTsKLSAgICBpZiAoX3dz
dGF0KHBhdGhOYW1lLmRhdGEoKSwgJnN0YXR1cykpCisgICAgaWYgKF93c3RhdCh3Y2hhckZyb20o
cGF0aE5hbWUuZGF0YSgpKSwgJnN0YXR1cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoKHN0YXR1cy5zdF9tb2RlICYgU19JRk1UKSAhPSBTX0lGUkVHKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBGSUxFKiBmID0gX3dmb3BlbihwYXRoTmFtZS5kYXRhKCksIEwicmIiKTsK
KyAgICBGSUxFKiBmID0gX3dmb3Blbih3Y2hhckZyb20ocGF0aE5hbWUuZGF0YSgpKSwgTCJyYiIp
OwogI2Vsc2UKICAgICBhdXRvIHBhdGhOYW1lID0gZmlsZU5hbWUudXRmOCgpOwogICAgIHN0cnVj
dCBzdGF0IHN0YXR1cyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggZmEwZmI0MmUwN2VmNDM2YTVjYzA4MDA2ZTZkZDMyZGI3
MGMzZWM0Ny4uNzNlZWEzMWYxMjZkNDdhOWI5MDk2NDg0OTYyY2I0NDk5ZjcxZDZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC0xMDksNyArMTA4LDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMK
ICAgICAgICAgICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwog
ICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7
CiAgICAgICAgICAgICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8g
dGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0
YW5kYXJkTmFtZTsKLSAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcod2luVGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgIFN0cmluZyB0
aW1lWm9uZU5hbWUod2luVGltZVpvbmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3Qg
dG0gZ3RtID0gdDsKICAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCmluZGV4IGFhNWM5ZmNlNWRjNmFhOGNiMTA2ZjMxYTAzMzIwZmE1MTJhYzky
ZjIuLmZhN2QxNDhkYjFiMDY2Yzg3NjdjNjZhOTI5ZmI3ZWU0YzQ5NzJkMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaApAQCAtMzQsNiArMzQsMTEgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4K
ICNlbmRpZgogCisjaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
VEYgewogCiAvLyBEZWNsYXJhdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKQEAgLTMzMCw2ICsz
MzUsMTQgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdDsKICNlbmRp
ZgogCisjaWYgT1MoV0lORE9XUykgJiYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNTkKKyAg
ICBTdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAg
ICAgICA6IFN0cmluZyh1Y2hhckZyb20oY2hhcmFjdGVycyksIGxlbmd0aCkgeyB9CisKKyAgICBT
dHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykKKyAgICAgICAgOiBTdHJpbmcodWNoYXJG
cm9tKGNoYXJhY3RlcnMpKSB7IH0KKyNlbmRpZgorCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVUNoYXIqLCBzaXplX3Qp
OwogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RhdGljIFN0cmluZyBtYWtl
OEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJh
cy5oIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaAppbmRleCBk
NDFmNDYyOTRkMzYwNGViNjA0Y2I3NDcwMTZjZTU0MzYxN2VkZGRmLi45MDYzNTUyZjhhMGE0M2Rj
ZmY2YzZjNjhjYjVmYmM0ZTQ4MDEwYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1dD
aGFyU3RyaW5nRXh0cmFzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE3IEtvbnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNDYgKzI2LDMzIEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSA8d2NoYXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQog
bmFtZXNwYWNlIFdURiB7CiAKLWlubGluZSBWZWN0b3I8d2NoYXJfdD4gc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoraW5saW5lIGNvbnN0IHdjaGFyX3Qq
IHdjaGFyRnJvbShjb25zdCBVQ2hhciogY2hhcmFjdGVycykKIHsKLSAgICBWZWN0b3I8d2NoYXJf
dD4gcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgcmVzdWx0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkgKyAxKTsKLQot
ICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciog
Y2hhcmFjdGVyczggPSBzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJpbmcuaW1wbCgpLT5sZW5ndGgoKTsgKytpKQotICAg
ICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoY2hhcmFjdGVyczhbaV0pOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNiA9IHN0
cmluZy5pbXBsKCktPmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChj
aGFyYWN0ZXJzMTYsIHN0cmluZy5pbXBsKCktPmxlbmd0aCgpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoMCk7Ci0gICAgfQorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdj
aGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIgaGF2
ZSB0aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgd2No
YXJfdCo+KGNoYXJhY3RlcnMpOworfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKK2lubGluZSB3Y2hh
cl90KiB3Y2hhckZyb20oVUNoYXIqIGNoYXJhY3RlcnMpCit7CisgICAgc3RhdGljX2Fzc2VydChz
aXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBV
Q2hhciBoYXZlIHRoZSBzYW1lIHNpemUiKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx3
Y2hhcl90Kj4oY2hhcmFjdGVycyk7CiB9CiAKLWlubGluZSBTdHJpbmcgd2NoYXJUb1N0cmluZyhj
b25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitpbmxpbmUgY29uc3Qg
VUNoYXIqIHVjaGFyRnJvbShjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQogewogICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2No
YXJfdCBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7Ci0gICAgcmV0dXJuIFN0cmluZyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihjaGFyYWN0ZXJzKTsKIH0KIAot
aW5saW5lIFN0cmluZyBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoY29uc3Qgd2NoYXJfdCog
Y2hhcmFjdGVycykKK2lubGluZSBVQ2hhciogdWNoYXJGcm9tKHdjaGFyX3QqIGNoYXJhY3RlcnMp
CiB7Ci0gICAgcmV0dXJuIHdjaGFyVG9TdHJpbmcoY2hhcmFjdGVycywgd2NzbGVuKGNoYXJhY3Rl
cnMpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNoYXIp
LCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6ZSIpOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFVDaGFyKj4oY2hhcmFjdGVycyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OnN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcjsK
LXVzaW5nIFdURjo6d2NoYXJUb1N0cmluZzsKLXVzaW5nIFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nOwordXNpbmcgV1RGOjp1Y2hhckZyb207Cit1c2luZyBXVEY6OndjaGFyRnJvbTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBkNjcyYWY2Mzc0NjkzY2YwNTIx
ZWMzNjg5Njg5Y2ViY2MwMmVkZTM4Li41Y2Q5OTM0ZGUzYTY0YTVjNjQyNmRlODM3MTRjMzUxMDYy
OGFkNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHN0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0g
MTE2NDQ0NzM2MDA7CiAKIHN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4z
Ml9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKIHsKLSAgICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0
RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJmZpbmREYXRh
KTsKKyAgICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcod2NoYXJGcm9tKHBhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAmZmluZERhdGEpOwogICAgIGlm
IChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBGaW5kQ2xvc2UoaGFuZGxlKTsKQEAgLTE1MiwxMyArMTUyLDEzIEBAIHN0YXRpYyBTdHJp
bmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKLSAgICBpZiAo
OjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7CisgICAgaWYgKDo6R2V0Rmlu
YWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSwgYnVm
ZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7CiAgICAgICAgIGNsb3Nl
RmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogICAgIGNsb3Nl
RmlsZShoYW5kbGUpOwogCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkp
OworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSkpOwog
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKQEAgLTIyMSw3
ICsyMjEsNyBAQCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5
bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29u
c3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCiB7
Ci0gICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGljTGlua1coc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKHN5bWJvbGljTGlua1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKHRhcmdldFBhdGgpLmRhdGEoKSwgMCk7CisgICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGlj
TGlua1cod2NoYXJGcm9tKHN5bWJvbGljTGlua1BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpLCB3Y2hhckZyb20odGFyZ2V0UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSksIDApOwogfQogCiBib29sIGZpbGVFeGlzdHMoY29uc3QgU3Ry
aW5nJiBwYXRoKQpAQCAtMjMzLDM3ICsyMzMsMzUgQEAgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0
cmluZyYgcGF0aCkKIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAg
U3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKLSAgICByZXR1cm4gISFEZWxldGVGaWxlVyhzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7CisgICAgcmV0dXJuICEhRGVs
ZXRlRmlsZVcod2NoYXJGcm9tKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpKSk7CiB9CiAKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgcmV0dXJuICEhUmVt
b3ZlRGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEo
KSk7CisgICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5Vyh3Y2hhckZyb20oZmlsZW5hbWUuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKIH0KIAogYm9vbCBtb3ZlRmls
ZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKIHsKICAgICBT
dHJpbmcgb2xkRmlsZW5hbWUgPSBvbGRQYXRoOwogICAgIFN0cmluZyBuZXdGaWxlbmFtZSA9IG5l
d1BhdGg7Ci0gICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihvbGRGaWxlbmFtZSkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobmV3
RmlsZW5hbWUpLmRhdGEoKSwgTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJTEVfUkVQTEFD
RV9FWElTVElORyk7CisgICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KHdjaGFyRnJvbShvbGRGaWxl
bmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIHdjaGFyRnJvbShu
ZXdGaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIE1PVkVG
SUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOwogfQogCiBTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjb21wb25lbnQpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwot
CiAgICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAxID4gYnVmZmVyLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nVmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVw
Y29udmVydChidWZmZXIuZGF0YSgpKTsKICAgICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAn
OwogCi0gICAgaWYgKCFQYXRoQXBwZW5kVyhidWZmZXIuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRhKCkpKQorICAgIGlmICghUGF0aEFwcGVuZFcod2No
YXJGcm9tKGJ1ZmZlci5kYXRhKCkpLCB3Y2hhckZyb20oY29tcG9uZW50LmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAot
ICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKLQorICAgIGJ1ZmZlci5z
aHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSkpOwogICAgIHJldHVybiBTdHJp
bmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKQEAgLTI3OSw5ICsyNzcsNyBAQCBTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3Rv
cjxTdHJpbmdWaWV3PiYgY29tcAogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBT
dHJpbmdWaWV3KHBhdGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotCi0gICAgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgYXV0byBjaGFyYWN0
ZXJzID0gd2NoYXJGcm9tKFN0cmluZ1ZpZXcocGF0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkp
OwogICAgIGludCBzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIGNoYXJhY3Rl
cnMsIHBhdGgubGVuZ3RoKCksIDAsIDAsIDAsIDApIC0gMTsKIAogICAgIGNoYXIqIGJ1ZmZlcjsK
QEAgLTI5Nyw3ICsyOTMsNyBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKLSAgICBpZiAoU0hDcmVhdGVEaXJl
Y3RvcnlFeCgwLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZnVsbFBhdGgpLmRhdGEoKSwg
MCkgIT0gRVJST1JfU1VDQ0VTUykgeworICAgIGlmIChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIHdj
aGFyRnJvbShmdWxsUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSks
IDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJy
b3IoKTsKICAgICAgICAgaWYgKGVycm9yICE9IEVSUk9SX0ZJTEVfRVhJU1RTICYmIGVycm9yICE9
IEVSUk9SX0FMUkVBRFlfRVhJU1RTKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgcGF0aCAlcyIsIHBhdGguYXNjaWkoKS5kYXRhKCkpOwpAQCAtMzE0LDcgKzMxMCw3
IEBAIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiAKIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9T
dHJpbmcoOjpQYXRoRmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRo
KS5kYXRhKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nKDo6UGF0aEZpbmRGaWxlTmFtZSh3Y2hhckZy
b20ocGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpKTsKIH0KIAog
U3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMzUwLDkgKzM0Niwx
MCBAQCBzdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQogc3RhdGljIFN0cmluZyBzdG9yYWdlRGly
ZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQogewogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVy
KE1BWF9QQVRIKTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVyUGF0aFcoMCwgcGF0aElkZW50
aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgYnVmZmVyLmRhdGEoKSkpKQorICAgIGlm
IChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENTSURMX0ZMQUdf
Q1JFQVRFLCAwLCAwLCB3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSkpKSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKwor
ICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSkpOwogICAg
IFN0cmluZyBkaXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiAKICAg
ICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBwbGUg
Q29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwpAQCAtMzk3LDcgKzM5NCw3IEBAIHN0YXRpYyBT
dHJpbmcgZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU3Ry
aW5nJik+JiBhY3Rpb24pCiAKICAgICAgICAgQVNTRVJUKHdjc2xlbih0ZW1wRmlsZSkgPT0gV1RG
X0FSUkFZX0xFTkdUSCh0ZW1wRmlsZSkgLSAxKTsKIAotICAgICAgICBwcm9wb3NlZFBhdGggPSBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBQ
YXRoKSwgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBGaWxlKSk7CisgICAgICAgIHBy
b3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmcodGVtcFBhdGgpLCBT
dHJpbmcodGVtcEZpbGUpKTsKICAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBicmVhazsKICAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0aCkpOwpA
QCAtNDExLDcgKzQwOCw3IEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIAogICAgIFN0cmluZyBwcm9wb3NlZFBhdGgg
PSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZoYW5kbGVdKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRQ
YXRoKSB7CiAgICAgICAgIC8vIHVzZSBDUkVBVEVfTkVXIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFu
IGV4aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCi0gICAgICAgIGhhbmRsZSA9IDo6Q3Jl
YXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHByb3Bvc2VkUGF0aCkuZGF0YSgp
LCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVXLCBGSUxFX0FU
VFJJQlVURV9OT1JNQUwsIDApOworICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHdjaGFy
RnJvbShwcm9wb3NlZFBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
LCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVXLCBGSUxFX0FU
VFJJQlVURV9OT1JNQUwsIDApOwogCiAgICAgICAgIHJldHVybiBpc0hhbmRsZVZhbGlkKGhhbmRs
ZSkgfHwgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFEWV9FWElTVFM7CiAgICAgfSk7CkBA
IC00NDIsNyArNDM5LDcgQEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgfQogCiAgICAgU3RyaW5nIGRlc3RpbmF0
aW9uID0gcGF0aDsKLSAgICByZXR1cm4gQ3JlYXRlRmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVzaXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBj
cmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworICAgIHJldHVy
biBDcmVhdGVGaWxlKHdjaGFyRnJvbShkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSksIGRlc2lyZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25E
aXNwb3NpdGlvbiwgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKIH0KIAogdm9pZCBjbG9zZUZp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCkBAIC01MDEsNyArNDk4LDcgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQogCiBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKLSAgICByZXR1cm4gISE6OkNvcHlGaWxlKHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzb3VyY2UpLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRhKCksIFRSVUUpOworICAgIHJldHVybiAhITo6Q29w
eUZpbGUod2NoYXJGcm9tKHNvdXJjZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSksIHdjaGFyRnJvbShkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSksIFRSVUUpOwogfQogCiBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCkKQEAgLTU3Miw3ICs1NjksNyBAQCBib29sIGRlbGV0ZU5vbkVtcHR5RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKICAgICBTSEZJTEVPUFNUUlVDVCBkZWxl
dGVPcGVyYXRpb24gPSB7CiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgIEZPX0RFTEVURSwKLSAg
ICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEoKSwK
KyAgICAgICAgd2NoYXJGcm9tKGRpcmVjdG9yeVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpLAogICAgICAgICBMIiIsCiAgICAgICAgIEZPRl9OT0NPTkZJUk1BVElP
TiB8IEZPRl9OT0VSUk9SVUkgfCBGT0ZfU0lMRU5ULAogICAgICAgICBmYWxzZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwCmluZGV4IDMwOWNhNjYyN2VkOGFmYjMwODY3MzE1ODY0ZmY4YzNl
NjIwZGFkNTEuLmZjMWZjNTI3NmVkYzE5NjNhYjdmNDBhMTEwZWQzOGI1MGY0OGE2ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvd2luL0xhbmd1YWdlV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDQsNyArNDUsNyBAQCBzdGF0aWMgU3RyaW5nIGxvY2Fs
ZUluZm8oTENUWVBFIGxvY2FsZVR5cGUsIGNvbnN0IFN0cmluZyYgZmFsbGJhY2spCiAgICAgICAg
IHJldHVybiBmYWxsYmFjazsKICAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsKICAgICBTdHJpbmcg
bG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2NhbGVDaGFycywgbG9j
YWxlTmFtZUJ1Zik7Ci0gICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZvKGxhbmdJRCwgbG9j
YWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOworICAgIGxvY2FsZUNoYXJzID0g
R2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIHdjaGFyRnJvbShsb2NhbGVOYW1lQnVm
KSwgbG9jYWxlQ2hhcnMpOwogICAgIGlmICghbG9jYWxlQ2hhcnMpCiAgICAgICAgIHJldHVybiBm
YWxsYmFjazsKICAgICBpZiAobG9jYWxlTmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdh
bGtlci5jcHAKaW5kZXggYzZkM2Y5NzA2MDQ5Y2IxM2M5ZWY2MzU1ZWJiNjNhNTA3OTg1MDIyMS4u
ZTc2NWY5NzRlN2ZlYTMzYzAyNzg3Y2UxMmQ1NmRhZWEzOTllNGMwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Q
YXRoV2Fsa2VyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIFBhdGhXYWxr
ZXI6OlBhdGhXYWxrZXIoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcGF0
dGVybikKIHsKICAgICBTdHJpbmcgcGF0aCA9IGRpcmVjdG9yeSArICJcXCIgKyBwYXR0ZXJuOwot
ICAgIG1faGFuZGxlID0gOjpGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIocGF0aCkuZGF0YSgpLCAmbV9kYXRhKTsKKyAgICBtX2hhbmRsZSA9IDo6RmluZEZpcnN0Rmls
ZVcod2NoYXJGcm9tKHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
LCAmbV9kYXRhKTsKIH0KIAogUGF0aFdhbGtlcjo6flBhdGhXYWxrZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRl
eCAwNzk0ODgxMzY3ZTAyMjE0NThhMGU3YjBhYzQzZDY3NDQ2ODlhNDUwLi5kMTRmMmQ1ZTQ3M2E3
YTA3MzVjNjM2MmZjNjBiNTNhOTc4OTFiOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMTEyLDcgKzExMiw3
IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kTGlua2VkRm9udHMoV0NIQVIqIGxpbmtlZEZv
bnRzLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvCiAgICAgICAgIHVuc2lnbmVkIGogPSBpOwogICAg
ICAgICB3aGlsZSAoaiA8IGxlbmd0aCAmJiBsaW5rZWRGb250c1tqXSkKICAgICAgICAgICAgIGor
KzsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQod2NoYXJUb1N0cmluZyhsaW5rZWRGb250cyArIGks
IGogLSBpKSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKFN0cmluZyhsaW5rZWRGb250cyArIGks
IGogLSBpKSk7CiAgICAgICAgIGkgPSBqICsgMTsKICAgICB9CiB9CkBAIC0xMzEsMTQgKzEzMSwx
NCBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4qIGdldExpbmtlZEZvbnRzKFN0cmluZyYg
ZmFtaWx5KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgRFdPUkQgbGlua2VkRm9udHNC
dWZmZXJTaXplID0gMDsKLSAgICBpZiAoOjpSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmYW1pbHkpLmRhdGEoKSwgMCwgbnVsbHB0ciwgbnVs
bHB0ciwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsK
KyAgICBpZiAoOjpSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIHdjaGFyRnJvbShmYW1pbHku
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCBudWxscHRyLCBudWxs
cHRyLCAmbGlua2VkRm9udHNCdWZmZXJTaXplKSA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIlRoZSBmb250IGxpbmsga2V5ICVzIGRvZXMgbm90IGV4aXN0
IGluIHRoZSByZWdpc3RyeS4iLCBmYW1pbHkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciB1bnNpZ25lZCBJ
bml0aWFsQnVmZmVyU2l6ZSB7IDI1NiAvIHNpemVvZihXQ0hBUikgfTsKICAgICBWZWN0b3I8V0NI
QVIsIEluaXRpYWxCdWZmZXJTaXplPiBsaW5rZWRGb250cyhyb3VuZFVwVG9NdWx0aXBsZU9mPHNp
emVvZihXQ0hBUik+KGxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgLyBzaXplb2YoV0NIQVIpKTsKLSAg
ICBpZiAoOjpSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihmYW1pbHkpLmRhdGEoKSwgMCwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxCWVRF
Kj4obGlua2VkRm9udHMuZGF0YSgpKSwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgPT0gRVJST1Jf
U1VDQ0VTUykgeworICAgIGlmICg6OlJlZ1F1ZXJ5VmFsdWVFeChmb250TGlua0tleSwgd2NoYXJG
cm9tKGZhbWlseS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIDAsIG51
bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KGxpbmtlZEZvbnRzLmRhdGEoKSksICZsaW5r
ZWRGb250c0J1ZmZlclNpemUpID09IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoID0gbGlua2VkRm9udHNCdWZmZXJTaXplIC8gc2l6ZW9mKFdDSEFSKTsKICAgICAgICAg
YXBwZW5kTGlua2VkRm9udHMobGlua2VkRm9udHMuZGF0YSgpLCBsZW5ndGgsIHJlc3VsdCk7CiAg
ICAgfQpAQCAtMjg1LDcgKzI4NSw3IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZh
bGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyCiAgICAgICAg
IFNlbGVjdE9iamVjdChoZGMsIGhmb250KTsKICAgICAgICAgV0NIQVIgbmFtZVtMRl9GQUNFU0la
RV07CiAgICAgICAgIEdldFRleHRGYWNlKGhkYywgTEZfRkFDRVNJWkUsIG5hbWUpOwotICAgICAg
ICBmYW1pbHlOYW1lID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG5hbWUpOworICAgICAg
ICBmYW1pbHlOYW1lID0gU3RyaW5nKG5hbWUpOwogCiAgICAgICAgIGlmIChjb250YWluc0NoYXJh
Y3RlciB8fCBjdXJyZW50Rm9udENvbnRhaW5zQ2hhcmFjdGVyKGhkYywgY2hhcmFjdGVyKSkKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxGb250PiBGb250Q2Fj
aGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3JpcHRpb24mIGRl
c2NyCiAKICAgICAgICAgTE9HRk9OVCBsb2dGb250OwogICAgICAgICBsb2dGb250LmxmQ2hhclNl
dCA9IERFRkFVTFRfQ0hBUlNFVDsKLSAgICAgICAgU3RyaW5nVmlldyhsaW5rZWRGb250cy0+YXQo
bGlua2VkRm9udEluZGV4KSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQobG9nRm9udC5sZkZh
Y2VOYW1lKTsKKyAgICAgICAgU3RyaW5nVmlldyhsaW5rZWRGb250cy0+YXQobGlua2VkRm9udElu
ZGV4KSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGxvZ0ZvbnQubGZGYWNl
TmFtZSkpOwogICAgICAgICBsb2dGb250LmxmRmFjZU5hbWVbbGlua2VkRm9udHMtPmF0KGxpbmtl
ZEZvbnRJbmRleCkubGVuZ3RoKCldID0gMDsKICAgICAgICAgRW51bUZvbnRGYW1pbGllc0V4KGhk
YywgJmxvZ0ZvbnQsIGxpbmtlZEZvbnRFbnVtUHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+
KCZoZm9udCksIDApOwogICAgICAgICBsaW5rZWRGb250SW5kZXgrKzsKQEAgLTMzMCw3ICszMzAs
NyBAQCBWZWN0b3I8U3RyaW5nPiBGb250Q2FjaGU6OnN5c3RlbUZvbnRGYW1pbGllcygpCiAKIFJl
ZlB0cjxGb250PiBGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBMT0dGT05UJiBmb250LCBB
dG9taWNTdHJpbmcmIG91dEZvbnRGYW1pbHlOYW1lKQogewotICAgIEF0b21pY1N0cmluZyBmYW1p
bHlOYW1lID0gd2NoYXJUb1N0cmluZyhmb250LmxmRmFjZU5hbWUsIHdjc25sZW4oZm9udC5sZkZh
Y2VOYW1lLCBMRl9GQUNFU0laRSkpOworICAgIEF0b21pY1N0cmluZyBmYW1pbHlOYW1lKHVjaGFy
RnJvbShmb250LmxmRmFjZU5hbWUpLCB3Y3NubGVuKGZvbnQubGZGYWNlTmFtZSwgTEZfRkFDRVNJ
WkUpKTsKICAgICBSZWZQdHI8Rm9udD4gZm9udERhdGEgPSBmb250Rm9yRmFtaWx5KGZvbnREZXNj
cmlwdGlvbiwgZmFtaWx5TmFtZSk7CiAgICAgaWYgKGZvbnREYXRhKQogICAgICAgICBvdXRGb250
RmFtaWx5TmFtZSA9IGZhbWlseU5hbWU7CkBAIC00ODQsNyArNDg0LDcgQEAgc3RhdGljIEdESU9i
amVjdDxIRk9OVD4gY3JlYXRlR0RJRm9udChjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgTE9O
RyBkZXNpcmVkV2UKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5sZkNoYXJTZXQg
PSBERUZBVUxUX0NIQVJTRVQ7CiAgICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1pbHkgPSBTdHJp
bmdWaWV3KGZhbWlseSkuc3Vic3RyaW5nKDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihMRl9GQUNF
U0laRSAtIDEpKTsKLSAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZl
cnQobG9nRm9udC5sZkZhY2VOYW1lKTsKKyAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGxvZ0ZvbnQubGZGYWNlTmFtZSkpOwogICAgIGxvZ0Zv
bnQubGZGYWNlTmFtZVt0cnVuY2F0ZWRGYW1pbHkubGVuZ3RoKCldID0gMDsKICAgICBsb2dGb250
LmxmUGl0Y2hBbmRGYW1pbHkgPSAwOwogCkBAIC01OTgsNyArNTk4LDcgQEAgVmVjdG9yPEZvbnRT
ZWxlY3Rpb25DYXBhYmlsaXRpZXM+IEZvbnRDYWNoZTo6Z2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxp
dGllc0luRmFtaWwKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5sZkNoYXJTZXQg
PSBERUZBVUxUX0NIQVJTRVQ7CiAgICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1pbHkgPSBTdHJp
bmdWaWV3KGZhbWlseU5hbWUpLnN1YnN0cmluZygwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTEZf
RkFDRVNJWkUgLSAxKSk7Ci0gICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBj
b252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CisgICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICBs
b2dGb250LmxmRmFjZU5hbWVbdHJ1bmNhdGVkRmFtaWx5Lmxlbmd0aCgpXSA9IDA7CiAgICAgbG9n
Rm9udC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUNhaXJvLmNwcAppbmRleCBhNTdlNjliMmE3ZGE2ZTYyNTAyMWZjMmU4MTg2MDRhOGIzNDU4OGJi
Li5hOTY5MmIzMWE1MzQzZDExZDQ5NTU4Njg3ZDQ0MzdlZmMwMzY5YzExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtNDcsNyArNDcsNyBAQCBGb250UGxhdGZv
cm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJgogCiAgICAgTE9HRk9OVCBsb2dGb250OwogICAgIG1lbXNldCgmbG9nRm9u
dCwgMCwgc2l6ZW9mKExPR0ZPTlQpKTsKLSAgICB3Y3NuY3B5KGxvZ0ZvbnQubGZGYWNlTmFtZSwg
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fbmFtZSkuZGF0YSgpLCBMRl9GQUNFU0laRSAt
IDEpOworICAgIHdjc25jcHkobG9nRm9udC5sZkZhY2VOYW1lLCB3Y2hhckZyb20obV9uYW1lLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgTEZfRkFDRVNJWkUgLSAxKTsK
IAogICAgIGxvZ0ZvbnQubGZIZWlnaHQgPSAtc2l6ZTsKICAgICBpZiAocmVuZGVyaW5nTW9kZSA9
PSBGb250UmVuZGVyaW5nTW9kZTo6Tm9ybWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9X
aW4uY3BwCmluZGV4IDRhNTllMWJiYmZhMjEyMzVlYjBkZjY3YmYzMDc0YTczMTYzNzUzNmMuLjM4
Y2FhOGI5ZDliMmNkYjUyMWZiNTNjOTdlZGQ4ZDYwNDVjMjEyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQYWdl
VHJlZU5vZGVDYWlyb1dpbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkZvbnQu
aCIKICNpbmNsdWRlICJIV25kREMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJp
bmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw3ICs1MCw3IEBAIGJv
b2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkK
ICAgICBTZWxlY3RPYmplY3QoZGMsIGZvbnQucGxhdGZvcm1EYXRhKCkuaGZvbnQoKSk7CiAKICAg
ICBXT1JEIGxvY2FsR2x5cGhCdWZmZXJbR2x5cGhQYWdlOjpzaXplICogMl07Ci0gICAgRFdPUkQg
cmVzdWx0ID0gR2V0R2x5cGhJbmRpY2VzKGRjLCBidWZmZXIsIGJ1ZmZlckxlbmd0aCwgbG9jYWxH
bHlwaEJ1ZmZlciwgR0dJX01BUktfTk9ORVhJU1RJTkdfR0xZUEhTKTsKKyAgICBEV09SRCByZXN1
bHQgPSBHZXRHbHlwaEluZGljZXMoZGMsIHdjaGFyRnJvbShidWZmZXIpLCBidWZmZXJMZW5ndGgs
IGxvY2FsR2x5cGhCdWZmZXIsIEdHSV9NQVJLX05PTkVYSVNUSU5HX0dMWVBIUyk7CiAgICAgYm9v
bCBzdWNjZXNzID0gcmVzdWx0ICE9IEdESV9FUlJPUiAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmVzdWx0KSA9PSBidWZmZXJMZW5ndGg7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IEdseXBoUGFnZTo6c2l6ZTsgaSsrKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKaW5kZXggNzk5ZTM0
NzQwMzk0MDYzNTEwZTk1NGI2YWYzMDk5OGU3ZDI1ZTJhZC4uNDQyZGM0OGVmNWJhYWUzYWUzNTEx
YmFmZTc1Y2ZmNzAwMzhiM2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JY29uV2luLmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWZQdHI8SWNvbj4gSWNv
bjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAg
ICAgICAgIG1lbXNldCgmc2ZpLCAwLCBzaXplb2Yoc2ZpKSk7CiAKICAgICAgICAgU3RyaW5nIHRt
cEZpbGVuYW1lID0gZmlsZW5hbWVzWzBdOwotICAgICAgICBpZiAoIVNIR2V0RmlsZUluZm8oc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHRtcEZpbGVuYW1lKS5kYXRhKCksIDAsICZzZmksIHNp
emVvZihzZmkpLCBTSEdGSV9JQ09OIHwgU0hHRklfU0hFTExJQ09OU0laRSB8IFNIR0ZJX1NNQUxM
SUNPTikpCisgICAgICAgIGlmICghU0hHZXRGaWxlSW5mbyh3Y2hhckZyb20odG1wRmlsZW5hbWUu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCAmc2ZpLCBzaXplb2Yo
c2ZpKSwgU0hHRklfSUNPTiB8IFNIR0ZJX1NIRUxMSUNPTlNJWkUgfCBTSEdGSV9TTUFMTElDT04p
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
Y29uKHNmaS5oSWNvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uLmNwcAppbmRleCBjODQ4YjYxYjljNThkOGYyOWYxZWJiMzA5NmJjYTExNzJkZTFiMzI3
Li5hMjM2YTgzYzZiZTAyMGYxY2IwZWQxYzdkMzI1NjRmMDg5MmFlYmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtMTQyLDcgKzE0Miw3
IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgbWltZVR5cGVDYWNoZSgpCiAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKICAgICAgICAgQ0FM
UFdTVFIgbWltZVR5cGVBcnJheSA9IHByb3BWYXJNaW1lVHlwZUFycmF5LmNhbHB3c3RyOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZVR5cGVBcnJheS5jRWxlbXM7IGkrKykK
LSAgICAgICAgICAgIGNhY2hlZFR5cGVzLmdldCgpLmFkZChudWxsVGVybWluYXRlZFdDaGFyVG9T
dHJpbmcobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pKTsKKyAgICAgICAgICAgIGNhY2hlZFR5cGVz
LmdldCgpLmFkZChTdHJpbmcobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pKTsKICAgICB9CiAKICAg
ICBQcm9wVmFyaWFudENsZWFyKCZwcm9wVmFyTWltZVR5cGVBcnJheSk7CkBAIC00NzAsMTEgKzQ3
MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3RhcnRDcmVh
dGVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIHVybAogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBDT01QdHI8SVVua25vd24+IGNhbmNlbENvb2tpZTsKLSAgICBWZWN0b3I8d2NoYXJfdD4g
dXJsU291cmNlID0gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHVybCk7CisgICAgVmVjdG9y
PFVDaGFyPiB1cmxTb3VyY2UgPSB1cmwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsK
IAogICAgIEFzeW5jQ2FsbGJhY2sqIGNhbGxiYWNrID0gbmV3IEFzeW5jQ2FsbGJhY2sodGhpcywg
ZmFsc2UpOwogCi0gICAgaWYgKEZBSUxFRChtX3NvdXJjZVJlc29sdmVyLT5CZWdpbkNyZWF0ZU9i
amVjdEZyb21VUkwodXJsU291cmNlLmRhdGEoKSwgTUZfUkVTT0xVVElPTl9NRURJQVNPVVJDRSwg
bnVsbHB0ciwgJmNhbmNlbENvb2tpZSwgY2FsbGJhY2ssIG51bGxwdHIpKSkKKyAgICBpZiAoRkFJ
TEVEKG1fc291cmNlUmVzb2x2ZXItPkJlZ2luQ3JlYXRlT2JqZWN0RnJvbVVSTCh3Y2hhckZyb20o
dXJsU291cmNlLmRhdGEoKSksIE1GX1JFU09MVVRJT05fTUVESUFTT1VSQ0UsIG51bGxwdHIsICZj
YW5jZWxDb29raWUsIGNhbGxiYWNrLCBudWxscHRyKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCmluZGV4IDExMDQ1NDc2
ZGI0NjY2NWJlNWViMjI5M2ExODRlMWUwYTJiZjYzNWUuLjQ3NGM0ODYwZmYxMDA0NDA5OWI2YWYz
ZjliZmI5YjQwY2Q3ODhkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KLQorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgV1RGOjpV
bmljb2RlOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVW5pc2NyaWJlQ29udHJvbGxlcjo6aXRl
bWl6ZVNoYXBlQW5kUGxhY2UoY29uc3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBzdHJpbmdPCiAgICAg
bV9pdGVtcy5yZXNpemUoNik7CiAgICAgaW50IG51bUl0ZW1zID0gMDsKICAgICBIUkVTVUxUIHJj
ID0gU19PSzsKLSAgICB3aGlsZSAocmMgPSA6OlNjcmlwdEl0ZW1pemUoY3AsIGxlbmd0aCwgbV9p
dGVtcy5zaXplKCkgLSAxLCAmbV9jb250cm9sLCAmbV9zdGF0ZSwgbV9pdGVtcy5kYXRhKCksICZu
dW1JdGVtcykgPT0gRV9PVVRPRk1FTU9SWSkgeworICAgIHdoaWxlIChyYyA9IDo6U2NyaXB0SXRl
bWl6ZSh3Y2hhckZyb20oY3ApLCBsZW5ndGgsIG1faXRlbXMuc2l6ZSgpIC0gMSwgJm1fY29udHJv
bCwgJm1fc3RhdGUsIG1faXRlbXMuZGF0YSgpLCAmbnVtSXRlbXMpID09IEVfT1VUT0ZNRU1PUlkp
IHsKICAgICAgICAgbV9pdGVtcy5yZXNpemUobV9pdGVtcy5zaXplKCkgKiAyKTsKICAgICAgICAg
cmVzZXRDb250cm9sQW5kU3RhdGUoKTsKICAgICB9CkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBV
bmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZShjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuLCBTQ1JJ
UFRfSVRFTSBpdGVtLCBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZG8gewotICAg
ICAgICBzaGFwZVJlc3VsdCA9IFNjcmlwdFNoYXBlKGhkYywgZm9udERhdGEtPnNjcmlwdENhY2hl
KCksIHN0ciwgbGVuLCBnbHlwaHMuc2l6ZSgpLCAmaXRlbS5hLAorICAgICAgICBzaGFwZVJlc3Vs
dCA9IFNjcmlwdFNoYXBlKGhkYywgZm9udERhdGEtPnNjcmlwdENhY2hlKCksIHdjaGFyRnJvbShz
dHIpLCBsZW4sIGdseXBocy5zaXplKCksICZpdGVtLmEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2x5cGhzLmRhdGEoKSwgY2x1c3RlcnMuZGF0YSgpLCB2aXN1YWxBdHRyaWJ1
dGVzLmRhdGEoKSwgJmdseXBoQ291bnQpOwogICAgICAgICBpZiAoc2hhcGVSZXN1bHQgPT0gRV9Q
RU5ESU5HKSB7CiAgICAgICAgICAgICAvLyBUaGUgc2NyaXB0IGNhY2hlIGlzbid0IHByaW1lZCB3
aXRoIGVub3VnaCBpbmZvIHlldC4gIFdlIG5lZWQgdG8gc2VsZWN0IG91ciBIRk9OVCBpbnRvCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1
bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9h
ZEJ1bmRsZVdpbi5jcHAKaW5kZXggMzhmZDYwYjkyMGI2MTg0NzlkZTE2OGViYjdmNGUyOTZkYWVl
ODU5OC4uZGQ4NTIxM2FhNzg0M2JhZjM5NGYxNTEyZjNiZGQ3N2NlZjA1OTExOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVu
ZGxlV2luLmNwcApAQCAtNTksOSArNTksOSBAQCBib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3Qg
Y2hhciogcmVzdW1lQnl0ZXMsIHVpbnQzMl90IHJlc3VtZUxlbmd0aCwgY29uc3QgU3RyaQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgU3RyaW5nIG51bGxpZmllZFBhdGggPSBi
dW5kbGVQYXRoOworICAgIGF1dG8gbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGguY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKTsKICAgICBGSUxFKiBidW5kbGUgPSAwOwotICAgIGlmIChf
d2ZvcGVuX3MoJmJ1bmRsZSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG51bGxpZmllZFBh
dGgpLmRhdGEoKSwgVEVYVCgiYWIiKSkgfHwgIWJ1bmRsZSkgeworICAgIGlmIChfd2ZvcGVuX3Mo
JmJ1bmRsZSwgd2NoYXJGcm9tKG51bGxpZmllZFBhdGguZGF0YSgpKSwgVEVYVCgiYWIiKSkgfHwg
IWJ1bmRsZSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMgdG8g
YXBwZW5kIHJlc3VtZSBkYXRhIiwgYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05OCw5ICs5OCw5IEBAIGJvb2wgZXh0cmFjdFJlc3Vt
ZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8Y2hhcj4mIHJlc3VtZURhdGEp
CiAgICAgfQogCiAgICAgLy8gT3BlbiBhIGhhbmRsZSB0byB0aGUgYnVuZGxlIGZpbGUKLSAgICBT
dHJpbmcgbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGg7CisgICAgYXV0byBudWxsaWZpZWRQYXRo
ID0gYnVuZGxlUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIEZJTEUq
IGJ1bmRsZSA9IDA7Ci0gICAgaWYgKF93Zm9wZW5fcygmYnVuZGxlLCBzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIobnVsbGlmaWVkUGF0aCkuZGF0YSgpLCBURVhUKCJyK2IiKSkgfHwgIWJ1bmRs
ZSkgeworICAgIGlmIChfd2ZvcGVuX3MoJmJ1bmRsZSwgd2NoYXJGcm9tKG51bGxpZmllZFBhdGgu
ZGF0YSgpKSwgVEVYVCgicitiIikpIHx8ICFidW5kbGUpIHsKICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGdldCByZXN1bWUgZGF0YSIsIGJ1bmRsZVBhdGguYXNj
aWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKaW5kZXggMTUzMTVjYTczNWZm
MmU3YWI0MzUxNzFlNmMxYmRlNjAzNzMyY2JkZS4uOTUyNDZkNGEyOTQ4MzVlYzg2MDNiN2U5OTM5
NDc3NGM2NWYyMzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBMQ0lEIExDSURGcm9tTG9jYWxl
SW50ZXJuYWwoTENJRCB1c2VyRGVmYXVsdExDSUQsIGNvbnN0IFN0cmluZyYgdXNlckRlZmF1CiB7
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZXh0cmFjdExhbmd1YWdlQ29kZShsb2Nh
bGUpLCB1c2VyRGVmYXVsdExhbmd1YWdlQ29kZSkpCiAgICAgICAgIHJldHVybiB1c2VyRGVmYXVs
dExDSUQ7Ci0gICAgcmV0dXJuIExvY2FsZU5hbWVUb0xDSUQoc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKGxvY2FsZSkuZGF0YSgpLCAwKTsKKyAgICByZXR1cm4gTG9jYWxlTmFtZVRvTENJRCh3
Y2hhckZyb20obG9jYWxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwg
MCk7CiB9CiAKIHN0YXRpYyBMQ0lEIExDSURGcm9tTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlKQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKICAgICBjb25zdCBzaXplX3QgbGFuZ3VhZ2VDb2RlQnVm
ZmVyU2l6ZSA9IDk7CiAgICAgV0NIQVIgbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlW2xhbmd1YWdlQ29k
ZUJ1ZmZlclNpemVdOwogICAgIDo6R2V0TG9jYWxlSW5mbyhMT0NBTEVfVVNFUl9ERUZBVUxULCBM
T0NBTEVfU0lTTzYzOUxBTkdOQU1FLCBsb3dlcmNhc2VMYW5ndWFnZUNvZGUsIGxhbmd1YWdlQ29k
ZUJ1ZmZlclNpemUpOwotICAgIFN0cmluZyB1c2VyRGVmYXVsdExhbmd1YWdlQ29kZSA9IG51bGxU
ZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhsb3dlcmNhc2VMYW5ndWFnZUNvZGUpOworICAgIFN0cmlu
ZyB1c2VyRGVmYXVsdExhbmd1YWdlQ29kZShsb3dlcmNhc2VMYW5ndWFnZUNvZGUpOwogCiAgICAg
TENJRCBsY2lkID0gTENJREZyb21Mb2NhbGVJbnRlcm5hbChMT0NBTEVfVVNFUl9ERUZBVUxULCB1
c2VyRGVmYXVsdExhbmd1YWdlQ29kZSwgU3RyaW5nKGxvY2FsZSkpOwogICAgIGlmICghbGNpZCkK
QEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIExvY2FsZVdpbjo6Z2V0TG9jYWxlSW5mb1N0cmluZyhM
Q1RZUEUgdHlwZSkKICAgICBpZiAoYnVmZmVyU2l6ZVdpdGhOVUwgPD0gMCkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGJ1ZmZlclNpemVXaXRoTlVM
KTsKLSAgICA6OkdldExvY2FsZUluZm8obV9sY2lkLCB0eXBlLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXJTaXplV2l0aE5VTCk7CisgICAgOjpHZXRMb2NhbGVJbmZvKG1fbGNpZCwgdHlwZSwgd2NoYXJG
cm9tKGJ1ZmZlci5kYXRhKCkpLCBidWZmZXJTaXplV2l0aE5VTCk7CiAgICAgYnVmZmVyLnNocmlu
ayhidWZmZXJTaXplV2l0aE5VTCAtIDEpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1v
dmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
QlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5k
ZXggMGY0NmM1ZGNhYjI5YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYy4uMDI3Y2RkZDMyYTdk
NTdhMzA4YjQyYjg4ODNkMmI1YjM5NDEwNjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9CU3RyaW5nLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAK
ICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
QEAgLTY1LDcgKzY2LDcgQEAgQlN0cmluZzo6QlN0cmluZyhjb25zdCBTdHJpbmcmIHMpCiAgICAg
aWYgKHMuaXNOdWxsKCkpCiAgICAgICAgIG1fYnN0ciA9IDA7CiAgICAgZWxzZQotICAgICAgICBt
X2JzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbihTdHJpbmdWaWV3KHMpLnVwY29udmVydGVkQ2hhcmFj
dGVycygpLCBzLmxlbmd0aCgpKTsKKyAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4o
d2NoYXJGcm9tKFN0cmluZ1ZpZXcocykudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkpLCBzLmxlbmd0
aCgpKTsKIH0KIAogQlN0cmluZzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkKQEAgLTczLDcgKzc0
LDcgQEAgQlN0cmluZzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICBpZiAodXJsLmlzTnVs
bCgpKQogICAgICAgICBtX2JzdHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lz
QWxsb2NTdHJpbmdMZW4oU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkpLnVwY29udmVydGVkQ2hhcmFj
dGVycygpLCB1cmwuc3RyaW5nKCkubGVuZ3RoKCkpOworICAgICAgICBtX2JzdHIgPSBTeXNBbGxv
Y1N0cmluZ0xlbih3Y2hhckZyb20oU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkpLnVwY29udmVydGVk
Q2hhcmFjdGVycygpKSwgdXJsLnN0cmluZygpLmxlbmd0aCgpKTsKIH0KIAogQlN0cmluZzo6QlN0
cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHMpCkBAIC04MSw3ICs4Miw3IEBAIEJTdHJpbmc6OkJT
dHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzKQogICAgIGlmIChzLmlzTnVsbCgpKQogICAgICAg
ICBtX2JzdHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdM
ZW4oU3RyaW5nVmlldyhzLnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcy5sZW5n
dGgoKSk7CisgICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHdjaGFyRnJvbShTdHJp
bmdWaWV3KHMuc3RyaW5nKCkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSk7
CiB9CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IDBlNDA4MGI4NTY3NmEwYTQ2MWJiZjk2
YmExNzMyMzVmNWI3ZGI2M2MuLmEzM2U4MjdjOWQ4ZDAxOTA0OWU1Zjk4ODI1NGNhODZiYTAwNzk1
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIGJvb2wgZ2V0V2ViTG9j
RGF0YShjb25zdCBEcmFnRGF0YU1hcCogZGF0YU9iamVjdCwgU3RyaW5nJiB1cmwsIFN0cmluZyog
dGkKICAgICBpZiAoIWRhdGFPYmplY3QtPmNvbnRhaW5zKGNmSERyb3BGb3JtYXQoKS0+Y2ZGb3Jt
YXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3NjcHkoZmlsZW5hbWUsIHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkYXRhT2JqZWN0LT5nZXQoY2ZIRHJvcEZvcm1hdCgpLT5j
ZkZvcm1hdClbMF0pLmRhdGEoKSk7CisgICAgd2NzY3B5KGZpbGVuYW1lLCB3Y2hhckZyb20oZGF0
YU9iamVjdC0+Z2V0KGNmSERyb3BGb3JtYXQoKS0+Y2ZGb3JtYXQpWzBdLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiAgICAgaWYgKF93Y3NpY21wKFBhdGhGaW5kRXh0
ZW5zaW9uVyhmaWxlbmFtZSksIEwiLnVybCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7ICAgIAog
CkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBzdGF0aWMgYm9vbCBnZXRXZWJMb2NEYXRhKGNvbnN0IERy
YWdEYXRhTWFwKiBkYXRhT2JqZWN0LCBTdHJpbmcmIHVybCwgU3RyaW5nKiB0aQogCiAgICAgaWYg
KHRpdGxlKSB7CiAgICAgICAgIFBhdGhSZW1vdmVFeHRlbnNpb24oZmlsZW5hbWUpOwotICAgICAg
ICAqdGl0bGUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoZmlsZW5hbWUpOworICAgICAg
ICAqdGl0bGUgPSBTdHJpbmcoZmlsZW5hbWUpOwogICAgIH0KICAgICAKLSAgICB1cmwgPSBudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcodXJsQnVmZmVyKTsKKyAgICB1cmwgPSBTdHJpbmcodXJs
QnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTg1LDcgKzE4NSw3IEBAIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKIAogICAgIGlmIChjYkRhdGEpIHsKICAgICAgICAgUFdTVFIg
YnVmZmVyID0gc3RhdGljX2Nhc3Q8UFdTVFI+KEdsb2JhbExvY2soY2JEYXRhKSk7Ci0gICAgICAg
IF9zbndwcmludGYoYnVmZmVyLCBzaXplLCBMIiVzXG4lcyIsIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihtdXRhYmxlVVJMKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhciht
dXRhYmxlVGl0bGUpLmRhdGEoKSk7CisgICAgICAgIF9zbndwcmludGYoYnVmZmVyLCBzaXplLCBM
IiVzXG4lcyIsIHdjaGFyRnJvbShtdXRhYmxlVVJMLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCkuZGF0YSgpKSwgd2NoYXJGcm9tKG11dGFibGVUaXRsZS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogICAgICAgICBHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAg
ICB9CiAgICAgcmV0dXJuIGNiRGF0YTsKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGdldEZpbGVE
ZXNjcmlwdG9yRGF0YShJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgaW50JiBzaXplLCBTdHJpbmcm
IHBhdGhuYW1lKQogCiAgICAgRklMRUdST1VQREVTQ1JJUFRPUiogZmdkID0gc3RhdGljX2Nhc3Q8
RklMRUdST1VQREVTQ1JJUFRPUio+KEdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCkpOwogICAgIHNp
emUgPSBmZ2QtPmZnZFswXS5uRmlsZVNpemVMb3c7Ci0gICAgcGF0aG5hbWUgPSBudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKTsKKyAgICBwYXRobmFtZSA9
IFN0cmluZyhmZ2QtPmZnZFswXS5jRmlsZU5hbWUpOwogCiAgICAgR2xvYmFsVW5sb2NrKHN0b3Jl
LmhHbG9iYWwpOwogICAgIDo6UmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwpAQCAtNTI1LDkgKzUy
NSwxMCBAQCBTdHJpbmcgZ2V0VVJMKGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhLCBEcmFnRGF0YTo6
RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYQogICAgIGlmICghZ2V0RGF0YU1hcEl0ZW0o
ZGF0YSwgZmlsZW5hbWVXRm9ybWF0KCksIHN0cmluZ0RhdGEpKQogICAgICAgICBnZXREYXRhTWFw
SXRlbShkYXRhLCBmaWxlbmFtZUZvcm1hdCgpLCBzdHJpbmdEYXRhKTsKIAotICAgIGlmIChzdHJp
bmdEYXRhLmlzRW1wdHkoKSB8fCAoIVBhdGhGaWxlRXhpc3RzKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihzdHJpbmdEYXRhKS5kYXRhKCkpICYmICFQYXRoSXNVTkMoc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKHN0cmluZ0RhdGEpLmRhdGEoKSkpKQorICAgIGF1dG8gd2NoYXJEYXRhID0g
d2NoYXJGcm9tKHN0cmluZ0RhdGEuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRh
KCkpOworICAgIGlmIChzdHJpbmdEYXRhLmlzRW1wdHkoKSB8fCAoIVBhdGhGaWxlRXhpc3RzKHdj
aGFyRGF0YSkgJiYgIVBhdGhJc1VOQyh3Y2hhckRhdGEpKSkKICAgICAgICAgcmV0dXJuIHVybDsK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVbmlD
aGFyICopc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN0cmluZ0RhdGEpLmRhdGEoKSwgd2Nz
bGVuKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdHJpbmdEYXRhKS5kYXRhKCkpKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hh
ciAqKXdjaGFyRGF0YSwgd2NzbGVuKHdjaGFyRGF0YSkpKTsKICAgICBpZiAodXJsRnJvbVBhdGgo
cGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkgJiYgdGl0bGUpCiAgICAgICAgICp0aXRsZSA9IHVy
bDsKICNlbmRpZgpAQCAtNzQyLDcgKzc0Myw3IEBAIHZvaWQgZ2V0Q0ZEYXRhKElEYXRhT2JqZWN0
KiBkYXRhLCBGT1JNQVRFVEMqIGZvcm1hdCwgVmVjdG9yPFN0cmluZz4mIGRhdGFTdHJpbmdzCiAg
ICAgZm9yIChVSU5UIGkgPSAwOyBpIDwgZmlsZUNvdW50OyBpKyspIHsKICAgICAgICAgaWYgKCFE
cmFnUXVlcnlGaWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIFdURl9BUlJBWV9MRU5HVEgoZmlsZW5h
bWUpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBkYXRhU3RyaW5ncy5hcHBlbmQo
bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKSk7CisgICAgICAgIGRhdGFTdHJp
bmdzLmFwcGVuZChTdHJpbmcoZmlsZW5hbWUpKTsKICAgICB9CiAKICAgICBHbG9iYWxVbmxvY2so
c3RvcmUuaEdsb2JhbCk7CkBAIC03OTcsNyArNzk4LDcgQEAgdm9pZCBzZXRDRkRhdGEoSURhdGFP
YmplY3QqIGRhdGEsIEZPUk1BVEVUQyogZm9ybWF0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0
YVMKICAgICBkcm9wRmlsZXMtPnBGaWxlcyA9IHNpemVvZihEUk9QRklMRVMpOwogICAgIGRyb3BG
aWxlcy0+ZldpZGUgPSBUUlVFOwogICAgIFN0cmluZyBmaWxlbmFtZSA9IGRhdGFTdHJpbmdzLmZp
cnN0KCk7Ci0gICAgd2NzY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8TFBXU1RSPihkcm9wRmlsZXMgKyAx
KSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworICAgIHdj
c2NweShyZWludGVycHJldF9jYXN0PExQV1NUUj4oZHJvcEZpbGVzICsgMSksIHdjaGFyRnJvbShm
aWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogICAgIEds
b2JhbFVubG9jayhtZWRpdW0uaEdsb2JhbCk7CiAgICAgZGF0YS0+U2V0RGF0YShmb3JtYXQsICZt
ZWRpdW0sIEZBTFNFKTsKICAgICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggNDc5ZTBjYWFmNzM5
MDE5Nzg5ODQwYjBmODc2ZjZkNGY3OTY0YjNlZS4uMTgzZGE1NzZmMzY0ZDkxZWQyYjYxMTUxNzdm
ODFhZjhmMzQxZDAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdEYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFX
aW4uY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTU4LDcgKzE1Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IERyYWdEYXRhOjphc0Zp
bGVuYW1lcygpIGNvbnN0CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GaWxl
czsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9wLCBpLCBmaWxl
bmFtZSwgV1RGX0FSUkFZX0xFTkdUSChmaWxlbmFtZSkpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcoZmlsZW5hbWUpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKGZpbGVuYW1l
KSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGcmVlIHVwIG1lbW9yeSBmcm9tIGRyYWcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggMTI1NTQ4
MGI0MGEyNmEyNDE4ZmEyM2E2YjEwZGU2ODY0NGI5ZGU2MS4uZTFiYzFiN2MxNzNiNjQ3NmUwZjgw
ZjU3NWE4NzA1YTkxMGRjZDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAKQEAgLTc0LDggKzc0LDggQEAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJh
Z0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0KQogRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCiB7CiAgICAgU0hGSUxFSU5GTyBzaGZpIHsgfTsKLSAgICBTdHJpbmcgZm5hbWUg
PSBmaWxlbmFtZTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0RmlsZUluZm8oc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGZuYW1lKS5kYXRhKCksIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgJnNoZmks
IHNpemVvZihzaGZpKSwgU0hHRklfSUNPTiB8IFNIR0ZJX1VTRUZJTEVBVFRSSUJVVEVTKSkpCisg
ICAgYXV0byBmbmFtZSA9IGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7
CisgICAgaWYgKEZBSUxFRChTSEdldEZpbGVJbmZvKHdjaGFyRnJvbShmbmFtZS5kYXRhKCkpLCBG
SUxFX0FUVFJJQlVURV9OT1JNQUwsICZzaGZpLCBzaXplb2Yoc2hmaSksIFNIR0ZJX0lDT04gfCBT
SEdGSV9VU0VGSUxFQVRUUklCVVRFUykpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIElDT05J
TkZPIGljb25JbmZvOwpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBGb250Q2FzY2FkZSBkcmFn
TGFiZWxGb250KGludCBzaXplLCBib29sIGJvbGQsIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwogICAgIGRlc2NyaXB0
aW9uLnNldFdlaWdodChib2xkID8gYm9sZFdlaWdodFZhbHVlKCkgOiBub3JtYWxXZWlnaHRWYWx1
ZSgpKTsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkobnVsbFRlcm1pbmF0ZWRXQ2hhclRv
U3RyaW5nKG1ldHJpY3MubGZTbUNhcHRpb25Gb250LmxmRmFjZU5hbWUpKTsKKyAgICBkZXNjcmlw
dGlvbi5zZXRPbmVGYW1pbHkoU3RyaW5nKG1ldHJpY3MubGZTbUNhcHRpb25Gb250LmxmRmFjZU5h
bWUpKTsKICAgICBkZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKChmbG9hdClzaXplKTsKICAg
ICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoKGZsb2F0KXNpemUpOwogICAgIGRlc2NyaXB0
aW9uLnNldFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXggYjM1MGYxY2M3
MTJlYThjMDM1ZTJjMmQyZDA2NTAzNmY5ZDNlNTBlMy4uMDEyNTkyMjU2Yjk2YmFhZTJhMDA2OGFk
NTg0ZmJjY2I2OGYwZThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBTdHJp
bmcgbWltZVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAgICAgRFdP
UkQgY29udGVudFR5cGVTdHJMZW4gPSBzaXplb2YoY29udGVudFR5cGVTdHIpOwogICAgIERXT1JE
IGtleVR5cGU7CiAKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9D
TEFTU0VTX1JPT1QsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHQpLmRhdGEoKSwgTCJD
b250ZW50IFR5cGUiLCAma2V5VHlwZSwgY29udGVudFR5cGVTdHIsICZjb250ZW50VHlwZVN0ckxl
bik7CisgICAgSFJFU1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfQ0xBU1NFU19S
T09ULCB3Y2hhckZyb20oZXh0LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSwgTCJDb250ZW50IFR5cGUiLCAma2V5VHlwZSwgY29udGVudFR5cGVTdHIsICZjb250ZW50VHlw
ZVN0ckxlbik7CiAKICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYga2V5VHlwZSA9
PSBSRUdfU1opCi0gICAgICAgIHJldHVybiB3Y2hhclRvU3RyaW5nKGNvbnRlbnRUeXBlU3RyLCBj
b250ZW50VHlwZVN0ckxlbiAvIHNpemVvZihjb250ZW50VHlwZVN0clswXSkgLSAxKTsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyhjb250ZW50VHlwZVN0ciwgY29udGVudFR5cGVTdHJMZW4gLyBzaXpl
b2YoY29udGVudFR5cGVTdHJbMF0pIC0gMSk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CkBA
IC01NiwxMCArNTYsMTAgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4
dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBEV09SRCBleHRTdHJM
ZW4gPSBzaXplb2YoZXh0U3RyKTsKICAgICBEV09SRCBrZXlUeXBlOwogCi0gICAgSFJFU1VMVCBy
ZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfQ0xBU1NFU19ST09ULCBzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCBMIkV4dGVuc2lvbiIsICZrZXlUeXBlLCBleHRT
dHIsICZleHRTdHJMZW4pOworICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShI
S0VZX0NMQVNTRVNfUk9PVCwgd2NoYXJGcm9tKHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpLCBMIkV4dGVuc2lvbiIsICZrZXlUeXBlLCBleHRTdHIsICZleHRTdHJM
ZW4pOwogCiAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIGtleVR5cGUgPT0gUkVH
X1NaKQotICAgICAgICByZXR1cm4gd2NoYXJUb1N0cmluZyhleHRTdHIgKyAxLCBleHRTdHJMZW4g
LyBzaXplb2YoZXh0U3RyWzBdKSAtIDIpOworICAgICAgICByZXR1cm4gU3RyaW5nKGV4dFN0ciAr
IDEsIGV4dFN0ckxlbiAvIHNpemVvZihleHRTdHJbMF0pIC0gMik7CiAKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggYTVmZDkzMGFlOTFiOTE3YjljYmEwODY0YmJhNTUzNGVjYjJjMWUxMy4uOTM2ZGNm
NTE3YTE2OGMzMDM3MTEyOGQ0OTMxZWU0OWIyNGJhZWMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYgcmVhZGVyKQogICAgICAgICBm
b3IgKFVJTlQgaSA9IDA7IGkgPCBmaWxlQ291bnQ7IGkrKykgewogICAgICAgICAgICAgaWYgKCFE
cmFnUXVlcnlGaWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIFdURl9BUlJBWV9MRU5HVEgoZmlsZW5h
bWUpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJlYWRlci5yZWFk
RmlsZW5hbWUobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKSk7CisgICAgICAg
ICAgICByZWFkZXIucmVhZEZpbGVuYW1lKFN0cmluZyhmaWxlbmFtZSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgR2xvYmFsVW5sb2NrKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTU1NSwyMyArNTU1LDIy
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKFBXU1RSIHBz
eiwgc2l6ZV90IGxlbmd0aCkKICAgICBwc3pbd3JpdGVUb10gPSAwOwogfQogCi1zdGF0aWMgU3Ry
aW5nIGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFVDaGFyKiBleHRlbnNpb24sIGJvb2wgaXNMaW5rKQorc3Rh
dGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgYm9vbCBpc0xp
bmspCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdO
dWxsVGVybWluYXRvciA9IE1BWF9QQVRIIC0gMTsKICAgICBib29sIHVzZWRVUkwgPSBmYWxzZTsK
LSAgICBXQ0hBUiBmc1BhdGhCdWZmZXJbTUFYX1BBVEhdOworICAgIFVDaGFyIGZzUGF0aEJ1ZmZl
cltNQVhfUEFUSF07CiAgICAgZnNQYXRoQnVmZmVyWzBdID0gMDsKLSAgICBpbnQgZXh0ZW5zaW9u
TGVuID0gZXh0ZW5zaW9uID8gbHN0cmxlbihleHRlbnNpb24pIDogMDsKLSAgICBpbnQgZnNQYXRo
TWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uID0gZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nTnVs
bFRlcm1pbmF0b3IgLSBleHRlbnNpb25MZW47CisgICAgaW50IGZzUGF0aE1heExlbmd0aEV4Y2x1
ZGluZ0V4dGVuc2lvbiA9IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ051bGxUZXJtaW5hdG9yIC0g
ZXh0ZW5zaW9uLmxlbmd0aCgpOwogCiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgc2l6ZV90IGxlbiA9IHN0ZDo6bWluPHNpemVfdD4odGl0bGUubGVuZ3RoKCksIGZzUGF0aE1h
eExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbik7CiAgICAgICAgIFN0cmluZ1ZpZXcodGl0bGUpLnN1
YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7
CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKLSAgICAgICAgcGF0aFJlbW92ZUJhZEZT
Q2hhcmFjdGVycyhmc1BhdGhCdWZmZXIsIGxlbik7CisgICAgICAgIHBhdGhSZW1vdmVCYWRGU0No
YXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7CiAgICAgfQogCi0gICAgaWYg
KCFsc3RybGVuKGZzUGF0aEJ1ZmZlcikpIHsKKyAgICBpZiAoIXdjc2xlbih3Y2hhckZyb20oZnNQ
YXRoQnVmZmVyKSkpIHsKICAgICAgICAgVVJMIGt1cmwoVVJMKCksIHVybCk7CiAgICAgICAgIHVz
ZWRVUkwgPSB0cnVlOwogICAgICAgICAvLyBUaGUgZmlsZW5hbWUgZm9yIGFueSBjb250ZW50IGJh
c2VkIGRyYWcgb3IgZmlsZSB1cmwgc2hvdWxkIGJlIHRoZSBsYXN0IGVsZW1lbnQgb2YgCkBAIC01
ODcsMTggKzU4NiwxOCBAQCBzdGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0
bGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bAogICAgICAgICAgICAgU3Ry
aW5nVmlldyh1cmwpLnN1YnN0cmluZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIH0KICAgICAgICAgZnNQYXRoQnVmZmVyW2xlbl0gPSAw
OwotICAgICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKGZzUGF0aEJ1ZmZlciwgbGVuKTsK
KyAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVmZmVy
KSwgbGVuKTsKICAgICB9CiAKLSAgICBpZiAoIWV4dGVuc2lvbikKLSAgICAgICAgcmV0dXJuIFN0
cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGZzUGF0aEJ1ZmZlcikpOworICAgIGlmIChleHRlbnNp
b24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKGZzUGF0aEJ1ZmZlcik7CiAKICAg
ICBpZiAoIWlzTGluayAmJiB1c2VkVVJMKSB7Ci0gICAgICAgIFBhdGhSZW5hbWVFeHRlbnNpb24o
ZnNQYXRoQnVmZmVyLCBleHRlbnNpb24pOwotICAgICAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19j
YXN0PFVDaGFyKj4oZnNQYXRoQnVmZmVyKSk7CisgICAgICAgIFBhdGhSZW5hbWVFeHRlbnNpb24o
d2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIHdjaGFyRnJvbShleHRlbnNpb24uY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhmc1Bh
dGhCdWZmZXIpOwogICAgIH0KIAotICAgIHJldHVybiBtYWtlU3RyaW5nKHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4oZnNQYXRoQnVmZmVyKSwgZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhjb25zdF9jYXN0PGNvbnN0IFVDaGFyKj4oZnNQYXRoQnVmZmVyKSwgZXh0ZW5zaW9uKTsK
IH0KIAogLy8gd3JpdGVGaWxlVG9EYXRhT2JqZWN0IHRha2VzIG93bmVyc2hpcCBvZiBmaWxlRGVz
Y3JpcHRvciBhbmQgZmlsZUNvbnRlbnQKQEAgLTY1NSw3ICs2NTQsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0
aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJs
LmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBT
dHJpbmcgZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlU3Ry
LCBMIi5VUkwiLCB0cnVlKTsKKyAgICBTdHJpbmcgZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9t
VXJsT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOwogICAgIFN0cmluZyBjb250
ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwog
ICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTY4NCw3
ICs2ODMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVS
TCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBmZ2QtPmZnZFswXS5uRmlsZVNp
emVMb3cgPSBjb250ZW50Lmxlbmd0aCgpOwogCiAgICAgdW5zaWduZWQgbWF4U2l6ZSA9IHN0ZDo6
bWluPHVuc2lnbmVkPihmc1BhdGgubGVuZ3RoKCksIFdURl9BUlJBWV9MRU5HVEgoZmdkLT5mZ2Rb
MF0uY0ZpbGVOYW1lKSk7Ci0gICAgU3RyaW5nVmlldyhmc1BhdGgpLnN1YnN0cmluZygwLCBtYXhT
aXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpOwor
ICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwogICAgIEds
b2JhbFVubG9jayh1cmxGaWxlRGVzY3JpcHRvcik7CiAKICAgICBjaGFyKiBmaWxlQ29udGVudHMg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayh1cmxGaWxlQ29udGVudCkpOwpAQCAtOTE0
LDcgKzkxMyw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iLCAwKTsKLSAgICBmc1BhdGggPSBmaWxlc3lz
dGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgcHJlZmVycmVkVGl0bGUsIGV4dGVuc2lvbi5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZmFsc2UpOworICAgIGZzUGF0aCA9
IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKICAgICAgICAg
R2xvYmFsVW5sb2NrKG1lbU9iaik7CkBAIC05MjMsNyArOTIyLDcgQEAgc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJgogICAgIH0KIAogICAgIGludCBtYXhTaXplID0gc3RkOjptaW48aW50Pihmc1BhdGgu
bGVuZ3RoKCksIFdURl9BUlJBWV9MRU5HVEgoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7Ci0gICAg
U3RyaW5nVmlldyhmc1BhdGgpLnN1YnN0cmluZygwLCBtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRo
KS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJG
cm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwog
CiAgICAgcmV0dXJuIG1lbU9iajsKQEAgLTk2MSw4ICs5NjAsNyBAQCBzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUs
IFNoYXJlZAogICAgICAgICAvLyB3aW5kb3dzIGRvZXMgbm90IGVuam95IGEgbGVhZGluZyBzbGFz
aCBvbiBwYXRocwogICAgICAgICBpZiAobG9jYWxQYXRoWzBdID09ICcvJykKICAgICAgICAgICAg
IGxvY2FsUGF0aCA9IGxvY2FsUGF0aC5zdWJzdHJpbmcoMSk7Ci0gICAgICAgIGF1dG8gbG9jYWxQ
YXRoV2lkZSA9IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihsb2NhbFBhdGgpOwotICAgICAg
ICBMUENXU1RSIGxvY2FsUGF0aFN0ciA9IGxvY2FsUGF0aFdpZGUuZGF0YSgpOworICAgICAgICBM
UENXU1RSIGxvY2FsUGF0aFN0ciA9IHdjaGFyRnJvbShsb2NhbFBhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpOwogICAgICAgICBpZiAobG9jYWxQYXRoU3RyICYmIHdj
c2xlbihsb2NhbFBhdGhTdHIpICsgMSA8IE1BWF9QQVRIKQogICAgICAgICAgICAgd2NzY3B5X3Mo
ZmlsZVBhdGgsIE1BWF9QQVRILCBsb2NhbFBhdGhTdHIpOwogICAgICAgICBlbHNlCkBAIC05NzIs
NyArOTcwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0
IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgV0NIQVIgZXh0ZW5z
aW9uW01BWF9QQVRIXTsKICAgICAgICAgaWYgKCE6OkdldFRlbXBQYXRoKFdURl9BUlJBWV9MRU5H
VEgodGVtcFBhdGgpLCB0ZW1wUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
aWYgKCE6OlBhdGhBcHBlbmQodGVtcFBhdGgsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihm
aWxlTmFtZSkuZGF0YSgpKSkKKyAgICAgICAgaWYgKCE6OlBhdGhBcHBlbmQodGVtcFBhdGgsIHdj
aGFyRnJvbShmaWxlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIExQQ1dTVFIgZm91bmRFeHRlbnNpb24g
PSA6OlBhdGhGaW5kRXh0ZW5zaW9uKHRlbXBQYXRoKTsKICAgICAgICAgaWYgKGZvdW5kRXh0ZW5z
aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2Vu
ZXJhdG9yV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0
b3JXaW4uY3BwCmluZGV4IGZkNjgwNmVmZDkzZjZmNjZiNTgwOTlmYzUwYTgzMTY4YzY1MjkxNWQu
LmIwMGUyNmM5ZWU3NDY4ZjQ1MjY3YjZhNDM4NjA1NjYwNWFmMTA1OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3BwCkBAIC02Nyw4
ICs2Nyw4IEBAIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWdu
ZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlCiAgICAgICAgIFN0cmluZyBsb2NhbENo
YWxsZW5nZSA9IGNoYWxsZW5nZTsKIAogICAgICAgICAvLyBXaW5kb3dzIEFQSSB3b24ndCB3cml0
ZSB0byBvdXIgYnVmZmVyLCBhbHRob3VnaCBpdCdzIG5vdCBkZWNsYXJlZCB3aXRoIGNvbnN0Lgot
ICAgICAgICBhdXRvIGxvY2FsQ2hhbGxlbmdlV2lkZSA9IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcihsb2NhbENoYWxsZW5nZSk7Ci0gICAgICAgIHJlcXVlc3RJbmZvLnB3c3pDaGFsbGVuZ2VT
dHJpbmcgPSBjb25zdF9jYXN0PHdjaGFyX3QqPihsb2NhbENoYWxsZW5nZVdpZGUuZGF0YSgpKTsK
KyAgICAgICAgYXV0byBsb2NhbENoYWxsZW5nZVdpZGUgPSBsb2NhbENoYWxsZW5nZS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgICAgICByZXF1ZXN0SW5mby5wd3N6Q2hhbGxl
bmdlU3RyaW5nID0gY29uc3RfY2FzdDx3Y2hhcl90Kj4od2NoYXJGcm9tKGxvY2FsQ2hhbGxlbmdl
V2lkZS5kYXRhKCkpKTsKIAogICAgICAgICBDUllQVF9BTEdPUklUSE1fSURFTlRJRklFUiBzaWdu
QWxnbyB7IH07CiAgICAgICAgIHNpZ25BbGdvLnBzek9iaklkID0gY29uc3RfY2FzdDxjaGFyKj4o
c3pPSURfUlNBX1NIQTFSU0EpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcAppbmRleCA1YmRhYmI2MjgwZWRhMjk3NDJjOTY2ZDUwZWQzZWVmMGFh
MWEwNzQ4Li5iYzM0NDJmMmQ1YmY5OWQ2OTk3ODcwZDExNTAwZDA0NDg5YTM2YTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIFN0cmluZyBudWxsaWZpZWRQYXRoID0gZmlsZVBhdGg7Ci0gICAgSEFORExFIGZp
bGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobnVsbGlm
aWVkUGF0aCkuZGF0YSgpLCBHRU5FUklDX1JFQUQsIEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9F
WElTVElORywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKyAgICBIQU5ETEUgZmlsZUhhbmRs
ZSA9IENyZWF0ZUZpbGVXKHdjaGFyRnJvbShudWxsaWZpZWRQYXRoLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgR0VORVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQsIDAs
IE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CiAgICAgaWYgKGZpbGVI
YW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gb3BlbiBmaWxlICVzIHRvIGNyZWF0ZSBzaGFyZWQgYnVmZmVyLCBHZXRMYXN0RXJyb3Io
KSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luLmNwcAppbmRleCA2ZTQxMzgxNjRiZTQ4YjBmMzIwMWEwMWI2ZjhiOTIyNGRiMzU2YjZhLi4y
OGExZTQxYWE3ZWUwM2NkMGRjYTkzNThhNTdkM2ExZjNjNmY5M2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCiAj
aWYgRU5BQkxFKFZJREVPKQpAQCAtMzE4LDcgKzMxNyw3IEBAIENvbG9yIFJlbmRlclRoZW1lV2lu
OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKE9wdGlvblNldDxTdHls
ZUNvCiBzdGF0aWMgdm9pZCBmaWxsRm9udERlc2NyaXB0aW9uKEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgTE9HRk9OVCYgbG9nRm9udCwgZmxvYXQgZm9udFNpemUpCiB7
ICAgIAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKLSAgICBm
b250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhs
b2dGb250LmxmRmFjZU5hbWUpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KFN0
cmluZyhsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lm
aWVkU2l6ZShmb250U2l6ZSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChsb2dGb250
LmxmV2VpZ2h0ID49IDcwMCA/IGJvbGRXZWlnaHRWYWx1ZSgpIDogbm9ybWFsV2VpZ2h0VmFsdWUo
KSk7IC8vIEZJWE1FOiBVc2UgcmVhbCB3ZWlnaHQuCiAgICAgZm9udERlc2NyaXB0aW9uLnNldElz
SXRhbGljKGxvZ0ZvbnQubGZJdGFsaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IGViYjM3Mzg0YzMzN2JmMTJmNWQ2ZGU4YTZi
NDZmNmYwNDgxYzc4ZjkuLmIwZjkyYjQ5Y2RkNzcwY2IxNDYyMjZkMDgyNGVlMDhhMWI2MmJhMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIElQQyB7
CiAKQEAgLTQzLDcgKzQ0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGll
bnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKICAgICAgICAgdW5z
aWduZWQgdW5pcXVlSUQgPSByYW5kb21OdW1iZXIoKSAqIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKTsKICAgICAgICAgcGlwZU5hbWUgPSBtYWtlU3RyaW5nKCJcXFxcLlxccGlw
ZVxcY29tLmFwcGxlLldlYktpdC4iLCBoZXgodW5pcXVlSUQpKTsKIAotICAgICAgICBzZXJ2ZXJJ
ZGVudGlmaWVyID0gOjpDcmVhdGVOYW1lZFBpcGUocGlwZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCksCisgICAgICAgIHNlcnZlcklkZW50aWZpZXIgPSA6OkNyZWF0
ZU5hbWVkUGlwZSh3Y2hhckZyb20ocGlwZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpLAogICAgICAgICAgICAgUElQRV9BQ0NFU1NfRFVQTEVYIHwgRklMRV9GTEFH
X0ZJUlNUX1BJUEVfSU5TVEFOQ0UgfCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwKICAgICAgICAgICAg
IFBJUEVfVFlQRV9NRVNTQUdFIHwgUElQRV9SRUFETU9ERV9NRVNTQUdFLCAxLCBpbmxpbmVNZXNz
YWdlTWF4U2l6ZSwgaW5saW5lTWVzc2FnZU1heFNpemUsCiAgICAgICAgICAgICAwLCAwKTsKQEAg
LTUyLDcgKzUzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVu
dGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKICAgICBpZiAoIXNlcnZlcklk
ZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNsaWVudElkZW50aWZpZXIg
PSA6OkNyZWF0ZUZpbGVXKHBpcGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBPUEVOX0VYSVNUSU5H
LCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgMCk7CisgICAgY2xpZW50SWRlbnRpZmllciA9IDo6Q3Jl
YXRlRmlsZVcod2NoYXJGcm9tKHBpcGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElT
VElORywgRklMRV9GTEFHX09WRVJMQVBQRUQsIDApOwogICAgIGlmICghY2xpZW50SWRlbnRpZmll
cikgewogICAgICAgICA6OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Nb2R1
bGVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2luLmNwcAppbmRl
eCA3YjY1ZDc3ODY5MTY2MmZkYjVmZjYwZDczNjg5ZDJjZWNjOWIzMmZjLi4wYWZlYjM5OTAzMzkx
ZTJjM2I5OGQ2YjNkNTFhYjliNmZkNmNlN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2lu
L01vZHVsZVdpbi5jcHAKQEAgLTI5LDEzICsyOSwxNCBAQAogCiAjaW5jbHVkZSA8c2hsd2FwaS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxl
Ojpsb2FkKCkKIHsKLSAgICBBU1NFUlQoITo6UGF0aElzUmVsYXRpdmVXKG1fcGF0aC5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwotICAgIG1fbW9kdWxlID0gOjpMb2Fk
TGlicmFyeUV4VyhtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCks
IDAsIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKKyAgICBBU1NFUlQoITo6UGF0aElz
UmVsYXRpdmVXKHdjaGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpKSk7CisgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKHdjaGFyRnJvbSht
X3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCBMT0FEX1dJ
VEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAgICAgcmV0dXJuIG1fbW9kdWxlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5j
aGVyV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNz
TGF1bmNoZXJXaW4uY3BwCmluZGV4IDU3N2U0NjljYWRlMTExYmQxNDg0Y2M4MTQwYTRkMzQyZDU1
ODdiNjMuLjA5Nzg5Y2IzNjIxYzQ4ODJkZTI0MDZiZmZmZTRhY2FlNzEwMjU2NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNz
TGF1bmNoZXJXaW4uY3BwCkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQogICAgIGNvbW1hbmRMaW5lQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpu
dW1iZXIocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNsaWVudElkZW50aWZpZXIpKSk7CiAg
ICAgY29tbWFuZExpbmVCdWlsZGVyLmFwcGVuZCgnXDAnKTsKIAotICAgIGF1dG8gY29tbWFuZExp
bmUgPSBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tbWFuZExpbmVCdWlsZGVyLnRvU3Ry
aW5nKCkpOworICAgIGF1dG8gY29tbWFuZExpbmUgPSBjb21tYW5kTGluZUJ1aWxkZXIudG9TdHJp
bmcoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogCiAgICAgU1RBUlRVUElORk8g
c3RhcnR1cEluZm8geyB9OwogICAgIHN0YXJ0dXBJbmZvLmNiID0gc2l6ZW9mKHN0YXJ0dXBJbmZv
KTsKICAgICBzdGFydHVwSW5mby5kd0ZsYWdzID0gU1RBUlRGX1VTRVNIT1dXSU5ET1c7CiAgICAg
c3RhcnR1cEluZm8ud1Nob3dXaW5kb3cgPSBTV19ISURFOwogICAgIFBST0NFU1NfSU5GT1JNQVRJ
T04gcHJvY2Vzc0luZm9ybWF0aW9uIHsgfTsKLSAgICBCT09MIHJlc3VsdCA9IDo6Q3JlYXRlUHJv
Y2VzcygwLCBjb21tYW5kTGluZS5kYXRhKCksIDAsIDAsIHRydWUsIDAsIDAsIDAsICZzdGFydHVw
SW5mbywgJnByb2Nlc3NJbmZvcm1hdGlvbik7CisgICAgQk9PTCByZXN1bHQgPSA6OkNyZWF0ZVBy
b2Nlc3MoMCwgd2NoYXJGcm9tKGNvbW1hbmRMaW5lLmRhdGEoKSksIDAsIDAsIHRydWUsIDAsIDAs
IDAsICZzdGFydHVwSW5mbywgJnByb2Nlc3NJbmZvcm1hdGlvbik7CiAKICAgICAvLyBXZSBjYW4g
bm93IGNsb3NlIHRoZSBjbGllbnQgaWRlbnRpZmllciBoYW5kbGUuCiAgICAgOjpDbG9zZUhhbmRs
ZShjbGllbnRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcAppbmRleCBhZjQzNWMxNjVlNjRhZTU1ZTk4
N2ZlMzljODIyZDY0YTliZDBkMjBkLi41NmNkOGVjMjFiNTZiMTI3Zjc1MmYyZjg1ZGQ4ZjdkMmQx
MDY0Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4
dE1lbnVQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNv
bnRleHRNZW51UHJveHlXaW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtNzEsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVNZW51SXRlbShjb25zdCBDb250ZXh0
TWVudUNvbnRleHREYXRhICZjb250ZXh0LCBITUVOVSBtZW51LCBjbwogICAgIHN3aXRjaCAoZGF0
YS50eXBlKCkpIHsKICAgICBjYXNlIEFjdGlvblR5cGU6CiAgICAgY2FzZSBDaGVja2FibGVBY3Rp
b25UeXBlOgotICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGRh
dGEuYWN0aW9uKCksIGRhdGEudGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSk7CisgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1NUUklORywg
ZGF0YS5hY3Rpb24oKSwgd2NoYXJGcm9tKGRhdGEudGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlcGFyYXRv
clR5cGU6CiAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1NFUEFSQVRPUiwg
ZGF0YS5hY3Rpb24oKSwgbnVsbHB0cik7CkBAIC03OSw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNy
ZWF0ZU1lbnVJdGVtKGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEgJmNvbnRleHQsIEhNRU5V
IG1lbnUsIGNvCiAgICAgY2FzZSBTdWJtZW51VHlwZToKICAgICAgICAgSE1FTlUgc3VibWVudSA9
IGNyZWF0ZU1lbnUoY29udGV4dCk7CiAgICAgICAgIHBvcHVsYXRlKGNvbnRleHQsIHN1Ym1lbnUs
IGRhdGEuc3VibWVudSgpKTsKLSAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZf
UE9QVVAsIChVSU5UX1BUUilzdWJtZW51LCBkYXRhLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCkpOworICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3Mg
fCBNRl9QT1BVUCwgKFVJTlRfUFRSKXN1Ym1lbnUsIHdjaGFyRnJvbShkYXRhLnRpdGxlKCkuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDE0YjFk
OWZhODFhOGYwZDM0MjZiNGZiNTJlMmQ2MjY1YmJjYjk5YWEuLjVkZjY1NWI3MzYzNjgyNDgzYWYx
MGE2MWU5ZTliMzFhMjQxNTJjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04
NzUsNyArODc2LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYgdG9v
bFRpcCkKICAgICAgICAgaW5mby51RmxhZ3MgPSBUVEZfSURJU0hXTkQ7CiAgICAgICAgIGluZm8u
dUlkID0gcmVpbnRlcnByZXRfY2FzdDxVSU5UX1BUUj4obmF0aXZlV2luZG93KCkpOwogICAgICAg
ICBWZWN0b3I8VUNoYXI+IHRvb2xUaXBDaGFyYWN0ZXJzID0gdG9vbFRpcC5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2Ug
dGhlIFNlbmRNZXNzYWdlIGNhbGwKLSAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8
VUNoYXIqPih0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpOworICAgICAgICBpbmZvLmxwc3pUZXh0
ID0gY29uc3RfY2FzdDx3Y2hhcl90Kj4od2NoYXJGcm9tKHRvb2xUaXBDaGFyYWN0ZXJzLmRhdGEo
KSkpOwogICAgICAgICA6OlNlbmRNZXNzYWdlKG1fdG9vbFRpcFdpbmRvdywgVFRNX1VQREFURVRJ
UFRFWFQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaW5mbykpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9Jbmpl
Y3RlZEJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcAppbmRleCBmOTg3ZWI3YTMxMmNhNjIyNWM4NWU5
YWIxZTc5ZWYwNWUyZGJmNjIxLi4xZWFiNjMzZmYwMmNkMjdjY2EyYjMxYmM2NmQzN2U4NjMzODI0
NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
d2luL0luamVjdGVkQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxp
emF0aW9uVXNlckRhdGEpCiB7Ci0gICAgSE1PRFVMRSBsaWIgPSA6OkxvYWRMaWJyYXJ5KHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSk7CisgICAgSE1PRFVMRSBsaWIg
PSA6OkxvYWRMaWJyYXJ5KHdjaGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpKTsKICAgICBpZiAoIWxpYikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNTQyNDc3
YTllOWUwYTk0MmQ2NWJlMGVlMmM5MGI0ZDI5NjlhNmMzOC4uZTBhNzY1ZTM2ZTljN2NjNzlmOWFk
MDljZjY2NzZhYWEwYmM5MzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2li
bGVCYXNlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPG9sZWFjYy5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC0xNDMsNyArMTQ0LDcgQEAgSFJFU1VMVCBBY2Nlc3NpYmxlQmFz
ZTo6Z2V0X2F0dHJpYnV0ZShfSW5fIEJTVFIga2V5LCBfT3V0XyBWQVJJQU5UKiB2YWx1ZSkKICAg
ICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgQXRvbWljU3Ry
aW5nIGtleUF0b21pYyhrZXksIDo6U3lzU3RyaW5nTGVuKGtleSkpOworICAgIEF0b21pY1N0cmlu
ZyBrZXlBdG9taWModWNoYXJGcm9tKGtleSksIDo6U3lzU3RyaW5nTGVuKGtleSkpOwogCiAgICAg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKGtleUF0b21pYywgdmFsdWUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaAppbmRleCAyMTY1YTIzNTZkOWVhYTJjYWEw
OTQ0MWQxOGZhODNkZWY5NGI5ZmQ1Li4xYWE5NGJhNzYyYjJhOTUzMTYwNjRlYTMyODFlMDM4Y2Jm
Njg3OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJh
Zy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NPTVByb3BlcnR5QmFnLmgKQEAgLTIz
LDE2ICsyMywxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBDT01Qcm9wZXJ0
eUJhZ19oCi0jZGVmaW5lIENPTVByb3BlcnR5QmFnX2gKKyNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQ09NVmFyaWFudFNldHRlci5oIgogI2luY2x1ZGUgPG9jaWRsLmg+CiAjaW5jbHVkZSA8dW5r
bnduLmg+Ci0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotCi0jaW5jbHVkZSAiQ09NVmFyaWFudFNldHRlci5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5
cGUsIHR5cGVuYW1lIEtleVR5cGUgPSB0eXBlbmFtZSBXVEY6OlN0cmluZywgdHlwZW5hbWUgSGFz
aFR5cGUgPSB0eXBlbmFtZSBXVEY6OlN0cmluZ0hhc2g+CiBjbGFzcyBDT01Qcm9wZXJ0eUJhZyBm
aW5hbCA6IHB1YmxpYyBJUHJvcGVydHlCYWcsIHB1YmxpYyBJUHJvcGVydHlCYWcyIHsKQEAgLTIy
MCw3ICsyMTgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3BlcnR5QmFnPFZh
bHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpHZXRQcm9wZQogICAgICAgICBwUHJvcEJhZ1tq
XS5wc3RyTmFtZSA9IChMUE9MRVNUUilDb1Rhc2tNZW1BbGxvYyhzaXplb2Yod2NoYXJfdCkqKGN1
cnJlbnQtPmtleS5sZW5ndGgoKSsxKSk7CiAgICAgICAgIGlmICghcFByb3BCYWdbal0ucHN0ck5h
bWUpCiAgICAgICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKLSAgICAgICAgd2NzY3B5X3Mo
cFByb3BCYWdbal0ucHN0ck5hbWUsIGN1cnJlbnQtPmtleS5sZW5ndGgoKSsxLCBzdGF0aWNfY2Fz
dDxTdHJpbmc+KGN1cnJlbnQtPmtleSkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5k
YXRhKCkpOworICAgICAgICB3Y3NjcHlfcyhwUHJvcEJhZ1tqXS5wc3RyTmFtZSwgY3VycmVudC0+
a2V5Lmxlbmd0aCgpKzEsIHdjaGFyRnJvbShjdXJyZW50LT5rZXkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCkpKTsKICAgICAgICAgKysqcGNQcm9wZXJ0aWVzOwogICAgIH0K
ICAgICByZXR1cm4gU19PSzsKQEAgLTIzMSw1ICsyMjksMyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIENPTVByb3BlcnR5QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpMb2Fk
T2JqZQogewogICAgIHJldHVybiBFX05PVElNUEw7CiB9Ci0KLSNlbmRpZiAvLyBDT01Qcm9wZXJ0
eUJhZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nl
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXgg
YzU4ODBlYTRkZDg1MmI1YzAwZGRhYjNjODI1ZDZhOWY2Y2YwODNjZi4uZWFkYTNlNmJjNTVjMDAx
N2ZlYzlmMGVjMTk1OGQ5YzQxYzc3ZWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RP
TUNvcmVDbGFzc2VzLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkRPTUV2ZW50c0Ns
YXNzZXMuaCIKICNpbmNsdWRlICJET01IVE1MQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIldlYktpdEdy
YXBoaWNzLmgiCi0KICNpbmNsdWRlIDxXZWJDb3JlL0F0dHIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgpAQCAtNTYsOCArNTUsOSBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2Nyb2xsSW50b1ZpZXdPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdHlsZWRFbGVt
ZW50Lmg+Ci0KICNpbmNsdWRlIDxpbml0Z3VpZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgorCiAvLyB7M0IwQzBFRkYtNDc4Qi00YjBiLTgyOTAtRDIzMjFF
MDhFMjNFfQogREVGSU5FX0dVSUQoSUlEX0RPTUVsZW1lbnQsIDB4M2IwYzBlZmYsIDB4NDc4Yiwg
MHg0YjBiLCAweDgyLCAweDkwLCAweGQyLCAweDMyLCAweDFlLCAweDgsIDB4ZTIsIDB4M2UpOwog
CkBAIC00MTQsNyArNDE0LDcgQEAgSFJFU1VMVCBET01Ob2RlOjpzZXRUZXh0Q29udGVudChfSW5f
IEJTVFIgLyp0ZXh0Ki8pCiBIUkVTVUxUIERPTU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoX0luXyBC
U1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgQk9PTCB1c2VD
YXB0dXJlKQogewogICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVh
dGUobGlzdGVuZXIpOwotICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBXVEZNb3Zl
KHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CisgICAgbV9ub2RlLT5hZGRFdmVudExpc3RlbmVy
KHVjaGFyRnJvbSh0eXBlKSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogCiAg
ICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00MjYsNyArNDI2LDcgQEAgSFJFU1VMVCBET01Ob2RlOjpy
ZW1vdmVFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0
ZW5lcioKICAgICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBhdXRv
IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBt
X25vZGUtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworICAgIG1fbm9kZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih1Y2hhckZyb20odHlwZSksIHdlYkxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtOTI0LDcgKzky
NCw3IEBAIEhSRVNVTFQgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBl
LCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lcioKICAgICBpZiAoIW1fd2luZG93KQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVy
OjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fd2luZG93LT5hZGRFdmVudExpc3RlbmVyKHR5cGUs
IFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKKyAgICBtX3dpbmRvdy0+YWRkRXZl
bnRMaXN0ZW5lcih1Y2hhckZyb20odHlwZSksIFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0
dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtOTM1LDcgKzkzNSw3IEBAIEhSRVNVTFQg
RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJ
RE9NRXZlbnRMaXN0ZW5lCiAgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKICAgICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3Rl
bmVyKTsKLSAgICBtX3dpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5l
ciwgdXNlQ2FwdHVyZSk7CisgICAgbV93aW5kb3ctPnJlbW92ZUV2ZW50TGlzdGVuZXIodWNoYXJG
cm9tKHR5cGUpLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIEhSRVNVTFQgRE9NRWxlbWVudDo6Zm9udChfT3V0XyBX
ZWJGb250RGVzY3JpcHRpb24qIHdlYkZvbnREZXNjcmlwdGlvbikKICAgICBVQ2hhciogZmFtaWx5
Q2hhcmFjdGVyc0J1ZmZlciA9IG5ldyBVQ2hhcltmYW1pbHkubGVuZ3RoKCldOwogICAgIFN0cmlu
Z1ZpZXcoZmFtaWx5LnN0cmluZygpKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmYW1pbHlD
aGFyYWN0ZXJzQnVmZmVyKTsKIAotICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+ZmFtaWx5ID0gZmFt
aWx5Q2hhcmFjdGVyc0J1ZmZlcjsKKyAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IHdj
aGFyRnJvbShmYW1pbHlDaGFyYWN0ZXJzQnVmZmVyKTsKICAgICB3ZWJGb250RGVzY3JpcHRpb24t
PmZhbWlseUxlbmd0aCA9IGZhbWlseS5sZW5ndGgoKTsKICAgICB3ZWJGb250RGVzY3JpcHRpb24t
PnNpemUgPSBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCk7CiAgICAgd2ViRm9udERlc2Ny
aXB0aW9uLT5ib2xkID0gaXNGb250V2VpZ2h0Qm9sZChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IDNjZjM4
YjQ1NjYzZWU1ZTg5ZjQ5OWFmNjc3MTJiYzM5YzdjNWE2MzkuLjRjMWZmNjNiZGY2OTAzZGQwMjA1
M2FjYjllZjk4ZmEwYmQzYmRjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0RPTUhUTUxDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1M
Q2xhc3Nlcy5jcHAKQEAgLTEyMjgsNyArMTIyOCw3IEBAIEhSRVNVTFQgRE9NSFRNTElucHV0RWxl
bWVudDo6c2V0VmFsdWVGb3JVc2VyKF9Jbl8gQlNUUiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8
SFRNTElucHV0RWxlbWVudD4obV9lbGVtZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5w
dXRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7Ci0gICAg
aW5wdXRFbGVtZW50LnNldFZhbHVlRm9yVXNlcihTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPih2
YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKKyAgICBpbnB1dEVsZW1lbnQuc2V0VmFsdWVG
b3JVc2VyKFN0cmluZyh2YWx1ZSwgU3lzU3RyaW5nTGVuKHZhbHVlKSkpOwogICAgIHJldHVybiBT
X09LOwogfQogCkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1l
bnQ6OnJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZShpbnQgc3RhcnRUYXJnZXQsIGludCBlbmRUYQog
ICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCptX2VsZW1lbnQpOwogCiAgICAgU3RyaW5nIG5ld1ZhbHVlID0gaW5wdXRFbGVtZW50
LnZhbHVlKCk7Ci0gICAgU3RyaW5nIHdlYkNvcmVSZXBsYWNlbWVudFN0cmluZyhzdGF0aWNfY2Fz
dDxVQ2hhcio+KHJlcGxhY2VtZW50U3RyaW5nKSwgU3lzU3RyaW5nTGVuKHJlcGxhY2VtZW50U3Ry
aW5nKSk7CisgICAgU3RyaW5nIHdlYkNvcmVSZXBsYWNlbWVudFN0cmluZyhyZXBsYWNlbWVudFN0
cmluZywgU3lzU3RyaW5nTGVuKHJlcGxhY2VtZW50U3RyaW5nKSk7CiAgICAgbmV3VmFsdWUucmVw
bGFjZShzdGFydFRhcmdldCwgZW5kVGFyZ2V0IC0gc3RhcnRUYXJnZXQsIHdlYkNvcmVSZXBsYWNl
bWVudFN0cmluZyk7CiAgICAgaW5wdXRFbGVtZW50LnNldFZhbHVlKG5ld1ZhbHVlKTsKICAgICBp
bnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5kZXgsIG5ld1ZhbHVlLmxlbmd0aCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2VXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZVdpbi5jcHAKaW5kZXggODE0ZTJiYjZkYzM5MWZjMmZmYTFhOTViNjllNDZkNDU4MGMwMzY1My4u
ZmJlZWI4OTBhNzJjOWNlZWEwMTVjZDExM2JiMjc0ODY1NzcxYmFjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFBsdWdpblBhdGhzRnJvbVJlZ2lz
dHJ5KEhLRVkgcm9vdEtleSwgSGFzaFNldDxTdHJpbmc+JiBwYXQKICAgICAgICAgaWYgKHJlc3Vs
dCAhPSBFUlJPUl9TVUNDRVNTIHx8IHR5cGUgIT0gUkVHX1NaKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgcGF0aHMuYWRkKHdjaGFyVG9TdHJpbmcocGF0aFN0ciwgcGF0aFN0clNp
emUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBwYXRocy5hZGQoU3RyaW5nKHBhdGhT
dHIsIHBhdGhTdHJTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKICAgICB9CiAKICAgICBSZWdD
bG9zZUtleShrZXkpOwpAQCAtODMsNyArODMsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQ
bHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAg
ICBmb3IgKGF1dG8mIGRpcmVjdG9yeSA6IG1fcGx1Z2luRGlyZWN0b3JpZXMpIHsKICAgICAgICAg
U3RyaW5nIHBhdHRlcm4gPSBkaXJlY3RvcnkgKyAiXFwqIjsKIAotICAgICAgICBoRmluZCA9IEZp
bmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXR0ZXJuKS5kYXRhKCks
ICZmaW5kRmlsZURhdGEpOworICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHdjaGFyRnJv
bShwYXR0ZXJuLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgJmZpbmRG
aWxlRGF0YSk7CiAKICAgICAgICAgaWYgKGhGaW5kID09IElOVkFMSURfSEFORExFX1ZBTFVFKQog
ICAgICAgICAgICAgY29udGludWU7CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUGx1Z2luRGF0YWJh
c2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBj
b25zdAogICAgICAgICAgICAgaWYgKGZpbmRGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklM
RV9BVFRSSUJVVEVfRElSRUNUT1JZKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSB3Y2hhclRvU3RyaW5nKGZpbmRGaWxlRGF0YS5jRmls
ZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CisgICAgICAgICAgICBTdHJp
bmcgZmlsZW5hbWUoZmluZEZpbGVEYXRhLmNGaWxlTmFtZSwgd2NzbGVuKGZpbmRGaWxlRGF0YS5j
RmlsZU5hbWUpKTsKICAgICAgICAgICAgIGlmICghKHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZmlsZW5hbWUsICJucCIpICYmIGZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoImRsbCIpKQogICAgICAgICAgICAgICAgICYmICEoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZmlsZW5hbWUsICJwbHVnaW4uZGxsIikgJiYgZGlyZWN0b3J5LmVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoInNob2Nrd2F2ZSAxMCIpKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTE4MCwxMSArMTgwLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNb3ppbGxhUGx1
Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICAgICAg
aWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGggPSB3Y2hhclRvU3RyaW5nKG5hbWUsIG5h
bWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CisgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1Bh
dGggPSBTdHJpbmcobmFtZSwgbmFtZUxlbikgKyAiXFxFeHRlbnNpb25zIjsKICAgICAgICAgICAg
IEhLRVkgZXh0ZW5zaW9uc0tleTsKIAogICAgICAgICAgICAgLy8gVHJ5IG9wZW5pbmcgdGhlIGtl
eQotICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwgc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGV4dGVuc2lvbnNQYXRoKS5kYXRhKCksIDAsIEtFWV9SRUFELCAmZXh0ZW5z
aW9uc0tleSk7CisgICAgICAgICAgICByZXN1bHQgPSBSZWdPcGVuS2V5RXgoa2V5LCB3Y2hhckZy
b20oZXh0ZW5zaW9uc1BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
LCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNLZXkpOwogCiAgICAgICAgICAgICBpZiAocmVzdWx0
ID09IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAvLyBOb3cgZ2V0IHRoZSBwbHVn
aW5zIGRpcmVjdG9yeQpAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRN
b3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IFJlZ1F1ZXJ5VmFsdWVFeChleHRlbnNpb25zS2V5LCBURVhU
KCJQbHVnaW5zIiksIDAsICZ0eXBlLCAoTFBCWVRFKSZwbHVnaW5zRGlyZWN0b3J5U3RyLCAmcGx1
Z2luc0RpcmVjdG9yeVNpemUpOwogCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJP
Ul9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQotICAgICAgICAgICAgICAgICAgICBkaXJlY3Rv
cmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBwbHVnaW5zRGly
ZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgIGRp
cmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVj
dG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogCiAgICAgICAgICAgICAgICAgUmVnQ2xv
c2VLZXkoZXh0ZW5zaW9uc0tleSk7CiAgICAgICAgICAgICB9CkBAIC0yMTIsNyArMjEyLDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9yeShW
ZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAgICBEV09SRCBwbHVnaW5EaXJlY3RvcnlTaXplID0g
OjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKFRFWFQoIiVTWVNURU1EUklWRSVcXFBGaWxlc1xc
UGx1Z2lucyIpLCBwbHVnaW5EaXJlY3RvcnlTdHIsIFdURl9BUlJBWV9MRU5HVEgocGx1Z2luRGly
ZWN0b3J5U3RyKSk7CiAKICAgICBpZiAocGx1Z2luRGlyZWN0b3J5U2l6ZSA+IDAgJiYgcGx1Z2lu
RGlyZWN0b3J5U2l6ZSA8PSBXVEZfQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVjdG9yeVN0cikpCi0g
ICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKHBsdWdpbkRpcmVjdG9yeVN0
ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKKyAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5k
KFN0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNpemUgLSAxKSk7CiAK
ICAgICBEV09SRCB0eXBlOwogICAgIFdDSEFSIGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0cltfTUFY
X1BBVEhdOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRXaW5kb3dz
TWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yCiAgICAg
SFJFU1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgTCJT
b2Z0d2FyZVxcTWljcm9zb2Z0XFxNZWRpYVBsYXllciIsIEwiSW5zdGFsbGF0aW9uIERpcmVjdG9y
eSIsICZ0eXBlLCAmaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyLCAmaW5zdGFsbGF0aW9uRGlyZWN0
b3J5U2l6ZSk7CiAKICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYgdHlwZSA9PSBS
RUdfU1opCi0gICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZCh3Y2hhclRvU3RyaW5nKGluc3RhbGxh
dGlvbkRpcmVjdG9yeVN0ciwgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hB
UikgLSAxKSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcoaW5zdGFsbGF0aW9u
RGlyZWN0b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAt
IDEpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVj
dG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCkBAIC0yNDUsMTAgKzI0NSwxMCBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxT
dHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNT
KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGludD4gYWNyb2JhdFZlcnNp
b24gPSBwYXJzZVZlcnNpb25TdHJpbmcod2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSk7Cisg
ICAgICAgIFZlY3RvcjxpbnQ+IGFjcm9iYXRWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKFN0
cmluZyhuYW1lLCBuYW1lTGVuKSk7CiAgICAgICAgIGlmIChjb21wYXJlVmVyc2lvbnMoYWNyb2Jh
dFZlcnNpb24sIGxhdGVzdEFjcm9iYXRWZXJzaW9uKSkgewogICAgICAgICAgICAgbGF0ZXN0QWNy
b2JhdFZlcnNpb24gPSBhY3JvYmF0VmVyc2lvbjsKLSAgICAgICAgICAgIGxhdGVzdEFjcm9iYXRW
ZXJzaW9uU3RyaW5nID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKTsKKyAgICAgICAgICAg
IGxhdGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4pOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0yNTgsMTAgKzI1OCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
YWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcmll
cykKICAgICAgICAgRFdPUkQgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSA9IHNpemVvZihhY3JvYmF0
SW5zdGFsbFBhdGhTdHIpOwogCiAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1Z2luS2V5UGF0aCA9
ICJTb2Z0d2FyZVxcQWRvYmVcXEFjcm9iYXQgUmVhZGVyXFwiICsgbGF0ZXN0QWNyb2JhdFZlcnNp
b25TdHJpbmcgKyAiXFxJbnN0YWxsUGF0aCI7Ci0gICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5
VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoYWNy
b2JhdFBsdWdpbktleVBhdGgpLmRhdGEoKSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0YWxsUGF0aFN0
ciwgJmFjcm9iYXRJbnN0YWxsUGF0aFNpemUpOworICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3Ry
eVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgd2NoYXJGcm9tKGFjcm9iYXRQbHVnaW5LZXlQYXRo
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgJnR5cGUsIGFjcm9i
YXRJbnN0YWxsUGF0aFN0ciwgJmFjcm9iYXRJbnN0YWxsUGF0aFNpemUpOwogCiAgICAgICAgIGlm
IChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQ
bHVnaW5EaXJlY3RvcnkgPSB3Y2hhclRvU3RyaW5nKGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgYWNy
b2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJyb3dzZXIiOwor
ICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSBTdHJpbmcoYWNyb2Jh
dEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAt
IDEpICsgIlxcYnJvd3NlciI7CiAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoYWNyb2Jh
dFBsdWdpbkRpcmVjdG9yeSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTAsMTAgKzI5MCwxMCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5n
PiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFZlY3RvcjxpbnQ+IGphdmFWZXJzaW9uID0gcGFy
c2VWZXJzaW9uU3RyaW5nKHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBW
ZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyhTdHJpbmcobmFtZSwg
bmFtZUxlbikpOwogICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKGphdmFWZXJzaW9uLCBsYXRl
c3RKYXZhVmVyc2lvbikpIHsKICAgICAgICAgICAgIGxhdGVzdEphdmFWZXJzaW9uID0gamF2YVZl
cnNpb247Ci0gICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvblN0cmluZyA9IHdjaGFyVG9TdHJp
bmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvblN0cmluZyA9
IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzA1LDEyICsz
MDUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEphdmFQbHVnaW5EaXJlY3RvcnkoVmVjdG9y
PFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBEV09SRCB1c2VOZXdQbHVnaW5TaXplOwog
CiAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luS2V5UGF0aCA9ICJTb2Z0d2FyZVxcSmF2YVNvZnRc
XEphdmEgUGx1Zy1pblxcIiArIGxhdGVzdEphdmFWZXJzaW9uU3RyaW5nOwotICAgICAgICByZXN1
bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwgc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGphdmFQbHVnaW5LZXlQYXRoKS5kYXRhKCksIEwiVXNlTmV3SmF2YVBsdWdp
biIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFsdWUsICZ1c2VOZXdQbHVnaW5TaXplKTsKKyAgICAg
ICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHdjaGFyRnJv
bShqYXZhUGx1Z2luS2V5UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSksIEwiVXNlTmV3SmF2YVBsdWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFsdWUsICZ1c2VO
ZXdQbHVnaW5TaXplKTsKIAogICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYg
dXNlTmV3UGx1Z2luVmFsdWUgPT0gMSkgewotICAgICAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0
cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihq
YXZhUGx1Z2luS2V5UGF0aCkuZGF0YSgpLCBMIkphdmFIb21lIiwgJnR5cGUsIGphdmFJbnN0YWxs
UGF0aFN0ciwgJmphdmFJbnN0YWxsUGF0aFNpemUpOworICAgICAgICAgICAgcmVzdWx0ID0gZ2V0
UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHdjaGFyRnJvbShqYXZhUGx1Z2luS2V5
UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIEwiSmF2YUhvbWUi
LCAmdHlwZSwgamF2YUluc3RhbGxQYXRoU3RyLCAmamF2YUluc3RhbGxQYXRoU2l6ZSk7CiAgICAg
ICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICBT
dHJpbmcgamF2YVBsdWdpbkRpcmVjdG9yeSA9IHdjaGFyVG9TdHJpbmcoamF2YUluc3RhbGxQYXRo
U3RyLCBqYXZhSW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYmluXFxu
ZXdfcGx1Z2luIjsKKyAgICAgICAgICAgICAgICBTdHJpbmcgamF2YVBsdWdpbkRpcmVjdG9yeSA9
IFN0cmluZyhqYXZhSW5zdGFsbFBhdGhTdHIsIGphdmFJbnN0YWxsUGF0aFNpemUgLyBzaXplb2Yo
V0NIQVIpIC0gMSkgKyAiXFxiaW5cXG5ld19wbHVnaW4iOwogICAgICAgICAgICAgICAgIGRpcmVj
dG9yaWVzLmFwcGVuZChqYXZhUGx1Z2luRGlyZWN0b3J5KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHNhZmFyaVBsdWdp
bnNEaXJlY3RvcnkoKQogICAgICAgICBpZiAoIVBhdGhSZW1vdmVGaWxlU3BlYyhtb2R1bGVGaWxl
TmFtZVN0cikpCiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICAgICAgcGx1Z2luc0RpcmVj
dG9yeSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtb2R1bGVGaWxlTmFtZVN0cikgKyAi
XFxQbHVnaW5zIjsKKyAgICAgICAgcGx1Z2luc0RpcmVjdG9yeSA9IFN0cmluZyhtb2R1bGVGaWxl
TmFtZVN0cikgKyAiXFxQbHVnaW5zIjsKICAgICB9CiBleGl0OgogICAgIHJldHVybiBwbHVnaW5z
RGlyZWN0b3J5OwpAQCAtMzUyLDEwICszNTIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1h
Y3JvbWVkaWFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAg
ICAgV0NIQVIgbWFjcm9tZWRpYURpcmVjdG9yeVN0cltNQVhfUEFUSF07CiAKICAgICBQYXRoQ29t
YmluZShtYWNyb21lZGlhRGlyZWN0b3J5U3RyLCBzeXN0ZW1EaXJlY3RvcnlTdHIsIFRFWFQoIm1h
Y3JvbWVkXFxGbGFzaCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobnVsbFRlcm1pbmF0ZWRX
Q2hhclRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKKyAgICBkaXJlY3Rvcmllcy5h
cHBlbmQoU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIAogICAgIFBhdGhDb21iaW5l
KG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9yeVN0ciwgVEVYVCgibWFjcm9t
ZWRcXFNob2Nrd2F2ZSAxMCIpKTsKLSAgICBkaXJlY3Rvcmllcy5hcHBlbmQobnVsbFRlcm1pbmF0
ZWRXQ2hhclRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKKyAgICBkaXJlY3Rvcmll
cy5hcHBlbmQoU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpKTsKIH0KIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggOTRiYmE2YTllN2I2NjU0OGE2OGIz
NjdiMzg3NTg5NWVmZTliNTI2NS4uZDU4Y2IyNjBkYjg4MTM2OWU3YzQxNzliZTdlNDAzMmRmNTcw
NmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blBhY2thZ2VXaW4uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VmVyc2lv
bkluZm8oY29uc3QgTFBWT0lEIHZlcnNpb25JbmZvRGF0YSwgY29uc3QgU3RyaW5nJiBpbmZvKQog
ICAgIFVJTlQgYnVmZmVyTGVuZ3RoOwogICAgIFN0cmluZyBzdWJJbmZvID0gIlxcU3RyaW5nZmls
ZUluZm9cXDA0MDkwNEU0XFwiICsgaW5mbzsKICAgICBib29sIHJldHZhbCA9IFZlclF1ZXJ5VmFs
dWVXKHZlcnNpb25JbmZvRGF0YSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KHN1YkluZm8pLmRhdGEoKSwKKyAgICAgICAgd2NoYXJGcm9tKHN1YkluZm8uY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLAogICAgICAgICAmYnVmZmVyLCAmYnVmZmVyTGVu
Z3RoKTsKICAgICBpZiAoIXJldHZhbCB8fCBidWZmZXJMZW5ndGggPT0gMCkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpAQCAtMTY2LDEzICsxNjYsMTMgQEAgdm9pZCBQbHVnaW5QYWNrYWdlOjpk
ZXRlcm1pbmVRdWlya3MoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIGJvb2wgUGx1Z2luUGFja2Fn
ZTo6ZmV0Y2hJbmZvKCkKIHsKICAgICBEV09SRCB2ZXJzaW9uSW5mb1NpemUsIHplcm9IYW5kbGU7
Ci0gICAgdmVyc2lvbkluZm9TaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcoc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAmemVyb0hhbmRsZSk7CisgICAgdmVy
c2lvbkluZm9TaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcod2NoYXJGcm9tKG1fcGF0aC5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksICZ6ZXJvSGFuZGxlKTsKICAg
ICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFZlY3RvcjxjaGFyPiB2ZXJzaW9uSW5mb0RhdGEodmVyc2lvbkluZm9TaXplKTsKIAotICAgIGlm
ICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRo
KS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmRhdGEoKSkpCisg
ICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHdjaGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25J
bmZvRGF0YS5kYXRhKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX25hbWUgPSBn
ZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiUHJvZHVjdE5hbWUiKTsKQEAg
LTIzOCwxMSArMjM4LDExIEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9hZCgpCiAKICAgICAgICAg
U3RyaW5nIHBhdGggPSBtX3BhdGguc3Vic3RyaW5nKDAsIG1fcGF0aC5yZXZlcnNlRmluZCgnXFwn
KSk7CiAKLSAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKQorICAgICAgICBpZiAoITo6U2V0Q3VycmVudERp
cmVjdG9yeVcod2NoYXJGcm9tKHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5k
YXRhKCkpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBMb2FkIHRo
ZSBsaWJyYXJ5Ci0gICAgICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4VyhzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVEX1NF
QVJDSF9QQVRIKTsKKyAgICAgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKHdjaGFyRnJv
bShtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCBMT0FE
X1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAKICAgICAgICAgaWYgKCE6OlNldEN1cnJlbnRE
aXJlY3RvcnlXKGN1cnJlbnRQYXRoKSkgewogICAgICAgICAgICAgaWYgKG1fbW9kdWxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5k
ZXggNGE2NjNlMDY0OGM1MzE5NWFiMDllMDA1Y2FlNTNlNDU0OTdiZDkzOS4uMDk4OWJkZTc1OWQy
NTBlMzYwM2ZmNDRmMWUwNTY4NzNmOGJmYmIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBAIC03NTUsMTMgKzc1NSwxMyBAQCBO
UEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4mIGJ1ZmZl
ciwgdWludDMyX3QgbGVuLCBjb25zdAogCiAgICAgLy8gR2V0IGZpbGUgaW5mbwogICAgIFdJTjMy
X0ZJTEVfQVRUUklCVVRFX0RBVEEgYXR0cnM7Ci0gICAgaWYgKCFHZXRGaWxlQXR0cmlidXRlc0V4
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSwgR2V0RmlsZUV4
SW5mb1N0YW5kYXJkLCAmYXR0cnMpKQorICAgIGlmICghR2V0RmlsZUF0dHJpYnV0ZXNFeFcod2No
YXJGcm9tKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwg
R2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmYXR0cnMpKQogICAgICAgICByZXR1cm4gTlBFUlJfRklM
RV9OT1RfRk9VTkQ7CiAKICAgICBpZiAoYXR0cnMuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRU
UklCVVRFX0RJUkVDVE9SWSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwog
Ci0gICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSwgRklMRV9SRUFEX0RBVEEsIEZJTEVfU0hBUkVfUkVB
RCwgMCwgT1BFTl9FWElTVElORywgMCwgMCk7CisgICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVh
dGVGaWxlVyh3Y2hhckZyb20oZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpLCBGSUxFX1JFQURfREFUQSwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNU
SU5HLCAwLCAwKTsKICAgICAKICAgICBpZiAoZmlsZUhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9W
QUxVRSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggODMzMWNhOTQwNGU1OTE1ZTczNmNlMTBhYmRmZmI5OGFiMmZiNGI2Yy4uZTNj
NmNiMGE1OWFmMmY0MjQ4OWY1MjcwY2NhMTkzNTVlZGU5YjMwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVX
aW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8d2No
YXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY0NiwxNyArNjQ3LDE2IEBAIHZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYgZmlsZUNob29zZXIp
CiAKICAgICBvZm4ubFN0cnVjdFNpemUgPSBzaXplb2Yob2ZuKTsKICAgICBvZm4uaHduZE93bmVy
ID0gdmlld1dpbmRvdzsKLSAgICBTdHJpbmcgYWxsRmlsZXMgPSBhbGxGaWxlc1RleHQoKTsKLSAg
ICBhbGxGaWxlcy5hcHBlbmQoTCJcMCouKlwwXDAiLCA2KTsKKyAgICBTdHJpbmcgYWxsRmlsZXMg
PSBtYWtlU3RyaW5nKGFsbEZpbGVzVGV4dCgpLCBTdHJpbmcoIlwwKi4qXDBcMCIsIDYpKTsKIAog
ICAgIFZlY3RvcjxVQ2hhcj4gZmlsdGVyQ2hhcmFjdGVycyA9IGFsbEZpbGVzLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBidWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFr
ZSB0aGUgR2V0T3BlbkZpbGVOYW1lIGNhbGwKLSAgICBvZm4ubHBzdHJGaWx0ZXIgPSBmaWx0ZXJD
aGFyYWN0ZXJzLmRhdGEoKTsKKyAgICBvZm4ubHBzdHJGaWx0ZXIgPSB3Y2hhckZyb20oZmlsdGVy
Q2hhcmFjdGVycy5kYXRhKCkpOwogCiAgICAgb2ZuLmxwc3RyRmlsZSA9IGZpbGVCdWYuZGF0YSgp
OwogICAgIG9mbi5uTWF4RmlsZSA9IGZpbGVCdWYuc2l6ZSgpOwogICAgIFN0cmluZyBkaWFsb2dU
aXRsZSA9IHVwbG9hZEZpbGVUZXh0KCk7CiAgICAgVmVjdG9yPFVDaGFyPiBkaWFsb2dUaXRsZUNo
YXJhY3RlcnMgPSBkaWFsb2dUaXRsZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOyAv
LyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIEdldE9wZW5GaWxlTmFtZSBj
YWxsCi0gICAgb2ZuLmxwc3RyVGl0bGUgPSBkaWFsb2dUaXRsZUNoYXJhY3RlcnMuZGF0YSgpOwor
ICAgIG9mbi5scHN0clRpdGxlID0gd2NoYXJGcm9tKGRpYWxvZ1RpdGxlQ2hhcmFjdGVycy5kYXRh
KCkpOwogICAgIG9mbi5GbGFncyA9IE9GTl9FTkFCTEVTSVpJTkcgfCBPRk5fRklMRU1VU1RFWElT
VCB8IE9GTl9QQVRITVVTVEVYSVNUIHwgT0ZOX0VYUExPUkVSOwogICAgIGlmIChtdWx0aUZpbGUp
CiAgICAgICAgIG9mbi5GbGFncyA9IG9mbi5GbGFncyB8IE9GTl9BTExPV01VTFRJU0VMRUNUOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKaW5kZXggYWFlMWUwMDBmOGZhYzk4ZTM3MjI5NDAwMWM2OWM0Yzcw
ZWQ1M2ZmOS4uOTEwYmU4N2UyNWJkNjRkNWQxNjUzMjBhYTA0MmYwOTBkZGU4NDNkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJXZWJLaXRETEwu
aCIKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKIAorI2luY2x1ZGUgIkRPTUNvcmVDbGFz
c2VzLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgi
CiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5o
IgotI2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSA8Y29tdXRpbC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4K
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJUeXBpbmdHZXN0dXJlSW5k
aWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaXNpYmxlU2VsZWN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0
cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CkBAIC03NTgsNyArNzU5LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIGludCogbWlzc3BlbGxpbmdMb2MK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmll
dyk7Ci0gICAgZWQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhtX3dlYlZpZXcsIHRleHQudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1p
c3NwZWxsaW5nTGVuZ3RoKTsKKyAgICBlZC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKG1fd2ViVmll
dywgd2NoYXJGcm9tKHRleHQudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkpLCB0ZXh0Lmxlbmd0aCgp
LCBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CiB9CiAKIFN0cmluZyBX
ZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3Jk
KGNvbnN0IFN0cmluZyYgaW5wdXRXb3JkKQpAQCAtNzgwLDcgKzc4MSw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxH
cmFtbWFyRGV0YWlsCiAKICAgICBpbml0Vmlld1NwZWNpZmljU3BlbGxpbmcobV93ZWJWaWV3KTsK
ICAgICBDT01QdHI8SUVudW1XZWJHcmFtbWFyRGV0YWlscz4gZW51bURldGFpbHNPYmo7Ci0gICAg
aWYgKEZBSUxFRChlZC0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcobV93ZWJWaWV3LCB0ZXh0LnVwY29u
dmVydGVkQ2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpLCAmZW51bURldGFpbHNPYmosIGJhZEdy
YW1tYXJMb2NhdGlvbiwgYmFkR3JhbW1hckxlbmd0aCkpKQorICAgIGlmIChGQUlMRUQoZWQtPmNo
ZWNrR3JhbW1hck9mU3RyaW5nKG1fd2ViVmlldywgd2NoYXJGcm9tKHRleHQudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCkpLCB0ZXh0Lmxlbmd0aCgpLCAmZW51bURldGFpbHNPYmosIGJhZEdyYW1tYXJM
b2NhdGlvbiwgYmFkR3JhbW1hckxlbmd0aCkpKQogICAgICAgICByZXR1cm47CiAKICAgICB3aGls
ZSAodHJ1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggMjIxZTIyZjM4NjA1YTUx
ZjA3MzdlYWQzYzhiZTljMzk1YzQyNGRjNy4uNTllZWRhNmI4NDU3YTlmYjQzZGQzNzhkOWE2NjM2
NjA2MjJlZTdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSA8d2NoYXIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4v
V0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1
MCw3ICs0NTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95SW5z
cGVjdG9yVmlldygpCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5k
b3dUaXRsZSgpCiB7CiAgICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZygiV2ViIEluc3BlY3Rv
ciAiLCBzdGF0aWNfY2FzdDxVQ2hhcj4oMHgyMDE0KSwgJyAnLCBtX2luc3BlY3RlZFVSTCk7Ci0g
ICAgOjpTZXRXaW5kb3dUZXh0KG1fZnJvbnRlbmRId25kLCB0aXRsZS5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgOjpTZXRXaW5kb3dUZXh0KG1fZnJvbnRlbmRI
d25kLCB3Y2hhckZyb20odGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRh
KCkpKTsKIH0KIAogTFJFU1VMVCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6b25HZXRNaW5N
YXhJbmZvKFdQQVJBTSwgTFBBUkFNIGxQYXJhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmNwcAppbmRleCA0YWQzMTY2MDE3ZjM5OWFmOWM4MzM5NTA5NmMzZmQ1N2U1NjEwODMwLi41OTY4
M2I5NGUxMzY3Mzc0ZDIyODhmMTZjNzE4ZWVmZjE4NDQzYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Nl
dHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJh
cy5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3Mu
aD4KQEAgLTczMSw3ICs3MzIsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpmaW5kRnJhbWVOYW1lZChf
SW5fIEJTVFIgbmFtZSwgX0NPTV9PdXRwdHJfb3B0XyBJV2ViRnJhbWUqKiBmcgogICAgIGlmICgh
Y29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgRnJhbWUqIGZv
dW5kRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5maW5kKEF0b21pY1N0cmluZyhuYW1lLCBTeXNT
dHJpbmdMZW4obmFtZSkpLCAqY29yZUZyYW1lKTsKKyAgICBGcmFtZSogZm91bmRGcmFtZSA9IGNv
cmVGcmFtZS0+dHJlZSgpLmZpbmQoQXRvbWljU3RyaW5nKHVjaGFyRnJvbShuYW1lKSwgU3lzU3Ry
aW5nTGVuKG5hbWUpKSwgKmNvcmVGcmFtZSk7CiAgICAgaWYgKCFmb3VuZEZyYW1lKQogICAgICAg
ICByZXR1cm4gU19PSzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2Fs
aXphYmxlU3RyaW5ncy5jcHAKaW5kZXggZGUwMjIxZjU0NWYzZGY0YTZhZDEwYzBhYTk2ZDM2Y2I4
ZDkxNjNmMi4uZGQ1NzdjYzQ0MzhjYjk1ZGUxZTJkMDFmMDJmYmFhNGY2NmUzM2RmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBA
IC0yNCwyMCArMjQsMTkgQEAKICAqLwogCiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCi0KICNpbmNs
dWRlICJXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaD4KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
d2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIGNsYXNzIExvY2FsaXplZFN0cmluZzsKIApAQCAt
ODEsNyArODAsNyBAQCBwcml2YXRlOgogTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBMUENUU1RS
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IG1fc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpOworICAgICAg
ICByZXR1cm4gd2NoYXJGcm9tKG1fc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpKTsKIAogICAgIG1fc3RyaW5nID0gbV9jZlN0cmluZzsKIApAQCAtODksNyArODgs
NyBAQCBMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RTVFIoKSBjb25zdAogICAgICAgICBp
ZiAobV9zdHJpbmdbaV0gPT0gJ0AnICYmIChtX3N0cmluZ1tpIC0gMV0gPT0gJyUnIHx8IChpID4g
MiAmJiBtX3N0cmluZ1tpIC0gMV0gPT0gJyQnICYmIG1fc3RyaW5nW2kgLSAyXSA+PSAnMScgJiYg
bV9zdHJpbmdbaSAtIDJdIDw9ICc5JyAmJiBtX3N0cmluZ1tpIC0gM10gPT0gJyUnKSkpCiAgICAg
ICAgICAgICBtX3N0cmluZy5yZXBsYWNlKGksIDEsICJzIik7CiAKLSAgICByZXR1cm4gbV9zdHJp
bmcuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCk7CisgICAgcmV0dXJuIHdj
aGFyRnJvbShtX3N0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7
CiB9CiAKIHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IDFmZTEx
NDVhZWMyMDA4OGE2ZmIxZmJmOThkYjAzMmMwNmQwOWIyODUuLmE3ZTAwNDFiNzQ2Y2ZjZjdlMDFi
YWM4MDAxODVlOTg3MTM0N2Y0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTI2LDE1ICsyNiwxNSBAQAogI2luY2x1ZGUgIldl
YktpdERMTC5oIgogI2luY2x1ZGUgIldlYk11dGFibGVVUkxSZXF1ZXN0LmgiCiAKLSNpbmNsdWRl
ICJXZWJLaXQuaCIKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKICNpbmNsdWRlICJX
ZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9ybURhdGEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKICNpZiBVU0UoQ0Yp
CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUNGV2luLmg+CkBAIC0yNzIsNyArMjcyLDcg
QEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6aXNFcXVhbChfSW5fb3B0XyBJV2ViVVJM
UmVxdWVzdCogb3RoZXIsIF9PdXRfIEJPT0wKIAogSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVz
dDo6YWRkVmFsdWUoX0luXyBCU1RSIHZhbHVlLCBfSW5fIEJTVFIgZmllbGQpCiB7Ci0gICAgbV9y
ZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChXVEY6OkF0b21pY1N0cmluZyh2YWx1ZSwgU3lzU3Ry
aW5nTGVuKHZhbHVlKSksIFN0cmluZyhmaWVsZCwgU3lzU3RyaW5nTGVuKGZpZWxkKSkpOworICAg
IG1fcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoQXRvbWljU3RyaW5nKHVjaGFyRnJvbSh2YWx1
ZSksIFN5c1N0cmluZ0xlbih2YWx1ZSkpLCBTdHJpbmcoZmllbGQsIFN5c1N0cmluZ0xlbihmaWVs
ZCkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAppbmRleCAzZmY4MWNmMjA4OWRlNjY4MGVjYTM4NTZmNTczYzIyOTUxNzQ4ZjBhLi4yYmE3YTU0
ZDg4ZTljOThkNDgyNjBiNmY4ZTQ0N2QzZWMxMTJhYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcApAQCAtMTY5LDEzICsxNjksMjUgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRv
d01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93c1RvdWNoLmg+
CiAjaW5jbHVkZSA8Y29tZGVmLmg+CisjaW5jbHVkZSA8Y29tdXRpbC5oPgogI2luY2x1ZGUgPGQy
ZDEuaD4KKyNpbmNsdWRlIDxkaW1tLmg+CisjaW5jbHVkZSA8b2xlYWNjLmg+CisjaW5jbHVkZSA8
c2hsb2JqLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3aW5kb3dzeC5oPgorI2lu
Y2x1ZGUgPHdpbnVzZXIuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CiAjaW5jbHVk
ZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAtMjA1LDE4ICsyMTcsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRnVsbFNjcmVlbkNvbnRyb2xsZXIuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8U2hsT2Jq
Lmg+Ci0jaW5jbHVkZSA8Y29tdXRpbC5oPgotI2luY2x1ZGUgPGRpbW0uaD4KLSNpbmNsdWRlIDxv
bGVhY2MuaD4KLSNpbmNsdWRlIDx3Y2hhci5oPgotI2luY2x1ZGUgPHdpbmRvd3N4Lmg+Ci0jaW5j
bHVkZSA8d2ludXNlci5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
Ci0jaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KLQogI2RlZmluZSBXRUJLSVRfRFJBV0lO
RyA0CiAKIC8vIFNvZnQgbGluayBmdW5jdGlvbnMgZm9yIGdlc3R1cmVzIGFuZCBwYW5uaW5nIGZl
ZWRiYWNrCkBAIC0yNTYsNyArMjU2LDcgQEAgV2ViVmlldyoga2l0KFBhZ2UqIHBhZ2UpCiAKIHN0
YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKEJTVFIgYnN0cikKIHsKLSAg
ICByZXR1cm4gQXRvbWljU3RyaW5nKGJzdHIsIFN5c1N0cmluZ0xlbihic3RyKSk7CisgICAgcmV0
dXJuIEF0b21pY1N0cmluZyh1Y2hhckZyb20oYnN0ciksIFN5c1N0cmluZ0xlbihic3RyKSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRvU3RyaW5nKEJTVFIgYnN0cikKQEAgLTE1OTgsMTMg
KzE1OTgsMTMgQEAgc3RhdGljIEhNRU5VIGNyZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1zKGNvbnN0
IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICAgICAgc3dpdGNoIChpdGVtLnR5
cGUoKSkgewogICAgICAgICBjYXNlIEFjdGlvblR5cGU6CiAgICAgICAgIGNhc2UgQ2hlY2thYmxl
QWN0aW9uVHlwZToKLSAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1NU
UklORywgaXRlbS5hY3Rpb24oKSwgaXRlbS50aXRsZSgpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8
IE1GX1NUUklORywgaXRlbS5hY3Rpb24oKSwgd2NoYXJGcm9tKGl0ZW0udGl0bGUoKS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgU2VwYXJhdG9yVHlwZToKICAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51
LCBmbGFncyB8IE1GX1NFUEFSQVRPUiwgaXRlbS5hY3Rpb24oKSwgbnVsbHB0cik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdWJtZW51VHlwZToKLSAgICAgICAgICAgIDo6QXBw
ZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1BPUFVQLCAoVUlOVF9QVFIpY3JlYXRlQ29udGV4dE1l
bnVGcm9tSXRlbXMoaXRlbS5zdWJNZW51SXRlbXMoKSksIGl0ZW0udGl0bGUoKS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAgICAgICA6OkFwcGVuZE1lbnUo
bWVudSwgZmxhZ3MgfCBNRl9QT1BVUCwgKFVJTlRfUFRSKWNyZWF0ZUNvbnRleHRNZW51RnJvbUl0
ZW1zKGl0ZW0uc3ViTWVudUl0ZW1zKCkpLCB3Y2hhckZyb20oaXRlbS50aXRsZSgpLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KQEAgLTMyMzUsNyArMzIzNSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0VG9v
bFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAgICAgIGluZm8udUZsYWdzID0gVFRGX0lE
SVNIV05EOwogICAgICAgICBpbmZvLnVJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUlOVF9QVFI+KG1f
dmlld1dpbmRvdyk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gdG9vbFRpcENoYXJhY3RlcnMgPSBt
X3Rvb2xUaXAuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0YWluIGJ1ZmZl
ciBsb25nIGVub3VnaCB0byBtYWtlIHRoZSBTZW5kTWVzc2FnZSBjYWxsCi0gICAgICAgIGluZm8u
bHBzelRleHQgPSBjb25zdF9jYXN0PFVDaGFyKj4odG9vbFRpcENoYXJhY3RlcnMuZGF0YSgpKTsK
KyAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KHdjaGFyRnJvbSh0
b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpKTsKICAgICAgICAgOjpTZW5kTWVzc2FnZShtX3Rvb2xU
aXBId25kLCBUVE1fVVBEQVRFVElQVEVYVCwgMCwgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZp
bmZvKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHku
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKaW5kZXggNTBkZjAzZWI2
MDA0NGVhMDc4ZmVhYzNiNTdjMmJlOWM3NmE5YTdmMS4uOTQ3NmFkYzAwYzY0ZGRjNjlhNmE5Yzg1
NjE4ZTAxNzY4NDgxMTA0NCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQpAQCAtOTcsOSAr
OTcsNiBAQCBlbmRpZiAoKQogCiBpZiAoTk9UIEFQUExFKQogICAgIGZpbmRfcGFja2FnZShJQ1Ug
UkVRVUlSRUQpCi0gICAgaWYgKFdJTjMyKQotICAgICAgICBhZGRfZGVmaW5pdGlvbnMoLURVQ0hB
Ul9UWVBFPXdjaGFyX3QpCi0gICAgZW5kaWYgKCkKIGVsc2UgKCkKICAgICBhZGRfZGVmaW5pdGlv
bnMoLURVX0RJU0FCTEVfUkVOQU1JTkc9MSAtRFVfU0hPV19DUExVU1BMVVNfQVBJPTApCiAgICAg
c2V0KElDVV9MSUJSQVJJRVMgbGliaWN1Y29yZS5keWxpYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5k
ZXggYWUzYTllZmY2MmFjZDJjNzhjNGRmMjU2MjUwM2Y2YjAyZmViY2IwNi4uNjFmYTQ4NWIyNWRl
YjU1ZmU4MzNlNzI5NGMwZTE3OWVhNmY1OWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTE1
OCw3ICsxNTgsNiBAQCBzZXQoUEFMX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBzZXQoV2ViS2l0TGVn
YWN5X0xJQlJBUllfVFlQRSBTSEFSRUQpCiAKIGZpbmRfcGFja2FnZShJQ1UgUkVRVUlSRUQpCi1h
ZGRfZGVmaW5pdGlvbnMoLURVQ0hBUl9UWVBFPXdjaGFyX3QpCiAKICMgSWYgPHdpbnNvY2syLmg+
IGlzIG5vdCBpbmNsdWRlZCBiZWZvcmUgPHdpbmRvd3MuaD4gcmVkZWZpbml0aW9uIGVycm9ycyBv
Y2N1cgogIyB1bmxlc3MgX1dJTlNPQ0tBUElfIGlzIGRlZmluZWQgYmVmb3JlIDx3aW5kb3dzLmg+
IGlzIGluY2x1ZGVkCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggY2ExNTVlODI5MjZhZjE3NzQxOWVhMzUwNDRiMWYxOGU3MTUwZDZkYy4uNGMzOWUw
N2Y1MmFjOTExNWVhMTM0MjQ3ZTc4MzkxMjNhODdjMjFlNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTAzLTA2
ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
XSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3RvcGdhcCBhbmQgbGVhcm4gdG8gbGl2ZSB3
aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIERlbGV0ZSB3Y2hhciB0ZXN0cyAt
LSB0aGVzZSB3ZXJlIE1TVkMtb25seSBhbmQgd2Ugd29uJ3QgYmUgdXNpbmcgU3RyaW5nOjpvcGVy
YXRvcisgZ29pbmcgZm9yd2FyZCBhbnl3YXkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoZmluZEZvbnRGYWxsYmFjayk6CisgICAg
ICAgIChhZGRGb250RmFsbGJhY2tJZlByZXNlbnQpOgorICAgICAgICAocmVtb3ZlRm9udEZhbGxi
YWNrSWZQcmVzZW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
d2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0
aWw6Om1vZHVsZURpcmVjdG9yeSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVh
dGVJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVycyBhcyBuZWVk
ZWQuCisKIDIwMTktMDMtMDYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBDb25zaWRlciBzdXBwb3J0aW5nIHRoZSBgcmVmZXJyZXJwb2xpY3lgIGF0dHJpYnV0ZS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGRhZTVkZTc2
MTA1NzZlNmU2MzgyNmFhZjZmNmI2OTBkYzhjYjFlNDMuLjUxNjFmZWI2YjU1MzQ0Nzk4YjgzZTFj
Mzg1YzhmYTg1NmUwMDBkMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIldlYkNvcmVUZXN0U3VwcG9y
dC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIK
LQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvVGVzdFJ1bm5lclV0aWxzLmg+CiAjaW5jbHVkZSA8V2ViS2l0TGVnYWN5
L1dlYktpdC5oPgpAQCAtNjcsNiArNjYsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFy
U3RyaW5nRXh0cmFzLmg+CiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2luY2x1ZGUgPENG
TmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgc3RhdGlj
IFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICBTdHJp
bmcgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JV
cmwpOwogCiAgICAgd2NoYXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOwotICAgIGlmICghX3dmdWxs
cGF0aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpLCBfTUFYX1BBVEgpKQorICAgIGlmICghX3dmdWxscGF0aChmdWxsUGF0
aCwgd2NoYXJGcm9tKHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLmRhdGEoKSksIF9NQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogCiAgICAgaWYgKCE6OlBhdGhJc0RpcmVjdG9yeVcoZnVsbFBhdGgpKQpAQCAtMTA2OSw3ICsx
MDY5LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhP
clVybCkKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBwb3MgPSBwb3NzaWJsZVBh
dGhzLmJlZ2luKCk7IHBvcyAhPSBwb3NzaWJsZVBhdGhzLmVuZCgpOyArK3BvcykgewogICAgICAg
ICBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoKnBvcywgInJlc291cmNlc1xcIik7CiAKLSAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5
VyhwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRh
KCkpKQorICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHdjaGFyRnJvbShwYXRoVG9Gb250
RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKSkKICAgICAg
ICAgICAgIHJldHVybiBwYXRoVG9Gb250RmFsbGJhY2s7CiAgICAgfQogCkBAIC0xMDgzLDcgKzEw
ODMsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5n
JiBmb250RmFsbGJhY2tQYXRoKQogCiAgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBh
dGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKIAotICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1co
Zm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAg
ICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKHdjaGFyRnJvbShmb250RmFsbGJhY2suY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
OjpzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihmb250RmFsbGJhY2suY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBzdGF0aWMgdm9pZCByZW1v
dmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQog
CiAgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5j
c3MiKTsKIAotICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICBpZiAoITo6UGF0aEZpbGVFeGlz
dHNXKHdjaGFyRnJvbShmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgOjpzZXRQZXJzaXN0ZW50VXNlclN0
eWxlU2hlZXRMb2NhdGlvbihudWxscHRyKTsKQEAgLTE1NDEsMTIgKzE1NDEsMTIgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBTdHJpbmcgZGVza3RvcE5hbWUg
PSBtYWtlU3RyaW5nKCJkZXNrdG9wIiwgcHJvY2Vzc0lkKTsKICAgICBIREVTSyBkZXNrdG9wID0g
bnVsbHB0cjsKIAotICAgIGF1dG8gd2luZG93c1N0YXRpb24gPSA6OkNyZWF0ZVdpbmRvd1N0YXRp
b24od2luZG93U3RhdGlvbk5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRh
KCksIENXRl9DUkVBVEVfT05MWSwgV0lOU1RBX0FMTF9BQ0NFU1MsIG51bGxwdHIpOworICAgIGF1
dG8gd2luZG93c1N0YXRpb24gPSA6OkNyZWF0ZVdpbmRvd1N0YXRpb24od2NoYXJGcm9tKHdpbmRv
d1N0YXRpb25OYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgQ1dG
X0NSRUFURV9PTkxZLCBXSU5TVEFfQUxMX0FDQ0VTUywgbnVsbHB0cik7CiAgICAgaWYgKHdpbmRv
d3NTdGF0aW9uKSB7CiAgICAgICAgIGlmICghOjpTZXRQcm9jZXNzV2luZG93U3RhdGlvbih3aW5k
b3dzU3RhdGlvbikpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlNldFByb2Nlc3NXaW5k
b3dTdGF0aW9uIGZhaWxlZCB3aXRoIGVycm9yICVsdVxuIiwgOjpHZXRMYXN0RXJyb3IoKSk7CiAK
LSAgICAgICAgZGVza3RvcCA9IDo6Q3JlYXRlRGVza3RvcChkZXNrdG9wTmFtZS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgR0VORVJJ
Q19BTEwsIG51bGxwdHIpOworICAgICAgICBkZXNrdG9wID0gOjpDcmVhdGVEZXNrdG9wKHdjaGFy
RnJvbShkZXNrdG9wTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSks
IG51bGxwdHIsIG51bGxwdHIsIDAsIEdFTkVSSUNfQUxMLCBudWxscHRyKTsKICAgICAgICAgaWYg
KCFkZXNrdG9wKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY3JlYXRl
IGRlc2t0b3Agd2l0aCBlcnJvciAlbHVcbiIsIDo6R2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVy
YXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3Jz
LmNwcAppbmRleCA5YWJjYmIzYTg3ZDhjMDcyZDk2ZDA0MmRiZmYwYWFlNGNkN2M2NmYxLi4wZTNi
Zjk4Zjg4MjE0ZmM0N2M5YjUzMzVmNzRiMDZkM2U1M2EyOTZkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKQEAgLTI1MCw3OCArMjUw
LDYgQEAgVEVTVChXVEYsIFN0cmluZ09wZXJhdG9ycykKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9t
aWNTdHJpbmcgKyBsaXRlcmFsKTsKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBz
dHJpbmdWaWV3ICsgKGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsg
bGl0ZXJhbCkpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3
ICsgbGl0ZXJhbCkgKyAoc3RyaW5nICsgbGl0ZXJhbCkgKyAoYXRvbWljU3RyaW5nICsgbGl0ZXJh
bCkpOwotCi0jaWYgQ09NUElMRVIoTVNWQykKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygxLCBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMSwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDEsIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygxLCBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdW
aWV3KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBzdHJpbmdWaWV3ICsgTCJ3
aWRlIHN0cmluZyIpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAo
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJ
RVMoMiwgc3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIp
KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBz
dHJpbmciICsgYXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCBMIndpZGUgc3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21p
Y1N0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChMIndpZGUgc3Ry
aW5nIiArIGF0b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyBMIndpZGUg
c3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9t
aWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDIsIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIEwi
d2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgTCJ3aWRlIHN0cmluZyIgKyAoc3Ry
aW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDAsIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDAsIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3Ry
aW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgc3RyaW5nVmlldyArIChM
IndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVD
VF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpICsg
KHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0
b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcp
ICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0
cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyBM
IndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmll
dyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBz
dHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiAr
IHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3Ry
aW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9t
aWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0
cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRl
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5n
IiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCBzdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3
aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVD
VF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3Ry
aW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5n
IikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIg
KyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmci
ICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRl
IHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsg
c3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmlu
ZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5n
IikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChhdG9taWNTdHJpbmcgKyBM
IndpZGUgc3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcg
KyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
TCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwi
d2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyBMIndpZGUg
c3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBz
dHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcg
KyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcg
KyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChh
dG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJp
bmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmlu
ZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nVmlldyArIEwi
d2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBzdHJp
bmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdW
aWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0
cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCBzdHJpbmdWaWV3ICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmlu
ZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3
ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmlu
Zyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAo
c3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBh
dG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykgKyAoTCJ3
aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIp
ICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIikpOwotI2VuZGlmCiB9CiAKIFRFU1QoV1RGLCBDb25jYXRlbmF0ZUNoYXJhY3RlckFycmF5
QW5kRW1wdHlTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0
Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0
aWxpdGllc1dpbi5jcHAKaW5kZXggMmU1NDMwODgxMTFkMzFhNTk3ZWRmMWIzMDEyYTkyNDZlOGVm
MDFjYy4uYjJhMTk1MDc2YjI0OWVlN2NmNzI5MzA0MWI0OGMzNjE2ZDIzZTAwNCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgPFNobHdhcGkuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJT
dHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogbmFtZXNwYWNlIFV0
aWwgewpAQCAtNDAsMTIgKzM5LDEyIEBAIHN0YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5KCkK
ICAgICB3Y2hhcl90IGZpbGVuYW1lW2J1ZmZlckxlbmd0aF07CiAgICAgYXV0byBsZW4gPSBHZXRN
b2R1bGVGaWxlTmFtZShudWxscHRyLCBmaWxlbmFtZSwgYnVmZmVyTGVuZ3RoKTsKICAgICBBU1NF
UlQobGVuID4gMCk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJU
b1N0cmluZyhmaWxlbmFtZSwgbGVuKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUoU3RyaW5nKGZpbGVuYW1lLCBsZW4pKTsKIH0KIAogV0tTdHJpbmdSZWYgY3JlYXRlSW5q
ZWN0ZWRCdW5kbGVQYXRoKCkKIHsKLSAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIFN0cmluZyhMIlRlc3RXZWJLaXRB
UElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoIlRlc3RXZWJL
aXRBUElJbmplY3RlZEJ1bmRsZS5kbGwiKSk7CiAgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkMmYxOWQ3OTcxMjA3NWRiNTUzNmY5NWJmZWIwMjg5ZGQ0
ZTZlNDYwLi4yOGE0MGI5MTc3OWEzMjRhZTAxMTYyM2ZiYTdlNjc2ODhiY2NhMWMyIDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDMt
MDYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtX
aW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFybiB0byBsaXZl
IHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZToKKyAgICAgICAgU3RvcCBjb21waWxpbmcgd2l0
aCAtRFVDSEFSX1RZUEU9d2NoYXJfdC4KKwogMjAxOS0wMy0wNiAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gRW5hYmxlIGFkZGl0aW9u
YWwgZXhwZXJpbWVudGFsIGZlYXR1cmVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363811</attachid>
            <date>2019-03-06 16:19:47 -0800</date>
            <delta_ts>2019-03-06 16:29:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195346-20190306161946.patch</filename>
            <type>text/plain</type>
            <size>113093</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmM3MzM1YWI4ZDQzNTQ0NmQyYTFiZTBjN2JhMGJlNzczMTU4ODliLi4xYmEzZTllMmQ4NTY3NmEx
NjllNDcxMzAzMmZkMmNjNWJlNDA4OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3Bn
YXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGN1cnJlbnRX
b3JraW5nRGlyZWN0b3J5KToKKyAgICAgICAgKGZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3Rl
bSk6CisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMgbmVlZGVkLgor
CiAyMDE5LTAzLTA1ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IG9wX3N3aXRjaF9jaGFyIGJyb2tlbiBmb3Igcm9wZSBzdHJpbmdzIGFmdGVyIEpTUm9wZVN0cmlu
ZyBsYXlvdXQgcmV3cml0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCAxYTliMTlkNzExOTVlYTZiNmEwNWNmYTY4NzIxMjI0NWRm
N2NlOTQwLi5lYjcxMjI3NDcwMDY0MzcwMzY3MTJjMTA3YWZhOGZkZjQyNzIzOTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3Rv
cGdhcCBhbmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oOgorICAgICAgICAoV1RGOjp3Y2hhckZyb20pOgorICAgICAgICAoV1RG
Ojp1Y2hhckZyb20pOgorICAgICAgICAoV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjp3Y2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
QWRkIHN0YXRpY19hc3NlcnQtZ3VhcmRlZCByZWludGVycHJldF9jYXN0IHdyYXBwZXJzIGZvciBn
b2luZyBiZXR3ZWVuIFVDaGFyKiBhbmQgd2NoYXJfdCouCisgICAgICAgIFJlcGxhY2UgZXhpc3Rp
bmcgdG9TdHJpbmcgaGVscGVycyB3aXRoIGEgU3RyaW5nKGNvbnN0IHdjaGFyX3QqKSBjb25zdHJ1
Y3Rvci4KKworICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaW5kRGF0YSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaW5hbFBhdGhOYW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmNyZWF0ZVN5bWJvbGljTGluayk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxl
dGVGaWxlKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om1vdmVGaWxlKToKKyAgICAgICAg
KFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAg
IChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUlt
cGw6OmdlbmVyYXRlVGVtcG9yYXJ5UGF0aCk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBs
OjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpoYXJkTGlua09yQ29weUZpbGUp
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkp
OgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpsb2Nh
bGVJbmZvKToKKyAgICAgICAgKiB3dGYvd2luL1BhdGhXYWxrZXIuY3BwOgorICAgICAgICAoV1RG
OjpQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAyLTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBXZWFrSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2NGU2OTZhODRlM2ZjMjVl
ZTFlYzAzNjExYjY4ODhjM2M0YjA5Y2IuLmVmNzVjMmU2YjQ3MTRmYzZkM2RiZDJhYjAyY2QzNmQy
ZGE0OTBjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOS0wMy0wNiAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3Zl
IC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFy
MTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRMaW5rZWRGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaW5rZWRGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlOjpmaWxsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb3dubG9hZEJ1bmRsZTo6YXBwZW5kUmVzdW1lRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpEb3dubG9hZEJ1bmRsZTo6ZXh0cmFjdFJlc3VtZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMQ0lERnJvbUxv
Y2FsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkxDSURGcm9tTG9jYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZVdpbjo6Z2V0TG9jYWxlSW5mb1N0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QlN0cmluZzo6QlN0
cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRXZWJMb2NEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZURlc2NyaXB0b3JEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDRkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdMYWJlbEZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBl
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TU0xL
ZXlHZW5lcmF0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsbEZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJz
IGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBBc3NlcnRpb24gRmFpbGVkOiBtX2RhdGFiYXNlUXVldWUuaXNLaWxsZWQo
KSBpbiBVbmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlEQkRhdGFiYXNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
OWIxYTZkMTM4NTE4MTg4NjI1NGVhZDBkMTBkOThjOTgzMWJiZjgyZi4uMzMyNTA1NzRlM2NlYWU0
ODFiODIzMWVjZTJlMjJkOTgyZmJhMDE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
OS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAg
ICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRv
IGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMpOgor
ICAgICAgICAqIFBsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpN
b2R1bGU6OmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xh
dW5jaGVyV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVNZW51SXRlbSk6CisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0VG9vbFRp
cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5k
bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJzIGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzg0
OTApOiBZb3VUdWJlLmNvbTogUmV0dXJuaW5nIFBpUCB0byBTYWZhcmkgYWZ0ZXIgc2xlZXBpbmcg
ZGV2aWNlIGxvc2VzIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA3ZTgyN2I1
YmY3NDFjNGNjNzgzNmNlMjdkNzUzNTAwNGQxNzhkZjUzLi4wZDU0MDY3Mzc3Zjk2ZDk1MDU3MDk2
OGU2ZGRkYjQ0YzNmZjc0MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTggQEAKKzIwMTktMDMtMDYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2Fw
IGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAg
KEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0cmlidXRlKToKKyAgICAgICAgKiBDT01Qcm9wZXJ0eUJh
Zy5oOgorICAgICAgICAoSGFzaFR5cGU+OjpHZXRQcm9wZXJ0eUluZm8pOgorICAgICAgICAoSGFz
aFR5cGU+OjpMb2FkT2JqZWN0KToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAg
ICAgIChET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTU5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01F
bGVtZW50Ojpmb250KToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChE
T01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAoRE9NSFRNTElu
cHV0RWxlbWVudDo6cmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlKToKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsdWdpblBhdGhz
RnJvbVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXRQbHVn
aW5QYXRoc0luRGlyZWN0b3JpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTW96aWxs
YVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFdpbmRvd3NNZWRpYVBs
YXllclBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRBZG9iZUFjcm9iYXRQ
bHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSmF2YVBsdWdpbkRpcmVjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OmFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFZlcnNpb25J
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlUG9z
dFJlYWRGaWxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrR3JhbW1hck9mU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0
ZVdpbmRvd1RpdGxlKToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6ZmluZEZyYW1lTmFtZWQpOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RTVFIgY29uc3QpOgorICAg
ICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxS
ZXF1ZXN0OjphZGRWYWx1ZSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgICh0b0F0
b21pY1N0cmluZyk6CisgICAgICAgIChjcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyk6CisgICAg
ICAgIChXZWJWaWV3OjpzZXRUb29sVGlwKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAzLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIFByb2dyYW1tYXRpYyBwYXN0ZSBhY2Nlc3Mgc2hvdWxkIGJl
IGdyYW50ZWQgd2hlbiBjb3B5aW5nIGFuZCBwYXN0aW5nIHdpdGhpbiB0aGUgc2FtZSBvcmlnaW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZTU1MGE3MjQ0YjY0MWQyODkxZWE0MTNkM2FkYjljZWNl
MTRiOGE3ZC4uOGNhZGI5NmE0MDZjYTg2YWY1ZGRlYzIwYWQ1MTVkMTVlNmJiYTFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTc0OCw3ICs3NDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RGlyZWN0
b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKQogICAgIC8vIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmMzgxNDA3LmFzcHgK
ICAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVyKGJ1ZmZlckxlbmd0aCk7CiAgICAgRFdPUkQgbGVu
Z3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3Ro
LCBidWZmZXIuZGF0YSgpKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0
cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsKTsKKyAgICBTdHJpbmcg
ZGlyZWN0b3J5U3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOwog
ICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxw
YXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2MiwxNSArMTA2MiwxNCBAQCBzdGF0
aWMgYm9vbCBmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgVmVjdG9yJiBidWZmZQogI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gaHR0cHM6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjUyNDcuYXNw
eCNtYXhwYXRoCiAgICAgLy8gVXNlIGxvbmcgVU5DIHRvIHBhc3MgdGhlIGxvbmcgcGF0aCBuYW1l
IHRvIHRoZSBXaW5kb3dzIEFQSXMuCi0gICAgU3RyaW5nIGxvbmdVTkNQYXRoTmFtZSA9IFdURjo6
bWFrZVN0cmluZygiXFxcXD9cXCIsIGZpbGVOYW1lKTsKLSAgICBhdXRvIHBhdGhOYW1lID0gc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGxvbmdVTkNQYXRoTmFtZSk7CisgICAgYXV0byBwYXRo
TmFtZSA9IG1ha2VTdHJpbmcoIlxcXFw/XFwiLCBmaWxlTmFtZSkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKTsKICAgICBzdHJ1Y3QgX3N0YXQgc3RhdHVzIHsgfTsKLSAgICBpZiAoX3dz
dGF0KHBhdGhOYW1lLmRhdGEoKSwgJnN0YXR1cykpCisgICAgaWYgKF93c3RhdCh3Y2hhckZyb20o
cGF0aE5hbWUuZGF0YSgpKSwgJnN0YXR1cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoKHN0YXR1cy5zdF9tb2RlICYgU19JRk1UKSAhPSBTX0lGUkVHKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBGSUxFKiBmID0gX3dmb3BlbihwYXRoTmFtZS5kYXRhKCksIEwicmIiKTsK
KyAgICBGSUxFKiBmID0gX3dmb3Blbih3Y2hhckZyb20ocGF0aE5hbWUuZGF0YSgpKSwgTCJyYiIp
OwogI2Vsc2UKICAgICBhdXRvIHBhdGhOYW1lID0gZmlsZU5hbWUudXRmOCgpOwogICAgIHN0cnVj
dCBzdGF0IHN0YXR1cyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggZmEwZmI0MmUwN2VmNDM2YTVjYzA4MDA2ZTZkZDMyZGI3
MGMzZWM0Ny4uNzNlZWEzMWYxMjZkNDdhOWI5MDk2NDg0OTYyY2I0NDk5ZjcxZDZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC0xMDksNyArMTA4LDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMK
ICAgICAgICAgICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwog
ICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7
CiAgICAgICAgICAgICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8g
dGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0
YW5kYXJkTmFtZTsKLSAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcod2luVGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgIFN0cmluZyB0
aW1lWm9uZU5hbWUod2luVGltZVpvbmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3Qg
dG0gZ3RtID0gdDsKICAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCmluZGV4IGFhNWM5ZmNlNWRjNmFhOGNiMTA2ZjMxYTAzMzIwZmE1MTJhYzky
ZjIuLmJmNWFkZDNkNzM4OTk0YTZkY2E1MjdlNmE3OGJlOWQyNDM1NjAzNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4K
ICNlbmRpZgogCisjaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJT
dHJpbmdFeHRyYXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogLy8gRGVjbGFyYXRp
b25zIG9mIHN0cmluZyBvcGVyYXRpb25zCkBAIC0zMzAsNiArMzM0LDE0IEBAIHB1YmxpYzoKICAg
ICBvcGVyYXRvciBOU1N0cmluZyAqKCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIE9TKFdJTkRPV1Mp
ICYmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDU5CisgICAgU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBTdHJpbmcodWNoYXJG
cm9tKGNoYXJhY3RlcnMpLCBsZW5ndGgpIHsgfQorCisgICAgU3RyaW5nKGNvbnN0IHdjaGFyX3Qq
IGNoYXJhY3RlcnMpCisgICAgICAgIDogU3RyaW5nKHVjaGFyRnJvbShjaGFyYWN0ZXJzKSkgeyB9
CisjZW5kaWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0
RnJvbTE2Qml0U291cmNlKGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+IHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2Uo
Y29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmgKaW5kZXggZDQxZjQ2Mjk0ZDM2MDRlYjYwNGNi
NzQ3MDE2Y2U1NDM2MTdlZGRkZi4uOTA2MzU1MmY4YTBhNDNkY2ZmNmM2YzY4Y2I1ZmJjNGU0ODAx
MGJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRy
YXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBLb25zdGFudGluIFRva2Fy
ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDQ2ICsyNiwzMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHdjaGFyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogCi1p
bmxpbmUgVmVjdG9yPHdjaGFyX3Q+IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb25zdCBT
dHJpbmcmIHN0cmluZykKK2lubGluZSBjb25zdCB3Y2hhcl90KiB3Y2hhckZyb20oY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMpCiB7Ci0gICAgVmVjdG9yPHdjaGFyX3Q+IHJlc3VsdDsKLQotICAgIGlm
ICghc3RyaW5nLmlzTnVsbCgpKSB7Ci0gICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHN0cmluZy5pbXBsKCktPmxlbmd0aCgpICsgMSk7Ci0KLSAgICAgICAgaWYgKHN0cmluZy5p
czhCaXQoKSkgewotICAgICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gc3RyaW5n
LmltcGwoKS0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgICAgICByZXN1bHQu
dW5jaGVja2VkQXBwZW5kKGNoYXJhY3RlcnM4W2ldKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBzdHJpbmcuaW1wbCgpLT5jaGFyYWN0
ZXJzMTYoKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyczE2LCBzdHJpbmcu
aW1wbCgpLT5sZW5ndGgoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1bHQuYXBwZW5kKDAp
OwotICAgIH0KKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNo
YXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6ZSIpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFyX3QqPihjaGFyYWN0ZXJzKTsK
K30KIAotICAgIHJldHVybiByZXN1bHQ7CitpbmxpbmUgd2NoYXJfdCogd2NoYXJGcm9tKFVDaGFy
KiBjaGFyYWN0ZXJzKQoreworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdjaGFyX3QpID09IHNp
emVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBz
aXplIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8d2NoYXJfdCo+KGNoYXJhY3RlcnMp
OwogfQogCi1pbmxpbmUgU3RyaW5nIHdjaGFyVG9TdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQoraW5saW5lIGNvbnN0IFVDaGFyKiB1Y2hhckZyb20oY29u
c3Qgd2NoYXJfdCogY2hhcmFjdGVycykKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hh
cl90KSA9PSBzaXplb2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUg
dGhlIHNhbWUgc2l6ZSIpOwotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IFVDaGFyKj4oY2hhcmFjdGVycyk7CiB9CiAKLWlubGluZSBTdHJpbmcgbnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMpCitpbmxpbmUg
VUNoYXIqIHVjaGFyRnJvbSh3Y2hhcl90KiBjaGFyYWN0ZXJzKQogewotICAgIHJldHVybiB3Y2hh
clRvU3RyaW5nKGNoYXJhY3RlcnMsIHdjc2xlbihjaGFyYWN0ZXJzKSk7CisgICAgc3RhdGljX2Fz
c2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90
IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1lIHNpemUiKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxVQ2hhcio+KGNoYXJhY3RlcnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNp
bmcgV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXI7Ci11c2luZyBXVEY6OndjaGFyVG9T
dHJpbmc7Ci11c2luZyBXVEY6Om51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZzsKK3VzaW5nIFdU
Rjo6dWNoYXJGcm9tOwordXNpbmcgV1RGOjp3Y2hhckZyb207CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKaW5kZXggZDY3MmFmNjM3NDY5M2NmMDUyMWVjMzY4OTY4OWNlYmNjMDJlZGUz
OC4uNWNkOTkzNGRlM2E2NGE1YzY0MjZkZTgzNzE0YzM1MTA2MjhhZDVhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgY29uc3QgVUxP
TkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOwogCiBzdGF0
aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERh
dGEpCiB7Ci0gICAgSEFORExFIGhhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZmaW5kRGF0YSk7CisgICAgSEFORExFIGhhbmRs
ZSA9IEZpbmRGaXJzdEZpbGVXKHdjaGFyRnJvbShwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpKSwgJmZpbmREYXRhKTsKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURf
SEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRmluZENsb3NlKGhhbmRs
ZSk7CkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBWZWN0
b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5
SGFuZGxlVyhoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1F
X05UKSA+PSBNQVhfUEFUSCkgeworICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVco
aGFuZGxlLCB3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9O
QU1FX05UKSA+PSBNQVhfUEFUSCkgewogICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAg
IGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKyAgICBidWZmZXIuc2hyaW5r
KHdjc2xlbih3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSkpKTsKICAgICByZXR1cm4gU3RyaW5nOjph
ZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgT3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcm
IHBhdGgpCiAKIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0
aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQogewotICAgIHJldHVybiAhOjpDcmVh
dGVTeW1ib2xpY0xpbmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQ
YXRoKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRh
KCksIDApOworICAgIHJldHVybiAhOjpDcmVhdGVTeW1ib2xpY0xpbmtXKHdjaGFyRnJvbShzeW1i
b2xpY0xpbmtQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgd2No
YXJGcm9tKHRhcmdldFBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
LCAwKTsKIH0KIAogYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTIzMywz
NyArMjMzLDM1IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiBib29sIGRl
bGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IHBh
dGg7Ci0gICAgcmV0dXJuICEhRGVsZXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KGZpbGVuYW1lKS5kYXRhKCkpOworICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKHdjaGFyRnJvbShm
aWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogfQogCiBi
b29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBTdHJp
bmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworICAgIHJldHVybiAhIVJl
bW92ZURpcmVjdG9yeVcod2NoYXJGcm9tKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpKSk7CiB9CiAKIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQ
YXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiB7CiAgICAgU3RyaW5nIG9sZEZpbGVuYW1lID0g
b2xkUGF0aDsKICAgICBTdHJpbmcgbmV3RmlsZW5hbWUgPSBuZXdQYXRoOwotICAgIHJldHVybiAh
ITo6TW92ZUZpbGVFeChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIob2xkRmlsZW5hbWUpLmRh
dGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG5ld0ZpbGVuYW1lKS5kYXRhKCksIE1P
VkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOworICAgIHJl
dHVybiAhITo6TW92ZUZpbGVFeCh3Y2hhckZyb20ob2xkRmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCB3Y2hhckZyb20obmV3RmlsZW5hbWUuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQgfCBN
T1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKIH0KIAogU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewog
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKLQogICAgIGlmIChwYXRoLmxlbmd0
aCgpICsgMSA+IGJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAg
IFN0cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEo
KSk7CiAgICAgYnVmZmVyW3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKIAotICAgIGlmICghUGF0aEFw
cGVuZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBvbmVu
dCkuZGF0YSgpKSkKKyAgICBpZiAoIVBhdGhBcHBlbmRXKHdjaGFyRnJvbShidWZmZXIuZGF0YSgp
KSwgd2NoYXJGcm9tKGNvbXBvbmVudC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBidWZmZXIuc2hyaW5rKHdj
c2xlbihidWZmZXIuZGF0YSgpKSk7Ci0KKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbih3Y2hhckZy
b20oYnVmZmVyLmRhdGEoKSkpKTsKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOwogfQogCkBAIC0yNzksOSArMjc3LDcgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXAK
IAogQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQog
ewotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhwYXRoKS51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKTsKLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGF1dG8gY2hhcmFjdGVycyA9IHdjaGFyRnJvbShTdHJp
bmdWaWV3KHBhdGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKTsKICAgICBpbnQgc2l6ZSA9IFdp
ZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCAw
LCAwLCAwLCAwKSAtIDE7CiAKICAgICBjaGFyKiBidWZmZXI7CkBAIC0yOTcsNyArMjkzLDcgQEAg
Q1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogYm9v
bCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFN0cmluZyBm
dWxsUGF0aCA9IHBhdGg7Ci0gICAgaWYgKFNIQ3JlYXRlRGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKGZ1bGxQYXRoKS5kYXRhKCksIDApICE9IEVSUk9SX1NVQ0NFU1Mp
IHsKKyAgICBpZiAoU0hDcmVhdGVEaXJlY3RvcnlFeCgwLCB3Y2hhckZyb20oZnVsbFBhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwKSAhPSBFUlJPUl9TVUNDRVNT
KSB7CiAgICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAgICAgICAgIGlmIChl
cnJvciAhPSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBlcnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNU
UykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBw
YXRoLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTMxNCw3ICszMTAsNyBAQCBTdHJpbmcgaG9tZURpcmVj
dG9yeVBhdGgoKQogCiBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKLSAgICByZXR1cm4gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKDo6UGF0aEZpbmRGaWxl
TmFtZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpKSk7CisgICAgcmV0
dXJuIFN0cmluZyg6OlBhdGhGaW5kRmlsZU5hbWUod2NoYXJGcm9tKHBhdGguY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKSk7CiB9CiAKIFN0cmluZyBkaXJlY3RvcnlOYW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTM1MCw5ICszNDYsMTAgQEAgc3RhdGljIFN0cmluZyBi
dW5kbGVOYW1lKCkKIHN0YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRl
bnRpZmllcikKIHsKICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYg
KEZBSUxFRChTSEdldEZvbGRlclBhdGhXKDAsIHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19D
UkVBVEUsIDAsIDAsIGJ1ZmZlci5kYXRhKCkpKSkKKyAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVy
UGF0aFcoMCwgcGF0aElkZW50aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgd2NoYXJG
cm9tKGJ1ZmZlci5kYXRhKCkpKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBidWZm
ZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdj
c2xlbih3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSkpKTsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogCiAgICAgZGlyZWN0b3J5ID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxl
TmFtZSgpKTsKQEAgLTM5Nyw3ICszOTQsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9y
YXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogCiAg
ICAgICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZp
bGUpIC0gMSk7CiAKLSAgICAgICAgcHJvcG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVk
V0NoYXJUb1N0cmluZyh0ZW1wRmlsZSkpOworICAgICAgICBwcm9wb3NlZFBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoU3RyaW5nKHRlbXBQYXRoKSwgU3RyaW5nKHRlbXBGaWxlKSk7CiAg
ICAgICAgIGlmIChwcm9wb3NlZFBhdGguaXNFbXB0eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfSB3aGlsZSAoIWFjdGlvbihwcm9wb3NlZFBhdGgpKTsKQEAgLTQxMSw3ICs0MDgsNyBAQCBT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCiAKICAgICBTdHJpbmcgcHJvcG9zZWRQYXRoID0gZ2VuZXJhdGVUZW1wb3JhcnlQ
YXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgewogICAgICAgICAvLyB1
c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxlIHdpdGgg
dGhlIHNhbWUgbmFtZQotICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VO
RVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsK
KyAgICAgICAgaGFuZGxlID0gOjpDcmVhdGVGaWxlVyh3Y2hhckZyb20ocHJvcG9zZWRQYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgR0VORVJJQ19SRUFEIHwgR0VO
RVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsK
IAogICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdldExhc3RFcnJvcigp
ID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTOwogICAgIH0pOwpAQCAtNDQyLDcgKzQzOSw3IEBAIFBs
YXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9k
ZSBtb2RlKQogICAgIH0KIAogICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHBhdGg7Ci0gICAgcmV0
dXJuIENyZWF0ZUZpbGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5k
YXRhKCksIGRlc2lyZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25EaXNwb3NpdGlvbiwg
RklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKyAgICByZXR1cm4gQ3JlYXRlRmlsZSh3Y2hhckZy
b20oZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBk
ZXNpcmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRU
UklCVVRFX05PUk1BTCwgMCk7CiB9CiAKIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQpAQCAtNTAxLDcgKzQ5OCw3IEBAIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIAogYm9vbCBoYXJkTGlu
a09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b24pCiB7Ci0gICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoc291cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlv
bikuZGF0YSgpLCBUUlVFKTsKKyAgICByZXR1cm4gISE6OkNvcHlGaWxlKHdjaGFyRnJvbShzb3Vy
Y2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCB3Y2hhckZyb20oZGVz
dGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBUUlVFKTsK
IH0KIAogU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCkBAIC01NzIs
NyArNTY5LDcgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeVBhdGgpCiAgICAgU0hGSUxFT1BTVFJVQ1QgZGVsZXRlT3BlcmF0aW9uID0gewogICAg
ICAgICBudWxscHRyLAogICAgICAgICBGT19ERUxFVEUsCi0gICAgICAgIHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5kYXRhKCksCisgICAgICAgIHdjaGFyRnJvbShk
aXJlY3RvcnlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKICAg
ICAgICAgTCIiLAogICAgICAgICBGT0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwg
Rk9GX1NJTEVOVCwKICAgICAgICAgZmFsc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcApp
bmRleCAzMDljYTY2MjdlZDhhZmIzMDg2NzMxNTg2NGZmOGMzZTYyMGRhZDUxLi5mYzFmYzUyNzZl
ZGMxOTYzYWI3ZjQwYTExMGVkMzhiNTBmNDhhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdp
bi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
QEAgLTQ0LDcgKzQ1LDcgQEAgc3RhdGljIFN0cmluZyBsb2NhbGVJbmZvKExDVFlQRSBsb2NhbGVU
eXBlLCBjb25zdCBTdHJpbmcmIGZhbGxiYWNrKQogICAgICAgICByZXR1cm4gZmFsbGJhY2s7CiAg
ICAgVUNoYXIqIGxvY2FsZU5hbWVCdWY7CiAgICAgU3RyaW5nIGxvY2FsZU5hbWUgPSBTdHJpbmc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobG9jYWxlQ2hhcnMsIGxvY2FsZU5hbWVCdWYpOwotICAgIGxv
Y2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIGxvY2FsZU5hbWVC
dWYsIGxvY2FsZUNoYXJzKTsKKyAgICBsb2NhbGVDaGFycyA9IEdldExvY2FsZUluZm8obGFuZ0lE
LCBsb2NhbGVUeXBlLCB3Y2hhckZyb20obG9jYWxlTmFtZUJ1ZiksIGxvY2FsZUNoYXJzKTsKICAg
ICBpZiAoIWxvY2FsZUNoYXJzKQogICAgICAgICByZXR1cm4gZmFsbGJhY2s7CiAgICAgaWYgKGxv
Y2FsZU5hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhX
YWxrZXIuY3BwIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCmluZGV4IGM2ZDNm
OTcwNjA0OWNiMTNjOWVmNjM1NWViYjYzYTUwNzk4NTAyMjEuLmU3NjVmOTc0ZTdmZWEzM2MwMjc4
N2NlMTJkNTZkYWVhMzk5ZTRjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRo
V2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiBQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiB7CiAgICAgU3RyaW5n
IHBhdGggPSBkaXJlY3RvcnkgKyAiXFwiICsgcGF0dGVybjsKLSAgICBtX2hhbmRsZSA9IDo6Rmlu
ZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJm1f
ZGF0YSk7CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHdjaGFyRnJvbShwYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgJm1fZGF0YSk7CiB9CiAKIFBh
dGhXYWxrZXI6On5QYXRoV2Fsa2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggMDc5NDg4MTM2N2UwMjIxNDU4
YTBlN2IwYWM0M2Q2NzQ0Njg5YTQ1MC4uZDE0ZjJkNWU0NzNhN2EwNzM1YzYzNjJmYzYwYjUzYTk3
ODkxYjlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZExpbmtlZEZvbnRzKFdDSEFSKiBsaW5rZWRGb250cywgdW5zaWduZWQgbGVuZ3Ro
LCBWZWN0bwogICAgICAgICB1bnNpZ25lZCBqID0gaTsKICAgICAgICAgd2hpbGUgKGogPCBsZW5n
dGggJiYgbGlua2VkRm9udHNbal0pCiAgICAgICAgICAgICBqKys7Ci0gICAgICAgIHJlc3VsdC0+
YXBwZW5kKHdjaGFyVG9TdHJpbmcobGlua2VkRm9udHMgKyBpLCBqIC0gaSkpOworICAgICAgICBy
ZXN1bHQtPmFwcGVuZChTdHJpbmcobGlua2VkRm9udHMgKyBpLCBqIC0gaSkpOwogICAgICAgICBp
ID0gaiArIDE7CiAgICAgfQogfQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgc3RhdGljIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+KiBnZXRMaW5rZWRGb250cyhTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAogICAgIERXT1JEIGxpbmtlZEZvbnRzQnVmZmVyU2l6ZSA9IDA7Ci0gICAg
aWYgKDo6UmVnUXVlcnlWYWx1ZUV4KGZvbnRMaW5rS2V5LCBzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZmFtaWx5KS5kYXRhKCksIDAsIG51bGxwdHIsIG51bGxwdHIsICZsaW5rZWRGb250c0J1
ZmZlclNpemUpID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgaWYgKDo6UmVnUXVlcnlW
YWx1ZUV4KGZvbnRMaW5rS2V5LCB3Y2hhckZyb20oZmFtaWx5LmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJmxpbmtlZEZvbnRzQnVm
ZmVyU2l6ZSkgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJUaGUgZm9udCBsaW5rIGtleSAlcyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcmVnaXN0cnkuIiwg
ZmFtaWx5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgdW5zaWduZWQgSW5pdGlhbEJ1ZmZlclNpemUgeyAy
NTYgLyBzaXplb2YoV0NIQVIpIH07CiAgICAgVmVjdG9yPFdDSEFSLCBJbml0aWFsQnVmZmVyU2l6
ZT4gbGlua2VkRm9udHMocm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV0NIQVIpPihsaW5rZWRG
b250c0J1ZmZlclNpemUpIC8gc2l6ZW9mKFdDSEFSKSk7Ci0gICAgaWYgKDo6UmVnUXVlcnlWYWx1
ZUV4KGZvbnRMaW5rS2V5LCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmFtaWx5KS5kYXRh
KCksIDAsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KGxpbmtlZEZvbnRzLmRhdGEo
KSksICZsaW5rZWRGb250c0J1ZmZlclNpemUpID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICBpZiAo
OjpSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIHdjaGFyRnJvbShmYW1pbHkuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCBudWxscHRyLCByZWludGVycHJldF9j
YXN0PEJZVEUqPihsaW5rZWRGb250cy5kYXRhKCkpLCAmbGlua2VkRm9udHNCdWZmZXJTaXplKSA9
PSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxpbmtlZEZvbnRz
QnVmZmVyU2l6ZSAvIHNpemVvZihXQ0hBUik7CiAgICAgICAgIGFwcGVuZExpbmtlZEZvbnRzKGxp
bmtlZEZvbnRzLmRhdGEoKSwgbGVuZ3RoLCByZXN1bHQpOwogICAgIH0KQEAgLTI4NSw3ICsyODUs
NyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogICAgICAgICBTZWxlY3RPYmplY3QoaGRjLCBo
Zm9udCk7CiAgICAgICAgIFdDSEFSIG5hbWVbTEZfRkFDRVNJWkVdOwogICAgICAgICBHZXRUZXh0
RmFjZShoZGMsIExGX0ZBQ0VTSVpFLCBuYW1lKTsKLSAgICAgICAgZmFtaWx5TmFtZSA9IG51bGxU
ZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhuYW1lKTsKKyAgICAgICAgZmFtaWx5TmFtZSA9IFN0cmlu
ZyhuYW1lKTsKIAogICAgICAgICBpZiAoY29udGFpbnNDaGFyYWN0ZXIgfHwgY3VycmVudEZvbnRD
b250YWluc0NoYXJhY3RlcihoZGMsIGNoYXJhY3RlcikpCiAgICAgICAgICAgICBicmVhazsKQEAg
LTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogCiAgICAgICAgIExPR0ZP
TlQgbG9nRm9udDsKICAgICAgICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7
Ci0gICAgICAgIFN0cmluZ1ZpZXcobGlua2VkRm9udHMtPmF0KGxpbmtlZEZvbnRJbmRleCkpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CisgICAgICAgIFN0
cmluZ1ZpZXcobGlua2VkRm9udHMtPmF0KGxpbmtlZEZvbnRJbmRleCkpLmdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICAgICAgbG9n
Rm9udC5sZkZhY2VOYW1lW2xpbmtlZEZvbnRzLT5hdChsaW5rZWRGb250SW5kZXgpLmxlbmd0aCgp
XSA9IDA7CiAgICAgICAgIEVudW1Gb250RmFtaWxpZXNFeChoZGMsICZsb2dGb250LCBsaW5rZWRG
b250RW51bVByb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaGZvbnQpLCAwKTsKICAgICAg
ICAgbGlua2VkRm9udEluZGV4Kys7CkBAIC0zMzAsNyArMzMwLDcgQEAgVmVjdG9yPFN0cmluZz4g
Rm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaWxpZXMoKQogCiBSZWZQdHI8Rm9udD4gRm9udENhY2hl
Ojpmb250RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgTE9HRk9OVCYgZm9udCwgQXRvbWljU3RyaW5nJiBvdXRGb250
RmFtaWx5TmFtZSkKIHsKLSAgICBBdG9taWNTdHJpbmcgZmFtaWx5TmFtZSA9IHdjaGFyVG9TdHJp
bmcoZm9udC5sZkZhY2VOYW1lLCB3Y3NubGVuKGZvbnQubGZGYWNlTmFtZSwgTEZfRkFDRVNJWkUp
KTsKKyAgICBBdG9taWNTdHJpbmcgZmFtaWx5TmFtZSh1Y2hhckZyb20oZm9udC5sZkZhY2VOYW1l
KSwgd2Nzbmxlbihmb250LmxmRmFjZU5hbWUsIExGX0ZBQ0VTSVpFKSk7CiAgICAgUmVmUHRyPEZv
bnQ+IGZvbnREYXRhID0gZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUp
OwogICAgIGlmIChmb250RGF0YSkKICAgICAgICAgb3V0Rm9udEZhbWlseU5hbWUgPSBmYW1pbHlO
YW1lOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIHN0YXRpYyBHRElPYmplY3Q8SEZPTlQ+IGNyZWF0ZUdE
SUZvbnQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlCiAgICAgTE9H
Rk9OVCBsb2dGb250OwogICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwog
ICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0gU3RyaW5nVmlldyhmYW1pbHkpLnN1YnN0
cmluZygwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7Ci0gICAgdHJ1
bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFt
ZSk7CisgICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFy
RnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICBsb2dGb250LmxmRmFjZU5hbWVbdHJ1bmNh
dGVkRmFtaWx5Lmxlbmd0aCgpXSA9IDA7CiAgICAgbG9nRm9udC5sZlBpdGNoQW5kRmFtaWx5ID0g
MDsKIApAQCAtNTk4LDcgKzU5OCw3IEBAIFZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
PiBGb250Q2FjaGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlsCiAgICAgTE9H
Rk9OVCBsb2dGb250OwogICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwog
ICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0gU3RyaW5nVmlldyhmYW1pbHlOYW1lKS5z
dWJzdHJpbmcoMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwotICAg
IHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChsb2dGb250LmxmRmFj
ZU5hbWUpOworICAgIHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1
Y2hhckZyb20obG9nRm9udC5sZkZhY2VOYW1lKSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3Ry
dW5jYXRlZEZhbWlseS5sZW5ndGgoKV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWls
eSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYTU3
ZTY5YjJhN2RhNmU2MjUwMjFmYzJlODE4NjA0YThiMzQ1ODhiYi4uYTk2OTJiMzFhNTM0M2QxMWQ0
OTU1ODY4N2Q0NDM3ZWZjMDM2OWMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKIAogICAg
IExPR0ZPTlQgbG9nRm9udDsKICAgICBtZW1zZXQoJmxvZ0ZvbnQsIDAsIHNpemVvZihMT0dGT05U
KSk7Ci0gICAgd2NzbmNweShsb2dGb250LmxmRmFjZU5hbWUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihtX25hbWUpLmRhdGEoKSwgTEZfRkFDRVNJWkUgLSAxKTsKKyAgICB3Y3NuY3B5KGxv
Z0ZvbnQubGZGYWNlTmFtZSwgd2NoYXJGcm9tKG1fbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSksIExGX0ZBQ0VTSVpFIC0gMSk7CiAKICAgICBsb2dGb250LmxmSGVp
Z2h0ID0gLXNpemU7CiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gRm9udFJlbmRlcmluZ01vZGU6
Ok5vcm1hbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcAppbmRleCA0YTU5ZTFi
YmJmYTIxMjM1ZWIwZGY2N2JmMzA3NGE3MzE2Mzc1MzZjLi4zOGNhYThiOWQ5YjJjZGI1MjFmYjUz
Yzk3ZWRkOGQ2MDQ1YzIxMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiSFduZERD
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNyArNTAsNyBAQCBib29sIEdseXBoUGFnZTo6ZmlsbChV
Q2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpCiAgICAgU2VsZWN0T2JqZWN0KGRj
LCBmb250LnBsYXRmb3JtRGF0YSgpLmhmb250KCkpOwogCiAgICAgV09SRCBsb2NhbEdseXBoQnVm
ZmVyW0dseXBoUGFnZTo6c2l6ZSAqIDJdOwotICAgIERXT1JEIHJlc3VsdCA9IEdldEdseXBoSW5k
aWNlcyhkYywgYnVmZmVyLCBidWZmZXJMZW5ndGgsIGxvY2FsR2x5cGhCdWZmZXIsIEdHSV9NQVJL
X05PTkVYSVNUSU5HX0dMWVBIUyk7CisgICAgRFdPUkQgcmVzdWx0ID0gR2V0R2x5cGhJbmRpY2Vz
KGRjLCB3Y2hhckZyb20oYnVmZmVyKSwgYnVmZmVyTGVuZ3RoLCBsb2NhbEdseXBoQnVmZmVyLCBH
R0lfTUFSS19OT05FWElTVElOR19HTFlQSFMpOwogICAgIGJvb2wgc3VjY2VzcyA9IHJlc3VsdCAh
PSBHRElfRVJST1IgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkgPT0gYnVmZmVyTGVu
Z3RoOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBHbHlwaFBhZ2U6OnNpemU7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCmluZGV4IDc5OWUzNDc0MDM5NDA2MzUxMGU5NTRiNmFm
MzA5OThlN2QyNWUyYWQuLjQ0MmRjNDhlZjViYWFlM2FlMzUxMWJhZmU3NWNmZjcwMDM4YjNlMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAgICAgICBtZW1zZXQoJnNmaSwg
MCwgc2l6ZW9mKHNmaSkpOwogCiAgICAgICAgIFN0cmluZyB0bXBGaWxlbmFtZSA9IGZpbGVuYW1l
c1swXTsKLSAgICAgICAgaWYgKCFTSEdldEZpbGVJbmZvKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcih0bXBGaWxlbmFtZSkuZGF0YSgpLCAwLCAmc2ZpLCBzaXplb2Yoc2ZpKSwgU0hHRklfSUNP
TiB8IFNIR0ZJX1NIRUxMSUNPTlNJWkUgfCBTSEdGSV9TTUFMTElDT04pKQorICAgICAgICBpZiAo
IVNIR2V0RmlsZUluZm8od2NoYXJGcm9tKHRtcEZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgJnNmaSwgc2l6ZW9mKHNmaSksIFNIR0ZJX0lDT04gfCBT
SEdGSV9TSEVMTElDT05TSVpFIHwgU0hHRklfU01BTExJQ09OKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihzZmkuaEljb24pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggYzg0
OGI2MWI5YzU4ZDhmMjlmMWViYjMwOTZiY2ExMTcyZGUxYjMyNy4uYTIzNmE4M2M2YmUwMjBmMWNi
MGVkMWM3ZDMyNTY0ZjA4OTJhZWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgY29uc3QgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVUeXBlQ2FjaGUoKQog
ICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CiAgICAgICAgIENBTFBXU1RSIG1pbWVUeXBlQXJyYXkg
PSBwcm9wVmFyTWltZVR5cGVBcnJheS5jYWxwd3N0cjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1pbWVUeXBlQXJyYXkuY0VsZW1zOyBpKyspCi0gICAgICAgICAgICBjYWNoZWRU
eXBlcy5nZXQoKS5hZGQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1pbWVUeXBlQXJyYXku
cEVsZW1zW2ldKSk7CisgICAgICAgICAgICBjYWNoZWRUeXBlcy5nZXQoKS5hZGQoU3RyaW5nKG1p
bWVUeXBlQXJyYXkucEVsZW1zW2ldKSk7CiAgICAgfQogCiAgICAgUHJvcFZhcmlhbnRDbGVhcigm
cHJvcFZhck1pbWVUeXBlQXJyYXkpOwpAQCAtNDcwLDExICs0NzAsMTEgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UoY29uc3Qg
U3RyaW5nJiB1cmwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ09NUHRyPElVbmtub3du
PiBjYW5jZWxDb29raWU7Ci0gICAgVmVjdG9yPHdjaGFyX3Q+IHVybFNvdXJjZSA9IHN0cmluZ1Rv
TnVsbFRlcm1pbmF0ZWRXQ2hhcih1cmwpOworICAgIFZlY3RvcjxVQ2hhcj4gdXJsU291cmNlID0g
dXJsLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CiAKICAgICBBc3luY0NhbGxiYWNr
KiBjYWxsYmFjayA9IG5ldyBBc3luY0NhbGxiYWNrKHRoaXMsIGZhbHNlKTsKIAotICAgIGlmIChG
QUlMRUQobV9zb3VyY2VSZXNvbHZlci0+QmVnaW5DcmVhdGVPYmplY3RGcm9tVVJMKHVybFNvdXJj
ZS5kYXRhKCksIE1GX1JFU09MVVRJT05fTUVESUFTT1VSQ0UsIG51bGxwdHIsICZjYW5jZWxDb29r
aWUsIGNhbGxiYWNrLCBudWxscHRyKSkpCisgICAgaWYgKEZBSUxFRChtX3NvdXJjZVJlc29sdmVy
LT5CZWdpbkNyZWF0ZU9iamVjdEZyb21VUkwod2NoYXJGcm9tKHVybFNvdXJjZS5kYXRhKCkpLCBN
Rl9SRVNPTFVUSU9OX01FRElBU09VUkNFLCBudWxscHRyLCAmY2FuY2VsQ29va2llLCBjYWxsYmFj
aywgbnVsbHB0cikpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3Jp
YmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9V
bmlzY3JpYmVDb250cm9sbGVyLmNwcAppbmRleCAxMTA0NTQ3NmRiNDY2NjViZTVlYjIyOTNhMTg0
ZTFlMGEyYmY2MzVlLi40NzRjNDg2MGZmMTAwNDQwOTliNmFmM2Y5YmZiOWI0MGNkNzg4ZGE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJl
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSFdu
ZERDLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
Ci0KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKQEAgLTE5Niw3ICsx
OTYsNyBAQCB2b2lkIFVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKGNv
bnN0IFVDaGFyKiBjcCwgdW5zaWduZWQgc3RyaW5nTwogICAgIG1faXRlbXMucmVzaXplKDYpOwog
ICAgIGludCBudW1JdGVtcyA9IDA7CiAgICAgSFJFU1VMVCByYyA9IFNfT0s7Ci0gICAgd2hpbGUg
KHJjID0gOjpTY3JpcHRJdGVtaXplKGNwLCBsZW5ndGgsIG1faXRlbXMuc2l6ZSgpIC0gMSwgJm1f
Y29udHJvbCwgJm1fc3RhdGUsIG1faXRlbXMuZGF0YSgpLCAmbnVtSXRlbXMpID09IEVfT1VUT0ZN
RU1PUlkpIHsKKyAgICB3aGlsZSAocmMgPSA6OlNjcmlwdEl0ZW1pemUod2NoYXJGcm9tKGNwKSwg
bGVuZ3RoLCBtX2l0ZW1zLnNpemUoKSAtIDEsICZtX2NvbnRyb2wsICZtX3N0YXRlLCBtX2l0ZW1z
LmRhdGEoKSwgJm51bUl0ZW1zKSA9PSBFX09VVE9GTUVNT1JZKSB7CiAgICAgICAgIG1faXRlbXMu
cmVzaXplKG1faXRlbXMuc2l6ZSgpICogMik7CiAgICAgICAgIHJlc2V0Q29udHJvbEFuZFN0YXRl
KCk7CiAgICAgfQpAQCAtNDI4LDcgKzQyOCw3IEBAIGJvb2wgVW5pc2NyaWJlQ29udHJvbGxlcjo6
c2hhcGUoY29uc3QgVUNoYXIqIHN0ciwgaW50IGxlbiwgU0NSSVBUX0lURU0gaXRlbSwgY29uCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvIHsKLSAgICAgICAgc2hhcGVSZXN1bHQgPSBT
Y3JpcHRTaGFwZShoZGMsIGZvbnREYXRhLT5zY3JpcHRDYWNoZSgpLCBzdHIsIGxlbiwgZ2x5cGhz
LnNpemUoKSwgJml0ZW0uYSwKKyAgICAgICAgc2hhcGVSZXN1bHQgPSBTY3JpcHRTaGFwZShoZGMs
IGZvbnREYXRhLT5zY3JpcHRDYWNoZSgpLCB3Y2hhckZyb20oc3RyKSwgbGVuLCBnbHlwaHMuc2l6
ZSgpLCAmaXRlbS5hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocy5k
YXRhKCksIGNsdXN0ZXJzLmRhdGEoKSwgdmlzdWFsQXR0cmlidXRlcy5kYXRhKCksICZnbHlwaENv
dW50KTsKICAgICAgICAgaWYgKHNoYXBlUmVzdWx0ID09IEVfUEVORElORykgewogICAgICAgICAg
ICAgLy8gVGhlIHNjcmlwdCBjYWNoZSBpc24ndCBwcmltZWQgd2l0aCBlbm91Z2ggaW5mbyB5ZXQu
ICBXZSBuZWVkIHRvIHNlbGVjdCBvdXIgSEZPTlQgaW50bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCmluZGV4
IDM4ZmQ2MGI5MjBiNjE4NDc5ZGUxNjhlYmI3ZjRlMjk2ZGFlZTg1OTguLmRkODUyMTNhYTc4NDNi
YWYzOTRmMTUxMmYzYmRkNzdjZWYwNTkxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKQEAgLTU5LDkg
KzU5LDkgQEAgYm9vbCBhcHBlbmRSZXN1bWVEYXRhKGNvbnN0IGNoYXIqIHJlc3VtZUJ5dGVzLCB1
aW50MzJfdCByZXN1bWVMZW5ndGgsIGNvbnN0IFN0cmkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIFN0cmluZyBudWxsaWZpZWRQYXRoID0gYnVuZGxlUGF0aDsKKyAgICBhdXRv
IG51bGxpZmllZFBhdGggPSBidW5kbGVQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCk7CiAgICAgRklMRSogYnVuZGxlID0gMDsKLSAgICBpZiAoX3dmb3Blbl9zKCZidW5kbGUsIHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihudWxsaWZpZWRQYXRoKS5kYXRhKCksIFRFWFQoImFi
IikpIHx8ICFidW5kbGUpIHsKKyAgICBpZiAoX3dmb3Blbl9zKCZidW5kbGUsIHdjaGFyRnJvbShu
dWxsaWZpZWRQYXRoLmRhdGEoKSksIFRFWFQoImFiIikpIHx8ICFidW5kbGUpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGFwcGVuZCByZXN1bWUgZGF0YSIs
IGJ1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtOTgsOSArOTgsOSBAQCBib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYg
YnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1bWVEYXRhKQogICAgIH0KIAogICAgIC8vIE9w
ZW4gYSBoYW5kbGUgdG8gdGhlIGJ1bmRsZSBmaWxlCi0gICAgU3RyaW5nIG51bGxpZmllZFBhdGgg
PSBidW5kbGVQYXRoOworICAgIGF1dG8gbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGguY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKICAgICBGSUxFKiBidW5kbGUgPSAwOwotICAgIGlm
IChfd2ZvcGVuX3MoJmJ1bmRsZSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG51bGxpZmll
ZFBhdGgpLmRhdGEoKSwgVEVYVCgicitiIikpIHx8ICFidW5kbGUpIHsKKyAgICBpZiAoX3dmb3Bl
bl9zKCZidW5kbGUsIHdjaGFyRnJvbShudWxsaWZpZWRQYXRoLmRhdGEoKSksIFRFWFQoInIrYiIp
KSB8fCAhYnVuZGxlKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAl
cyB0byBnZXQgcmVzdW1lIGRhdGEiLCBidW5kbGVQYXRoLmFzY2lpKCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IDE1MzE1Y2E3MzVmZjJlN2FiNDM1MTcxZTZjMWJkZTYw
MzczMmNiZGUuLjk1MjQ2ZDRhMjk0ODM1ZWM4NjAzYjdlOTkzOTQ3NzRjNjVmMjMyMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNTks
NyArNTksNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZUludGVybmFsKExDSUQgdXNlckRl
ZmF1bHRMQ0lELCBjb25zdCBTdHJpbmcmIHVzZXJEZWZhdQogewogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGV4dHJhY3RMYW5ndWFnZUNvZGUobG9jYWxlKSwgdXNlckRlZmF1bHRMYW5n
dWFnZUNvZGUpKQogICAgICAgICByZXR1cm4gdXNlckRlZmF1bHRMQ0lEOwotICAgIHJldHVybiBM
b2NhbGVOYW1lVG9MQ0lEKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihsb2NhbGUpLmRhdGEo
KSwgMCk7CisgICAgcmV0dXJuIExvY2FsZU5hbWVUb0xDSUQod2NoYXJGcm9tKGxvY2FsZS5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIDApOwogfQogCiBzdGF0aWMgTENJ
RCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKQEAgLTY4LDcgKzY4
LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUpCiAgICAgY29uc3Qgc2l6ZV90IGxhbmd1YWdlQ29kZUJ1ZmZlclNpemUgPSA5OwogICAgIFdD
SEFSIGxvd2VyY2FzZUxhbmd1YWdlQ29kZVtsYW5ndWFnZUNvZGVCdWZmZXJTaXplXTsKICAgICA6
OkdldExvY2FsZUluZm8oTE9DQUxFX1VTRVJfREVGQVVMVCwgTE9DQUxFX1NJU082MzlMQU5HTkFN
RSwgbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlLCBsYW5ndWFnZUNvZGVCdWZmZXJTaXplKTsKLSAgICBT
dHJpbmcgdXNlckRlZmF1bHRMYW5ndWFnZUNvZGUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcobG93ZXJjYXNlTGFuZ3VhZ2VDb2RlKTsKKyAgICBTdHJpbmcgdXNlckRlZmF1bHRMYW5ndWFn
ZUNvZGUobG93ZXJjYXNlTGFuZ3VhZ2VDb2RlKTsKIAogICAgIExDSUQgbGNpZCA9IExDSURGcm9t
TG9jYWxlSW50ZXJuYWwoTE9DQUxFX1VTRVJfREVGQVVMVCwgdXNlckRlZmF1bHRMYW5ndWFnZUNv
ZGUsIFN0cmluZyhsb2NhbGUpKTsKICAgICBpZiAoIWxjaWQpCkBAIC05NSw3ICs5NSw3IEBAIFN0
cmluZyBMb2NhbGVXaW46OmdldExvY2FsZUluZm9TdHJpbmcoTENUWVBFIHR5cGUpCiAgICAgaWYg
KGJ1ZmZlclNpemVXaXRoTlVMIDw9IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBW
ZWN0b3I8VUNoYXI+IGJ1ZmZlcihidWZmZXJTaXplV2l0aE5VTCk7Ci0gICAgOjpHZXRMb2NhbGVJ
bmZvKG1fbGNpZCwgdHlwZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZVdpdGhOVUwpOworICAg
IDo6R2V0TG9jYWxlSW5mbyhtX2xjaWQsIHR5cGUsIHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSwg
YnVmZmVyU2l6ZVdpdGhOVUwpOwogICAgIGJ1ZmZlci5zaHJpbmsoYnVmZmVyU2l6ZVdpdGhOVUwg
LSAxKTsKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCmluZGV4IDBmNDZjNWRjYWIyOWI3YjQ2
M2JiNmVjZDMxYjBlYjNiNzU4YzIyM2MuLjAyN2NkZGQzMmE3ZDU3YTMwOGI0MmI4ODgzZDJiNWIz
OTQxMDY4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiAjaWYgVVNFKENGKQogI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CkBAIC02NSw3ICs2Niw3IEBAIEJT
dHJpbmc6OkJTdHJpbmcoY29uc3QgU3RyaW5nJiBzKQogICAgIGlmIChzLmlzTnVsbCgpKQogICAg
ICAgICBtX2JzdHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJp
bmdMZW4oU3RyaW5nVmlldyhzKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSk7
CisgICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHdjaGFyRnJvbShTdHJpbmdWaWV3
KHMpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSk7CiB9CiAKIEJTdHJpbmc6
OkJTdHJpbmcoY29uc3QgVVJMJiB1cmwpCkBAIC03Myw3ICs3NCw3IEBAIEJTdHJpbmc6OkJTdHJp
bmcoY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgbV9ic3Ry
ID0gMDsKICAgICBlbHNlCi0gICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKFN0cmlu
Z1ZpZXcodXJsLnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdXJsLnN0cmluZygp
Lmxlbmd0aCgpKTsKKyAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4od2NoYXJGcm9t
KFN0cmluZ1ZpZXcodXJsLnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSksIHVybC5z
dHJpbmcoKS5sZW5ndGgoKSk7CiB9CiAKIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgQXRvbWljU3Ry
aW5nJiBzKQpAQCAtODEsNyArODIsNyBAQCBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IEF0b21pY1N0
cmluZyYgcykKICAgICBpZiAocy5pc051bGwoKSkKICAgICAgICAgbV9ic3RyID0gMDsKICAgICBl
bHNlCi0gICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKFN0cmluZ1ZpZXcocy5zdHJp
bmcoKSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpOworICAgICAgICBtX2Jz
dHIgPSBTeXNBbGxvY1N0cmluZ0xlbih3Y2hhckZyb20oU3RyaW5nVmlldyhzLnN0cmluZygpKS51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKSksIHMubGVuZ3RoKCkpOwogfQogCiAjaWYgVVNFKENGKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmNwcAppbmRleCAwZTQwODBiODU2NzZhMGE0NjFiYmY5NmJhMTczMjM1ZjViN2RiNjNjLi5h
MzNlODI3YzlkOGQwMTkwNDllNWY5ODgyNTRjYTg2YmEwMDc5NTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAt
MTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBib29sIGdldFdlYkxvY0RhdGEoY29uc3QgRHJhZ0RhdGFN
YXAqIGRhdGFPYmplY3QsIFN0cmluZyYgdXJsLCBTdHJpbmcqIHRpCiAgICAgaWYgKCFkYXRhT2Jq
ZWN0LT5jb250YWlucyhjZkhEcm9wRm9ybWF0KCktPmNmRm9ybWF0KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgd2NzY3B5KGZpbGVuYW1lLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoZGF0YU9iamVjdC0+Z2V0KGNmSERyb3BGb3JtYXQoKS0+Y2ZGb3JtYXQpWzBdKS5kYXRhKCkp
OworICAgIHdjc2NweShmaWxlbmFtZSwgd2NoYXJGcm9tKGRhdGFPYmplY3QtPmdldChjZkhEcm9w
Rm9ybWF0KCktPmNmRm9ybWF0KVswXS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSkpOwogICAgIGlmIChfd2NzaWNtcChQYXRoRmluZEV4dGVuc2lvblcoZmlsZW5hbWUpLCBM
Ii51cmwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAKIApAQCAtMTQwLDEwICsxNDAsMTAg
QEAgc3RhdGljIGJvb2wgZ2V0V2ViTG9jRGF0YShjb25zdCBEcmFnRGF0YU1hcCogZGF0YU9iamVj
dCwgU3RyaW5nJiB1cmwsIFN0cmluZyogdGkKIAogICAgIGlmICh0aXRsZSkgewogICAgICAgICBQ
YXRoUmVtb3ZlRXh0ZW5zaW9uKGZpbGVuYW1lKTsKLSAgICAgICAgKnRpdGxlID0gbnVsbFRlcm1p
bmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKTsKKyAgICAgICAgKnRpdGxlID0gU3RyaW5nKGZp
bGVuYW1lKTsKICAgICB9CiAgICAgCi0gICAgdXJsID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3Ry
aW5nKHVybEJ1ZmZlcik7CisgICAgdXJsID0gU3RyaW5nKHVybEJ1ZmZlcik7CiAgICAgcmV0dXJu
IHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NSw3ICsxODUsNyBAQCBIR0xP
QkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
CiAKICAgICBpZiAoY2JEYXRhKSB7CiAgICAgICAgIFBXU1RSIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFBXU1RSPihHbG9iYWxMb2NrKGNiRGF0YSkpOwotICAgICAgICBfc253cHJpbnRmKGJ1ZmZlciwg
c2l6ZSwgTCIlc1xuJXMiLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobXV0YWJsZVVSTCku
ZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobXV0YWJsZVRpdGxlKS5kYXRhKCkp
OworICAgICAgICBfc253cHJpbnRmKGJ1ZmZlciwgc2l6ZSwgTCIlc1xuJXMiLCB3Y2hhckZyb20o
bXV0YWJsZVVSTC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIHdjaGFy
RnJvbShtdXRhYmxlVGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
KTsKICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgfQogICAgIHJldHVybiBjYkRh
dGE7CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBnZXRGaWxlRGVzY3JpcHRvckRhdGEoSURhdGFP
YmplY3QqIGRhdGFPYmplY3QsIGludCYgc2l6ZSwgU3RyaW5nJiBwYXRobmFtZSkKIAogICAgIEZJ
TEVHUk9VUERFU0NSSVBUT1IqIGZnZCA9IHN0YXRpY19jYXN0PEZJTEVHUk9VUERFU0NSSVBUT1Iq
PihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKICAgICBzaXplID0gZmdkLT5mZ2RbMF0ubkZp
bGVTaXplTG93OwotICAgIHBhdGhuYW1lID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZn
ZC0+ZmdkWzBdLmNGaWxlTmFtZSk7CisgICAgcGF0aG5hbWUgPSBTdHJpbmcoZmdkLT5mZ2RbMF0u
Y0ZpbGVOYW1lKTsKIAogICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICA6OlJl
bGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKQEAgLTUyNSw5ICs1MjUsMTAgQEAgU3RyaW5nIGdldFVS
TChjb25zdCBEcmFnRGF0YU1hcCogZGF0YSwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmEKICAgICBpZiAoIWdldERhdGFNYXBJdGVtKGRhdGEsIGZpbGVuYW1lV0Zvcm1h
dCgpLCBzdHJpbmdEYXRhKSkKICAgICAgICAgZ2V0RGF0YU1hcEl0ZW0oZGF0YSwgZmlsZW5hbWVG
b3JtYXQoKSwgc3RyaW5nRGF0YSk7CiAKLSAgICBpZiAoc3RyaW5nRGF0YS5pc0VtcHR5KCkgfHwg
KCFQYXRoRmlsZUV4aXN0cyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3RyaW5nRGF0YSku
ZGF0YSgpKSAmJiAhUGF0aElzVU5DKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdHJpbmdE
YXRhKS5kYXRhKCkpKSkKKyAgICBhdXRvIHdjaGFyRGF0YSA9IHdjaGFyRnJvbShzdHJpbmdEYXRh
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICBpZiAoc3RyaW5n
RGF0YS5pc0VtcHR5KCkgfHwgKCFQYXRoRmlsZUV4aXN0cyh3Y2hhckRhdGEpICYmICFQYXRoSXNV
TkMod2NoYXJEYXRhKSkpCiAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBwYXRoQXNDRlN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciAqKXN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihzdHJpbmdEYXRhKS5kYXRhKCksIHdjc2xlbihzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoc3RyaW5nRGF0YSkuZGF0YSgpKSkpOworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gcGF0aEFzQ0ZTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIgKil3Y2hhckRhdGEsIHdjc2xl
bih3Y2hhckRhdGEpKSk7CiAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgp
LCB1cmwpICYmIHRpdGxlKQogICAgICAgICAqdGl0bGUgPSB1cmw7CiAjZW5kaWYKQEAgLTc0Miw3
ICs3NDMsNyBAQCB2b2lkIGdldENGRGF0YShJRGF0YU9iamVjdCogZGF0YSwgRk9STUFURVRDKiBm
b3JtYXQsIFZlY3RvcjxTdHJpbmc+JiBkYXRhU3RyaW5ncwogICAgIGZvciAoVUlOVCBpID0gMDsg
aSA8IGZpbGVDb3VudDsgaSsrKSB7CiAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3As
IGksIGZpbGVuYW1lLCBXVEZfQVJSQVlfTEVOR1RIKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgZGF0YVN0cmluZ3MuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJU
b1N0cmluZyhmaWxlbmFtZSkpOworICAgICAgICBkYXRhU3RyaW5ncy5hcHBlbmQoU3RyaW5nKGZp
bGVuYW1lKSk7CiAgICAgfQogCiAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwpAQCAt
Nzk3LDcgKzc5OCw3IEBAIHZvaWQgc2V0Q0ZEYXRhKElEYXRhT2JqZWN0KiBkYXRhLCBGT1JNQVRF
VEMqIGZvcm1hdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFTCiAgICAgZHJvcEZpbGVzLT5w
RmlsZXMgPSBzaXplb2YoRFJPUEZJTEVTKTsKICAgICBkcm9wRmlsZXMtPmZXaWRlID0gVFJVRTsK
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBkYXRhU3RyaW5ncy5maXJzdCgpOwotICAgIHdjc2NweShy
ZWludGVycHJldF9jYXN0PExQV1NUUj4oZHJvcEZpbGVzICsgMSksIHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKKyAgICB3Y3NjcHkocmVpbnRlcnByZXRfY2Fz
dDxMUFdTVFI+KGRyb3BGaWxlcyArIDEpLCB3Y2hhckZyb20oZmlsZW5hbWUuY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKICAgICBHbG9iYWxVbmxvY2sobWVkaXVtLmhH
bG9iYWwpOwogICAgIGRhdGEtPlNldERhdGEoZm9ybWF0LCAmbWVkaXVtLCBGQUxTRSk7CiAgICAg
OjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDQ3OWUwY2FhZjczOTAxOTc4OTg0MGIwZjg3NmY2ZDRm
Nzk2NGIzZWUuLjE4M2RhNTc2ZjM2NGQ5MWVkMmI2MTE1MTc3ZjgxYWY4ZjM0MWQwMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMzcsNyArMzcs
NiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1OCw3ICsx
NTcsNyBAQCBWZWN0b3I8U3RyaW5nPiBEcmFnRGF0YTo6YXNGaWxlbmFtZXMoKSBjb25zdAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRmlsZXM7IGkrKykgewogICAgICAgICAg
ICAgaWYgKCFEcmFnUXVlcnlGaWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIFdURl9BUlJBWV9MRU5H
VEgoZmlsZW5hbWUpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKSk7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhmaWxlbmFtZSkpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRnJlZSB1cCBtZW1vcnkgZnJvbSBkcmFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDEyNTU0ODBiNDBhMjZhMjQxOGZhMjNhNmIx
MGRlNjg2NDRiOWRlNjEuLmUxYmMxYjdjMTczYjY0NzZlMGY4MGY1NzVhODcwNWE5MTBkY2QxNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC03
NCw4ICs3NCw4IEBAIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJh
Z0ltYWdlUmVmIGltYWdlLCBmbG9hdCkKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29u
Rm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewogICAgIFNI
RklMRUlORk8gc2hmaSB7IH07Ci0gICAgU3RyaW5nIGZuYW1lID0gZmlsZW5hbWU7Ci0gICAgaWYg
KEZBSUxFRChTSEdldEZpbGVJbmZvKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmbmFtZSku
ZGF0YSgpLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsICZzaGZpLCBzaXplb2Yoc2hmaSksIFNIR0ZJ
X0lDT04gfCBTSEdGSV9VU0VGSUxFQVRUUklCVVRFUykpKQorICAgIGF1dG8gZm5hbWUgPSBmaWxl
bmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIGlmIChGQUlMRUQoU0hH
ZXRGaWxlSW5mbyh3Y2hhckZyb20oZm5hbWUuZGF0YSgpKSwgRklMRV9BVFRSSUJVVEVfTk9STUFM
LCAmc2hmaSwgc2l6ZW9mKHNoZmkpLCBTSEdGSV9JQ09OIHwgU0hHRklfVVNFRklMRUFUVFJJQlVU
RVMpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBJQ09OSU5GTyBpY29uSW5mbzsKQEAgLTEx
MSw3ICsxMTEsNyBAQCBzdGF0aWMgRm9udENhc2NhZGUgZHJhZ0xhYmVsRm9udChpbnQgc2l6ZSwg
Ym9vbCBib2xkLCBGb250UmVuZGVyaW5nTW9kZSByZW5kZXJpbgogCiAgICAgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKICAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoYm9sZCA/
IGJvbGRXZWlnaHRWYWx1ZSgpIDogbm9ybWFsV2VpZ2h0VmFsdWUoKSk7Ci0gICAgZGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtZXRyaWNzLmxmU21D
YXB0aW9uRm9udC5sZkZhY2VOYW1lKSk7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KFN0
cmluZyhtZXRyaWNzLmxmU21DYXB0aW9uRm9udC5sZkZhY2VOYW1lKSk7CiAgICAgZGVzY3JpcHRp
b24uc2V0U3BlY2lmaWVkU2l6ZSgoZmxvYXQpc2l6ZSk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29t
cHV0ZWRTaXplKChmbG9hdClzaXplKTsKICAgICBkZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2Rl
KHJlbmRlcmluZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01J
TUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4IGIzNTBmMWNjNzEyZWE4YzAzNWUyYzJkMmQwNjUw
MzZmOWQzZTUwZTMuLjAxMjU5MjI1NmI5NmJhYWUyYTAwNjhhZDU4NGZiY2NiNjhmMGU4ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdp
bi5jcHAKQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogICAgIERXT1JEIGNvbnRlbnRUeXBlU3RyTGVu
ID0gc2l6ZW9mKGNvbnRlbnRUeXBlU3RyKTsKICAgICBEV09SRCBrZXlUeXBlOwogCi0gICAgSFJF
U1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfQ0xBU1NFU19ST09ULCBzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoZXh0KS5kYXRhKCksIEwiQ29udGVudCBUeXBlIiwgJmtleVR5
cGUsIGNvbnRlbnRUeXBlU3RyLCAmY29udGVudFR5cGVTdHJMZW4pOworICAgIEhSRVNVTFQgcmVz
dWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0NMQVNTRVNfUk9PVCwgd2NoYXJGcm9tKGV4dC5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIEwiQ29udGVudCBUeXBlIiwg
JmtleVR5cGUsIGNvbnRlbnRUeXBlU3RyLCAmY29udGVudFR5cGVTdHJMZW4pOwogCiAgICAgaWYg
KHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIGtleVR5cGUgPT0gUkVHX1NaKQotICAgICAgICBy
ZXR1cm4gd2NoYXJUb1N0cmluZyhjb250ZW50VHlwZVN0ciwgY29udGVudFR5cGVTdHJMZW4gLyBz
aXplb2YoY29udGVudFR5cGVTdHJbMF0pIC0gMSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoY29u
dGVudFR5cGVTdHIsIGNvbnRlbnRUeXBlU3RyTGVuIC8gc2l6ZW9mKGNvbnRlbnRUeXBlU3RyWzBd
KSAtIDEpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAtNTYsMTAgKzU2LDEwIEBAIFN0
cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCiAgICAgRFdPUkQgZXh0U3RyTGVuID0gc2l6ZW9mKGV4dFN0cik7
CiAgICAgRFdPUkQga2V5VHlwZTsKIAotICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0UmVnaXN0cnlW
YWx1ZShIS0VZX0NMQVNTRVNfUk9PVCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgp
LmRhdGEoKSwgTCJFeHRlbnNpb24iLCAma2V5VHlwZSwgZXh0U3RyLCAmZXh0U3RyTGVuKTsKKyAg
ICBIUkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9DTEFTU0VTX1JPT1QsIHdj
aGFyRnJvbShwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgTCJF
eHRlbnNpb24iLCAma2V5VHlwZSwgZXh0U3RyLCAmZXh0U3RyTGVuKTsKIAogICAgIGlmIChyZXN1
bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiBrZXlUeXBlID09IFJFR19TWikKLSAgICAgICAgcmV0dXJu
IHdjaGFyVG9TdHJpbmcoZXh0U3RyICsgMSwgZXh0U3RyTGVuIC8gc2l6ZW9mKGV4dFN0clswXSkg
LSAyKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhleHRTdHIgKyAxLCBleHRTdHJMZW4gLyBzaXpl
b2YoZXh0U3RyWzBdKSAtIDIpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGE1ZmQ5MzBhZTkx
YjkxN2I5Y2JhMDg2NGJiYTU1MzRlY2IyYzFlMTMuLjkzNmRjZjUxN2ExNjhjMzAzNzExMjhkNDkz
MWVlNDliMjRiYWVjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFz
dGVib2FyZEZpbGVSZWFkZXImIHJlYWRlcikKICAgICAgICAgZm9yIChVSU5UIGkgPSAwOyBpIDwg
ZmlsZUNvdW50OyBpKyspIHsKICAgICAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3As
IGksIGZpbGVuYW1lLCBXVEZfQVJSQVlfTEVOR1RIKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKG51bGxUZXJtaW5h
dGVkV0NoYXJUb1N0cmluZyhmaWxlbmFtZSkpOworICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxl
bmFtZShTdHJpbmcoZmlsZW5hbWUpKTsKICAgICAgICAgfQogCiAgICAgICAgIEdsb2JhbFVubG9j
ayhtZWRpdW0uaEdsb2JhbCk7CkBAIC01NTUsMjMgKzU1NSwyMiBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyhQV1NUUiBwc3osIHNpemVfdCBsZW5ndGgpCiAg
ICAgcHN6W3dyaXRlVG9dID0gMDsKIH0KIAotc3RhdGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZy
b21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBVQ2hhciogZXh0ZW5zaW9uLCBib29sIGlzTGluaykKK3N0YXRpYyBTdHJpbmcgZmlsZXN5c3Rl
bVBhdGhGcm9tVXJsT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGJvb2wgaXNMaW5rKQogewogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nTnVsbFRlcm1pbmF0b3IgPSBNQVhf
UEFUSCAtIDE7CiAgICAgYm9vbCB1c2VkVVJMID0gZmFsc2U7Ci0gICAgV0NIQVIgZnNQYXRoQnVm
ZmVyW01BWF9QQVRIXTsKKyAgICBVQ2hhciBmc1BhdGhCdWZmZXJbTUFYX1BBVEhdOwogICAgIGZz
UGF0aEJ1ZmZlclswXSA9IDA7Ci0gICAgaW50IGV4dGVuc2lvbkxlbiA9IGV4dGVuc2lvbiA/IGxz
dHJsZW4oZXh0ZW5zaW9uKSA6IDA7Ci0gICAgaW50IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4
dGVuc2lvbiA9IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ051bGxUZXJtaW5hdG9yIC0gZXh0ZW5z
aW9uTGVuOworICAgIGludCBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24gPSBmc1Bh
dGhNYXhMZW5ndGhFeGNsdWRpbmdOdWxsVGVybWluYXRvciAtIGV4dGVuc2lvbi5sZW5ndGgoKTsK
IAogICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNpemVfdCBsZW4gPSBzdGQ6
Om1pbjxzaXplX3Q+KHRpdGxlLmxlbmd0aCgpLCBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRl
bnNpb24pOwogICAgICAgICBTdHJpbmdWaWV3KHRpdGxlKS5zdWJzdHJpbmcoMCwgbGVuKS5nZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOwogICAgICAgICBmc1BhdGhCdWZm
ZXJbbGVuXSA9IDA7Ci0gICAgICAgIHBhdGhSZW1vdmVCYWRGU0NoYXJhY3RlcnMoZnNQYXRoQnVm
ZmVyLCBsZW4pOworICAgICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKHdjaGFyRnJvbShm
c1BhdGhCdWZmZXIpLCBsZW4pOwogICAgIH0KIAotICAgIGlmICghbHN0cmxlbihmc1BhdGhCdWZm
ZXIpKSB7CisgICAgaWYgKCF3Y3NsZW4od2NoYXJGcm9tKGZzUGF0aEJ1ZmZlcikpKSB7CiAgICAg
ICAgIFVSTCBrdXJsKFVSTCgpLCB1cmwpOwogICAgICAgICB1c2VkVVJMID0gdHJ1ZTsKICAgICAg
ICAgLy8gVGhlIGZpbGVuYW1lIGZvciBhbnkgY29udGVudCBiYXNlZCBkcmFnIG9yIGZpbGUgdXJs
IHNob3VsZCBiZSB0aGUgbGFzdCBlbGVtZW50IG9mIApAQCAtNTg3LDE4ICs1ODYsMTggQEAgc3Rh
dGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICAgICAgICAgIFN0cmluZ1ZpZXcodXJsKS5zdWJzdHJp
bmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOwogICAg
ICAgICB9CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKLSAgICAgICAgcGF0aFJlbW92
ZUJhZEZTQ2hhcmFjdGVycyhmc1BhdGhCdWZmZXIsIGxlbik7CisgICAgICAgIHBhdGhSZW1vdmVC
YWRGU0NoYXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7CiAgICAgfQogCi0g
ICAgaWYgKCFleHRlbnNpb24pCi0gICAgICAgIHJldHVybiBTdHJpbmcoc3RhdGljX2Nhc3Q8VUNo
YXIqPihmc1BhdGhCdWZmZXIpKTsKKyAgICBpZiAoZXh0ZW5zaW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyhmc1BhdGhCdWZmZXIpOwogCiAgICAgaWYgKCFpc0xpbmsgJiYgdXNl
ZFVSTCkgewotICAgICAgICBQYXRoUmVuYW1lRXh0ZW5zaW9uKGZzUGF0aEJ1ZmZlciwgZXh0ZW5z
aW9uKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGZzUGF0aEJ1
ZmZlcikpOworICAgICAgICBQYXRoUmVuYW1lRXh0ZW5zaW9uKHdjaGFyRnJvbShmc1BhdGhCdWZm
ZXIpLCB3Y2hhckZyb20oZXh0ZW5zaW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoZnNQYXRoQnVmZmVyKTsKICAgICB9CiAK
LSAgICByZXR1cm4gbWFrZVN0cmluZyhzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KGZzUGF0aEJ1
ZmZlciksIGV4dGVuc2lvbik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoY29uc3RfY2FzdDxjb25z
dCBVQ2hhcio+KGZzUGF0aEJ1ZmZlciksIGV4dGVuc2lvbik7CiB9CiAKIC8vIHdyaXRlRmlsZVRv
RGF0YU9iamVjdCB0YWtlcyBvd25lcnNoaXAgb2YgZmlsZURlc2NyaXB0b3IgYW5kIGZpbGVDb250
ZW50CkBAIC02NTUsNyArNjU0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9i
amVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgU3RyaW5n
IHVybCA9IGt1cmwuc3RyaW5nKCk7CiAgICAgQVNTRVJUKHVybC5pc0FsbEFTQ0lJKCkpOyAvLyBV
Ukw6OnN0cmluZygpIGlzIFVSTCBlbmNvZGVkLgogCi0gICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVz
eXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgTCIuVVJMIiwgdHJ1ZSk7Cisg
ICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRs
ZVN0ciwgIi5VUkwiLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0
U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQg
PSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC02ODQsNyArNjgzLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93ID0gY29udGVudC5sZW5n
dGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNpemUgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZnNQYXRo
Lmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAg
IFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dp
dGhVcGNvbnZlcnQoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0
aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFy
RnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sodXJsRmlsZURl
c2NyaXB0b3IpOwogCiAgICAgY2hhciogZmlsZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KEdsb2JhbExvY2sodXJsRmlsZUNvbnRlbnQpKTsKQEAgLTkxNCw3ICs5MTMsNyBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBleHRlbnNpb24u
aW5zZXJ0KCIuIiwgMCk7Ci0gICAgZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRs
ZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRlbnNpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIGZhbHNlKTsKKyAgICBmc1BhdGggPSBmaWxlc3lzdGVtUGF0aEZyb21V
cmxPclRpdGxlKHVybCwgcHJlZmVycmVkVGl0bGUsIGV4dGVuc2lvbiwgZmFsc2UpOwogCiAgICAg
aWYgKGZzUGF0aC5sZW5ndGgoKSA8PSAwKSB7CiAgICAgICAgIEdsb2JhbFVubG9jayhtZW1PYmop
OwpAQCAtOTIzLDcgKzkyMiw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmls
ZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICB9CiAKICAg
ICBpbnQgbWF4U2l6ZSA9IHN0ZDo6bWluPGludD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlf
TEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5z
dWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmdkLT5mZ2Rb
MF0uY0ZpbGVOYW1lKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1heFNp
emUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmls
ZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIAogICAgIHJldHVybiBtZW1PYmo7
CkBAIC05NjEsOCArOTYwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250
ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8g
d2luZG93cyBkb2VzIG5vdCBlbmpveSBhIGxlYWRpbmcgc2xhc2ggb24gcGF0aHMKICAgICAgICAg
aWYgKGxvY2FsUGF0aFswXSA9PSAnLycpCiAgICAgICAgICAgICBsb2NhbFBhdGggPSBsb2NhbFBh
dGguc3Vic3RyaW5nKDEpOwotICAgICAgICBhdXRvIGxvY2FsUGF0aFdpZGUgPSBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIobG9jYWxQYXRoKTsKLSAgICAgICAgTFBDV1NUUiBsb2NhbFBhdGhT
dHIgPSBsb2NhbFBhdGhXaWRlLmRhdGEoKTsKKyAgICAgICAgTFBDV1NUUiBsb2NhbFBhdGhTdHIg
PSB3Y2hhckZyb20obG9jYWxQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0
YSgpKTsKICAgICAgICAgaWYgKGxvY2FsUGF0aFN0ciAmJiB3Y3NsZW4obG9jYWxQYXRoU3RyKSAr
IDEgPCBNQVhfUEFUSCkKICAgICAgICAgICAgIHdjc2NweV9zKGZpbGVQYXRoLCBNQVhfUEFUSCwg
bG9jYWxQYXRoU3RyKTsKICAgICAgICAgZWxzZQpAQCAtOTcyLDcgKzk3MCw3IEBAIHN0YXRpYyBI
R0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBm
aWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIFdDSEFSIGV4dGVuc2lvbltNQVhfUEFUSF07CiAgICAg
ICAgIGlmICghOjpHZXRUZW1wUGF0aChXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwgdGVtcFBh
dGgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghOjpQYXRoQXBwZW5kKHRl
bXBQYXRoLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZU5hbWUpLmRhdGEoKSkpCisg
ICAgICAgIGlmICghOjpQYXRoQXBwZW5kKHRlbXBQYXRoLCB3Y2hhckZyb20oZmlsZU5hbWUuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICBMUENXU1RSIGZvdW5kRXh0ZW5zaW9uID0gOjpQYXRoRmluZEV4dGVuc2lv
bih0ZW1wUGF0aCk7CiAgICAgICAgIGlmIChmb3VuZEV4dGVuc2lvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcAppbmRleCBmZDY4
MDZlZmQ5M2Y2ZjY2YjU4MDk5ZmM1MGE4MzE2OGM2NTI5MTVkLi5iMDBlMjZjOWVlNzQ2OGY0NTI2
N2I2YTQzODYwNTY2MDVhZjEwNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcApAQCAtNjcsOCArNjcsOCBAQCBTdHJpbmcgc2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJp
bmcmIGNoYWxsZW5nZQogICAgICAgICBTdHJpbmcgbG9jYWxDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7
CiAKICAgICAgICAgLy8gV2luZG93cyBBUEkgd29uJ3Qgd3JpdGUgdG8gb3VyIGJ1ZmZlciwgYWx0
aG91Z2ggaXQncyBub3QgZGVjbGFyZWQgd2l0aCBjb25zdC4KLSAgICAgICAgYXV0byBsb2NhbENo
YWxsZW5nZVdpZGUgPSBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobG9jYWxDaGFsbGVuZ2Up
OwotICAgICAgICByZXF1ZXN0SW5mby5wd3N6Q2hhbGxlbmdlU3RyaW5nID0gY29uc3RfY2FzdDx3
Y2hhcl90Kj4obG9jYWxDaGFsbGVuZ2VXaWRlLmRhdGEoKSk7CisgICAgICAgIGF1dG8gbG9jYWxD
aGFsbGVuZ2VXaWRlID0gbG9jYWxDaGFsbGVuZ2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKTsKKyAgICAgICAgcmVxdWVzdEluZm8ucHdzekNoYWxsZW5nZVN0cmluZyA9IGNvbnN0X2Nh
c3Q8d2NoYXJfdCo+KHdjaGFyRnJvbShsb2NhbENoYWxsZW5nZVdpZGUuZGF0YSgpKSk7CiAKICAg
ICAgICAgQ1JZUFRfQUxHT1JJVEhNX0lERU5USUZJRVIgc2lnbkFsZ28geyB9OwogICAgICAgICBz
aWduQWxnby5wc3pPYmpJZCA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHN6T0lEX1JTQV9TSEExUlNBKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5k
ZXggNWJkYWJiNjI4MGVkYTI5NzQyYzk2NmQ1MGVkM2VlZjBhYTFhMDc0OC4uYmMzNDQyZjJkNWJm
OTlkNjk5Nzg3MGQxMTUwMGQwNDQ4OWEzNmE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBTdHJpbmcgbnVs
bGlmaWVkUGF0aCA9IGZpbGVQYXRoOwotICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmls
ZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG51bGxpZmllZFBhdGgpLmRhdGEoKSwgR0VO
RVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklC
VVRFX05PUk1BTCwgMCk7CisgICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyh3Y2hh
ckZyb20obnVsbGlmaWVkUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxF
X0FUVFJJQlVURV9OT1JNQUwsIDApOwogICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURfSEFO
RExFX1ZBTFVFKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0
byBjcmVhdGUgc2hhcmVkIGJ1ZmZlciwgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFz
Y2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggNmU0MTM4
MTY0YmU0OGIwZjMyMDFhMDFiNmY4YjkyMjRkYjM1NmI2YS4uMjhhMWU0MWFhN2VlMDNjZDBkY2E5
MzU4YTU3ZDNhMWYzYzZmOTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIAogI2lmIEVOQUJMRShWSURFTykKQEAg
LTMxOCw3ICszMTcsNyBAQCBDb2xvciBSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDbwogc3RhdGljIHZvaWQgZmls
bEZvbnREZXNjcmlwdGlvbihGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24s
IExPR0ZPTlQmIGxvZ0ZvbnQsIGZsb2F0IGZvbnRTaXplKQogeyAgICAKICAgICBmb250RGVzY3Jp
cHRpb24uc2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseShudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobG9nRm9udC5sZkZhY2VOYW1lKSk7
CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShTdHJpbmcobG9nRm9udC5sZkZhY2VO
YW1lKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOwog
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQobG9nRm9udC5sZldlaWdodCA+PSA3MDAgPyBi
b2xkV2VpZ2h0VmFsdWUoKSA6IG5vcm1hbFdlaWdodFZhbHVlKCkpOyAvLyBGSVhNRTogVXNlIHJl
YWwgd2VpZ2h0LgogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhsb2dGb250LmxmSXRh
bGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2lu
LmNwcAppbmRleCBlYmIzNzM4NGMzMzdiZjEyZjVkNmRlOGE2YjQ2ZjZmMDQ4MWM3OGY5Li5iMGY5
MmI0OWNkZDc3MGNiMTQ2MjI2ZDA4MjRlZTA4YTFiNjJiYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dD
aGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC00Myw3ICs0NCw3IEBA
IGJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExF
JiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAgICAgIHVuc2lnbmVkIHVuaXF1ZUlEID0gcmFu
ZG9tTnVtYmVyKCkgKiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CiAgICAg
ICAgIHBpcGVOYW1lID0gbWFrZVN0cmluZygiXFxcXC5cXHBpcGVcXGNvbS5hcHBsZS5XZWJLaXQu
IiwgaGV4KHVuaXF1ZUlEKSk7CiAKLSAgICAgICAgc2VydmVySWRlbnRpZmllciA9IDo6Q3JlYXRl
TmFtZWRQaXBlKHBpcGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
LAorICAgICAgICBzZXJ2ZXJJZGVudGlmaWVyID0gOjpDcmVhdGVOYW1lZFBpcGUod2NoYXJGcm9t
KHBpcGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKICAgICAg
ICAgICAgIFBJUEVfQUNDRVNTX0RVUExFWCB8IEZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNF
IHwgRklMRV9GTEFHX09WRVJMQVBQRUQsCiAgICAgICAgICAgICBQSVBFX1RZUEVfTUVTU0FHRSB8
IFBJUEVfUkVBRE1PREVfTUVTU0FHRSwgMSwgaW5saW5lTWVzc2FnZU1heFNpemUsIGlubGluZU1l
c3NhZ2VNYXhTaXplLAogICAgICAgICAgICAgMCwgMCk7CkBAIC01Miw3ICs1Myw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2
ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAgaWYgKCFzZXJ2ZXJJZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBjbGllbnRJZGVudGlmaWVyID0gOjpDcmVhdGVGaWxlVyhwaXBl
TmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgR0VORVJJQ19SRUFE
IHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX09WRVJMQVBQ
RUQsIDApOworICAgIGNsaWVudElkZW50aWZpZXIgPSA6OkNyZWF0ZUZpbGVXKHdjaGFyRnJvbShw
aXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIEdFTkVSSUNf
UkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfRkxBR19PVkVS
TEFQUEVELCAwKTsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpIHsKICAgICAgICAgOjpDbG9z
ZUhhbmRsZShzZXJ2ZXJJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vd2luL01vZHVsZVdpbi5jcHAKaW5kZXggN2I2NWQ3Nzg2OTE2NjJmZGI1
ZmY2MGQ3MzY4OWQyY2VjYzliMzJmYy4uMGFmZWIzOTkwMzM5MWUyYzNiOThkNmIzZDUxYWI5YjZm
ZDZjZTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwCkBAIC0y
OSwxMyArMjksMTQgQEAKIAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIE1vZHVsZTo6bG9hZCgpCiB7Ci0gICAgQVNT
RVJUKCE6OlBhdGhJc1JlbGF0aXZlVyhtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpKTsKLSAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFcobV9wYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJF
RF9TRUFSQ0hfUEFUSCk7CisgICAgQVNTRVJUKCE6OlBhdGhJc1JlbGF0aXZlVyh3Y2hhckZyb20o
bV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpOworICAgIG1f
bW9kdWxlID0gOjpMb2FkTGlicmFyeUV4Vyh3Y2hhckZyb20obV9wYXRoLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BB
VEgpOwogICAgIHJldHVybiBtX21vZHVsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAppbmRl
eCA1NzdlNDY5Y2FkZTExMWJkMTQ4NGNjODE0MGE0ZDM0MmQ1NTg3YjYzLi4wOTc4OWNiMzYyMWM0
ODgyZGUyNDA2YmZmZmU0YWNhZTcxMDI1NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApAQCAt
ODUsMTQgKzg1LDE0IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAg
ICBjb21tYW5kTGluZUJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihjbGllbnRJZGVudGlmaWVyKSkpOwogICAgIGNvbW1hbmRMaW5lQnVpbGRl
ci5hcHBlbmQoJ1wwJyk7CiAKLSAgICBhdXRvIGNvbW1hbmRMaW5lID0gc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGNvbW1hbmRMaW5lQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBhdXRvIGNv
bW1hbmRMaW5lID0gY29tbWFuZExpbmVCdWlsZGVyLnRvU3RyaW5nKCkuY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKTsKIAogICAgIFNUQVJUVVBJTkZPIHN0YXJ0dXBJbmZvIHsgfTsKICAg
ICBzdGFydHVwSW5mby5jYiA9IHNpemVvZihzdGFydHVwSW5mbyk7CiAgICAgc3RhcnR1cEluZm8u
ZHdGbGFncyA9IFNUQVJURl9VU0VTSE9XV0lORE9XOwogICAgIHN0YXJ0dXBJbmZvLndTaG93V2lu
ZG93ID0gU1dfSElERTsKICAgICBQUk9DRVNTX0lORk9STUFUSU9OIHByb2Nlc3NJbmZvcm1hdGlv
biB7IH07Ci0gICAgQk9PTCByZXN1bHQgPSA6OkNyZWF0ZVByb2Nlc3MoMCwgY29tbWFuZExpbmUu
ZGF0YSgpLCAwLCAwLCB0cnVlLCAwLCAwLCAwLCAmc3RhcnR1cEluZm8sICZwcm9jZXNzSW5mb3Jt
YXRpb24pOworICAgIEJPT0wgcmVzdWx0ID0gOjpDcmVhdGVQcm9jZXNzKDAsIHdjaGFyRnJvbShj
b21tYW5kTGluZS5kYXRhKCkpLCAwLCAwLCB0cnVlLCAwLCAwLCAwLCAmc3RhcnR1cEluZm8sICZw
cm9jZXNzSW5mb3JtYXRpb24pOwogCiAgICAgLy8gV2UgY2FuIG5vdyBjbG9zZSB0aGUgY2xpZW50
IGlkZW50aWZpZXIgaGFuZGxlLgogICAgIDo6Q2xvc2VIYW5kbGUoY2xpZW50SWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQ
cm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQ
cm94eVdpbi5jcHAKaW5kZXggYWY0MzVjMTY1ZTY0YWU1NWU5ODdmZTM5YzgyMmQ2NGE5YmQwZDIw
ZC4uNTZjZDhlYzIxYjU2YjEyN2Y3NTJmMmY4NWRkOGY3ZDJkMTA2NGM5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTcxLDcgKzcyLDcgQEAgc3Rh
dGljIHZvaWQgY3JlYXRlTWVudUl0ZW0oY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSAmY29u
dGV4dCwgSE1FTlUgbWVudSwgY28KICAgICBzd2l0Y2ggKGRhdGEudHlwZSgpKSB7CiAgICAgY2Fz
ZSBBY3Rpb25UeXBlOgogICAgIGNhc2UgQ2hlY2thYmxlQWN0aW9uVHlwZToKLSAgICAgICAgOjpB
cHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfU1RSSU5HLCBkYXRhLmFjdGlvbigpLCBkYXRhLnRp
dGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOworICAgICAgICA6
OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGRhdGEuYWN0aW9uKCksIHdjaGFy
RnJvbShkYXRhLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXBhcmF0b3JUeXBlOgogICAgICAgICA6OkFw
cGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TRVBBUkFUT1IsIGRhdGEuYWN0aW9uKCksIG51bGxw
dHIpOwpAQCAtNzksNyArODAsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVNZW51SXRlbShjb25zdCBD
b250ZXh0TWVudUNvbnRleHREYXRhICZjb250ZXh0LCBITUVOVSBtZW51LCBjbwogICAgIGNhc2Ug
U3VibWVudVR5cGU6CiAgICAgICAgIEhNRU5VIHN1Ym1lbnUgPSBjcmVhdGVNZW51KGNvbnRleHQp
OwogICAgICAgICBwb3B1bGF0ZShjb250ZXh0LCBzdWJtZW51LCBkYXRhLnN1Ym1lbnUoKSk7Ci0g
ICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1BPUFVQLCAoVUlOVF9QVFIpc3Vi
bWVudSwgZGF0YS50aXRsZSgpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KTsKKyAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfUE9QVVAsIChVSU5UX1BU
UilzdWJtZW51LCB3Y2hhckZyb20oZGF0YS50aXRsZSgpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCAxNGIxZDlmYTgxYThmMGQzNDI2YjRmYjUy
ZTJkNjI2NWJiY2I5OWFhLi41ZGY2NTViNzM2MzY4MjQ4M2FmMTBhNjFlOWU5YjMxYTI0MTUyY2Uz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC01OSw2ICs1OSw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODc1LDcgKzg3Niw3IEBAIHZvaWQg
V2ViVmlldzo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAgICAgIGluZm8u
dUZsYWdzID0gVFRGX0lESVNIV05EOwogICAgICAgICBpbmZvLnVJZCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VUlOVF9QVFI+KG5hdGl2ZVdpbmRvdygpKTsKICAgICAgICAgVmVjdG9yPFVDaGFyPiB0b29s
VGlwQ2hhcmFjdGVycyA9IHRvb2xUaXAuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsg
Ly8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3VnaCB0byBtYWtlIHRoZSBTZW5kTWVzc2FnZSBjYWxs
Ci0gICAgICAgIGluZm8ubHBzelRleHQgPSBjb25zdF9jYXN0PFVDaGFyKj4odG9vbFRpcENoYXJh
Y3RlcnMuZGF0YSgpKTsKKyAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8d2NoYXJf
dCo+KHdjaGFyRnJvbSh0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpKTsKICAgICAgICAgOjpTZW5k
TWVzc2FnZShtX3Rvb2xUaXBXaW5kb3csIFRUTV9VUERBVEVUSVBURVhULCAwLCByZWludGVycHJl
dF9jYXN0PExQQVJBTT4oJmluZm8pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRs
ZVdpbi5jcHAKaW5kZXggZjk4N2ViN2EzMTJjYTYyMjVjODVlOWFiMWU3OWVmMDVlMmRiZjYyMS4u
MWVhYjYzM2ZmMDJjZDI3Y2NhMmIzMWJjNjZkMzdlODYzMzgyNDRmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9J
bmplY3RlZEJ1bmRsZVdpbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogewot
ICAgIEhNT0RVTEUgbGliID0gOjpMb2FkTGlicmFyeShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIobV9wYXRoKS5kYXRhKCkpOworICAgIEhNT0RVTEUgbGliID0gOjpMb2FkTGlicmFyeSh3Y2hh
ckZyb20obV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiAg
ICAgaWYgKCFsaWIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDU0MjQ3N2E5ZTllMGE5NDJkNjViZTBlZTJj
OTBiNGQyOTY5YTZjMzguLmUwYTc2NWUzNmU5YzdjYzc5ZjlhZDA5Y2Y2Njc2YWFhMGJjOTM5Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKQEAgLTUyLDYg
KzUyLDcgQEAKICNpbmNsdWRlIDxvbGVhY2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MTQzLDcgKzE0NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9hdHRyaWJ1dGUoX0lu
XyBCU1RSIGtleSwgX091dF8gVkFSSUFOVCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIEF0b21pY1N0cmluZyBrZXlBdG9taWMoa2V5LCA6
OlN5c1N0cmluZ0xlbihrZXkpKTsKKyAgICBBdG9taWNTdHJpbmcga2V5QXRvbWljKHVjaGFyRnJv
bShrZXkpLCA6OlN5c1N0cmluZ0xlbihrZXkpKTsKIAogICAgIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZShrZXlBdG9taWMsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NPTVBy
b3BlcnR5QmFnLmgKaW5kZXggMjE2NWEyMzU2ZDllYWEyY2FhMDk0NDFkMThmYTgzZGVmOTRiOWZk
NS4uMWFhOTRiYTc2MmIyYTk1MzE2MDY0ZWEzMjgxZTAzOGNiZjY4NzlkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCkBAIC0yMywxNiArMjMsMTQgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ09NUHJvcGVydHlCYWdfaAotI2RlZmluZSBDT01Q
cm9wZXJ0eUJhZ19oCisjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNPTVZhcmlhbnRTZXR0ZXIu
aCIKICNpbmNsdWRlIDxvY2lkbC5oPgogI2luY2x1ZGUgPHVua253bi5oPgotCiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotI2luY2x1ZGUg
IkNPTVZhcmlhbnRTZXR0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBLZXlUeXBl
ID0gdHlwZW5hbWUgV1RGOjpTdHJpbmcsIHR5cGVuYW1lIEhhc2hUeXBlID0gdHlwZW5hbWUgV1RG
OjpTdHJpbmdIYXNoPgogY2xhc3MgQ09NUHJvcGVydHlCYWcgZmluYWwgOiBwdWJsaWMgSVByb3Bl
cnR5QmFnLCBwdWJsaWMgSVByb3BlcnR5QmFnMiB7CkBAIC0yMjAsNyArMjE4LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhh
c2hUeXBlPjo6R2V0UHJvcGUKICAgICAgICAgcFByb3BCYWdbal0ucHN0ck5hbWUgPSAoTFBPTEVT
VFIpQ29UYXNrTWVtQWxsb2Moc2l6ZW9mKHdjaGFyX3QpKihjdXJyZW50LT5rZXkubGVuZ3RoKCkr
MSkpOwogICAgICAgICBpZiAoIXBQcm9wQmFnW2pdLnBzdHJOYW1lKQogICAgICAgICAgICAgcmV0
dXJuIEVfT1VUT0ZNRU1PUlk7Ci0gICAgICAgIHdjc2NweV9zKHBQcm9wQmFnW2pdLnBzdHJOYW1l
LCBjdXJyZW50LT5rZXkubGVuZ3RoKCkrMSwgc3RhdGljX2Nhc3Q8U3RyaW5nPihjdXJyZW50LT5r
ZXkpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICAgICAgd2Nz
Y3B5X3MocFByb3BCYWdbal0ucHN0ck5hbWUsIGN1cnJlbnQtPmtleS5sZW5ndGgoKSsxLCB3Y2hh
ckZyb20oY3VycmVudC0+a2V5LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSk7CiAgICAgICAgICsrKnBjUHJvcGVydGllczsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CkBA
IC0yMzEsNSArMjI5LDMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJh
ZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6TG9hZE9iamUKIHsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQotCi0jZW5kaWYgLy8gQ09NUHJvcGVydHlCYWdfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IGM1ODgwZWE0ZGQ4NTJiNWMwMGRk
YWIzYzgyNWQ2YTlmNmNmMDgzY2YuLmVhZGEzZTZiYzU1YzAwMTdmZWM5ZjBlYzE5NThkOWM0MWM3
N2VmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAg
LTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJET01FdmVudHNDbGFzc2VzLmgiCiAjaW5jbHVkZSAi
RE9NSFRNTENsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJLaXRHcmFwaGljcy5oIgotCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BdHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9DT01QdHIuaD4KQEAgLTU2LDggKzU1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlclRyZWVBc1RleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbEludG9WaWV3T3B0
aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3R5bGVkRWxlbWVudC5oPgotCiAjaW5jbHVkZSA8
aW5pdGd1aWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
KwogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4RTIzRX0KIERFRklORV9HVUlE
KElJRF9ET01FbGVtZW50LCAweDNiMGMwZWZmLCAweDQ3OGIsIDB4NGIwYiwgMHg4MiwgMHg5MCwg
MHhkMiwgMHgzMiwgMHgxZSwgMHg4LCAweGUyLCAweDNlKTsKIApAQCAtNDE0LDcgKzQxNCw3IEBA
IEhSRVNVTFQgRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQoX0luXyBCU1RSIC8qdGV4dCovKQogSFJF
U1VMVCBET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJ
RE9NRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIEJPT0wgdXNlQ2FwdHVyZSkKIHsKICAgICBhdXRv
IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBt
X25vZGUtPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNh
cHR1cmUpOworICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih1Y2hhckZyb20odHlwZSksIFdU
Rk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAogICAgIHJldHVybiBTX09LOwogfQpA
QCAtNDI2LDcgKzQyNiw3IEBAIEhSRVNVTFQgRE9NTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihf
SW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVuZXIqCiAgICAgaWYgKCFtX25v
ZGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0byB3ZWJMaXN0ZW5lciA9IFdlYkV2
ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV9ub2RlLT5yZW1vdmVFdmVudExp
c3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBtX25vZGUtPnJlbW92
ZUV2ZW50TGlzdGVuZXIodWNoYXJGcm9tKHR5cGUpLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTkyNCw3ICs5MjQsNyBAQCBIUkVTVUxUIERPTVdp
bmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50
TGlzdGVuZXIqCiAgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAg
ICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsK
LSAgICBtX3dpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBXVEZNb3ZlKHdlYkxpc3RlbmVy
KSwgdXNlQ2FwdHVyZSk7CisgICAgbV93aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIodWNoYXJGcm9t
KHR5cGUpLCBXVEZNb3ZlKHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTkzNSw3ICs5MzUsNyBAQCBIUkVTVUxUIERPTVdpbmRvdzo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVuZQogICAg
IGlmICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0byB3ZWJMaXN0
ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV93aW5kb3ct
PnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAg
IG1fd2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKHVjaGFyRnJvbSh0eXBlKSwgd2ViTGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMjkyLDcgKzEyOTIs
NyBAQCBIUkVTVUxUIERPTUVsZW1lbnQ6OmZvbnQoX091dF8gV2ViRm9udERlc2NyaXB0aW9uKiB3
ZWJGb250RGVzY3JpcHRpb24pCiAgICAgVUNoYXIqIGZhbWlseUNoYXJhY3RlcnNCdWZmZXIgPSBu
ZXcgVUNoYXJbZmFtaWx5Lmxlbmd0aCgpXTsKICAgICBTdHJpbmdWaWV3KGZhbWlseS5zdHJpbmco
KSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlcik7CiAK
LSAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZhbWlseUNoYXJhY3RlcnNCdWZmZXI7
CisgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHkgPSB3Y2hhckZyb20oZmFtaWx5Q2hhcmFj
dGVyc0J1ZmZlcik7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHlMZW5ndGggPSBmYW1p
bHkubGVuZ3RoKCk7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5zaXplID0gZm9udERlc2NyaXB0
aW9uLmNvbXB1dGVkU2l6ZSgpOwogICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+Ym9sZCA9IGlzRm9u
dFdlaWdodEJvbGQoZm9udERlc2NyaXB0aW9uLndlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCAzY2YzOGI0NTY2M2VlNWU4OWY0OTlhZjY3
NzEyYmMzOWM3YzVhNjM5Li40YzFmZjYzYmRmNjkwM2RkMDIwNTNhY2I5ZWY5OGZhMGJkM2JkY2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwCkBAIC0xMjI4
LDcgKzEyMjgsNyBAQCBIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRm9yVXNl
cihfSW5fIEJTVFIgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1f
ZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwotICAgIGlucHV0RWxlbWVudC5zZXRWYWx1
ZUZvclVzZXIoU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFyKj4odmFsdWUpLCBTeXNTdHJpbmdMZW4o
dmFsdWUpKSk7CisgICAgaW5wdXRFbGVtZW50LnNldFZhbHVlRm9yVXNlcihTdHJpbmcodmFsdWUs
IFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTMyNiw3
ICsxMzI2LDcgQEAgSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpyZXBsYWNlQ2hhcmFjdGVy
c0luUmFuZ2UoaW50IHN0YXJ0VGFyZ2V0LCBpbnQgZW5kVGEKICAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsK
IAogICAgIFN0cmluZyBuZXdWYWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZSgpOwotICAgIFN0cmlu
ZyB3ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPihyZXBsYWNlbWVu
dFN0cmluZyksIFN5c1N0cmluZ0xlbihyZXBsYWNlbWVudFN0cmluZykpOworICAgIFN0cmluZyB3
ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcocmVwbGFjZW1lbnRTdHJpbmcsIFN5c1N0cmluZ0xlbihy
ZXBsYWNlbWVudFN0cmluZykpOwogICAgIG5ld1ZhbHVlLnJlcGxhY2Uoc3RhcnRUYXJnZXQsIGVu
ZFRhcmdldCAtIHN0YXJ0VGFyZ2V0LCB3ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcpOwogICAgIGlu
cHV0RWxlbWVudC5zZXRWYWx1ZShuZXdWYWx1ZSk7CiAgICAgaW5wdXRFbGVtZW50LnNldFNlbGVj
dGlvblJhbmdlKGluZGV4LCBuZXdWYWx1ZS5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IDgxNGUy
YmI2ZGMzOTFmYzJmZmExYTk1YjY5ZTQ2ZDQ1ODBjMDM2NTMuLmZiZWViODkwYTcyYzljZWVhMDE1
Y2QxMTNiYjI3NDg2NTc3MWJhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeShIS0VZIHJvb3RLZXksIEhh
c2hTZXQ8U3RyaW5nPiYgcGF0CiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUyB8
fCB0eXBlICE9IFJFR19TWikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHBhdGhz
LmFkZCh3Y2hhclRvU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXplIC8gc2l6ZW9mKFdDSEFSKSAt
IDEpKTsKKyAgICAgICAgcGF0aHMuYWRkKFN0cmluZyhwYXRoU3RyLCBwYXRoU3RyU2l6ZSAvIHNp
emVvZihXQ0hBUikgLSAxKSk7CiAgICAgfQogCiAgICAgUmVnQ2xvc2VLZXkoa2V5KTsKQEAgLTgz
LDcgKzgzLDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9y
aWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBkaXJlY3Rv
cnkgOiBtX3BsdWdpbkRpcmVjdG9yaWVzKSB7CiAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gZGly
ZWN0b3J5ICsgIlxcKiI7CiAKLSAgICAgICAgaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIocGF0dGVybikuZGF0YSgpLCAmZmluZEZpbGVEYXRhKTsKKyAg
ICAgICAgaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyh3Y2hhckZyb20ocGF0dGVybi5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksICZmaW5kRmlsZURhdGEpOwogCiAgICAgICAg
IGlmIChoRmluZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0lu
RGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgIGlm
IChmaW5kRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9S
WSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGZpbGVu
YW1lID0gd2NoYXJUb1N0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmluZEZp
bGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lKGZpbmRGaWxl
RGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAgICAg
ICAgICBpZiAoIShzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAi
bnAiKSAmJiBmaWxlbmFtZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJkbGwiKSkKICAgICAg
ICAgICAgICAgICAmJiAhKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAi
cGx1Z2luLmRsbCIpICYmIGRpcmVjdG9yeS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJzaG9j
a3dhdmUgMTAiKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xODAsMTEgKzE4MCwx
MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1Jf
U1VDQ0VTUykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgU3RyaW5nIGV4
dGVuc2lvbnNQYXRoID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lv
bnMiOworICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKG5hbWUsIG5h
bWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CiAgICAgICAgICAgICBIS0VZIGV4dGVuc2lvbnNLZXk7
CiAKICAgICAgICAgICAgIC8vIFRyeSBvcGVuaW5nIHRoZSBrZXkKLSAgICAgICAgICAgIHJlc3Vs
dCA9IFJlZ09wZW5LZXlFeChrZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHRlbnNp
b25zUGF0aCkuZGF0YSgpLCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNLZXkpOworICAgICAgICAg
ICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwgd2NoYXJGcm9tKGV4dGVuc2lvbnNQYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgS0VZX1JFQUQsICZleHRl
bnNpb25zS2V5KTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTKSB7
CiAgICAgICAgICAgICAgICAgLy8gTm93IGdldCB0aGUgcGx1Z2lucyBkaXJlY3RvcnkKQEAgLTE5
NSw3ICsxOTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjdG9y
aWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBSZWdRdWVyeVZhbHVlRXgoZXh0ZW5zaW9uc0tleSwgVEVYVCgiUGx1Z2lucyIpLCAwLCAmdHlw
ZSwgKExQQllURSkmcGx1Z2luc0RpcmVjdG9yeVN0ciwgJnBsdWdpbnNEaXJlY3RvcnlTaXplKTsK
IAogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB0eXBlID09
IFJFR19TWikKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9T
dHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2Yo
V0NIQVIpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3Ry
aW5nKHBsdWdpbnNEaXJlY3RvcnlTdHIsIHBsdWdpbnNEaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdD
SEFSKSAtIDEpKTsKIAogICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGV4dGVuc2lvbnNLZXkp
OwogICAgICAgICAgICAgfQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVj
dG9yCiAgICAgRFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6ZSA9IDo6RXhwYW5kRW52aXJvbm1lbnRT
dHJpbmdzVyhURVhUKCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiKSwgcGx1Z2luRGly
ZWN0b3J5U3RyLCBXVEZfQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVjdG9yeVN0cikpOwogCiAgICAg
aWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBsdWdpbkRpcmVjdG9yeVNpemUgPD0gV1RG
X0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIpKQotICAgICAgICBkaXJlY3Rvcmllcy5h
cHBlbmQod2NoYXJUb1N0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNp
emUgLSAxKSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luRGlyZWN0
b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOwogCiAgICAgRFdPUkQgdHlwZTsKICAg
ICBXQ0hBUiBpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHJbX01BWF9QQVRIXTsKQEAgLTIyMSw3ICsy
MjEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGly
ZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcgogICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0
UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIEwiU29mdHdhcmVcXE1pY3Jvc29mdFxc
TWVkaWFQbGF5ZXIiLCBMIkluc3RhbGxhdGlvbiBEaXJlY3RvcnkiLCAmdHlwZSwgJmluc3RhbGxh
dGlvbkRpcmVjdG9yeVN0ciwgJmluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUpOwogCiAgICAgaWYg
KHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQotICAgICAgICBkaXJl
Y3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsIGlu
c3RhbGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBk
aXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0ciwgaW5zdGFs
bGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4m
IGRpcmVjdG9yaWVzKQpAQCAtMjQ1LDEwICsyNDUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMp
CiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIFZlY3RvcjxpbnQ+IGFjcm9iYXRWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3Ry
aW5nKHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBh
Y3JvYmF0VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikp
OwogICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKGFjcm9iYXRWZXJzaW9uLCBsYXRlc3RBY3Jv
YmF0VmVyc2lvbikpIHsKICAgICAgICAgICAgIGxhdGVzdEFjcm9iYXRWZXJzaW9uID0gYWNyb2Jh
dFZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyA9IHdjaGFy
VG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lv
blN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjU4LDEwICsyNTgsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdp
bkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIERXT1JEIGFj
cm9iYXRJbnN0YWxsUGF0aFNpemUgPSBzaXplb2YoYWNyb2JhdEluc3RhbGxQYXRoU3RyKTsKIAog
ICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbktleVBhdGggPSAiU29mdHdhcmVcXEFkb2JlXFxB
Y3JvYmF0IFJlYWRlclxcIiArIGxhdGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nICsgIlxcSW5zdGFs
bFBhdGgiOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFD
SElORSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGFjcm9iYXRQbHVnaW5LZXlQYXRoKS5k
YXRhKCksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFsbFBhdGhTdHIsICZhY3JvYmF0SW5zdGFsbFBh
dGhTaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01B
Q0hJTkUsIHdjaGFyRnJvbShhY3JvYmF0UGx1Z2luS2V5UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFsbFBhdGhTdHIsICZh
Y3JvYmF0SW5zdGFsbFBhdGhTaXplKTsKIAogICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NV
Q0NFU1MpIHsKLSAgICAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1Z2luRGlyZWN0b3J5ID0gd2No
YXJUb1N0cmluZyhhY3JvYmF0SW5zdGFsbFBhdGhTdHIsIGFjcm9iYXRJbnN0YWxsUGF0aFNpemUg
LyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxicm93c2VyIjsKKyAgICAgICAgICAgIFN0cmluZyBh
Y3JvYmF0UGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgYWNy
b2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJyb3dzZXIiOwog
ICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjkwLDEwICsyOTAsMTAgQEAgc3RhdGljIGlubGluZSB2b2lk
IGFkZEphdmFQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAg
ICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICBWZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3Y2hh
clRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKKyAgICAgICAgVmVjdG9yPGludD4gamF2YVZlcnNp
b24gPSBwYXJzZVZlcnNpb25TdHJpbmcoU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKICAgICAgICAg
aWYgKGNvbXBhcmVWZXJzaW9ucyhqYXZhVmVyc2lvbiwgbGF0ZXN0SmF2YVZlcnNpb24pKSB7CiAg
ICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvbiA9IGphdmFWZXJzaW9uOwotICAgICAgICAgICAg
bGF0ZXN0SmF2YVZlcnNpb25TdHJpbmcgPSB3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pOwor
ICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmcgPSBTdHJpbmcobmFtZSwgbmFtZUxl
bik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwNSwxMiArMzA1LDEyIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRKYXZhUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcmll
cykKICAgICAgICAgRFdPUkQgdXNlTmV3UGx1Z2luU2l6ZTsKIAogICAgICAgICBTdHJpbmcgamF2
YVBsdWdpbktleVBhdGggPSAiU29mdHdhcmVcXEphdmFTb2Z0XFxKYXZhIFBsdWctaW5cXCIgKyBs
YXRlc3RKYXZhVmVyc2lvblN0cmluZzsKLSAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1
ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihqYXZhUGx1
Z2luS2V5UGF0aCkuZGF0YSgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVzZU5ld1Bs
dWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lz
dHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCB3Y2hhckZyb20oamF2YVBsdWdpbktleVBhdGgu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBMIlVzZU5ld0phdmFQbHVn
aW4iLCAmdHlwZSwgJnVzZU5ld1BsdWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CiAKICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHVzZU5ld1BsdWdpblZhbHVlID09
IDEpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9N
QUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLmRh
dGEoKSwgTCJKYXZhSG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFs
bFBhdGhTaXplKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9M
T0NBTF9NQUNISU5FLCB3Y2hhckZyb20oamF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBMIkphdmFIb21lIiwgJnR5cGUsIGphdmFJbnN0YWxs
UGF0aFN0ciwgJmphdmFJbnN0YWxsUGF0aFNpemUpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9
PSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJl
Y3RvcnkgPSB3Y2hhclRvU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0ciwgamF2YUluc3RhbGxQYXRo
U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3X3BsdWdpbiI7CisgICAgICAg
ICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJlY3RvcnkgPSBTdHJpbmcoamF2YUluc3RhbGxQ
YXRoU3RyLCBqYXZhSW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYmlu
XFxuZXdfcGx1Z2luIjsKICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoamF2YVBs
dWdpbkRpcmVjdG9yeSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzNiw3ICszMzYs
NyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KCkKICAgICAg
ICAgaWYgKCFQYXRoUmVtb3ZlRmlsZVNwZWMobW9kdWxlRmlsZU5hbWVTdHIpKQogICAgICAgICAg
ICAgZ290byBleGl0OwogCi0gICAgICAgIHBsdWdpbnNEaXJlY3RvcnkgPSBudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcobW9kdWxlRmlsZU5hbWVTdHIpICsgIlxcUGx1Z2lucyI7CisgICAgICAg
IHBsdWdpbnNEaXJlY3RvcnkgPSBTdHJpbmcobW9kdWxlRmlsZU5hbWVTdHIpICsgIlxcUGx1Z2lu
cyI7CiAgICAgfQogZXhpdDoKICAgICByZXR1cm4gcGx1Z2luc0RpcmVjdG9yeTsKQEAgLTM1Miwx
MCArMzUyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0
b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgIFdDSEFSIG1hY3JvbWVkaWFE
aXJlY3RvcnlTdHJbTUFYX1BBVEhdOwogCiAgICAgUGF0aENvbWJpbmUobWFjcm9tZWRpYURpcmVj
dG9yeVN0ciwgc3lzdGVtRGlyZWN0b3J5U3RyLCBURVhUKCJtYWNyb21lZFxcRmxhc2giKSk7Ci0g
ICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtYWNyb21l
ZGlhRGlyZWN0b3J5U3RyKSk7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhtYWNyb21l
ZGlhRGlyZWN0b3J5U3RyKSk7CiAKICAgICBQYXRoQ29tYmluZShtYWNyb21lZGlhRGlyZWN0b3J5
U3RyLCBzeXN0ZW1EaXJlY3RvcnlTdHIsIFRFWFQoIm1hY3JvbWVkXFxTaG9ja3dhdmUgMTAiKSk7
Ci0gICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtYWNy
b21lZGlhRGlyZWN0b3J5U3RyKSk7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhtYWNy
b21lZGlhRGlyZWN0b3J5U3RyKSk7CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFj
a2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2th
Z2VXaW4uY3BwCmluZGV4IDk0YmJhNmE5ZTdiNjY1NDhhNjhiMzY3YjM4NzU4OTVlZmU5YjUyNjUu
LmQ1OGNiMjYwZGI4ODEzNjllN2M0MTc5YmU3ZTQwMzJkZjU3MDZmZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBzdGF0aWMgU3RyaW5nIGdldFZlcnNpb25JbmZvKGNvbnN0IExQVk9JRCB2
ZXJzaW9uSW5mb0RhdGEsIGNvbnN0IFN0cmluZyYgaW5mbykKICAgICBVSU5UIGJ1ZmZlckxlbmd0
aDsKICAgICBTdHJpbmcgc3ViSW5mbyA9ICJcXFN0cmluZ2ZpbGVJbmZvXFwwNDA5MDRFNFxcIiAr
IGluZm87CiAgICAgYm9vbCByZXR2YWwgPSBWZXJRdWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEs
Ci0gICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdWJJbmZvKS5kYXRhKCksCisg
ICAgICAgIHdjaGFyRnJvbShzdWJJbmZvLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSwKICAgICAgICAgJmJ1ZmZlciwgJmJ1ZmZlckxlbmd0aCk7CiAgICAgaWYgKCFyZXR2
YWwgfHwgYnVmZmVyTGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE2
NiwxMyArMTY2LDEzIEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6ZGV0ZXJtaW5lUXVpcmtzKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiB7CiAg
ICAgRFdPUkQgdmVyc2lvbkluZm9TaXplLCB6ZXJvSGFuZGxlOwotICAgIHZlcnNpb25JbmZvU2l6
ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1NpemVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhciht
X3BhdGgpLmRhdGEoKSwgJnplcm9IYW5kbGUpOworICAgIHZlcnNpb25JbmZvU2l6ZSA9IEdldEZp
bGVWZXJzaW9uSW5mb1NpemVXKHdjaGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpLCAmemVyb0hhbmRsZSk7CiAgICAgaWYgKHZlcnNpb25JbmZvU2l6
ZSA9PSAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWZWN0b3I8Y2hhcj4gdmVyc2lv
bkluZm9EYXRhKHZlcnNpb25JbmZvU2l6ZSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5m
b1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9u
SW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5kYXRhKCkpKQorICAgIGlmICghR2V0RmlsZVZlcnNp
b25JbmZvVyh3Y2hhckZyb20obV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9uYW1lID0gZ2V0VmVyc2lvbkluZm8odmVyc2lv
bkluZm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7CkBAIC0yMzgsMTEgKzIzOCwxMSBAQCBi
b29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogCiAgICAgICAgIFN0cmluZyBwYXRoID0gbV9wYXRo
LnN1YnN0cmluZygwLCBtX3BhdGgucmV2ZXJzZUZpbmQoJ1xcJykpOwogCi0gICAgICAgIGlmICgh
OjpTZXRDdXJyZW50RGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCku
ZGF0YSgpKSkKKyAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHdjaGFyRnJvbShw
YXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gTG9hZCB0aGUgbGlicmFyeQotICAgICAgICBt
X21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1f
cGF0aCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CisgICAgICAg
IG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4Vyh3Y2hhckZyb20obV9wYXRoLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNI
X1BBVEgpOwogCiAgICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhjdXJyZW50UGF0
aCkpIHsKICAgICAgICAgICAgIGlmIChtX21vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDRhNjYzZTA2NDhjNTMxOTVh
YjA5ZTAwNWNhZTUzZTQ1NDk3YmQ5MzkuLjA5ODliZGU3NTlkMjUwZTM2MDNmZjQ0ZjFlMDU2ODcz
ZjhiZmJiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3V2luLmNwcApAQCAtNzU1LDEzICs3NTUsMTMgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpo
YW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMl90IGxlbiwgY29u
c3QKIAogICAgIC8vIEdldCBmaWxlIGluZm8KICAgICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRB
IGF0dHJzOwotICAgIGlmICghR2V0RmlsZUF0dHJpYnV0ZXNFeFcoc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmF0dHJz
KSkKKyAgICBpZiAoIUdldEZpbGVBdHRyaWJ1dGVzRXhXKHdjaGFyRnJvbShmaWxlbmFtZS5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIEdldEZpbGVFeEluZm9TdGFuZGFy
ZCwgJmF0dHJzKSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCiAgICAg
aWYgKGF0dHJzLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAg
ICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgIEhBTkRMRSBmaWxlSGFu
ZGxlID0gQ3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5k
YXRhKCksIEZJTEVfUkVBRF9EQVRBLCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcs
IDAsIDApOworICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcod2NoYXJGcm9tKGZp
bGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgRklMRV9SRUFE
X0RBVEEsIEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgMCwgMCk7CiAgICAgCiAg
ICAgaWYgKGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVy
biBOUEVSUl9GSUxFX05PVF9GT1VORDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDgzMzFjYTk0
MDRlNTkxNWU3MzZjZTEwYWJkZmZiOThhYjJmYjRiNmMuLmUzYzZjYjBhNTlhZjJmNDI0ODlmNTI3
MGNjYTE5MzU1ZWRlOWIzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNjAsNiArNjAsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51V2luLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC02NDYsMTcgKzY0NywxNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBh
bmVsKEZyYW1lJiwgRmlsZUNob29zZXImIGZpbGVDaG9vc2VyKQogCiAgICAgb2ZuLmxTdHJ1Y3RT
aXplID0gc2l6ZW9mKG9mbik7CiAgICAgb2ZuLmh3bmRPd25lciA9IHZpZXdXaW5kb3c7Ci0gICAg
U3RyaW5nIGFsbEZpbGVzID0gYWxsRmlsZXNUZXh0KCk7Ci0gICAgYWxsRmlsZXMuYXBwZW5kKEwi
XDAqLipcMFwwIiwgNik7CisgICAgU3RyaW5nIGFsbEZpbGVzID0gbWFrZVN0cmluZyhhbGxGaWxl
c1RleHQoKSwgU3RyaW5nKCJcMCouKlwwXDAiLCA2KSk7CiAKICAgICBWZWN0b3I8VUNoYXI+IGZp
bHRlckNoYXJhY3RlcnMgPSBhbGxGaWxlcy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
OyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIEdldE9wZW5GaWxlTmFt
ZSBjYWxsCi0gICAgb2ZuLmxwc3RyRmlsdGVyID0gZmlsdGVyQ2hhcmFjdGVycy5kYXRhKCk7Cisg
ICAgb2ZuLmxwc3RyRmlsdGVyID0gd2NoYXJGcm9tKGZpbHRlckNoYXJhY3RlcnMuZGF0YSgpKTsK
IAogICAgIG9mbi5scHN0ckZpbGUgPSBmaWxlQnVmLmRhdGEoKTsKICAgICBvZm4ubk1heEZpbGUg
PSBmaWxlQnVmLnNpemUoKTsKICAgICBTdHJpbmcgZGlhbG9nVGl0bGUgPSB1cGxvYWRGaWxlVGV4
dCgpOwogICAgIFZlY3RvcjxVQ2hhcj4gZGlhbG9nVGl0bGVDaGFyYWN0ZXJzID0gZGlhbG9nVGl0
bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25n
IGVub3VnaCB0byBtYWtlIHRoZSBHZXRPcGVuRmlsZU5hbWUgY2FsbAotICAgIG9mbi5scHN0clRp
dGxlID0gZGlhbG9nVGl0bGVDaGFyYWN0ZXJzLmRhdGEoKTsKKyAgICBvZm4ubHBzdHJUaXRsZSA9
IHdjaGFyRnJvbShkaWFsb2dUaXRsZUNoYXJhY3RlcnMuZGF0YSgpKTsKICAgICBvZm4uRmxhZ3Mg
PSBPRk5fRU5BQkxFU0laSU5HIHwgT0ZOX0ZJTEVNVVNURVhJU1QgfCBPRk5fUEFUSE1VU1RFWElT
VCB8IE9GTl9FWFBMT1JFUjsKICAgICBpZiAobXVsdGlGaWxlKQogICAgICAgICBvZm4uRmxhZ3Mg
PSBvZm4uRmxhZ3MgfCBPRk5fQUxMT1dNVUxUSVNFTEVDVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IGFhZTFlMDAwZjhmYWM5OGUzNzIyOTQwMDFjNjljNGM3MGVkNTNmZjkuLjkxMGJlODdlMjVi
ZDY0ZDVkMTY1MzIwYWEwNDJmMDkwZGRlODQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
MjYsMTEgKzI2LDExIEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViRWRp
dG9yQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIldl
YktpdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJET01Db3Jl
Q2xhc3Nlcy5oIgogI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNzU4
LDcgKzc1OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmco
U3RyaW5nVmlldyB0ZXh0LCBpbnQqIG1pc3NwZWxsaW5nTG9jCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGluaXRWaWV3U3BlY2lmaWNTcGVsbGluZyhtX3dlYlZpZXcpOwotICAgIGVkLT5jaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcobV93ZWJWaWV3LCB0ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB0
ZXh0Lmxlbmd0aCgpLCBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7Cisg
ICAgZWQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhtX3dlYlZpZXcsIHdjaGFyRnJvbSh0ZXh0LnVw
Y29udmVydGVkQ2hhcmFjdGVycygpKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxpbmdMb2NhdGlv
biwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRB
dXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIGlucHV0
V29yZCkKQEAgLTc4MCw3ICs3ODEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogCiAgICAg
aW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7CiAgICAgQ09NUHRyPElFbnVtV2Vi
R3JhbW1hckRldGFpbHM+IGVudW1EZXRhaWxzT2JqOwotICAgIGlmIChGQUlMRUQoZWQtPmNoZWNr
R3JhbW1hck9mU3RyaW5nKG1fd2ViVmlldywgdGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwg
dGV4dC5sZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdy
YW1tYXJMZW5ndGgpKSkKKyAgICBpZiAoRkFJTEVEKGVkLT5jaGVja0dyYW1tYXJPZlN0cmluZyht
X3dlYlZpZXcsIHdjaGFyRnJvbSh0ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgdGV4dC5s
ZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdyYW1tYXJM
ZW5ndGgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2hpbGUgKHRydWUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCmluZGV4IDIyMWUyMmYzODYwNWE1MWYwNzM3ZWFkM2M4YmU5YzM5NWM0
MjRkYzcuLjU5ZWVkYTZiODQ1N2E5ZmI0M2RkMzc4ZDlhNjYzNjYwNjIyZWU3ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPHdjaGFyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NTAsNyArNDUxLDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZpZXcoKQogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKQogewogICAgIFN0
cmluZyB0aXRsZSA9IG1ha2VTdHJpbmcoIldlYiBJbnNwZWN0b3IgIiwgc3RhdGljX2Nhc3Q8VUNo
YXI+KDB4MjAxNCksICcgJywgbV9pbnNwZWN0ZWRVUkwpOwotICAgIDo6U2V0V2luZG93VGV4dCht
X2Zyb250ZW5kSHduZCwgdGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRh
KCkpOworICAgIDo6U2V0V2luZG93VGV4dChtX2Zyb250ZW5kSHduZCwgd2NoYXJGcm9tKHRpdGxl
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiB9CiAKIExSRVNVTFQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Om9uR2V0TWluTWF4SW5mbyhXUEFSQU0sIExQQVJB
TSBsUGFyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNGFkMzE2NjAx
N2YzOTlhZjljODMzOTUwOTZjM2ZkNTdlNTYxMDgzMC4uNTk2ODNiOTRlMTM2NzM3NGQyMjg4ZjE2
YzcxOGVlZmYxODQ0M2IyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogI2lmIFVTRShDRykK
ICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CkBAIC03MzEsNyArNzMyLDcg
QEAgSFJFU1VMVCBXZWJGcmFtZTo6ZmluZEZyYW1lTmFtZWQoX0luXyBCU1RSIG5hbWUsIF9DT01f
T3V0cHRyX29wdF8gSVdlYkZyYW1lKiogZnIKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIEZyYW1lKiBmb3VuZEZyYW1lID0gY29yZUZyYW1l
LT50cmVlKCkuZmluZChBdG9taWNTdHJpbmcobmFtZSwgU3lzU3RyaW5nTGVuKG5hbWUpKSwgKmNv
cmVGcmFtZSk7CisgICAgRnJhbWUqIGZvdW5kRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5maW5k
KEF0b21pY1N0cmluZyh1Y2hhckZyb20obmFtZSksIFN5c1N0cmluZ0xlbihuYW1lKSksICpjb3Jl
RnJhbWUpOwogICAgIGlmICghZm91bmRGcmFtZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmlu
ZGV4IGRlMDIyMWY1NDVmM2RmNGE2YWQxMGMwYWE5NmQzNmNiOGQ5MTYzZjIuLmRkNTc3Y2M0NDM4
Y2I5NWRlMWUyZDAxZjAyZmJhYTRmNjZlMzNkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtMjQsMjAgKzI0LDE5IEBACiAg
Ki8KIAogI2luY2x1ZGUgIldlYktpdERMTC5oIgotCiAjaW5jbHVkZSAiV2ViTG9jYWxpemFibGVT
dHJpbmdzLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCisj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJh
cy5oPgogCiBjbGFzcyBMb2NhbGl6ZWRTdHJpbmc7CiAKQEAgLTgxLDcgKzgwLDcgQEAgcHJpdmF0
ZToKIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX3N0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKTsKKyAgICAgICAgcmV0dXJuIHdjaGFyRnJvbSht
X3N0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CiAKICAgICBt
X3N0cmluZyA9IG1fY2ZTdHJpbmc7CiAKQEAgLTg5LDcgKzg4LDcgQEAgTG9jYWxpemVkU3RyaW5n
OjpvcGVyYXRvciBMUENUU1RSKCkgY29uc3QKICAgICAgICAgaWYgKG1fc3RyaW5nW2ldID09ICdA
JyAmJiAobV9zdHJpbmdbaSAtIDFdID09ICclJyB8fCAoaSA+IDIgJiYgbV9zdHJpbmdbaSAtIDFd
ID09ICckJyAmJiBtX3N0cmluZ1tpIC0gMl0gPj0gJzEnICYmIG1fc3RyaW5nW2kgLSAyXSA8PSAn
OScgJiYgbV9zdHJpbmdbaSAtIDNdID09ICclJykpKQogICAgICAgICAgICAgbV9zdHJpbmcucmVw
bGFjZShpLCAxLCAicyIpOwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpOworICAgIHJldHVybiB3Y2hhckZyb20obV9zdHJpbmcuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOwogfQogCiBzdGF0aWMgQ0ZCdW5k
bGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCAxZmUxMTQ1YWVjMjAwODhhNmZiMWZiZjk4
ZGIwMzJjMDZkMDliMjg1Li5hN2UwMDQxYjc0NmNmY2Y3ZTAxYmFjODAwMTg1ZTk4NzEzNDdmNGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwCkBAIC0yNiwxNSArMjYsMTUgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRl
ICJXZWJNdXRhYmxlVVJMUmVxdWVzdC5oIgogCi0jaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVk
ZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Zvcm1EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgPFdlYkNvcmUv
Q2VydGlmaWNhdGVDRldpbi5oPgpAQCAtMjcyLDcgKzI3Miw3IEBAIEhSRVNVTFQgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OmlzRXF1YWwoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIG90aGVyLCBfT3V0
XyBCT09MCiAKIEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmFkZFZhbHVlKF9Jbl8gQlNU
UiB2YWx1ZSwgX0luXyBCU1RSIGZpZWxkKQogewotICAgIG1fcmVxdWVzdC5hZGRIVFRQSGVhZGVy
RmllbGQoV1RGOjpBdG9taWNTdHJpbmcodmFsdWUsIFN5c1N0cmluZ0xlbih2YWx1ZSkpLCBTdHJp
bmcoZmllbGQsIFN5c1N0cmluZ0xlbihmaWVsZCkpKTsKKyAgICBtX3JlcXVlc3QuYWRkSFRUUEhl
YWRlckZpZWxkKEF0b21pY1N0cmluZyh1Y2hhckZyb20odmFsdWUpLCBTeXNTdHJpbmdMZW4odmFs
dWUpKSwgU3RyaW5nKGZpZWxkLCBTeXNTdHJpbmdMZW4oZmllbGQpKSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFjZjIwODlk
ZTY2ODBlY2EzODU2ZjU3M2MyMjk1MTc0OGYwYS4uMmJhN2E1NGQ4OGU5Yzk4ZDQ4MjYwYjZmOGU0
NDdkM2VjMTEyYWJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE2OSwx
MyArMTY5LDI1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGNvbWRlZi5o
PgorI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNsdWRlIDxkMmQxLmg+CisjaW5jbHVkZSA8ZGlt
bS5oPgorI2luY2x1ZGUgPG9sZWFjYy5oPgorI2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUg
PHdjaGFyLmg+CisjaW5jbHVkZSA8d2luZG93c3guaD4KKyNpbmNsdWRlIDx3aW51c2VyLmg+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2Uu
aD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvd2luL0dESU9i
amVjdC5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQu
aD4KQEAgLTIwNSwxOCArMjE3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxTY3JlZW5Db250
cm9sbGVyLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPFNobE9iai5oPgotI2luY2x1ZGUgPGNvbXV0
aWwuaD4KLSNpbmNsdWRlIDxkaW1tLmg+Ci0jaW5jbHVkZSA8b2xlYWNjLmg+Ci0jaW5jbHVkZSA8
d2NoYXIuaD4KLSNpbmNsdWRlIDx3aW5kb3dzeC5oPgotI2luY2x1ZGUgPHdpbnVzZXIuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi93aW4v
R0RJT2JqZWN0Lmg+Ci0KICNkZWZpbmUgV0VCS0lUX0RSQVdJTkcgNAogCiAvLyBTb2Z0IGxpbmsg
ZnVuY3Rpb25zIGZvciBnZXN0dXJlcyBhbmQgcGFubmluZyBmZWVkYmFjawpAQCAtMjU2LDcgKzI1
Niw3IEBAIFdlYlZpZXcqIGtpdChQYWdlKiBwYWdlKQogCiBzdGF0aWMgaW5saW5lIEF0b21pY1N0
cmluZyB0b0F0b21pY1N0cmluZyhCU1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJuIEF0b21pY1N0cmlu
Zyhic3RyLCBTeXNTdHJpbmdMZW4oYnN0cikpOworICAgIHJldHVybiBBdG9taWNTdHJpbmcodWNo
YXJGcm9tKGJzdHIpLCBTeXNTdHJpbmdMZW4oYnN0cikpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0
cmluZyB0b1N0cmluZyhCU1RSIGJzdHIpCkBAIC0xNTk4LDEzICsxNTk4LDEzIEBAIHN0YXRpYyBI
TUVOVSBjcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyhjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJ
dGVtPiYgaXRlbXMpCiAgICAgICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKICAgICAgICAgY2Fz
ZSBBY3Rpb25UeXBlOgogICAgICAgICBjYXNlIENoZWNrYWJsZUFjdGlvblR5cGU6Ci0gICAgICAg
ICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGl0ZW0uYWN0aW9uKCks
IGl0ZW0udGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7Cisg
ICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGl0ZW0uYWN0
aW9uKCksIHdjaGFyRnJvbShpdGVtLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNlcGFyYXRv
clR5cGU6CiAgICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TRVBBUkFU
T1IsIGl0ZW0uYWN0aW9uKCksIG51bGxwdHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgU3VibWVudVR5cGU6Ci0gICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3Mg
fCBNRl9QT1BVUCwgKFVJTlRfUFRSKWNyZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1zKGl0ZW0uc3Vi
TWVudUl0ZW1zKCkpLCBpdGVtLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpOworICAgICAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfUE9Q
VVAsIChVSU5UX1BUUiljcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyhpdGVtLnN1Yk1lbnVJdGVt
cygpKSwgd2NoYXJGcm9tKGl0ZW0udGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
MjM1LDcgKzMyMzUsNyBAQCB2b2lkIFdlYlZpZXc6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0
b29sVGlwKQogICAgICAgICBpbmZvLnVGbGFncyA9IFRURl9JRElTSFdORDsKICAgICAgICAgaW5m
by51SWQgPSByZWludGVycHJldF9jYXN0PFVJTlRfUFRSPihtX3ZpZXdXaW5kb3cpOwogICAgICAg
ICBWZWN0b3I8VUNoYXI+IHRvb2xUaXBDaGFyYWN0ZXJzID0gbV90b29sVGlwLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBidWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFr
ZSB0aGUgU2VuZE1lc3NhZ2UgY2FsbAotICAgICAgICBpbmZvLmxwc3pUZXh0ID0gY29uc3RfY2Fz
dDxVQ2hhcio+KHRvb2xUaXBDaGFyYWN0ZXJzLmRhdGEoKSk7CisgICAgICAgIGluZm8ubHBzelRl
eHQgPSBjb25zdF9jYXN0PHdjaGFyX3QqPih3Y2hhckZyb20odG9vbFRpcENoYXJhY3RlcnMuZGF0
YSgpKSk7CiAgICAgICAgIDo6U2VuZE1lc3NhZ2UobV90b29sVGlwSHduZCwgVFRNX1VQREFURVRJ
UFRFWFQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaW5mbykpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNKU0NPbmx5LmNtYWtlCmluZGV4IDUwZGYwM2ViNjAwNDRlYTA3OGZlYWMzYjU3YzJi
ZTljNzZhOWE3ZjEuLjk0NzZhZGMwMGM2NGRkYzY5YTZhOWM4NTYxOGUwMTc2ODQ4MTEwNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKQEAgLTk3LDkgKzk3LDYgQEAgZW5kaWYgKCkKIAog
aWYgKE5PVCBBUFBMRSkKICAgICBmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQotICAgIGlmIChX
SU4zMikKLSAgICAgICAgYWRkX2RlZmluaXRpb25zKC1EVUNIQVJfVFlQRT13Y2hhcl90KQotICAg
IGVuZGlmICgpCiBlbHNlICgpCiAgICAgYWRkX2RlZmluaXRpb25zKC1EVV9ESVNBQkxFX1JFTkFN
SU5HPTEgLURVX1NIT1dfQ1BMVVNQTFVTX0FQST0wKQogICAgIHNldChJQ1VfTElCUkFSSUVTIGxp
YmljdWNvcmUuZHlsaWIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IGFlM2E5ZWZmNjJhY2QyYzc4
YzRkZjI1NjI1MDNmNmIwMmZlYmNiMDYuLjYxZmE0ODViMjVkZWI1NWZlODMzZTcyOTRjMGUxNzll
YTZmNTljZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0xNTgsNyArMTU4LDYgQEAgc2V0KFBB
TF9MSUJSQVJZX1RZUEUgU1RBVElDKQogc2V0KFdlYktpdExlZ2FjeV9MSUJSQVJZX1RZUEUgU0hB
UkVEKQogCiBmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQotYWRkX2RlZmluaXRpb25zKC1EVUNI
QVJfVFlQRT13Y2hhcl90KQogCiAjIElmIDx3aW5zb2NrMi5oPiBpcyBub3QgaW5jbHVkZWQgYmVm
b3JlIDx3aW5kb3dzLmg+IHJlZGVmaW5pdGlvbiBlcnJvcnMgb2NjdXIKICMgdW5sZXNzIF9XSU5T
T0NLQVBJXyBpcyBkZWZpbmVkIGJlZm9yZSA8d2luZG93cy5oPiBpcyBpbmNsdWRlZApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNhMTU1ZTgyOTI2
YWYxNzc0MTllYTM1MDQ0YjFmMThlNzE1MGQ2ZGMuLjRjMzllMDdmNTJhYzkxMTVlYTEzNDI0N2U3
ODM5MTIzYTg3YzIxZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQ
RT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICBEZWxldGUgd2NoYXIgdGVzdHMgLS0gdGhlc2Ugd2VyZSBNU1ZDLW9u
bHkgYW5kIHdlIHdvbid0IGJlIHVzaW5nIFN0cmluZzo6b3BlcmF0b3IrIGdvaW5nIGZvcndhcmQg
YW55d2F5LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cDoKKyAgICAgICAgKGZpbmRGb250RmFsbGJhY2spOgorICAgICAgICAoYWRkRm9udEZhbGxiYWNr
SWZQcmVzZW50KToKKyAgICAgICAgKHJlbW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudCk6CisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGll
c1dpbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjptb2R1bGVEaXJlY3Rvcnkp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRo
KToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMgbmVlZGVkLgorCiAyMDE5LTAzLTA2ICBS
b2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQ29uc2lkZXIgc3VwcG9ydGlu
ZyB0aGUgYHJlZmVycmVycG9saWN5YCBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBkYWU1ZGU3NjEwNTc2ZTZlNjM4MjZhYWY2ZjZi
NjkwZGM4Y2IxZTQzLi41MTYxZmViNmI1NTM0NDc5OGI4M2UxYzM4NWM4ZmE4NTZlMDAwZDMyIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTQzLDcg
KzQzLDYgQEAKICNpbmNsdWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlICJXb3Jr
UXVldWVJdGVtLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0KICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rlc3RS
dW5uZXJVdGlscy5oPgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KQEAgLTY3LDYg
KzY2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiAj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2ll
c1ByaXYuaD4KQEAgLTEwMzgsNyArMTAzOCw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxs
YmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFj
ayA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsKIAogICAgIHdjaGFyX3Qg
ZnVsbFBhdGhbX01BWF9QQVRIXTsKLSAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhU
b0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgX01B
WF9QQVRIKSkKKyAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHdjaGFyRnJvbShwYXRoVG9G
b250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBfTUFY
X1BBVEgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIGlmICghOjpQYXRo
SXNEaXJlY3RvcnlXKGZ1bGxQYXRoKSkKQEAgLTEwNjksNyArMTA2OSw3IEBAIHN0YXRpYyBTdHJp
bmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgZm9yIChWZWN0
b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBwb3MgIT0g
cG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKICAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNr
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNc
XCIpOwogCi0gICAgICAgIGlmICg6OlBhdGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNr
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICAgICAgaWYgKDo6
UGF0aElzRGlyZWN0b3J5Vyh3Y2hhckZyb20ocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gcGF0aFRv
Rm9udEZhbGxiYWNrOwogICAgIH0KIApAQCAtMTA4Myw3ICsxMDgzLDcgQEAgc3RhdGljIHZvaWQg
YWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkK
IAogICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2su
Y3NzIik7CiAKLSAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCisgICAgaWYgKCE6OlBhdGhGaWxlRXhp
c3RzVyh3Y2hhckZyb20oZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oZm9udEZhbGxiYWNrLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpA
QCAtMTA5Niw3ICsxMDk2LDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9udEZhbGxiYWNrSWZQcmVz
ZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKIAogICAgIFN0cmluZyBmb250RmFs
bGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNr
UGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKLSAgICBpZiAoITo6
UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSkpCisgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyh3Y2hhckZyb20oZm9udEZh
bGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24obnVs
bHB0cik7CkBAIC0xNTQxLDEyICsxNTQxLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBj
aGFyKiBhcmd2W10pCiAgICAgU3RyaW5nIGRlc2t0b3BOYW1lID0gbWFrZVN0cmluZygiZGVza3Rv
cCIsIHByb2Nlc3NJZCk7CiAgICAgSERFU0sgZGVza3RvcCA9IG51bGxwdHI7CiAKLSAgICBhdXRv
IHdpbmRvd3NTdGF0aW9uID0gOjpDcmVhdGVXaW5kb3dTdGF0aW9uKHdpbmRvd1N0YXRpb25OYW1l
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBDV0ZfQ1JFQVRFX09OTFks
IFdJTlNUQV9BTExfQUNDRVNTLCBudWxscHRyKTsKKyAgICBhdXRvIHdpbmRvd3NTdGF0aW9uID0g
OjpDcmVhdGVXaW5kb3dTdGF0aW9uKHdjaGFyRnJvbSh3aW5kb3dTdGF0aW9uTmFtZS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIENXRl9DUkVBVEVfT05MWSwgV0lOU1RB
X0FMTF9BQ0NFU1MsIG51bGxwdHIpOwogICAgIGlmICh3aW5kb3dzU3RhdGlvbikgewogICAgICAg
ICBpZiAoITo6U2V0UHJvY2Vzc1dpbmRvd1N0YXRpb24od2luZG93c1N0YXRpb24pKQogICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJTZXRQcm9jZXNzV2luZG93U3RhdGlvbiBmYWlsZWQgd2l0
aCBlcnJvciAlbHVcbiIsIDo6R2V0TGFzdEVycm9yKCkpOwogCi0gICAgICAgIGRlc2t0b3AgPSA6
OkNyZWF0ZURlc2t0b3AoZGVza3RvcE5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCksIG51bGxwdHIsIG51bGxwdHIsIDAsIEdFTkVSSUNfQUxMLCBudWxscHRyKTsKKyAg
ICAgICAgZGVza3RvcCA9IDo6Q3JlYXRlRGVza3RvcCh3Y2hhckZyb20oZGVza3RvcE5hbWUuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBudWxscHRyLCBudWxscHRyLCAw
LCBHRU5FUklDX0FMTCwgbnVsbHB0cik7CiAgICAgICAgIGlmICghZGVza3RvcCkKICAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNyZWF0ZSBkZXNrdG9wIHdpdGggZXJyb3Ig
JWx1XG4iLCA6OkdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKaW5kZXggOWFiY2JiM2E4
N2Q4YzA3MmQ5NmQwNDJkYmZmMGFhZTRjZDdjNjZmMS4uMGUzYmY5OGY4ODIxNGZjNDdjOWI1MzM1
Zjc0YjA2ZDNlNTNhMjk2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nT3BlcmF0b3JzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdPcGVyYXRvcnMuY3BwCkBAIC0yNTAsNzggKzI1MCw2IEBAIFRFU1QoV1RGLCBTdHJp
bmdPcGVyYXRvcnMpCiAgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmll
dyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsgbGl0ZXJhbCk7
CiAgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIChsaXRlcmFs
ICsgc3RyaW5nICsgbGl0ZXJhbCArIGF0b21pY1N0cmluZyArIGxpdGVyYWwpKTsKICAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nVmlldyArIGxpdGVyYWwpICsgKHN0cmlu
ZyArIGxpdGVyYWwpICsgKGF0b21pY1N0cmluZyArIGxpdGVyYWwpKTsKLQotI2lmIENPTVBJTEVS
KE1TVkMpCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMSwgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDEsIHN0cmluZyArIEwi
d2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBMIndpZGUg
c3RyaW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MSwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDAsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMCwgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKTsKLQotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArIChMIndp
ZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBM
IndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3
aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmlu
Zyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAo
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcp
ICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
YXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0K
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBMIndpZGUgc3RyaW5nIiArIHN0cmlu
Z1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDAsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCAo
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBzdHJpbmdWaWV3ICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDAsIHN0cmluZ1ZpZXcgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJp
bmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygwLCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgTCJ3aWRl
IHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBz
dHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUg
c3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiAr
IGF0b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9t
aWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgKEwid2lkZSBzdHJp
bmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRl
IHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJp
bmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdW
aWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmci
ICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSArIChM
IndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3Ry
aW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBM
IndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5n
ICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWlj
U3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3Ry
aW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKGF0b21pY1N0
cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdW
aWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmci
ICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykgKyAoTCJ3aWRlIHN0
cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiAr
IHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgYXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0
cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsK
LQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgYXRv
bWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJp
bmciICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
KEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmlu
Z1ZpZXcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3
ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsg
c3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21p
Y1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0
cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmci
ICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5n
Iik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIChMIndp
ZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5n
VmlldyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikg
KyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsg
c3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUg
c3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmll
dykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWlj
U3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyAr
IEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcg
KyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3Ry
aW5nVmlldyArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRv
bWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUg
c3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSNlbmRpZgogfQog
CiBURVNUKFdURiwgQ29uY2F0ZW5hdGVDaGFyYWN0ZXJBcnJheUFuZEVtcHR5U3RyaW5nKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCmluZGV4
IDJlNTQzMDg4MTExZDMxYTU5N2VkZjFiMzAxMmE5MjQ2ZThlZjAxY2MuLmIyYTE5NTA3NmIyNDll
ZTdjZjcyOTMwNDFiNDhjMzYxNmQyM2UwMDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
IDxTaGx3YXBpLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
VVJMLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGlsIHsKQEAgLTQwLDEyICszOSwx
MiBAQCBzdGF0aWMgU3RyaW5nIG1vZHVsZURpcmVjdG9yeSgpCiAgICAgd2NoYXJfdCBmaWxlbmFt
ZVtidWZmZXJMZW5ndGhdOwogICAgIGF1dG8gbGVuID0gR2V0TW9kdWxlRmlsZU5hbWUobnVsbHB0
ciwgZmlsZW5hbWUsIGJ1ZmZlckxlbmd0aCk7CiAgICAgQVNTRVJUKGxlbiA+IDApOwotICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHdjaGFyVG9TdHJpbmcoZmlsZW5hbWUsIGxl
bikpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKFN0cmluZyhmaWxlbmFt
ZSwgbGVuKSk7CiB9CiAKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7
Ci0gICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1v
ZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxs
IikpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKCJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUu
ZGxsIikpOwogICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwYXRoLnV0
ZjgoKS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggZDJmMTlkNzk3MTIwNzVkYjU1MzZmOTViZmViMDI4OWRkNGU2ZTQ2MC4uMjhhNDBiOTE3Nzlh
MzI0YWUwMTE2MjNmYmE3ZTY3Njg4YmNjYTFjMiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9U
WVBFPXdjaGFyX3Qgc3RvcGdhcCBhbmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc0pTQ09ubHkuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNX
aW4uY21ha2U6CisgICAgICAgIFN0b3AgY29tcGlsaW5nIHdpdGggLURVQ0hBUl9UWVBFPXdjaGFy
X3QuCisKIDIwMTktMDMtMDYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dIEVuYWJsZSBhZGRpdGlvbmFsIGV4cGVyaW1lbnRhbCBmZWF0
dXJlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363815</attachid>
            <date>2019-03-06 16:29:53 -0800</date>
            <delta_ts>2019-03-06 20:57:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195346-20190306162952.patch</filename>
            <type>text/plain</type>
            <size>113093</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmM3MzM1YWI4ZDQzNTQ0NmQyYTFiZTBjN2JhMGJlNzczMTU4ODliLi4xYmEzZTllMmQ4NTY3NmEx
NjllNDcxMzAzMmZkMmNjNWJlNDA4OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3Bn
YXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGN1cnJlbnRX
b3JraW5nRGlyZWN0b3J5KToKKyAgICAgICAgKGZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3Rl
bSk6CisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMgbmVlZGVkLgor
CiAyMDE5LTAzLTA1ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IG9wX3N3aXRjaF9jaGFyIGJyb2tlbiBmb3Igcm9wZSBzdHJpbmdzIGFmdGVyIEpTUm9wZVN0cmlu
ZyBsYXlvdXQgcmV3cml0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCAxYTliMTlkNzExOTVlYTZiNmEwNWNmYTY4NzIxMjI0NWRm
N2NlOTQwLi42ZDk3MjRmODM2MjExZGNmYzFiOWM4YWUzNjg4ZGU2MzgyMTNhYjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3Rv
cGdhcCBhbmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nOjpTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oOgorICAgICAgICAoV1RGOjp1Y2hhckZyb20pOgorICAgICAgICAoV1RG
Ojp3Y2hhckZyb20pOgorICAgICAgICAoV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjp3Y2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
QWRkIHN0YXRpY19hc3NlcnQtZ3VhcmRlZCByZWludGVycHJldF9jYXN0IHdyYXBwZXJzIGZvciBn
b2luZyBiZXR3ZWVuIFVDaGFyKiBhbmQgd2NoYXJfdCouCisgICAgICAgIFJlcGxhY2UgZXhpc3Rp
bmcgdG9TdHJpbmcgaGVscGVycyB3aXRoIGEgU3RyaW5nKGNvbnN0IHdjaGFyX3QqKSBjb25zdHJ1
Y3Rvci4KKworICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaW5kRGF0YSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaW5hbFBhdGhOYW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmNyZWF0ZVN5bWJvbGljTGluayk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxl
dGVGaWxlKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om1vdmVGaWxlKToKKyAgICAgICAg
KFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAg
IChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUlt
cGw6OmdlbmVyYXRlVGVtcG9yYXJ5UGF0aCk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBs
OjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpoYXJkTGlua09yQ29weUZpbGUp
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkp
OgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpsb2Nh
bGVJbmZvKToKKyAgICAgICAgKiB3dGYvd2luL1BhdGhXYWxrZXIuY3BwOgorICAgICAgICAoV1RG
OjpQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAyLTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBXZWFrSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk2NGU2OTZhODRlM2ZjMjVl
ZTFlYzAzNjExYjY4ODhjM2M0YjA5Y2IuLmVmNzVjMmU2YjQ3MTRmYzZkM2RiZDJhYjAyY2QzNmQy
ZGE0OTBjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOS0wMy0wNiAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3Zl
IC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFy
MTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRMaW5rZWRGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaW5rZWRGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlOjpmaWxsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb3dubG9hZEJ1bmRsZTo6YXBwZW5kUmVzdW1lRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpEb3dubG9hZEJ1bmRsZTo6ZXh0cmFjdFJlc3VtZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMQ0lERnJvbUxv
Y2FsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkxDSURGcm9tTG9jYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZVdpbjo6Z2V0TG9jYWxlSW5mb1N0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QlN0cmluZzo6QlN0
cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRXZWJMb2NEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZURlc2NyaXB0b3JEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDRkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdMYWJlbEZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBl
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TU0xL
ZXlHZW5lcmF0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsbEZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJz
IGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBBc3NlcnRpb24gRmFpbGVkOiBtX2RhdGFiYXNlUXVldWUuaXNLaWxsZWQo
KSBpbiBVbmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlEQkRhdGFiYXNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
OWIxYTZkMTM4NTE4MTg4NjI1NGVhZDBkMTBkOThjOTgzMWJiZjgyZi4uMzMyNTA1NzRlM2NlYWU0
ODFiODIzMWVjZTJlMjJkOTgyZmJhMDE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
OS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAg
ICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRv
IGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMpOgor
ICAgICAgICAqIFBsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpN
b2R1bGU6OmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xh
dW5jaGVyV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVNZW51SXRlbSk6CisgICAgICAgICogVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0VG9vbFRp
cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5k
bGVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJzIGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMzg0
OTApOiBZb3VUdWJlLmNvbTogUmV0dXJuaW5nIFBpUCB0byBTYWZhcmkgYWZ0ZXIgc2xlZXBpbmcg
ZGV2aWNlIGxvc2VzIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA3ZTgyN2I1
YmY3NDFjNGNjNzgzNmNlMjdkNzUzNTAwNGQxNzhkZjUzLi4wZDU0MDY3Mzc3Zjk2ZDk1MDU3MDk2
OGU2ZGRkYjQ0YzNmZjc0MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTggQEAKKzIwMTktMDMtMDYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2Fw
IGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAg
KEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0cmlidXRlKToKKyAgICAgICAgKiBDT01Qcm9wZXJ0eUJh
Zy5oOgorICAgICAgICAoSGFzaFR5cGU+OjpHZXRQcm9wZXJ0eUluZm8pOgorICAgICAgICAoSGFz
aFR5cGU+OjpMb2FkT2JqZWN0KToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAg
ICAgIChET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTU5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01F
bGVtZW50Ojpmb250KToKKyAgICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChE
T01IVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAoRE9NSFRNTElu
cHV0RWxlbWVudDo6cmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlKToKKyAgICAgICAgKiBQbHVnaW5z
L1BsdWdpbkRhdGFiYXNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsdWdpblBhdGhz
RnJvbVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXRQbHVn
aW5QYXRoc0luRGlyZWN0b3JpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTW96aWxs
YVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFdpbmRvd3NNZWRpYVBs
YXllclBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRBZG9iZUFjcm9iYXRQ
bHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSmF2YVBsdWdpbkRpcmVjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OmFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFZlcnNpb25J
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlUG9z
dFJlYWRGaWxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrR3JhbW1hck9mU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0
ZVdpbmRvd1RpdGxlKToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6ZmluZEZyYW1lTmFtZWQpOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RTVFIgY29uc3QpOgorICAg
ICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxS
ZXF1ZXN0OjphZGRWYWx1ZSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgICh0b0F0
b21pY1N0cmluZyk6CisgICAgICAgIChjcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyk6CisgICAg
ICAgIChXZWJWaWV3OjpzZXRUb29sVGlwKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAzLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIFByb2dyYW1tYXRpYyBwYXN0ZSBhY2Nlc3Mgc2hvdWxkIGJl
IGdyYW50ZWQgd2hlbiBjb3B5aW5nIGFuZCBwYXN0aW5nIHdpdGhpbiB0aGUgc2FtZSBvcmlnaW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZTU1MGE3MjQ0YjY0MWQyODkxZWE0MTNkM2FkYjljZWNl
MTRiOGE3ZC4uOGNhZGI5NmE0MDZjYTg2YWY1ZGRlYzIwYWQ1MTVkMTVlNmJiYTFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTc0OCw3ICs3NDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RGlyZWN0
b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKQogICAgIC8vIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmMzgxNDA3LmFzcHgK
ICAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVyKGJ1ZmZlckxlbmd0aCk7CiAgICAgRFdPUkQgbGVu
Z3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3Ro
LCBidWZmZXIuZGF0YSgpKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0
cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsKTsKKyAgICBTdHJpbmcg
ZGlyZWN0b3J5U3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOwog
ICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxw
YXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTA2MiwxNSArMTA2MiwxNCBAQCBzdGF0
aWMgYm9vbCBmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgVmVjdG9yJiBidWZmZQogI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gaHR0cHM6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjUyNDcuYXNw
eCNtYXhwYXRoCiAgICAgLy8gVXNlIGxvbmcgVU5DIHRvIHBhc3MgdGhlIGxvbmcgcGF0aCBuYW1l
IHRvIHRoZSBXaW5kb3dzIEFQSXMuCi0gICAgU3RyaW5nIGxvbmdVTkNQYXRoTmFtZSA9IFdURjo6
bWFrZVN0cmluZygiXFxcXD9cXCIsIGZpbGVOYW1lKTsKLSAgICBhdXRvIHBhdGhOYW1lID0gc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGxvbmdVTkNQYXRoTmFtZSk7CisgICAgYXV0byBwYXRo
TmFtZSA9IG1ha2VTdHJpbmcoIlxcXFw/XFwiLCBmaWxlTmFtZSkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKTsKICAgICBzdHJ1Y3QgX3N0YXQgc3RhdHVzIHsgfTsKLSAgICBpZiAoX3dz
dGF0KHBhdGhOYW1lLmRhdGEoKSwgJnN0YXR1cykpCisgICAgaWYgKF93c3RhdCh3Y2hhckZyb20o
cGF0aE5hbWUuZGF0YSgpKSwgJnN0YXR1cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoKHN0YXR1cy5zdF9tb2RlICYgU19JRk1UKSAhPSBTX0lGUkVHKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBGSUxFKiBmID0gX3dmb3BlbihwYXRoTmFtZS5kYXRhKCksIEwicmIiKTsK
KyAgICBGSUxFKiBmID0gX3dmb3Blbih3Y2hhckZyb20ocGF0aE5hbWUuZGF0YSgpKSwgTCJyYiIp
OwogI2Vsc2UKICAgICBhdXRvIHBhdGhOYW1lID0gZmlsZU5hbWUudXRmOCgpOwogICAgIHN0cnVj
dCBzdGF0IHN0YXR1cyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggZmEwZmI0MmUwN2VmNDM2YTVjYzA4MDA2ZTZkZDMyZGI3
MGMzZWM0Ny4uNzNlZWEzMWYxMjZkNDdhOWI5MDk2NDg0OTYyY2I0NDk5ZjcxZDZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC0xMDksNyArMTA4LDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMK
ICAgICAgICAgICAgIFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwog
ICAgICAgICAgICAgR2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7
CiAgICAgICAgICAgICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8g
dGltZVpvbmVJbmZvcm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0
YW5kYXJkTmFtZTsKLSAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWlu
YXRlZFdDaGFyVG9TdHJpbmcod2luVGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgIFN0cmluZyB0
aW1lWm9uZU5hbWUod2luVGltZVpvbmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3Qg
dG0gZ3RtID0gdDsKICAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCmluZGV4IGFhNWM5ZmNlNWRjNmFhOGNiMTA2ZjMxYTAzMzIwZmE1MTJhYzky
ZjIuLmJmNWFkZDNkNzM4OTk0YTZkY2E1MjdlNmE3OGJlOWQyNDM1NjAzNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4K
ICNlbmRpZgogCisjaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJT
dHJpbmdFeHRyYXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogLy8gRGVjbGFyYXRp
b25zIG9mIHN0cmluZyBvcGVyYXRpb25zCkBAIC0zMzAsNiArMzM0LDE0IEBAIHB1YmxpYzoKICAg
ICBvcGVyYXRvciBOU1N0cmluZyAqKCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIE9TKFdJTkRPV1Mp
ICYmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDU5CisgICAgU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBTdHJpbmcodWNoYXJG
cm9tKGNoYXJhY3RlcnMpLCBsZW5ndGgpIHsgfQorCisgICAgU3RyaW5nKGNvbnN0IHdjaGFyX3Qq
IGNoYXJhY3RlcnMpCisgICAgICAgIDogU3RyaW5nKHVjaGFyRnJvbShjaGFyYWN0ZXJzKSkgeyB9
CisjZW5kaWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0
RnJvbTE2Qml0U291cmNlKGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+IHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2Uo
Y29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmgKaW5kZXggZDQxZjQ2Mjk0ZDM2MDRlYjYwNGNi
NzQ3MDE2Y2U1NDM2MTdlZGRkZi4uZmM3ZjllMmMxNzc2MTFiNmVlZTFhYjQ2YWNhNTVkZTZhOTA5
YzBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRy
YXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBLb25zdGFudGluIFRva2Fy
ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDQ2ICsyNiwzMyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHdjaGFyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogCi1p
bmxpbmUgVmVjdG9yPHdjaGFyX3Q+IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihjb25zdCBT
dHJpbmcmIHN0cmluZykKK2lubGluZSBjb25zdCBVQ2hhciogdWNoYXJGcm9tKGNvbnN0IHdjaGFy
X3QqIGNoYXJhY3RlcnMpCiB7Ci0gICAgVmVjdG9yPHdjaGFyX3Q+IHJlc3VsdDsKLQotICAgIGlm
ICghc3RyaW5nLmlzTnVsbCgpKSB7Ci0gICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHN0cmluZy5pbXBsKCktPmxlbmd0aCgpICsgMSk7Ci0KLSAgICAgICAgaWYgKHN0cmluZy5p
czhCaXQoKSkgewotICAgICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gc3RyaW5n
LmltcGwoKS0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgICAgICByZXN1bHQu
dW5jaGVja2VkQXBwZW5kKGNoYXJhY3RlcnM4W2ldKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYgPSBzdHJpbmcuaW1wbCgpLT5jaGFyYWN0
ZXJzMTYoKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyczE2LCBzdHJpbmcu
aW1wbCgpLT5sZW5ndGgoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1bHQuYXBwZW5kKDAp
OwotICAgIH0KKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNo
YXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6ZSIpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcmFjdGVycyk7Cit9
CiAKLSAgICByZXR1cm4gcmVzdWx0OworaW5saW5lIFVDaGFyKiB1Y2hhckZyb20od2NoYXJfdCog
Y2hhcmFjdGVycykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXpl
b2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6
ZSIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFVDaGFyKj4oY2hhcmFjdGVycyk7CiB9
CiAKLWlubGluZSBTdHJpbmcgd2NoYXJUb1N0cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCitpbmxpbmUgY29uc3Qgd2NoYXJfdCogd2NoYXJGcm9tKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzKQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdjaGFyX3Qp
ID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIgaGF2ZSB0aGUg
c2FtZSBzaXplIik7Ci0gICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVD
aGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgd2NoYXJfdCo+KGNoYXJhY3RlcnMpOwogfQogCi1pbmxpbmUgU3RyaW5nIG51bGxUZXJt
aW5hdGVkV0NoYXJUb1N0cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQoraW5saW5lIHdj
aGFyX3QqIHdjaGFyRnJvbShVQ2hhciogY2hhcmFjdGVycykKIHsKLSAgICByZXR1cm4gd2NoYXJU
b1N0cmluZyhjaGFyYWN0ZXJzLCB3Y3NsZW4oY2hhcmFjdGVycykpOworICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKHdjaGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBh
bmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8d2NoYXJfdCo+KGNoYXJhY3RlcnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNp
bmcgV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXI7Ci11c2luZyBXVEY6OndjaGFyVG9T
dHJpbmc7Ci11c2luZyBXVEY6Om51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZzsKK3VzaW5nIFdU
Rjo6dWNoYXJGcm9tOwordXNpbmcgV1RGOjp3Y2hhckZyb207CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKaW5kZXggZDY3MmFmNjM3NDY5M2NmMDUyMWVjMzY4OTY4OWNlYmNjMDJlZGUz
OC4uNWNkOTkzNGRlM2E2NGE1YzY0MjZkZTgzNzE0YzM1MTA2MjhhZDVhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgY29uc3QgVUxP
TkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOwogCiBzdGF0
aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERh
dGEpCiB7Ci0gICAgSEFORExFIGhhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCksICZmaW5kRGF0YSk7CisgICAgSEFORExFIGhhbmRs
ZSA9IEZpbmRGaXJzdEZpbGVXKHdjaGFyRnJvbShwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpKSwgJmZpbmREYXRhKTsKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURf
SEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRmluZENsb3NlKGhhbmRs
ZSk7CkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBWZWN0
b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5
SGFuZGxlVyhoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1F
X05UKSA+PSBNQVhfUEFUSCkgeworICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVco
aGFuZGxlLCB3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9O
QU1FX05UKSA+PSBNQVhfUEFUSCkgewogICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAg
IGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKyAgICBidWZmZXIuc2hyaW5r
KHdjc2xlbih3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSkpKTsKICAgICByZXR1cm4gU3RyaW5nOjph
ZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgT3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcm
IHBhdGgpCiAKIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0
aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQogewotICAgIHJldHVybiAhOjpDcmVh
dGVTeW1ib2xpY0xpbmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQ
YXRoKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRh
KCksIDApOworICAgIHJldHVybiAhOjpDcmVhdGVTeW1ib2xpY0xpbmtXKHdjaGFyRnJvbShzeW1i
b2xpY0xpbmtQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgd2No
YXJGcm9tKHRhcmdldFBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
LCAwKTsKIH0KIAogYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTIzMywz
NyArMjMzLDM1IEBAIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiBib29sIGRl
bGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IHBh
dGg7Ci0gICAgcmV0dXJuICEhRGVsZXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KGZpbGVuYW1lKS5kYXRhKCkpOworICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKHdjaGFyRnJvbShm
aWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpOwogfQogCiBi
b29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBTdHJp
bmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCkpOworICAgIHJldHVybiAhIVJl
bW92ZURpcmVjdG9yeVcod2NoYXJGcm9tKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpKSk7CiB9CiAKIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQ
YXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiB7CiAgICAgU3RyaW5nIG9sZEZpbGVuYW1lID0g
b2xkUGF0aDsKICAgICBTdHJpbmcgbmV3RmlsZW5hbWUgPSBuZXdQYXRoOwotICAgIHJldHVybiAh
ITo6TW92ZUZpbGVFeChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIob2xkRmlsZW5hbWUpLmRh
dGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG5ld0ZpbGVuYW1lKS5kYXRhKCksIE1P
VkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOworICAgIHJl
dHVybiAhITo6TW92ZUZpbGVFeCh3Y2hhckZyb20ob2xkRmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCB3Y2hhckZyb20obmV3RmlsZW5hbWUuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQgfCBN
T1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKIH0KIAogU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewog
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKLQogICAgIGlmIChwYXRoLmxlbmd0
aCgpICsgMSA+IGJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAg
IFN0cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRhdGEo
KSk7CiAgICAgYnVmZmVyW3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKIAotICAgIGlmICghUGF0aEFw
cGVuZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBvbmVu
dCkuZGF0YSgpKSkKKyAgICBpZiAoIVBhdGhBcHBlbmRXKHdjaGFyRnJvbShidWZmZXIuZGF0YSgp
KSwgd2NoYXJGcm9tKGNvbXBvbmVudC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBidWZmZXIuc2hyaW5rKHdj
c2xlbihidWZmZXIuZGF0YSgpKSk7Ci0KKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbih3Y2hhckZy
b20oYnVmZmVyLmRhdGEoKSkpKTsKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1
ZmZlcikpOwogfQogCkBAIC0yNzksOSArMjc3LDcgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXAK
IAogQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQog
ewotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhwYXRoKS51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKTsKLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGF1dG8gY2hhcmFjdGVycyA9IHdjaGFyRnJvbShTdHJp
bmdWaWV3KHBhdGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKTsKICAgICBpbnQgc2l6ZSA9IFdp
ZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFyYWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCAw
LCAwLCAwLCAwKSAtIDE7CiAKICAgICBjaGFyKiBidWZmZXI7CkBAIC0yOTcsNyArMjkzLDcgQEAg
Q1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogYm9v
bCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFN0cmluZyBm
dWxsUGF0aCA9IHBhdGg7Ci0gICAgaWYgKFNIQ3JlYXRlRGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKGZ1bGxQYXRoKS5kYXRhKCksIDApICE9IEVSUk9SX1NVQ0NFU1Mp
IHsKKyAgICBpZiAoU0hDcmVhdGVEaXJlY3RvcnlFeCgwLCB3Y2hhckZyb20oZnVsbFBhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwKSAhPSBFUlJPUl9TVUNDRVNT
KSB7CiAgICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAgICAgICAgIGlmIChl
cnJvciAhPSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBlcnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNU
UykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBw
YXRoLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTMxNCw3ICszMTAsNyBAQCBTdHJpbmcgaG9tZURpcmVj
dG9yeVBhdGgoKQogCiBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKLSAgICByZXR1cm4gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKDo6UGF0aEZpbmRGaWxl
TmFtZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpKSk7CisgICAgcmV0
dXJuIFN0cmluZyg6OlBhdGhGaW5kRmlsZU5hbWUod2NoYXJGcm9tKHBhdGguY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKSk7CiB9CiAKIFN0cmluZyBkaXJlY3RvcnlOYW1l
KGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTM1MCw5ICszNDYsMTAgQEAgc3RhdGljIFN0cmluZyBi
dW5kbGVOYW1lKCkKIHN0YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRl
bnRpZmllcikKIHsKICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYg
KEZBSUxFRChTSEdldEZvbGRlclBhdGhXKDAsIHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19D
UkVBVEUsIDAsIDAsIGJ1ZmZlci5kYXRhKCkpKSkKKyAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVy
UGF0aFcoMCwgcGF0aElkZW50aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgd2NoYXJG
cm9tKGJ1ZmZlci5kYXRhKCkpKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBidWZm
ZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdj
c2xlbih3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSkpKTsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogCiAgICAgZGlyZWN0b3J5ID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxl
TmFtZSgpKTsKQEAgLTM5Nyw3ICszOTQsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9y
YXJ5UGF0aChjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogCiAg
ICAgICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZp
bGUpIC0gMSk7CiAKLSAgICAgICAgcHJvcG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVk
V0NoYXJUb1N0cmluZyh0ZW1wRmlsZSkpOworICAgICAgICBwcm9wb3NlZFBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoU3RyaW5nKHRlbXBQYXRoKSwgU3RyaW5nKHRlbXBGaWxlKSk7CiAg
ICAgICAgIGlmIChwcm9wb3NlZFBhdGguaXNFbXB0eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfSB3aGlsZSAoIWFjdGlvbihwcm9wb3NlZFBhdGgpKTsKQEAgLTQxMSw3ICs0MDgsNyBAQCBT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCiAKICAgICBTdHJpbmcgcHJvcG9zZWRQYXRoID0gZ2VuZXJhdGVUZW1wb3JhcnlQ
YXRoKFsmaGFuZGxlXShjb25zdCBTdHJpbmcmIHByb3Bvc2VkUGF0aCkgewogICAgICAgICAvLyB1
c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxlIHdpdGgg
dGhlIHNhbWUgbmFtZQotICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHN0cmluZ1RvTnVs
bFRlcm1pbmF0ZWRXQ2hhcihwcm9wb3NlZFBhdGgpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VO
RVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsK
KyAgICAgICAgaGFuZGxlID0gOjpDcmVhdGVGaWxlVyh3Y2hhckZyb20ocHJvcG9zZWRQYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgR0VORVJJQ19SRUFEIHwgR0VO
RVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsK
IAogICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdldExhc3RFcnJvcigp
ID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTOwogICAgIH0pOwpAQCAtNDQyLDcgKzQzOSw3IEBAIFBs
YXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9k
ZSBtb2RlKQogICAgIH0KIAogICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHBhdGg7Ci0gICAgcmV0
dXJuIENyZWF0ZUZpbGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5k
YXRhKCksIGRlc2lyZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25EaXNwb3NpdGlvbiwg
RklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKyAgICByZXR1cm4gQ3JlYXRlRmlsZSh3Y2hhckZy
b20oZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBk
ZXNpcmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRU
UklCVVRFX05PUk1BTCwgMCk7CiB9CiAKIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQpAQCAtNTAxLDcgKzQ5OCw3IEBAIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIAogYm9vbCBoYXJkTGlu
a09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b24pCiB7Ci0gICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoc291cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkZXN0aW5hdGlv
bikuZGF0YSgpLCBUUlVFKTsKKyAgICByZXR1cm4gISE6OkNvcHlGaWxlKHdjaGFyRnJvbShzb3Vy
Y2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCB3Y2hhckZyb20oZGVz
dGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBUUlVFKTsK
IH0KIAogU3RyaW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCkBAIC01NzIs
NyArNTY5LDcgQEAgYm9vbCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeVBhdGgpCiAgICAgU0hGSUxFT1BTVFJVQ1QgZGVsZXRlT3BlcmF0aW9uID0gewogICAg
ICAgICBudWxscHRyLAogICAgICAgICBGT19ERUxFVEUsCi0gICAgICAgIHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5kYXRhKCksCisgICAgICAgIHdjaGFyRnJvbShk
aXJlY3RvcnlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKICAg
ICAgICAgTCIiLAogICAgICAgICBGT0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwg
Rk9GX1NJTEVOVCwKICAgICAgICAgZmFsc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcApp
bmRleCAzMDljYTY2MjdlZDhhZmIzMDg2NzMxNTg2NGZmOGMzZTYyMGRhZDUxLi5mYzFmYzUyNzZl
ZGMxOTYzYWI3ZjQwYTExMGVkMzhiNTBmNDhhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdp
bi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
QEAgLTQ0LDcgKzQ1LDcgQEAgc3RhdGljIFN0cmluZyBsb2NhbGVJbmZvKExDVFlQRSBsb2NhbGVU
eXBlLCBjb25zdCBTdHJpbmcmIGZhbGxiYWNrKQogICAgICAgICByZXR1cm4gZmFsbGJhY2s7CiAg
ICAgVUNoYXIqIGxvY2FsZU5hbWVCdWY7CiAgICAgU3RyaW5nIGxvY2FsZU5hbWUgPSBTdHJpbmc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobG9jYWxlQ2hhcnMsIGxvY2FsZU5hbWVCdWYpOwotICAgIGxv
Y2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIGxvY2FsZU5hbWVC
dWYsIGxvY2FsZUNoYXJzKTsKKyAgICBsb2NhbGVDaGFycyA9IEdldExvY2FsZUluZm8obGFuZ0lE
LCBsb2NhbGVUeXBlLCB3Y2hhckZyb20obG9jYWxlTmFtZUJ1ZiksIGxvY2FsZUNoYXJzKTsKICAg
ICBpZiAoIWxvY2FsZUNoYXJzKQogICAgICAgICByZXR1cm4gZmFsbGJhY2s7CiAgICAgaWYgKGxv
Y2FsZU5hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhX
YWxrZXIuY3BwIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCmluZGV4IGM2ZDNm
OTcwNjA0OWNiMTNjOWVmNjM1NWViYjYzYTUwNzk4NTAyMjEuLmU3NjVmOTc0ZTdmZWEzM2MwMjc4
N2NlMTJkNTZkYWVhMzk5ZTRjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRo
V2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiBQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiB7CiAgICAgU3RyaW5n
IHBhdGggPSBkaXJlY3RvcnkgKyAiXFwiICsgcGF0dGVybjsKLSAgICBtX2hhbmRsZSA9IDo6Rmlu
ZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJm1f
ZGF0YSk7CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHdjaGFyRnJvbShwYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgJm1fZGF0YSk7CiB9CiAKIFBh
dGhXYWxrZXI6On5QYXRoV2Fsa2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggMDc5NDg4MTM2N2UwMjIxNDU4
YTBlN2IwYWM0M2Q2NzQ0Njg5YTQ1MC4uZDE0ZjJkNWU0NzNhN2EwNzM1YzYzNjJmYzYwYjUzYTk3
ODkxYjlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZExpbmtlZEZvbnRzKFdDSEFSKiBsaW5rZWRGb250cywgdW5zaWduZWQgbGVuZ3Ro
LCBWZWN0bwogICAgICAgICB1bnNpZ25lZCBqID0gaTsKICAgICAgICAgd2hpbGUgKGogPCBsZW5n
dGggJiYgbGlua2VkRm9udHNbal0pCiAgICAgICAgICAgICBqKys7Ci0gICAgICAgIHJlc3VsdC0+
YXBwZW5kKHdjaGFyVG9TdHJpbmcobGlua2VkRm9udHMgKyBpLCBqIC0gaSkpOworICAgICAgICBy
ZXN1bHQtPmFwcGVuZChTdHJpbmcobGlua2VkRm9udHMgKyBpLCBqIC0gaSkpOwogICAgICAgICBp
ID0gaiArIDE7CiAgICAgfQogfQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgc3RhdGljIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+KiBnZXRMaW5rZWRGb250cyhTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAogICAgIERXT1JEIGxpbmtlZEZvbnRzQnVmZmVyU2l6ZSA9IDA7Ci0gICAg
aWYgKDo6UmVnUXVlcnlWYWx1ZUV4KGZvbnRMaW5rS2V5LCBzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZmFtaWx5KS5kYXRhKCksIDAsIG51bGxwdHIsIG51bGxwdHIsICZsaW5rZWRGb250c0J1
ZmZlclNpemUpID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgaWYgKDo6UmVnUXVlcnlW
YWx1ZUV4KGZvbnRMaW5rS2V5LCB3Y2hhckZyb20oZmFtaWx5LmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJmxpbmtlZEZvbnRzQnVm
ZmVyU2l6ZSkgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJUaGUgZm9udCBsaW5rIGtleSAlcyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcmVnaXN0cnkuIiwg
ZmFtaWx5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgdW5zaWduZWQgSW5pdGlhbEJ1ZmZlclNpemUgeyAy
NTYgLyBzaXplb2YoV0NIQVIpIH07CiAgICAgVmVjdG9yPFdDSEFSLCBJbml0aWFsQnVmZmVyU2l6
ZT4gbGlua2VkRm9udHMocm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV0NIQVIpPihsaW5rZWRG
b250c0J1ZmZlclNpemUpIC8gc2l6ZW9mKFdDSEFSKSk7Ci0gICAgaWYgKDo6UmVnUXVlcnlWYWx1
ZUV4KGZvbnRMaW5rS2V5LCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmFtaWx5KS5kYXRh
KCksIDAsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KGxpbmtlZEZvbnRzLmRhdGEo
KSksICZsaW5rZWRGb250c0J1ZmZlclNpemUpID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICBpZiAo
OjpSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIHdjaGFyRnJvbShmYW1pbHkuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCAwLCBudWxscHRyLCByZWludGVycHJldF9j
YXN0PEJZVEUqPihsaW5rZWRGb250cy5kYXRhKCkpLCAmbGlua2VkRm9udHNCdWZmZXJTaXplKSA9
PSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxpbmtlZEZvbnRz
QnVmZmVyU2l6ZSAvIHNpemVvZihXQ0hBUik7CiAgICAgICAgIGFwcGVuZExpbmtlZEZvbnRzKGxp
bmtlZEZvbnRzLmRhdGEoKSwgbGVuZ3RoLCByZXN1bHQpOwogICAgIH0KQEAgLTI4NSw3ICsyODUs
NyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogICAgICAgICBTZWxlY3RPYmplY3QoaGRjLCBo
Zm9udCk7CiAgICAgICAgIFdDSEFSIG5hbWVbTEZfRkFDRVNJWkVdOwogICAgICAgICBHZXRUZXh0
RmFjZShoZGMsIExGX0ZBQ0VTSVpFLCBuYW1lKTsKLSAgICAgICAgZmFtaWx5TmFtZSA9IG51bGxU
ZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhuYW1lKTsKKyAgICAgICAgZmFtaWx5TmFtZSA9IFN0cmlu
ZyhuYW1lKTsKIAogICAgICAgICBpZiAoY29udGFpbnNDaGFyYWN0ZXIgfHwgY3VycmVudEZvbnRD
b250YWluc0NoYXJhY3RlcihoZGMsIGNoYXJhY3RlcikpCiAgICAgICAgICAgICBicmVhazsKQEAg
LTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogCiAgICAgICAgIExPR0ZP
TlQgbG9nRm9udDsKICAgICAgICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7
Ci0gICAgICAgIFN0cmluZ1ZpZXcobGlua2VkRm9udHMtPmF0KGxpbmtlZEZvbnRJbmRleCkpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CisgICAgICAgIFN0
cmluZ1ZpZXcobGlua2VkRm9udHMtPmF0KGxpbmtlZEZvbnRJbmRleCkpLmdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICAgICAgbG9n
Rm9udC5sZkZhY2VOYW1lW2xpbmtlZEZvbnRzLT5hdChsaW5rZWRGb250SW5kZXgpLmxlbmd0aCgp
XSA9IDA7CiAgICAgICAgIEVudW1Gb250RmFtaWxpZXNFeChoZGMsICZsb2dGb250LCBsaW5rZWRG
b250RW51bVByb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaGZvbnQpLCAwKTsKICAgICAg
ICAgbGlua2VkRm9udEluZGV4Kys7CkBAIC0zMzAsNyArMzMwLDcgQEAgVmVjdG9yPFN0cmluZz4g
Rm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaWxpZXMoKQogCiBSZWZQdHI8Rm9udD4gRm9udENhY2hl
Ojpmb250RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgTE9HRk9OVCYgZm9udCwgQXRvbWljU3RyaW5nJiBvdXRGb250
RmFtaWx5TmFtZSkKIHsKLSAgICBBdG9taWNTdHJpbmcgZmFtaWx5TmFtZSA9IHdjaGFyVG9TdHJp
bmcoZm9udC5sZkZhY2VOYW1lLCB3Y3NubGVuKGZvbnQubGZGYWNlTmFtZSwgTEZfRkFDRVNJWkUp
KTsKKyAgICBBdG9taWNTdHJpbmcgZmFtaWx5TmFtZSh1Y2hhckZyb20oZm9udC5sZkZhY2VOYW1l
KSwgd2Nzbmxlbihmb250LmxmRmFjZU5hbWUsIExGX0ZBQ0VTSVpFKSk7CiAgICAgUmVmUHRyPEZv
bnQ+IGZvbnREYXRhID0gZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUp
OwogICAgIGlmIChmb250RGF0YSkKICAgICAgICAgb3V0Rm9udEZhbWlseU5hbWUgPSBmYW1pbHlO
YW1lOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIHN0YXRpYyBHRElPYmplY3Q8SEZPTlQ+IGNyZWF0ZUdE
SUZvbnQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlCiAgICAgTE9H
Rk9OVCBsb2dGb250OwogICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwog
ICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0gU3RyaW5nVmlldyhmYW1pbHkpLnN1YnN0
cmluZygwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7Ci0gICAgdHJ1
bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFt
ZSk7CisgICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFy
RnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICBsb2dGb250LmxmRmFjZU5hbWVbdHJ1bmNh
dGVkRmFtaWx5Lmxlbmd0aCgpXSA9IDA7CiAgICAgbG9nRm9udC5sZlBpdGNoQW5kRmFtaWx5ID0g
MDsKIApAQCAtNTk4LDcgKzU5OCw3IEBAIFZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
PiBGb250Q2FjaGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlsCiAgICAgTE9H
Rk9OVCBsb2dGb250OwogICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwog
ICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0gU3RyaW5nVmlldyhmYW1pbHlOYW1lKS5z
dWJzdHJpbmcoMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwotICAg
IHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChsb2dGb250LmxmRmFj
ZU5hbWUpOworICAgIHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1
Y2hhckZyb20obG9nRm9udC5sZkZhY2VOYW1lKSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3Ry
dW5jYXRlZEZhbWlseS5sZW5ndGgoKV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWls
eSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYTU3
ZTY5YjJhN2RhNmU2MjUwMjFmYzJlODE4NjA0YThiMzQ1ODhiYi4uYTk2OTJiMzFhNTM0M2QxMWQ0
OTU1ODY4N2Q0NDM3ZWZjMDM2OWMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKIAogICAg
IExPR0ZPTlQgbG9nRm9udDsKICAgICBtZW1zZXQoJmxvZ0ZvbnQsIDAsIHNpemVvZihMT0dGT05U
KSk7Ci0gICAgd2NzbmNweShsb2dGb250LmxmRmFjZU5hbWUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihtX25hbWUpLmRhdGEoKSwgTEZfRkFDRVNJWkUgLSAxKTsKKyAgICB3Y3NuY3B5KGxv
Z0ZvbnQubGZGYWNlTmFtZSwgd2NoYXJGcm9tKG1fbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSksIExGX0ZBQ0VTSVpFIC0gMSk7CiAKICAgICBsb2dGb250LmxmSGVp
Z2h0ID0gLXNpemU7CiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gRm9udFJlbmRlcmluZ01vZGU6
Ok5vcm1hbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcAppbmRleCA0YTU5ZTFi
YmJmYTIxMjM1ZWIwZGY2N2JmMzA3NGE3MzE2Mzc1MzZjLi4zOGNhYThiOWQ5YjJjZGI1MjFmYjUz
Yzk3ZWRkOGQ2MDQ1YzIxMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiSFduZERD
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNyArNTAsNyBAQCBib29sIEdseXBoUGFnZTo6ZmlsbChV
Q2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpCiAgICAgU2VsZWN0T2JqZWN0KGRj
LCBmb250LnBsYXRmb3JtRGF0YSgpLmhmb250KCkpOwogCiAgICAgV09SRCBsb2NhbEdseXBoQnVm
ZmVyW0dseXBoUGFnZTo6c2l6ZSAqIDJdOwotICAgIERXT1JEIHJlc3VsdCA9IEdldEdseXBoSW5k
aWNlcyhkYywgYnVmZmVyLCBidWZmZXJMZW5ndGgsIGxvY2FsR2x5cGhCdWZmZXIsIEdHSV9NQVJL
X05PTkVYSVNUSU5HX0dMWVBIUyk7CisgICAgRFdPUkQgcmVzdWx0ID0gR2V0R2x5cGhJbmRpY2Vz
KGRjLCB3Y2hhckZyb20oYnVmZmVyKSwgYnVmZmVyTGVuZ3RoLCBsb2NhbEdseXBoQnVmZmVyLCBH
R0lfTUFSS19OT05FWElTVElOR19HTFlQSFMpOwogICAgIGJvb2wgc3VjY2VzcyA9IHJlc3VsdCAh
PSBHRElfRVJST1IgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkgPT0gYnVmZmVyTGVu
Z3RoOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBHbHlwaFBhZ2U6OnNpemU7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCmluZGV4IDc5OWUzNDc0MDM5NDA2MzUxMGU5NTRiNmFm
MzA5OThlN2QyNWUyYWQuLjQ0MmRjNDhlZjViYWFlM2FlMzUxMWJhZmU3NWNmZjcwMDM4YjNlMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAgICAgICBtZW1zZXQoJnNmaSwg
MCwgc2l6ZW9mKHNmaSkpOwogCiAgICAgICAgIFN0cmluZyB0bXBGaWxlbmFtZSA9IGZpbGVuYW1l
c1swXTsKLSAgICAgICAgaWYgKCFTSEdldEZpbGVJbmZvKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRX
Q2hhcih0bXBGaWxlbmFtZSkuZGF0YSgpLCAwLCAmc2ZpLCBzaXplb2Yoc2ZpKSwgU0hHRklfSUNP
TiB8IFNIR0ZJX1NIRUxMSUNPTlNJWkUgfCBTSEdGSV9TTUFMTElDT04pKQorICAgICAgICBpZiAo
IVNIR2V0RmlsZUluZm8od2NoYXJGcm9tKHRtcEZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgJnNmaSwgc2l6ZW9mKHNmaSksIFNIR0ZJX0lDT04gfCBT
SEdGSV9TSEVMTElDT05TSVpFIHwgU0hHRklfU01BTExJQ09OKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihzZmkuaEljb24pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggYzg0
OGI2MWI5YzU4ZDhmMjlmMWViYjMwOTZiY2ExMTcyZGUxYjMyNy4uYTIzNmE4M2M2YmUwMjBmMWNi
MGVkMWM3ZDMyNTY0ZjA4OTJhZWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgY29uc3QgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVUeXBlQ2FjaGUoKQog
ICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CiAgICAgICAgIENBTFBXU1RSIG1pbWVUeXBlQXJyYXkg
PSBwcm9wVmFyTWltZVR5cGVBcnJheS5jYWxwd3N0cjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1pbWVUeXBlQXJyYXkuY0VsZW1zOyBpKyspCi0gICAgICAgICAgICBjYWNoZWRU
eXBlcy5nZXQoKS5hZGQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1pbWVUeXBlQXJyYXku
cEVsZW1zW2ldKSk7CisgICAgICAgICAgICBjYWNoZWRUeXBlcy5nZXQoKS5hZGQoU3RyaW5nKG1p
bWVUeXBlQXJyYXkucEVsZW1zW2ldKSk7CiAgICAgfQogCiAgICAgUHJvcFZhcmlhbnRDbGVhcigm
cHJvcFZhck1pbWVUeXBlQXJyYXkpOwpAQCAtNDcwLDExICs0NzAsMTEgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UoY29uc3Qg
U3RyaW5nJiB1cmwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ09NUHRyPElVbmtub3du
PiBjYW5jZWxDb29raWU7Ci0gICAgVmVjdG9yPHdjaGFyX3Q+IHVybFNvdXJjZSA9IHN0cmluZ1Rv
TnVsbFRlcm1pbmF0ZWRXQ2hhcih1cmwpOworICAgIFZlY3RvcjxVQ2hhcj4gdXJsU291cmNlID0g
dXJsLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CiAKICAgICBBc3luY0NhbGxiYWNr
KiBjYWxsYmFjayA9IG5ldyBBc3luY0NhbGxiYWNrKHRoaXMsIGZhbHNlKTsKIAotICAgIGlmIChG
QUlMRUQobV9zb3VyY2VSZXNvbHZlci0+QmVnaW5DcmVhdGVPYmplY3RGcm9tVVJMKHVybFNvdXJj
ZS5kYXRhKCksIE1GX1JFU09MVVRJT05fTUVESUFTT1VSQ0UsIG51bGxwdHIsICZjYW5jZWxDb29r
aWUsIGNhbGxiYWNrLCBudWxscHRyKSkpCisgICAgaWYgKEZBSUxFRChtX3NvdXJjZVJlc29sdmVy
LT5CZWdpbkNyZWF0ZU9iamVjdEZyb21VUkwod2NoYXJGcm9tKHVybFNvdXJjZS5kYXRhKCkpLCBN
Rl9SRVNPTFVUSU9OX01FRElBU09VUkNFLCBudWxscHRyLCAmY2FuY2VsQ29va2llLCBjYWxsYmFj
aywgbnVsbHB0cikpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3Jp
YmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9V
bmlzY3JpYmVDb250cm9sbGVyLmNwcAppbmRleCAxMTA0NTQ3NmRiNDY2NjViZTVlYjIyOTNhMTg0
ZTFlMGEyYmY2MzVlLi40NzRjNDg2MGZmMTAwNDQwOTliNmFmM2Y5YmZiOWI0MGNkNzg4ZGE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJl
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSFdu
ZERDLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
Ci0KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKQEAgLTE5Niw3ICsx
OTYsNyBAQCB2b2lkIFVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKGNv
bnN0IFVDaGFyKiBjcCwgdW5zaWduZWQgc3RyaW5nTwogICAgIG1faXRlbXMucmVzaXplKDYpOwog
ICAgIGludCBudW1JdGVtcyA9IDA7CiAgICAgSFJFU1VMVCByYyA9IFNfT0s7Ci0gICAgd2hpbGUg
KHJjID0gOjpTY3JpcHRJdGVtaXplKGNwLCBsZW5ndGgsIG1faXRlbXMuc2l6ZSgpIC0gMSwgJm1f
Y29udHJvbCwgJm1fc3RhdGUsIG1faXRlbXMuZGF0YSgpLCAmbnVtSXRlbXMpID09IEVfT1VUT0ZN
RU1PUlkpIHsKKyAgICB3aGlsZSAocmMgPSA6OlNjcmlwdEl0ZW1pemUod2NoYXJGcm9tKGNwKSwg
bGVuZ3RoLCBtX2l0ZW1zLnNpemUoKSAtIDEsICZtX2NvbnRyb2wsICZtX3N0YXRlLCBtX2l0ZW1z
LmRhdGEoKSwgJm51bUl0ZW1zKSA9PSBFX09VVE9GTUVNT1JZKSB7CiAgICAgICAgIG1faXRlbXMu
cmVzaXplKG1faXRlbXMuc2l6ZSgpICogMik7CiAgICAgICAgIHJlc2V0Q29udHJvbEFuZFN0YXRl
KCk7CiAgICAgfQpAQCAtNDI4LDcgKzQyOCw3IEBAIGJvb2wgVW5pc2NyaWJlQ29udHJvbGxlcjo6
c2hhcGUoY29uc3QgVUNoYXIqIHN0ciwgaW50IGxlbiwgU0NSSVBUX0lURU0gaXRlbSwgY29uCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRvIHsKLSAgICAgICAgc2hhcGVSZXN1bHQgPSBT
Y3JpcHRTaGFwZShoZGMsIGZvbnREYXRhLT5zY3JpcHRDYWNoZSgpLCBzdHIsIGxlbiwgZ2x5cGhz
LnNpemUoKSwgJml0ZW0uYSwKKyAgICAgICAgc2hhcGVSZXN1bHQgPSBTY3JpcHRTaGFwZShoZGMs
IGZvbnREYXRhLT5zY3JpcHRDYWNoZSgpLCB3Y2hhckZyb20oc3RyKSwgbGVuLCBnbHlwaHMuc2l6
ZSgpLCAmaXRlbS5hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocy5k
YXRhKCksIGNsdXN0ZXJzLmRhdGEoKSwgdmlzdWFsQXR0cmlidXRlcy5kYXRhKCksICZnbHlwaENv
dW50KTsKICAgICAgICAgaWYgKHNoYXBlUmVzdWx0ID09IEVfUEVORElORykgewogICAgICAgICAg
ICAgLy8gVGhlIHNjcmlwdCBjYWNoZSBpc24ndCBwcmltZWQgd2l0aCBlbm91Z2ggaW5mbyB5ZXQu
ICBXZSBuZWVkIHRvIHNlbGVjdCBvdXIgSEZPTlQgaW50bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCmluZGV4
IDM4ZmQ2MGI5MjBiNjE4NDc5ZGUxNjhlYmI3ZjRlMjk2ZGFlZTg1OTguLmRkODUyMTNhYTc4NDNi
YWYzOTRmMTUxMmYzYmRkNzdjZWYwNTkxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKQEAgLTU5LDkg
KzU5LDkgQEAgYm9vbCBhcHBlbmRSZXN1bWVEYXRhKGNvbnN0IGNoYXIqIHJlc3VtZUJ5dGVzLCB1
aW50MzJfdCByZXN1bWVMZW5ndGgsIGNvbnN0IFN0cmkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIFN0cmluZyBudWxsaWZpZWRQYXRoID0gYnVuZGxlUGF0aDsKKyAgICBhdXRv
IG51bGxpZmllZFBhdGggPSBidW5kbGVQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCk7CiAgICAgRklMRSogYnVuZGxlID0gMDsKLSAgICBpZiAoX3dmb3Blbl9zKCZidW5kbGUsIHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihudWxsaWZpZWRQYXRoKS5kYXRhKCksIFRFWFQoImFi
IikpIHx8ICFidW5kbGUpIHsKKyAgICBpZiAoX3dmb3Blbl9zKCZidW5kbGUsIHdjaGFyRnJvbShu
dWxsaWZpZWRQYXRoLmRhdGEoKSksIFRFWFQoImFiIikpIHx8ICFidW5kbGUpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGFwcGVuZCByZXN1bWUgZGF0YSIs
IGJ1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtOTgsOSArOTgsOSBAQCBib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYg
YnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1bWVEYXRhKQogICAgIH0KIAogICAgIC8vIE9w
ZW4gYSBoYW5kbGUgdG8gdGhlIGJ1bmRsZSBmaWxlCi0gICAgU3RyaW5nIG51bGxpZmllZFBhdGgg
PSBidW5kbGVQYXRoOworICAgIGF1dG8gbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGguY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKICAgICBGSUxFKiBidW5kbGUgPSAwOwotICAgIGlm
IChfd2ZvcGVuX3MoJmJ1bmRsZSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG51bGxpZmll
ZFBhdGgpLmRhdGEoKSwgVEVYVCgicitiIikpIHx8ICFidW5kbGUpIHsKKyAgICBpZiAoX3dmb3Bl
bl9zKCZidW5kbGUsIHdjaGFyRnJvbShudWxsaWZpZWRQYXRoLmRhdGEoKSksIFRFWFQoInIrYiIp
KSB8fCAhYnVuZGxlKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAl
cyB0byBnZXQgcmVzdW1lIGRhdGEiLCBidW5kbGVQYXRoLmFzY2lpKCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IDE1MzE1Y2E3MzVmZjJlN2FiNDM1MTcxZTZjMWJkZTYw
MzczMmNiZGUuLjk1MjQ2ZDRhMjk0ODM1ZWM4NjAzYjdlOTkzOTQ3NzRjNjVmMjMyMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNTks
NyArNTksNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZUludGVybmFsKExDSUQgdXNlckRl
ZmF1bHRMQ0lELCBjb25zdCBTdHJpbmcmIHVzZXJEZWZhdQogewogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGV4dHJhY3RMYW5ndWFnZUNvZGUobG9jYWxlKSwgdXNlckRlZmF1bHRMYW5n
dWFnZUNvZGUpKQogICAgICAgICByZXR1cm4gdXNlckRlZmF1bHRMQ0lEOwotICAgIHJldHVybiBM
b2NhbGVOYW1lVG9MQ0lEKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihsb2NhbGUpLmRhdGEo
KSwgMCk7CisgICAgcmV0dXJuIExvY2FsZU5hbWVUb0xDSUQod2NoYXJGcm9tKGxvY2FsZS5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIDApOwogfQogCiBzdGF0aWMgTENJ
RCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKQEAgLTY4LDcgKzY4
LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUpCiAgICAgY29uc3Qgc2l6ZV90IGxhbmd1YWdlQ29kZUJ1ZmZlclNpemUgPSA5OwogICAgIFdD
SEFSIGxvd2VyY2FzZUxhbmd1YWdlQ29kZVtsYW5ndWFnZUNvZGVCdWZmZXJTaXplXTsKICAgICA6
OkdldExvY2FsZUluZm8oTE9DQUxFX1VTRVJfREVGQVVMVCwgTE9DQUxFX1NJU082MzlMQU5HTkFN
RSwgbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlLCBsYW5ndWFnZUNvZGVCdWZmZXJTaXplKTsKLSAgICBT
dHJpbmcgdXNlckRlZmF1bHRMYW5ndWFnZUNvZGUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJp
bmcobG93ZXJjYXNlTGFuZ3VhZ2VDb2RlKTsKKyAgICBTdHJpbmcgdXNlckRlZmF1bHRMYW5ndWFn
ZUNvZGUobG93ZXJjYXNlTGFuZ3VhZ2VDb2RlKTsKIAogICAgIExDSUQgbGNpZCA9IExDSURGcm9t
TG9jYWxlSW50ZXJuYWwoTE9DQUxFX1VTRVJfREVGQVVMVCwgdXNlckRlZmF1bHRMYW5ndWFnZUNv
ZGUsIFN0cmluZyhsb2NhbGUpKTsKICAgICBpZiAoIWxjaWQpCkBAIC05NSw3ICs5NSw3IEBAIFN0
cmluZyBMb2NhbGVXaW46OmdldExvY2FsZUluZm9TdHJpbmcoTENUWVBFIHR5cGUpCiAgICAgaWYg
KGJ1ZmZlclNpemVXaXRoTlVMIDw9IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBW
ZWN0b3I8VUNoYXI+IGJ1ZmZlcihidWZmZXJTaXplV2l0aE5VTCk7Ci0gICAgOjpHZXRMb2NhbGVJ
bmZvKG1fbGNpZCwgdHlwZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZVdpdGhOVUwpOworICAg
IDo6R2V0TG9jYWxlSW5mbyhtX2xjaWQsIHR5cGUsIHdjaGFyRnJvbShidWZmZXIuZGF0YSgpKSwg
YnVmZmVyU2l6ZVdpdGhOVUwpOwogICAgIGJ1ZmZlci5zaHJpbmsoYnVmZmVyU2l6ZVdpdGhOVUwg
LSAxKTsKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCmluZGV4IDBmNDZjNWRjYWIyOWI3YjQ2
M2JiNmVjZDMxYjBlYjNiNzU4YzIyM2MuLjAyN2NkZGQzMmE3ZDU3YTMwOGI0MmI4ODgzZDJiNWIz
OTQxMDY4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiAjaWYgVVNFKENGKQogI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CkBAIC02NSw3ICs2Niw3IEBAIEJT
dHJpbmc6OkJTdHJpbmcoY29uc3QgU3RyaW5nJiBzKQogICAgIGlmIChzLmlzTnVsbCgpKQogICAg
ICAgICBtX2JzdHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJp
bmdMZW4oU3RyaW5nVmlldyhzKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSk7
CisgICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHdjaGFyRnJvbShTdHJpbmdWaWV3
KHMpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSk7CiB9CiAKIEJTdHJpbmc6
OkJTdHJpbmcoY29uc3QgVVJMJiB1cmwpCkBAIC03Myw3ICs3NCw3IEBAIEJTdHJpbmc6OkJTdHJp
bmcoY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgbV9ic3Ry
ID0gMDsKICAgICBlbHNlCi0gICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKFN0cmlu
Z1ZpZXcodXJsLnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdXJsLnN0cmluZygp
Lmxlbmd0aCgpKTsKKyAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4od2NoYXJGcm9t
KFN0cmluZ1ZpZXcodXJsLnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSksIHVybC5z
dHJpbmcoKS5sZW5ndGgoKSk7CiB9CiAKIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgQXRvbWljU3Ry
aW5nJiBzKQpAQCAtODEsNyArODIsNyBAQCBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IEF0b21pY1N0
cmluZyYgcykKICAgICBpZiAocy5pc051bGwoKSkKICAgICAgICAgbV9ic3RyID0gMDsKICAgICBl
bHNlCi0gICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKFN0cmluZ1ZpZXcocy5zdHJp
bmcoKSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpOworICAgICAgICBtX2Jz
dHIgPSBTeXNBbGxvY1N0cmluZ0xlbih3Y2hhckZyb20oU3RyaW5nVmlldyhzLnN0cmluZygpKS51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKSksIHMubGVuZ3RoKCkpOwogfQogCiAjaWYgVVNFKENGKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmNwcAppbmRleCAwZTQwODBiODU2NzZhMGE0NjFiYmY5NmJhMTczMjM1ZjViN2RiNjNjLi5h
MzNlODI3YzlkOGQwMTkwNDllNWY5ODgyNTRjYTg2YmEwMDc5NTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAt
MTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBib29sIGdldFdlYkxvY0RhdGEoY29uc3QgRHJhZ0RhdGFN
YXAqIGRhdGFPYmplY3QsIFN0cmluZyYgdXJsLCBTdHJpbmcqIHRpCiAgICAgaWYgKCFkYXRhT2Jq
ZWN0LT5jb250YWlucyhjZkhEcm9wRm9ybWF0KCktPmNmRm9ybWF0KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgd2NzY3B5KGZpbGVuYW1lLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIoZGF0YU9iamVjdC0+Z2V0KGNmSERyb3BGb3JtYXQoKS0+Y2ZGb3JtYXQpWzBdKS5kYXRhKCkp
OworICAgIHdjc2NweShmaWxlbmFtZSwgd2NoYXJGcm9tKGRhdGFPYmplY3QtPmdldChjZkhEcm9w
Rm9ybWF0KCktPmNmRm9ybWF0KVswXS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSkpOwogICAgIGlmIChfd2NzaWNtcChQYXRoRmluZEV4dGVuc2lvblcoZmlsZW5hbWUpLCBM
Ii51cmwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAKIApAQCAtMTQwLDEwICsxNDAsMTAg
QEAgc3RhdGljIGJvb2wgZ2V0V2ViTG9jRGF0YShjb25zdCBEcmFnRGF0YU1hcCogZGF0YU9iamVj
dCwgU3RyaW5nJiB1cmwsIFN0cmluZyogdGkKIAogICAgIGlmICh0aXRsZSkgewogICAgICAgICBQ
YXRoUmVtb3ZlRXh0ZW5zaW9uKGZpbGVuYW1lKTsKLSAgICAgICAgKnRpdGxlID0gbnVsbFRlcm1p
bmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKTsKKyAgICAgICAgKnRpdGxlID0gU3RyaW5nKGZp
bGVuYW1lKTsKICAgICB9CiAgICAgCi0gICAgdXJsID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3Ry
aW5nKHVybEJ1ZmZlcik7CisgICAgdXJsID0gU3RyaW5nKHVybEJ1ZmZlcik7CiAgICAgcmV0dXJu
IHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NSw3ICsxODUsNyBAQCBIR0xP
QkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
CiAKICAgICBpZiAoY2JEYXRhKSB7CiAgICAgICAgIFBXU1RSIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFBXU1RSPihHbG9iYWxMb2NrKGNiRGF0YSkpOwotICAgICAgICBfc253cHJpbnRmKGJ1ZmZlciwg
c2l6ZSwgTCIlc1xuJXMiLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobXV0YWJsZVVSTCku
ZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobXV0YWJsZVRpdGxlKS5kYXRhKCkp
OworICAgICAgICBfc253cHJpbnRmKGJ1ZmZlciwgc2l6ZSwgTCIlc1xuJXMiLCB3Y2hhckZyb20o
bXV0YWJsZVVSTC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIHdjaGFy
RnJvbShtdXRhYmxlVGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
KTsKICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgfQogICAgIHJldHVybiBjYkRh
dGE7CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBnZXRGaWxlRGVzY3JpcHRvckRhdGEoSURhdGFP
YmplY3QqIGRhdGFPYmplY3QsIGludCYgc2l6ZSwgU3RyaW5nJiBwYXRobmFtZSkKIAogICAgIEZJ
TEVHUk9VUERFU0NSSVBUT1IqIGZnZCA9IHN0YXRpY19jYXN0PEZJTEVHUk9VUERFU0NSSVBUT1Iq
PihHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpKTsKICAgICBzaXplID0gZmdkLT5mZ2RbMF0ubkZp
bGVTaXplTG93OwotICAgIHBhdGhuYW1lID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZn
ZC0+ZmdkWzBdLmNGaWxlTmFtZSk7CisgICAgcGF0aG5hbWUgPSBTdHJpbmcoZmdkLT5mZ2RbMF0u
Y0ZpbGVOYW1lKTsKIAogICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICA6OlJl
bGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKQEAgLTUyNSw5ICs1MjUsMTAgQEAgU3RyaW5nIGdldFVS
TChjb25zdCBEcmFnRGF0YU1hcCogZGF0YSwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmEKICAgICBpZiAoIWdldERhdGFNYXBJdGVtKGRhdGEsIGZpbGVuYW1lV0Zvcm1h
dCgpLCBzdHJpbmdEYXRhKSkKICAgICAgICAgZ2V0RGF0YU1hcEl0ZW0oZGF0YSwgZmlsZW5hbWVG
b3JtYXQoKSwgc3RyaW5nRGF0YSk7CiAKLSAgICBpZiAoc3RyaW5nRGF0YS5pc0VtcHR5KCkgfHwg
KCFQYXRoRmlsZUV4aXN0cyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3RyaW5nRGF0YSku
ZGF0YSgpKSAmJiAhUGF0aElzVU5DKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdHJpbmdE
YXRhKS5kYXRhKCkpKSkKKyAgICBhdXRvIHdjaGFyRGF0YSA9IHdjaGFyRnJvbShzdHJpbmdEYXRh
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICBpZiAoc3RyaW5n
RGF0YS5pc0VtcHR5KCkgfHwgKCFQYXRoRmlsZUV4aXN0cyh3Y2hhckRhdGEpICYmICFQYXRoSXNV
TkMod2NoYXJEYXRhKSkpCiAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBwYXRoQXNDRlN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciAqKXN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihzdHJpbmdEYXRhKS5kYXRhKCksIHdjc2xlbihzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIoc3RyaW5nRGF0YSkuZGF0YSgpKSkpOworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gcGF0aEFzQ0ZTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIgKil3Y2hhckRhdGEsIHdjc2xl
bih3Y2hhckRhdGEpKSk7CiAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgp
LCB1cmwpICYmIHRpdGxlKQogICAgICAgICAqdGl0bGUgPSB1cmw7CiAjZW5kaWYKQEAgLTc0Miw3
ICs3NDMsNyBAQCB2b2lkIGdldENGRGF0YShJRGF0YU9iamVjdCogZGF0YSwgRk9STUFURVRDKiBm
b3JtYXQsIFZlY3RvcjxTdHJpbmc+JiBkYXRhU3RyaW5ncwogICAgIGZvciAoVUlOVCBpID0gMDsg
aSA8IGZpbGVDb3VudDsgaSsrKSB7CiAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3As
IGksIGZpbGVuYW1lLCBXVEZfQVJSQVlfTEVOR1RIKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgZGF0YVN0cmluZ3MuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJU
b1N0cmluZyhmaWxlbmFtZSkpOworICAgICAgICBkYXRhU3RyaW5ncy5hcHBlbmQoU3RyaW5nKGZp
bGVuYW1lKSk7CiAgICAgfQogCiAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwpAQCAt
Nzk3LDcgKzc5OCw3IEBAIHZvaWQgc2V0Q0ZEYXRhKElEYXRhT2JqZWN0KiBkYXRhLCBGT1JNQVRF
VEMqIGZvcm1hdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFTCiAgICAgZHJvcEZpbGVzLT5w
RmlsZXMgPSBzaXplb2YoRFJPUEZJTEVTKTsKICAgICBkcm9wRmlsZXMtPmZXaWRlID0gVFJVRTsK
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBkYXRhU3RyaW5ncy5maXJzdCgpOwotICAgIHdjc2NweShy
ZWludGVycHJldF9jYXN0PExQV1NUUj4oZHJvcEZpbGVzICsgMSksIHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKKyAgICB3Y3NjcHkocmVpbnRlcnByZXRfY2Fz
dDxMUFdTVFI+KGRyb3BGaWxlcyArIDEpLCB3Y2hhckZyb20oZmlsZW5hbWUuY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKICAgICBHbG9iYWxVbmxvY2sobWVkaXVtLmhH
bG9iYWwpOwogICAgIGRhdGEtPlNldERhdGEoZm9ybWF0LCAmbWVkaXVtLCBGQUxTRSk7CiAgICAg
OjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDQ3OWUwY2FhZjczOTAxOTc4OTg0MGIwZjg3NmY2ZDRm
Nzk2NGIzZWUuLjE4M2RhNTc2ZjM2NGQ5MWVkMmI2MTE1MTc3ZjgxYWY4ZjM0MWQwMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMzcsNyArMzcs
NiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1OCw3ICsx
NTcsNyBAQCBWZWN0b3I8U3RyaW5nPiBEcmFnRGF0YTo6YXNGaWxlbmFtZXMoKSBjb25zdAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRmlsZXM7IGkrKykgewogICAgICAgICAg
ICAgaWYgKCFEcmFnUXVlcnlGaWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIFdURl9BUlJBWV9MRU5H
VEgoZmlsZW5hbWUpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKSk7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhmaWxlbmFtZSkpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRnJlZSB1cCBtZW1vcnkgZnJvbSBkcmFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDEyNTU0ODBiNDBhMjZhMjQxOGZhMjNhNmIx
MGRlNjg2NDRiOWRlNjEuLmUxYmMxYjdjMTczYjY0NzZlMGY4MGY1NzVhODcwNWE5MTBkY2QxNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC03
NCw4ICs3NCw4IEBAIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJh
Z0ltYWdlUmVmIGltYWdlLCBmbG9hdCkKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29u
Rm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewogICAgIFNI
RklMRUlORk8gc2hmaSB7IH07Ci0gICAgU3RyaW5nIGZuYW1lID0gZmlsZW5hbWU7Ci0gICAgaWYg
KEZBSUxFRChTSEdldEZpbGVJbmZvKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmbmFtZSku
ZGF0YSgpLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsICZzaGZpLCBzaXplb2Yoc2hmaSksIFNIR0ZJ
X0lDT04gfCBTSEdGSV9VU0VGSUxFQVRUUklCVVRFUykpKQorICAgIGF1dG8gZm5hbWUgPSBmaWxl
bmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOworICAgIGlmIChGQUlMRUQoU0hH
ZXRGaWxlSW5mbyh3Y2hhckZyb20oZm5hbWUuZGF0YSgpKSwgRklMRV9BVFRSSUJVVEVfTk9STUFM
LCAmc2hmaSwgc2l6ZW9mKHNoZmkpLCBTSEdGSV9JQ09OIHwgU0hHRklfVVNFRklMRUFUVFJJQlVU
RVMpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBJQ09OSU5GTyBpY29uSW5mbzsKQEAgLTEx
MSw3ICsxMTEsNyBAQCBzdGF0aWMgRm9udENhc2NhZGUgZHJhZ0xhYmVsRm9udChpbnQgc2l6ZSwg
Ym9vbCBib2xkLCBGb250UmVuZGVyaW5nTW9kZSByZW5kZXJpbgogCiAgICAgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKICAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoYm9sZCA/
IGJvbGRXZWlnaHRWYWx1ZSgpIDogbm9ybWFsV2VpZ2h0VmFsdWUoKSk7Ci0gICAgZGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtZXRyaWNzLmxmU21D
YXB0aW9uRm9udC5sZkZhY2VOYW1lKSk7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KFN0
cmluZyhtZXRyaWNzLmxmU21DYXB0aW9uRm9udC5sZkZhY2VOYW1lKSk7CiAgICAgZGVzY3JpcHRp
b24uc2V0U3BlY2lmaWVkU2l6ZSgoZmxvYXQpc2l6ZSk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29t
cHV0ZWRTaXplKChmbG9hdClzaXplKTsKICAgICBkZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2Rl
KHJlbmRlcmluZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01J
TUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4IGIzNTBmMWNjNzEyZWE4YzAzNWUyYzJkMmQwNjUw
MzZmOWQzZTUwZTMuLjAxMjU5MjI1NmI5NmJhYWUyYTAwNjhhZDU4NGZiY2NiNjhmMGU4ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdp
bi5jcHAKQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogICAgIERXT1JEIGNvbnRlbnRUeXBlU3RyTGVu
ID0gc2l6ZW9mKGNvbnRlbnRUeXBlU3RyKTsKICAgICBEV09SRCBrZXlUeXBlOwogCi0gICAgSFJF
U1VMVCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfQ0xBU1NFU19ST09ULCBzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoZXh0KS5kYXRhKCksIEwiQ29udGVudCBUeXBlIiwgJmtleVR5
cGUsIGNvbnRlbnRUeXBlU3RyLCAmY29udGVudFR5cGVTdHJMZW4pOworICAgIEhSRVNVTFQgcmVz
dWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0NMQVNTRVNfUk9PVCwgd2NoYXJGcm9tKGV4dC5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIEwiQ29udGVudCBUeXBlIiwg
JmtleVR5cGUsIGNvbnRlbnRUeXBlU3RyLCAmY29udGVudFR5cGVTdHJMZW4pOwogCiAgICAgaWYg
KHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIGtleVR5cGUgPT0gUkVHX1NaKQotICAgICAgICBy
ZXR1cm4gd2NoYXJUb1N0cmluZyhjb250ZW50VHlwZVN0ciwgY29udGVudFR5cGVTdHJMZW4gLyBz
aXplb2YoY29udGVudFR5cGVTdHJbMF0pIC0gMSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoY29u
dGVudFR5cGVTdHIsIGNvbnRlbnRUeXBlU3RyTGVuIC8gc2l6ZW9mKGNvbnRlbnRUeXBlU3RyWzBd
KSAtIDEpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAtNTYsMTAgKzU2LDEwIEBAIFN0
cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCiAgICAgRFdPUkQgZXh0U3RyTGVuID0gc2l6ZW9mKGV4dFN0cik7
CiAgICAgRFdPUkQga2V5VHlwZTsKIAotICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0UmVnaXN0cnlW
YWx1ZShIS0VZX0NMQVNTRVNfUk9PVCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgp
LmRhdGEoKSwgTCJFeHRlbnNpb24iLCAma2V5VHlwZSwgZXh0U3RyLCAmZXh0U3RyTGVuKTsKKyAg
ICBIUkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9DTEFTU0VTX1JPT1QsIHdj
aGFyRnJvbShwYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgTCJF
eHRlbnNpb24iLCAma2V5VHlwZSwgZXh0U3RyLCAmZXh0U3RyTGVuKTsKIAogICAgIGlmIChyZXN1
bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiBrZXlUeXBlID09IFJFR19TWikKLSAgICAgICAgcmV0dXJu
IHdjaGFyVG9TdHJpbmcoZXh0U3RyICsgMSwgZXh0U3RyTGVuIC8gc2l6ZW9mKGV4dFN0clswXSkg
LSAyKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhleHRTdHIgKyAxLCBleHRTdHJMZW4gLyBzaXpl
b2YoZXh0U3RyWzBdKSAtIDIpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGE1ZmQ5MzBhZTkx
YjkxN2I5Y2JhMDg2NGJiYTU1MzRlY2IyYzFlMTMuLjkzNmRjZjUxN2ExNjhjMzAzNzExMjhkNDkz
MWVlNDliMjRiYWVjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFz
dGVib2FyZEZpbGVSZWFkZXImIHJlYWRlcikKICAgICAgICAgZm9yIChVSU5UIGkgPSAwOyBpIDwg
ZmlsZUNvdW50OyBpKyspIHsKICAgICAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3As
IGksIGZpbGVuYW1lLCBXVEZfQVJSQVlfTEVOR1RIKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKG51bGxUZXJtaW5h
dGVkV0NoYXJUb1N0cmluZyhmaWxlbmFtZSkpOworICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxl
bmFtZShTdHJpbmcoZmlsZW5hbWUpKTsKICAgICAgICAgfQogCiAgICAgICAgIEdsb2JhbFVubG9j
ayhtZWRpdW0uaEdsb2JhbCk7CkBAIC01NTUsMjMgKzU1NSwyMiBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyhQV1NUUiBwc3osIHNpemVfdCBsZW5ndGgpCiAg
ICAgcHN6W3dyaXRlVG9dID0gMDsKIH0KIAotc3RhdGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZy
b21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBVQ2hhciogZXh0ZW5zaW9uLCBib29sIGlzTGluaykKK3N0YXRpYyBTdHJpbmcgZmlsZXN5c3Rl
bVBhdGhGcm9tVXJsT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGJvb2wgaXNMaW5rKQogewogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nTnVsbFRlcm1pbmF0b3IgPSBNQVhf
UEFUSCAtIDE7CiAgICAgYm9vbCB1c2VkVVJMID0gZmFsc2U7Ci0gICAgV0NIQVIgZnNQYXRoQnVm
ZmVyW01BWF9QQVRIXTsKKyAgICBVQ2hhciBmc1BhdGhCdWZmZXJbTUFYX1BBVEhdOwogICAgIGZz
UGF0aEJ1ZmZlclswXSA9IDA7Ci0gICAgaW50IGV4dGVuc2lvbkxlbiA9IGV4dGVuc2lvbiA/IGxz
dHJsZW4oZXh0ZW5zaW9uKSA6IDA7Ci0gICAgaW50IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4
dGVuc2lvbiA9IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ051bGxUZXJtaW5hdG9yIC0gZXh0ZW5z
aW9uTGVuOworICAgIGludCBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24gPSBmc1Bh
dGhNYXhMZW5ndGhFeGNsdWRpbmdOdWxsVGVybWluYXRvciAtIGV4dGVuc2lvbi5sZW5ndGgoKTsK
IAogICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNpemVfdCBsZW4gPSBzdGQ6
Om1pbjxzaXplX3Q+KHRpdGxlLmxlbmd0aCgpLCBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRl
bnNpb24pOwogICAgICAgICBTdHJpbmdWaWV3KHRpdGxlKS5zdWJzdHJpbmcoMCwgbGVuKS5nZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOwogICAgICAgICBmc1BhdGhCdWZm
ZXJbbGVuXSA9IDA7Ci0gICAgICAgIHBhdGhSZW1vdmVCYWRGU0NoYXJhY3RlcnMoZnNQYXRoQnVm
ZmVyLCBsZW4pOworICAgICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKHdjaGFyRnJvbShm
c1BhdGhCdWZmZXIpLCBsZW4pOwogICAgIH0KIAotICAgIGlmICghbHN0cmxlbihmc1BhdGhCdWZm
ZXIpKSB7CisgICAgaWYgKCF3Y3NsZW4od2NoYXJGcm9tKGZzUGF0aEJ1ZmZlcikpKSB7CiAgICAg
ICAgIFVSTCBrdXJsKFVSTCgpLCB1cmwpOwogICAgICAgICB1c2VkVVJMID0gdHJ1ZTsKICAgICAg
ICAgLy8gVGhlIGZpbGVuYW1lIGZvciBhbnkgY29udGVudCBiYXNlZCBkcmFnIG9yIGZpbGUgdXJs
IHNob3VsZCBiZSB0aGUgbGFzdCBlbGVtZW50IG9mIApAQCAtNTg3LDE4ICs1ODYsMTggQEAgc3Rh
dGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICAgICAgICAgIFN0cmluZ1ZpZXcodXJsKS5zdWJzdHJp
bmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOwogICAg
ICAgICB9CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKLSAgICAgICAgcGF0aFJlbW92
ZUJhZEZTQ2hhcmFjdGVycyhmc1BhdGhCdWZmZXIsIGxlbik7CisgICAgICAgIHBhdGhSZW1vdmVC
YWRGU0NoYXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7CiAgICAgfQogCi0g
ICAgaWYgKCFleHRlbnNpb24pCi0gICAgICAgIHJldHVybiBTdHJpbmcoc3RhdGljX2Nhc3Q8VUNo
YXIqPihmc1BhdGhCdWZmZXIpKTsKKyAgICBpZiAoZXh0ZW5zaW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyhmc1BhdGhCdWZmZXIpOwogCiAgICAgaWYgKCFpc0xpbmsgJiYgdXNl
ZFVSTCkgewotICAgICAgICBQYXRoUmVuYW1lRXh0ZW5zaW9uKGZzUGF0aEJ1ZmZlciwgZXh0ZW5z
aW9uKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KGZzUGF0aEJ1
ZmZlcikpOworICAgICAgICBQYXRoUmVuYW1lRXh0ZW5zaW9uKHdjaGFyRnJvbShmc1BhdGhCdWZm
ZXIpLCB3Y2hhckZyb20oZXh0ZW5zaW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoZnNQYXRoQnVmZmVyKTsKICAgICB9CiAK
LSAgICByZXR1cm4gbWFrZVN0cmluZyhzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KGZzUGF0aEJ1
ZmZlciksIGV4dGVuc2lvbik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoY29uc3RfY2FzdDxjb25z
dCBVQ2hhcio+KGZzUGF0aEJ1ZmZlciksIGV4dGVuc2lvbik7CiB9CiAKIC8vIHdyaXRlRmlsZVRv
RGF0YU9iamVjdCB0YWtlcyBvd25lcnNoaXAgb2YgZmlsZURlc2NyaXB0b3IgYW5kIGZpbGVDb250
ZW50CkBAIC02NTUsNyArNjU0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9i
amVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgU3RyaW5n
IHVybCA9IGt1cmwuc3RyaW5nKCk7CiAgICAgQVNTRVJUKHVybC5pc0FsbEFTQ0lJKCkpOyAvLyBV
Ukw6OnN0cmluZygpIGlzIFVSTCBlbmNvZGVkLgogCi0gICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVz
eXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgTCIuVVJMIiwgdHJ1ZSk7Cisg
ICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRs
ZVN0ciwgIi5VUkwiLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0
U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQg
PSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC02ODQsNyArNjgzLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93ID0gY29udGVudC5sZW5n
dGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNpemUgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZnNQYXRo
Lmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAg
IFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dp
dGhVcGNvbnZlcnQoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0
aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFy
RnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sodXJsRmlsZURl
c2NyaXB0b3IpOwogCiAgICAgY2hhciogZmlsZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KEdsb2JhbExvY2sodXJsRmlsZUNvbnRlbnQpKTsKQEAgLTkxNCw3ICs5MTMsNyBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBleHRlbnNpb24u
aW5zZXJ0KCIuIiwgMCk7Ci0gICAgZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRs
ZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRlbnNpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIGZhbHNlKTsKKyAgICBmc1BhdGggPSBmaWxlc3lzdGVtUGF0aEZyb21V
cmxPclRpdGxlKHVybCwgcHJlZmVycmVkVGl0bGUsIGV4dGVuc2lvbiwgZmFsc2UpOwogCiAgICAg
aWYgKGZzUGF0aC5sZW5ndGgoKSA8PSAwKSB7CiAgICAgICAgIEdsb2JhbFVubG9jayhtZW1PYmop
OwpAQCAtOTIzLDcgKzkyMiw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmls
ZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICB9CiAKICAg
ICBpbnQgbWF4U2l6ZSA9IHN0ZDo6bWluPGludD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlf
TEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5z
dWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmdkLT5mZ2Rb
MF0uY0ZpbGVOYW1lKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1heFNp
emUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmls
ZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIAogICAgIHJldHVybiBtZW1PYmo7
CkBAIC05NjEsOCArOTYwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250
ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8g
d2luZG93cyBkb2VzIG5vdCBlbmpveSBhIGxlYWRpbmcgc2xhc2ggb24gcGF0aHMKICAgICAgICAg
aWYgKGxvY2FsUGF0aFswXSA9PSAnLycpCiAgICAgICAgICAgICBsb2NhbFBhdGggPSBsb2NhbFBh
dGguc3Vic3RyaW5nKDEpOwotICAgICAgICBhdXRvIGxvY2FsUGF0aFdpZGUgPSBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIobG9jYWxQYXRoKTsKLSAgICAgICAgTFBDV1NUUiBsb2NhbFBhdGhT
dHIgPSBsb2NhbFBhdGhXaWRlLmRhdGEoKTsKKyAgICAgICAgTFBDV1NUUiBsb2NhbFBhdGhTdHIg
PSB3Y2hhckZyb20obG9jYWxQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0
YSgpKTsKICAgICAgICAgaWYgKGxvY2FsUGF0aFN0ciAmJiB3Y3NsZW4obG9jYWxQYXRoU3RyKSAr
IDEgPCBNQVhfUEFUSCkKICAgICAgICAgICAgIHdjc2NweV9zKGZpbGVQYXRoLCBNQVhfUEFUSCwg
bG9jYWxQYXRoU3RyKTsKICAgICAgICAgZWxzZQpAQCAtOTcyLDcgKzk3MCw3IEBAIHN0YXRpYyBI
R0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBm
aWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIFdDSEFSIGV4dGVuc2lvbltNQVhfUEFUSF07CiAgICAg
ICAgIGlmICghOjpHZXRUZW1wUGF0aChXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwgdGVtcFBh
dGgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghOjpQYXRoQXBwZW5kKHRl
bXBQYXRoLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZU5hbWUpLmRhdGEoKSkpCisg
ICAgICAgIGlmICghOjpQYXRoQXBwZW5kKHRlbXBQYXRoLCB3Y2hhckZyb20oZmlsZU5hbWUuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICBMUENXU1RSIGZvdW5kRXh0ZW5zaW9uID0gOjpQYXRoRmluZEV4dGVuc2lv
bih0ZW1wUGF0aCk7CiAgICAgICAgIGlmIChmb3VuZEV4dGVuc2lvbikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcAppbmRleCBmZDY4
MDZlZmQ5M2Y2ZjY2YjU4MDk5ZmM1MGE4MzE2OGM2NTI5MTVkLi5iMDBlMjZjOWVlNzQ2OGY0NTI2
N2I2YTQzODYwNTY2MDVhZjEwNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcApAQCAtNjcsOCArNjcsOCBAQCBTdHJpbmcgc2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJp
bmcmIGNoYWxsZW5nZQogICAgICAgICBTdHJpbmcgbG9jYWxDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7
CiAKICAgICAgICAgLy8gV2luZG93cyBBUEkgd29uJ3Qgd3JpdGUgdG8gb3VyIGJ1ZmZlciwgYWx0
aG91Z2ggaXQncyBub3QgZGVjbGFyZWQgd2l0aCBjb25zdC4KLSAgICAgICAgYXV0byBsb2NhbENo
YWxsZW5nZVdpZGUgPSBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobG9jYWxDaGFsbGVuZ2Up
OwotICAgICAgICByZXF1ZXN0SW5mby5wd3N6Q2hhbGxlbmdlU3RyaW5nID0gY29uc3RfY2FzdDx3
Y2hhcl90Kj4obG9jYWxDaGFsbGVuZ2VXaWRlLmRhdGEoKSk7CisgICAgICAgIGF1dG8gbG9jYWxD
aGFsbGVuZ2VXaWRlID0gbG9jYWxDaGFsbGVuZ2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKTsKKyAgICAgICAgcmVxdWVzdEluZm8ucHdzekNoYWxsZW5nZVN0cmluZyA9IGNvbnN0X2Nh
c3Q8d2NoYXJfdCo+KHdjaGFyRnJvbShsb2NhbENoYWxsZW5nZVdpZGUuZGF0YSgpKSk7CiAKICAg
ICAgICAgQ1JZUFRfQUxHT1JJVEhNX0lERU5USUZJRVIgc2lnbkFsZ28geyB9OwogICAgICAgICBz
aWduQWxnby5wc3pPYmpJZCA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHN6T0lEX1JTQV9TSEExUlNBKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5k
ZXggNWJkYWJiNjI4MGVkYTI5NzQyYzk2NmQ1MGVkM2VlZjBhYTFhMDc0OC4uYmMzNDQyZjJkNWJm
OTlkNjk5Nzg3MGQxMTUwMGQwNDQ4OWEzNmE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBTdHJpbmcgbnVs
bGlmaWVkUGF0aCA9IGZpbGVQYXRoOwotICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmls
ZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG51bGxpZmllZFBhdGgpLmRhdGEoKSwgR0VO
RVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklC
VVRFX05PUk1BTCwgMCk7CisgICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyh3Y2hh
ckZyb20obnVsbGlmaWVkUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxF
X0FUVFJJQlVURV9OT1JNQUwsIDApOwogICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURfSEFO
RExFX1ZBTFVFKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0
byBjcmVhdGUgc2hhcmVkIGJ1ZmZlciwgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFz
Y2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggNmU0MTM4
MTY0YmU0OGIwZjMyMDFhMDFiNmY4YjkyMjRkYjM1NmI2YS4uMjhhMWU0MWFhN2VlMDNjZDBkY2E5
MzU4YTU3ZDNhMWYzYzZmOTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIAogI2lmIEVOQUJMRShWSURFTykKQEAg
LTMxOCw3ICszMTcsNyBAQCBDb2xvciBSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDbwogc3RhdGljIHZvaWQgZmls
bEZvbnREZXNjcmlwdGlvbihGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24s
IExPR0ZPTlQmIGxvZ0ZvbnQsIGZsb2F0IGZvbnRTaXplKQogeyAgICAKICAgICBmb250RGVzY3Jp
cHRpb24uc2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseShudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobG9nRm9udC5sZkZhY2VOYW1lKSk7
CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShTdHJpbmcobG9nRm9udC5sZkZhY2VO
YW1lKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOwog
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQobG9nRm9udC5sZldlaWdodCA+PSA3MDAgPyBi
b2xkV2VpZ2h0VmFsdWUoKSA6IG5vcm1hbFdlaWdodFZhbHVlKCkpOyAvLyBGSVhNRTogVXNlIHJl
YWwgd2VpZ2h0LgogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhsb2dGb250LmxmSXRh
bGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2lu
LmNwcAppbmRleCBlYmIzNzM4NGMzMzdiZjEyZjVkNmRlOGE2YjQ2ZjZmMDQ4MWM3OGY5Li5iMGY5
MmI0OWNkZDc3MGNiMTQ2MjI2ZDA4MjRlZTA4YTFiNjJiYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dD
aGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC00Myw3ICs0NCw3IEBA
IGJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExF
JiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAgICAgIHVuc2lnbmVkIHVuaXF1ZUlEID0gcmFu
ZG9tTnVtYmVyKCkgKiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CiAgICAg
ICAgIHBpcGVOYW1lID0gbWFrZVN0cmluZygiXFxcXC5cXHBpcGVcXGNvbS5hcHBsZS5XZWJLaXQu
IiwgaGV4KHVuaXF1ZUlEKSk7CiAKLSAgICAgICAgc2VydmVySWRlbnRpZmllciA9IDo6Q3JlYXRl
TmFtZWRQaXBlKHBpcGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
LAorICAgICAgICBzZXJ2ZXJJZGVudGlmaWVyID0gOjpDcmVhdGVOYW1lZFBpcGUod2NoYXJGcm9t
KHBpcGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwKICAgICAg
ICAgICAgIFBJUEVfQUNDRVNTX0RVUExFWCB8IEZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNF
IHwgRklMRV9GTEFHX09WRVJMQVBQRUQsCiAgICAgICAgICAgICBQSVBFX1RZUEVfTUVTU0FHRSB8
IFBJUEVfUkVBRE1PREVfTUVTU0FHRSwgMSwgaW5saW5lTWVzc2FnZU1heFNpemUsIGlubGluZU1l
c3NhZ2VNYXhTaXplLAogICAgICAgICAgICAgMCwgMCk7CkBAIC01Miw3ICs1Myw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2
ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAgaWYgKCFzZXJ2ZXJJZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBjbGllbnRJZGVudGlmaWVyID0gOjpDcmVhdGVGaWxlVyhwaXBl
TmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgR0VORVJJQ19SRUFE
IHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX09WRVJMQVBQ
RUQsIDApOworICAgIGNsaWVudElkZW50aWZpZXIgPSA6OkNyZWF0ZUZpbGVXKHdjaGFyRnJvbShw
aXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIEdFTkVSSUNf
UkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfRkxBR19PVkVS
TEFQUEVELCAwKTsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpIHsKICAgICAgICAgOjpDbG9z
ZUhhbmRsZShzZXJ2ZXJJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vd2luL01vZHVsZVdpbi5jcHAKaW5kZXggN2I2NWQ3Nzg2OTE2NjJmZGI1
ZmY2MGQ3MzY4OWQyY2VjYzliMzJmYy4uMGFmZWIzOTkwMzM5MWUyYzNiOThkNmIzZDUxYWI5YjZm
ZDZjZTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwCkBAIC0y
OSwxMyArMjksMTQgQEAKIAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIE1vZHVsZTo6bG9hZCgpCiB7Ci0gICAgQVNT
RVJUKCE6OlBhdGhJc1JlbGF0aXZlVyhtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpKTsKLSAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFcobV9wYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJF
RF9TRUFSQ0hfUEFUSCk7CisgICAgQVNTRVJUKCE6OlBhdGhJc1JlbGF0aXZlVyh3Y2hhckZyb20o
bV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpOworICAgIG1f
bW9kdWxlID0gOjpMb2FkTGlicmFyeUV4Vyh3Y2hhckZyb20obV9wYXRoLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BB
VEgpOwogICAgIHJldHVybiBtX21vZHVsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAppbmRl
eCA1NzdlNDY5Y2FkZTExMWJkMTQ4NGNjODE0MGE0ZDM0MmQ1NTg3YjYzLi4wOTc4OWNiMzYyMWM0
ODgyZGUyNDA2YmZmZmU0YWNhZTcxMDI1NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApAQCAt
ODUsMTQgKzg1LDE0IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAg
ICBjb21tYW5kTGluZUJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihjbGllbnRJZGVudGlmaWVyKSkpOwogICAgIGNvbW1hbmRMaW5lQnVpbGRl
ci5hcHBlbmQoJ1wwJyk7CiAKLSAgICBhdXRvIGNvbW1hbmRMaW5lID0gc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGNvbW1hbmRMaW5lQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBhdXRvIGNv
bW1hbmRMaW5lID0gY29tbWFuZExpbmVCdWlsZGVyLnRvU3RyaW5nKCkuY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKTsKIAogICAgIFNUQVJUVVBJTkZPIHN0YXJ0dXBJbmZvIHsgfTsKICAg
ICBzdGFydHVwSW5mby5jYiA9IHNpemVvZihzdGFydHVwSW5mbyk7CiAgICAgc3RhcnR1cEluZm8u
ZHdGbGFncyA9IFNUQVJURl9VU0VTSE9XV0lORE9XOwogICAgIHN0YXJ0dXBJbmZvLndTaG93V2lu
ZG93ID0gU1dfSElERTsKICAgICBQUk9DRVNTX0lORk9STUFUSU9OIHByb2Nlc3NJbmZvcm1hdGlv
biB7IH07Ci0gICAgQk9PTCByZXN1bHQgPSA6OkNyZWF0ZVByb2Nlc3MoMCwgY29tbWFuZExpbmUu
ZGF0YSgpLCAwLCAwLCB0cnVlLCAwLCAwLCAwLCAmc3RhcnR1cEluZm8sICZwcm9jZXNzSW5mb3Jt
YXRpb24pOworICAgIEJPT0wgcmVzdWx0ID0gOjpDcmVhdGVQcm9jZXNzKDAsIHdjaGFyRnJvbShj
b21tYW5kTGluZS5kYXRhKCkpLCAwLCAwLCB0cnVlLCAwLCAwLCAwLCAmc3RhcnR1cEluZm8sICZw
cm9jZXNzSW5mb3JtYXRpb24pOwogCiAgICAgLy8gV2UgY2FuIG5vdyBjbG9zZSB0aGUgY2xpZW50
IGlkZW50aWZpZXIgaGFuZGxlLgogICAgIDo6Q2xvc2VIYW5kbGUoY2xpZW50SWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQ
cm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQ
cm94eVdpbi5jcHAKaW5kZXggYWY0MzVjMTY1ZTY0YWU1NWU5ODdmZTM5YzgyMmQ2NGE5YmQwZDIw
ZC4uNTZjZDhlYzIxYjU2YjEyN2Y3NTJmMmY4NWRkOGY3ZDJkMTA2NGM5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTcxLDcgKzcyLDcgQEAgc3Rh
dGljIHZvaWQgY3JlYXRlTWVudUl0ZW0oY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSAmY29u
dGV4dCwgSE1FTlUgbWVudSwgY28KICAgICBzd2l0Y2ggKGRhdGEudHlwZSgpKSB7CiAgICAgY2Fz
ZSBBY3Rpb25UeXBlOgogICAgIGNhc2UgQ2hlY2thYmxlQWN0aW9uVHlwZToKLSAgICAgICAgOjpB
cHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfU1RSSU5HLCBkYXRhLmFjdGlvbigpLCBkYXRhLnRp
dGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOworICAgICAgICA6
OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGRhdGEuYWN0aW9uKCksIHdjaGFy
RnJvbShkYXRhLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXBhcmF0b3JUeXBlOgogICAgICAgICA6OkFw
cGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TRVBBUkFUT1IsIGRhdGEuYWN0aW9uKCksIG51bGxw
dHIpOwpAQCAtNzksNyArODAsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVNZW51SXRlbShjb25zdCBD
b250ZXh0TWVudUNvbnRleHREYXRhICZjb250ZXh0LCBITUVOVSBtZW51LCBjbwogICAgIGNhc2Ug
U3VibWVudVR5cGU6CiAgICAgICAgIEhNRU5VIHN1Ym1lbnUgPSBjcmVhdGVNZW51KGNvbnRleHQp
OwogICAgICAgICBwb3B1bGF0ZShjb250ZXh0LCBzdWJtZW51LCBkYXRhLnN1Ym1lbnUoKSk7Ci0g
ICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1BPUFVQLCAoVUlOVF9QVFIpc3Vi
bWVudSwgZGF0YS50aXRsZSgpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KTsKKyAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfUE9QVVAsIChVSU5UX1BU
UilzdWJtZW51LCB3Y2hhckZyb20oZGF0YS50aXRsZSgpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCAxNGIxZDlmYTgxYThmMGQzNDI2YjRmYjUy
ZTJkNjI2NWJiY2I5OWFhLi41ZGY2NTViNzM2MzY4MjQ4M2FmMTBhNjFlOWU5YjMxYTI0MTUyY2Uz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC01OSw2ICs1OSw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODc1LDcgKzg3Niw3IEBAIHZvaWQg
V2ViVmlldzo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAgICAgIGluZm8u
dUZsYWdzID0gVFRGX0lESVNIV05EOwogICAgICAgICBpbmZvLnVJZCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VUlOVF9QVFI+KG5hdGl2ZVdpbmRvdygpKTsKICAgICAgICAgVmVjdG9yPFVDaGFyPiB0b29s
VGlwQ2hhcmFjdGVycyA9IHRvb2xUaXAuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsg
Ly8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3VnaCB0byBtYWtlIHRoZSBTZW5kTWVzc2FnZSBjYWxs
Ci0gICAgICAgIGluZm8ubHBzelRleHQgPSBjb25zdF9jYXN0PFVDaGFyKj4odG9vbFRpcENoYXJh
Y3RlcnMuZGF0YSgpKTsKKyAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8d2NoYXJf
dCo+KHdjaGFyRnJvbSh0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpKTsKICAgICAgICAgOjpTZW5k
TWVzc2FnZShtX3Rvb2xUaXBXaW5kb3csIFRUTV9VUERBVEVUSVBURVhULCAwLCByZWludGVycHJl
dF9jYXN0PExQQVJBTT4oJmluZm8pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRs
ZVdpbi5jcHAKaW5kZXggZjk4N2ViN2EzMTJjYTYyMjVjODVlOWFiMWU3OWVmMDVlMmRiZjYyMS4u
MWVhYjYzM2ZmMDJjZDI3Y2NhMmIzMWJjNjZkMzdlODYzMzgyNDRmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9J
bmplY3RlZEJ1bmRsZVdpbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogewot
ICAgIEhNT0RVTEUgbGliID0gOjpMb2FkTGlicmFyeShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIobV9wYXRoKS5kYXRhKCkpOworICAgIEhNT0RVTEUgbGliID0gOjpMb2FkTGlicmFyeSh3Y2hh
ckZyb20obV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiAg
ICAgaWYgKCFsaWIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDU0MjQ3N2E5ZTllMGE5NDJkNjViZTBlZTJj
OTBiNGQyOTY5YTZjMzguLmUwYTc2NWUzNmU5YzdjYzc5ZjlhZDA5Y2Y2Njc2YWFhMGJjOTM5Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKQEAgLTUyLDYg
KzUyLDcgQEAKICNpbmNsdWRlIDxvbGVhY2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MTQzLDcgKzE0NCw3IEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9hdHRyaWJ1dGUoX0lu
XyBCU1RSIGtleSwgX091dF8gVkFSSUFOVCogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIEF0b21pY1N0cmluZyBrZXlBdG9taWMoa2V5LCA6
OlN5c1N0cmluZ0xlbihrZXkpKTsKKyAgICBBdG9taWNTdHJpbmcga2V5QXRvbWljKHVjaGFyRnJv
bShrZXkpLCA6OlN5c1N0cmluZ0xlbihrZXkpKTsKIAogICAgIGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZShrZXlBdG9taWMsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NPTVBy
b3BlcnR5QmFnLmgKaW5kZXggMjE2NWEyMzU2ZDllYWEyY2FhMDk0NDFkMThmYTgzZGVmOTRiOWZk
NS4uMWFhOTRiYTc2MmIyYTk1MzE2MDY0ZWEzMjgxZTAzOGNiZjY4NzlkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCkBAIC0yMywxNiArMjMsMTQgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ09NUHJvcGVydHlCYWdfaAotI2RlZmluZSBDT01Q
cm9wZXJ0eUJhZ19oCisjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNPTVZhcmlhbnRTZXR0ZXIu
aCIKICNpbmNsdWRlIDxvY2lkbC5oPgogI2luY2x1ZGUgPHVua253bi5oPgotCiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotI2luY2x1ZGUg
IkNPTVZhcmlhbnRTZXR0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBLZXlUeXBl
ID0gdHlwZW5hbWUgV1RGOjpTdHJpbmcsIHR5cGVuYW1lIEhhc2hUeXBlID0gdHlwZW5hbWUgV1RG
OjpTdHJpbmdIYXNoPgogY2xhc3MgQ09NUHJvcGVydHlCYWcgZmluYWwgOiBwdWJsaWMgSVByb3Bl
cnR5QmFnLCBwdWJsaWMgSVByb3BlcnR5QmFnMiB7CkBAIC0yMjAsNyArMjE4LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhh
c2hUeXBlPjo6R2V0UHJvcGUKICAgICAgICAgcFByb3BCYWdbal0ucHN0ck5hbWUgPSAoTFBPTEVT
VFIpQ29UYXNrTWVtQWxsb2Moc2l6ZW9mKHdjaGFyX3QpKihjdXJyZW50LT5rZXkubGVuZ3RoKCkr
MSkpOwogICAgICAgICBpZiAoIXBQcm9wQmFnW2pdLnBzdHJOYW1lKQogICAgICAgICAgICAgcmV0
dXJuIEVfT1VUT0ZNRU1PUlk7Ci0gICAgICAgIHdjc2NweV9zKHBQcm9wQmFnW2pdLnBzdHJOYW1l
LCBjdXJyZW50LT5rZXkubGVuZ3RoKCkrMSwgc3RhdGljX2Nhc3Q8U3RyaW5nPihjdXJyZW50LT5r
ZXkpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICAgICAgd2Nz
Y3B5X3MocFByb3BCYWdbal0ucHN0ck5hbWUsIGN1cnJlbnQtPmtleS5sZW5ndGgoKSsxLCB3Y2hh
ckZyb20oY3VycmVudC0+a2V5LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSk7CiAgICAgICAgICsrKnBjUHJvcGVydGllczsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CkBA
IC0yMzEsNSArMjI5LDMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJh
ZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6TG9hZE9iamUKIHsKICAgICByZXR1cm4g
RV9OT1RJTVBMOwogfQotCi0jZW5kaWYgLy8gQ09NUHJvcGVydHlCYWdfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IGM1ODgwZWE0ZGQ4NTJiNWMwMGRk
YWIzYzgyNWQ2YTlmNmNmMDgzY2YuLmVhZGEzZTZiYzU1YzAwMTdmZWM5ZjBlYzE5NThkOWM0MWM3
N2VmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAg
LTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJET01FdmVudHNDbGFzc2VzLmgiCiAjaW5jbHVkZSAi
RE9NSFRNTENsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJLaXRHcmFwaGljcy5oIgotCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BdHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9DT01QdHIuaD4KQEAgLTU2LDggKzU1LDkgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlclRyZWVBc1RleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbEludG9WaWV3T3B0
aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3R5bGVkRWxlbWVudC5oPgotCiAjaW5jbHVkZSA8
aW5pdGd1aWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
KwogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4RTIzRX0KIERFRklORV9HVUlE
KElJRF9ET01FbGVtZW50LCAweDNiMGMwZWZmLCAweDQ3OGIsIDB4NGIwYiwgMHg4MiwgMHg5MCwg
MHhkMiwgMHgzMiwgMHgxZSwgMHg4LCAweGUyLCAweDNlKTsKIApAQCAtNDE0LDcgKzQxNCw3IEBA
IEhSRVNVTFQgRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQoX0luXyBCU1RSIC8qdGV4dCovKQogSFJF
U1VMVCBET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJ
RE9NRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIEJPT0wgdXNlQ2FwdHVyZSkKIHsKICAgICBhdXRv
IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBt
X25vZGUtPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNh
cHR1cmUpOworICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih1Y2hhckZyb20odHlwZSksIFdU
Rk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAogICAgIHJldHVybiBTX09LOwogfQpA
QCAtNDI2LDcgKzQyNiw3IEBAIEhSRVNVTFQgRE9NTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihf
SW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVuZXIqCiAgICAgaWYgKCFtX25v
ZGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0byB3ZWJMaXN0ZW5lciA9IFdlYkV2
ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV9ub2RlLT5yZW1vdmVFdmVudExp
c3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBtX25vZGUtPnJlbW92
ZUV2ZW50TGlzdGVuZXIodWNoYXJGcm9tKHR5cGUpLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTkyNCw3ICs5MjQsNyBAQCBIUkVTVUxUIERPTVdp
bmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50
TGlzdGVuZXIqCiAgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAg
ICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsK
LSAgICBtX3dpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBXVEZNb3ZlKHdlYkxpc3RlbmVy
KSwgdXNlQ2FwdHVyZSk7CisgICAgbV93aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIodWNoYXJGcm9t
KHR5cGUpLCBXVEZNb3ZlKHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTkzNSw3ICs5MzUsNyBAQCBIUkVTVUxUIERPTVdpbmRvdzo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVuZQogICAg
IGlmICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0byB3ZWJMaXN0
ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV93aW5kb3ct
PnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAg
IG1fd2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKHVjaGFyRnJvbSh0eXBlKSwgd2ViTGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMjkyLDcgKzEyOTIs
NyBAQCBIUkVTVUxUIERPTUVsZW1lbnQ6OmZvbnQoX091dF8gV2ViRm9udERlc2NyaXB0aW9uKiB3
ZWJGb250RGVzY3JpcHRpb24pCiAgICAgVUNoYXIqIGZhbWlseUNoYXJhY3RlcnNCdWZmZXIgPSBu
ZXcgVUNoYXJbZmFtaWx5Lmxlbmd0aCgpXTsKICAgICBTdHJpbmdWaWV3KGZhbWlseS5zdHJpbmco
KSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlcik7CiAK
LSAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZhbWlseUNoYXJhY3RlcnNCdWZmZXI7
CisgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHkgPSB3Y2hhckZyb20oZmFtaWx5Q2hhcmFj
dGVyc0J1ZmZlcik7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHlMZW5ndGggPSBmYW1p
bHkubGVuZ3RoKCk7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5zaXplID0gZm9udERlc2NyaXB0
aW9uLmNvbXB1dGVkU2l6ZSgpOwogICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+Ym9sZCA9IGlzRm9u
dFdlaWdodEJvbGQoZm9udERlc2NyaXB0aW9uLndlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCAzY2YzOGI0NTY2M2VlNWU4OWY0OTlhZjY3
NzEyYmMzOWM3YzVhNjM5Li40YzFmZjYzYmRmNjkwM2RkMDIwNTNhY2I5ZWY5OGZhMGJkM2JkY2Iw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwCkBAIC0xMjI4
LDcgKzEyMjgsNyBAQCBIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRm9yVXNl
cihfSW5fIEJTVFIgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1f
ZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwotICAgIGlucHV0RWxlbWVudC5zZXRWYWx1
ZUZvclVzZXIoU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFyKj4odmFsdWUpLCBTeXNTdHJpbmdMZW4o
dmFsdWUpKSk7CisgICAgaW5wdXRFbGVtZW50LnNldFZhbHVlRm9yVXNlcihTdHJpbmcodmFsdWUs
IFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTMyNiw3
ICsxMzI2LDcgQEAgSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpyZXBsYWNlQ2hhcmFjdGVy
c0luUmFuZ2UoaW50IHN0YXJ0VGFyZ2V0LCBpbnQgZW5kVGEKICAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVtZW50KTsK
IAogICAgIFN0cmluZyBuZXdWYWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZSgpOwotICAgIFN0cmlu
ZyB3ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPihyZXBsYWNlbWVu
dFN0cmluZyksIFN5c1N0cmluZ0xlbihyZXBsYWNlbWVudFN0cmluZykpOworICAgIFN0cmluZyB3
ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcocmVwbGFjZW1lbnRTdHJpbmcsIFN5c1N0cmluZ0xlbihy
ZXBsYWNlbWVudFN0cmluZykpOwogICAgIG5ld1ZhbHVlLnJlcGxhY2Uoc3RhcnRUYXJnZXQsIGVu
ZFRhcmdldCAtIHN0YXJ0VGFyZ2V0LCB3ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcpOwogICAgIGlu
cHV0RWxlbWVudC5zZXRWYWx1ZShuZXdWYWx1ZSk7CiAgICAgaW5wdXRFbGVtZW50LnNldFNlbGVj
dGlvblJhbmdlKGluZGV4LCBuZXdWYWx1ZS5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IDgxNGUy
YmI2ZGMzOTFmYzJmZmExYTk1YjY5ZTQ2ZDQ1ODBjMDM2NTMuLmZiZWViODkwYTcyYzljZWVhMDE1
Y2QxMTNiYjI3NDg2NTc3MWJhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeShIS0VZIHJvb3RLZXksIEhh
c2hTZXQ8U3RyaW5nPiYgcGF0CiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUyB8
fCB0eXBlICE9IFJFR19TWikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHBhdGhz
LmFkZCh3Y2hhclRvU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXplIC8gc2l6ZW9mKFdDSEFSKSAt
IDEpKTsKKyAgICAgICAgcGF0aHMuYWRkKFN0cmluZyhwYXRoU3RyLCBwYXRoU3RyU2l6ZSAvIHNp
emVvZihXQ0hBUikgLSAxKSk7CiAgICAgfQogCiAgICAgUmVnQ2xvc2VLZXkoa2V5KTsKQEAgLTgz
LDcgKzgzLDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9y
aWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBkaXJlY3Rv
cnkgOiBtX3BsdWdpbkRpcmVjdG9yaWVzKSB7CiAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gZGly
ZWN0b3J5ICsgIlxcKiI7CiAKLSAgICAgICAgaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIocGF0dGVybikuZGF0YSgpLCAmZmluZEZpbGVEYXRhKTsKKyAg
ICAgICAgaEZpbmQgPSBGaW5kRmlyc3RGaWxlVyh3Y2hhckZyb20ocGF0dGVybi5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksICZmaW5kRmlsZURhdGEpOwogCiAgICAgICAg
IGlmIChoRmluZCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0lu
RGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgIGlm
IChmaW5kRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9S
WSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGZpbGVu
YW1lID0gd2NoYXJUb1N0cmluZyhmaW5kRmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmluZEZp
bGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lKGZpbmRGaWxl
RGF0YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAgICAg
ICAgICBpZiAoIShzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAi
bnAiKSAmJiBmaWxlbmFtZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJkbGwiKSkKICAgICAg
ICAgICAgICAgICAmJiAhKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAi
cGx1Z2luLmRsbCIpICYmIGRpcmVjdG9yeS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJzaG9j
a3dhdmUgMTAiKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xODAsMTEgKzE4MCwx
MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1Jf
U1VDQ0VTUykKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgU3RyaW5nIGV4
dGVuc2lvbnNQYXRoID0gd2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lv
bnMiOworICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKG5hbWUsIG5h
bWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CiAgICAgICAgICAgICBIS0VZIGV4dGVuc2lvbnNLZXk7
CiAKICAgICAgICAgICAgIC8vIFRyeSBvcGVuaW5nIHRoZSBrZXkKLSAgICAgICAgICAgIHJlc3Vs
dCA9IFJlZ09wZW5LZXlFeChrZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHRlbnNp
b25zUGF0aCkuZGF0YSgpLCAwLCBLRVlfUkVBRCwgJmV4dGVuc2lvbnNLZXkpOworICAgICAgICAg
ICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwgd2NoYXJGcm9tKGV4dGVuc2lvbnNQYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgS0VZX1JFQUQsICZleHRl
bnNpb25zS2V5KTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTKSB7
CiAgICAgICAgICAgICAgICAgLy8gTm93IGdldCB0aGUgcGx1Z2lucyBkaXJlY3RvcnkKQEAgLTE5
NSw3ICsxOTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjdG9y
aWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBSZWdRdWVyeVZhbHVlRXgoZXh0ZW5zaW9uc0tleSwgVEVYVCgiUGx1Z2lucyIpLCAwLCAmdHlw
ZSwgKExQQllURSkmcGx1Z2luc0RpcmVjdG9yeVN0ciwgJnBsdWdpbnNEaXJlY3RvcnlTaXplKTsK
IAogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB0eXBlID09
IFJFR19TWikKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9T
dHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2Yo
V0NIQVIpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3Ry
aW5nKHBsdWdpbnNEaXJlY3RvcnlTdHIsIHBsdWdpbnNEaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdD
SEFSKSAtIDEpKTsKIAogICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGV4dGVuc2lvbnNLZXkp
OwogICAgICAgICAgICAgfQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVj
dG9yCiAgICAgRFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6ZSA9IDo6RXhwYW5kRW52aXJvbm1lbnRT
dHJpbmdzVyhURVhUKCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiKSwgcGx1Z2luRGly
ZWN0b3J5U3RyLCBXVEZfQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVjdG9yeVN0cikpOwogCiAgICAg
aWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBsdWdpbkRpcmVjdG9yeVNpemUgPD0gV1RG
X0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIpKQotICAgICAgICBkaXJlY3Rvcmllcy5h
cHBlbmQod2NoYXJUb1N0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNp
emUgLSAxKSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luRGlyZWN0
b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOwogCiAgICAgRFdPUkQgdHlwZTsKICAg
ICBXQ0hBUiBpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHJbX01BWF9QQVRIXTsKQEAgLTIyMSw3ICsy
MjEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGly
ZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcgogICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0
UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIEwiU29mdHdhcmVcXE1pY3Jvc29mdFxc
TWVkaWFQbGF5ZXIiLCBMIkluc3RhbGxhdGlvbiBEaXJlY3RvcnkiLCAmdHlwZSwgJmluc3RhbGxh
dGlvbkRpcmVjdG9yeVN0ciwgJmluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUpOwogCiAgICAgaWYg
KHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQotICAgICAgICBkaXJl
Y3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsIGlu
c3RhbGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBk
aXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0ciwgaW5zdGFs
bGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4m
IGRpcmVjdG9yaWVzKQpAQCAtMjQ1LDEwICsyNDUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMp
CiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIFZlY3RvcjxpbnQ+IGFjcm9iYXRWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3Ry
aW5nKHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBh
Y3JvYmF0VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikp
OwogICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKGFjcm9iYXRWZXJzaW9uLCBsYXRlc3RBY3Jv
YmF0VmVyc2lvbikpIHsKICAgICAgICAgICAgIGxhdGVzdEFjcm9iYXRWZXJzaW9uID0gYWNyb2Jh
dFZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyA9IHdjaGFy
VG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lv
blN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjU4LDEwICsyNTgsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdp
bkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIERXT1JEIGFj
cm9iYXRJbnN0YWxsUGF0aFNpemUgPSBzaXplb2YoYWNyb2JhdEluc3RhbGxQYXRoU3RyKTsKIAog
ICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbktleVBhdGggPSAiU29mdHdhcmVcXEFkb2JlXFxB
Y3JvYmF0IFJlYWRlclxcIiArIGxhdGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nICsgIlxcSW5zdGFs
bFBhdGgiOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFD
SElORSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGFjcm9iYXRQbHVnaW5LZXlQYXRoKS5k
YXRhKCksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFsbFBhdGhTdHIsICZhY3JvYmF0SW5zdGFsbFBh
dGhTaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01B
Q0hJTkUsIHdjaGFyRnJvbShhY3JvYmF0UGx1Z2luS2V5UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFsbFBhdGhTdHIsICZh
Y3JvYmF0SW5zdGFsbFBhdGhTaXplKTsKIAogICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NV
Q0NFU1MpIHsKLSAgICAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1Z2luRGlyZWN0b3J5ID0gd2No
YXJUb1N0cmluZyhhY3JvYmF0SW5zdGFsbFBhdGhTdHIsIGFjcm9iYXRJbnN0YWxsUGF0aFNpemUg
LyBzaXplb2YoV0NIQVIpIC0gMSkgKyAiXFxicm93c2VyIjsKKyAgICAgICAgICAgIFN0cmluZyBh
Y3JvYmF0UGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgYWNy
b2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJyb3dzZXIiOwog
ICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjkwLDEwICsyOTAsMTAgQEAgc3RhdGljIGlubGluZSB2b2lk
IGFkZEphdmFQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAg
ICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICBWZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyh3Y2hh
clRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKKyAgICAgICAgVmVjdG9yPGludD4gamF2YVZlcnNp
b24gPSBwYXJzZVZlcnNpb25TdHJpbmcoU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKICAgICAgICAg
aWYgKGNvbXBhcmVWZXJzaW9ucyhqYXZhVmVyc2lvbiwgbGF0ZXN0SmF2YVZlcnNpb24pKSB7CiAg
ICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lvbiA9IGphdmFWZXJzaW9uOwotICAgICAgICAgICAg
bGF0ZXN0SmF2YVZlcnNpb25TdHJpbmcgPSB3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pOwor
ICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmcgPSBTdHJpbmcobmFtZSwgbmFtZUxl
bik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwNSwxMiArMzA1LDEyIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRKYXZhUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcmll
cykKICAgICAgICAgRFdPUkQgdXNlTmV3UGx1Z2luU2l6ZTsKIAogICAgICAgICBTdHJpbmcgamF2
YVBsdWdpbktleVBhdGggPSAiU29mdHdhcmVcXEphdmFTb2Z0XFxKYXZhIFBsdWctaW5cXCIgKyBs
YXRlc3RKYXZhVmVyc2lvblN0cmluZzsKLSAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1
ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihqYXZhUGx1
Z2luS2V5UGF0aCkuZGF0YSgpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVzZU5ld1Bs
dWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lz
dHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCB3Y2hhckZyb20oamF2YVBsdWdpbktleVBhdGgu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBMIlVzZU5ld0phdmFQbHVn
aW4iLCAmdHlwZSwgJnVzZU5ld1BsdWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CiAKICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHVzZU5ld1BsdWdpblZhbHVlID09
IDEpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9N
QUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLmRh
dGEoKSwgTCJKYXZhSG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFs
bFBhdGhTaXplKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9M
T0NBTF9NQUNISU5FLCB3Y2hhckZyb20oamF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBMIkphdmFIb21lIiwgJnR5cGUsIGphdmFJbnN0YWxs
UGF0aFN0ciwgJmphdmFJbnN0YWxsUGF0aFNpemUpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9
PSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJl
Y3RvcnkgPSB3Y2hhclRvU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0ciwgamF2YUluc3RhbGxQYXRo
U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3X3BsdWdpbiI7CisgICAgICAg
ICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJlY3RvcnkgPSBTdHJpbmcoamF2YUluc3RhbGxQ
YXRoU3RyLCBqYXZhSW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYmlu
XFxuZXdfcGx1Z2luIjsKICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoamF2YVBs
dWdpbkRpcmVjdG9yeSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzNiw3ICszMzYs
NyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KCkKICAgICAg
ICAgaWYgKCFQYXRoUmVtb3ZlRmlsZVNwZWMobW9kdWxlRmlsZU5hbWVTdHIpKQogICAgICAgICAg
ICAgZ290byBleGl0OwogCi0gICAgICAgIHBsdWdpbnNEaXJlY3RvcnkgPSBudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcobW9kdWxlRmlsZU5hbWVTdHIpICsgIlxcUGx1Z2lucyI7CisgICAgICAg
IHBsdWdpbnNEaXJlY3RvcnkgPSBTdHJpbmcobW9kdWxlRmlsZU5hbWVTdHIpICsgIlxcUGx1Z2lu
cyI7CiAgICAgfQogZXhpdDoKICAgICByZXR1cm4gcGx1Z2luc0RpcmVjdG9yeTsKQEAgLTM1Miwx
MCArMzUyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0
b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgIFdDSEFSIG1hY3JvbWVkaWFE
aXJlY3RvcnlTdHJbTUFYX1BBVEhdOwogCiAgICAgUGF0aENvbWJpbmUobWFjcm9tZWRpYURpcmVj
dG9yeVN0ciwgc3lzdGVtRGlyZWN0b3J5U3RyLCBURVhUKCJtYWNyb21lZFxcRmxhc2giKSk7Ci0g
ICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtYWNyb21l
ZGlhRGlyZWN0b3J5U3RyKSk7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhtYWNyb21l
ZGlhRGlyZWN0b3J5U3RyKSk7CiAKICAgICBQYXRoQ29tYmluZShtYWNyb21lZGlhRGlyZWN0b3J5
U3RyLCBzeXN0ZW1EaXJlY3RvcnlTdHIsIFRFWFQoIm1hY3JvbWVkXFxTaG9ja3dhdmUgMTAiKSk7
Ci0gICAgZGlyZWN0b3JpZXMuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtYWNy
b21lZGlhRGlyZWN0b3J5U3RyKSk7CisgICAgZGlyZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhtYWNy
b21lZGlhRGlyZWN0b3J5U3RyKSk7CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFj
a2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2th
Z2VXaW4uY3BwCmluZGV4IDk0YmJhNmE5ZTdiNjY1NDhhNjhiMzY3YjM4NzU4OTVlZmU5YjUyNjUu
LmQ1OGNiMjYwZGI4ODEzNjllN2M0MTc5YmU3ZTQwMzJkZjU3MDZmZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBzdGF0aWMgU3RyaW5nIGdldFZlcnNpb25JbmZvKGNvbnN0IExQVk9JRCB2
ZXJzaW9uSW5mb0RhdGEsIGNvbnN0IFN0cmluZyYgaW5mbykKICAgICBVSU5UIGJ1ZmZlckxlbmd0
aDsKICAgICBTdHJpbmcgc3ViSW5mbyA9ICJcXFN0cmluZ2ZpbGVJbmZvXFwwNDA5MDRFNFxcIiAr
IGluZm87CiAgICAgYm9vbCByZXR2YWwgPSBWZXJRdWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEs
Ci0gICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdWJJbmZvKS5kYXRhKCksCisg
ICAgICAgIHdjaGFyRnJvbShzdWJJbmZvLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSwKICAgICAgICAgJmJ1ZmZlciwgJmJ1ZmZlckxlbmd0aCk7CiAgICAgaWYgKCFyZXR2
YWwgfHwgYnVmZmVyTGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE2
NiwxMyArMTY2LDEzIEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6ZGV0ZXJtaW5lUXVpcmtzKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiB7CiAg
ICAgRFdPUkQgdmVyc2lvbkluZm9TaXplLCB6ZXJvSGFuZGxlOwotICAgIHZlcnNpb25JbmZvU2l6
ZSA9IEdldEZpbGVWZXJzaW9uSW5mb1NpemVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhciht
X3BhdGgpLmRhdGEoKSwgJnplcm9IYW5kbGUpOworICAgIHZlcnNpb25JbmZvU2l6ZSA9IEdldEZp
bGVWZXJzaW9uSW5mb1NpemVXKHdjaGFyRnJvbShtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpLCAmemVyb0hhbmRsZSk7CiAgICAgaWYgKHZlcnNpb25JbmZvU2l6
ZSA9PSAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWZWN0b3I8Y2hhcj4gdmVyc2lv
bkluZm9EYXRhKHZlcnNpb25JbmZvU2l6ZSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5m
b1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9u
SW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5kYXRhKCkpKQorICAgIGlmICghR2V0RmlsZVZlcnNp
b25JbmZvVyh3Y2hhckZyb20obV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCku
ZGF0YSgpKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9uYW1lID0gZ2V0VmVyc2lvbkluZm8odmVyc2lv
bkluZm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7CkBAIC0yMzgsMTEgKzIzOCwxMSBAQCBi
b29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogCiAgICAgICAgIFN0cmluZyBwYXRoID0gbV9wYXRo
LnN1YnN0cmluZygwLCBtX3BhdGgucmV2ZXJzZUZpbmQoJ1xcJykpOwogCi0gICAgICAgIGlmICgh
OjpTZXRDdXJyZW50RGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocGF0aCku
ZGF0YSgpKSkKKyAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHdjaGFyRnJvbShw
YXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gTG9hZCB0aGUgbGlicmFyeQotICAgICAgICBt
X21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1f
cGF0aCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CisgICAgICAg
IG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4Vyh3Y2hhckZyb20obV9wYXRoLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNI
X1BBVEgpOwogCiAgICAgICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhjdXJyZW50UGF0
aCkpIHsKICAgICAgICAgICAgIGlmIChtX21vZHVsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDRhNjYzZTA2NDhjNTMxOTVh
YjA5ZTAwNWNhZTUzZTQ1NDk3YmQ5MzkuLjA5ODliZGU3NTlkMjUwZTM2MDNmZjQ0ZjFlMDU2ODcz
ZjhiZmJiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3V2luLmNwcApAQCAtNzU1LDEzICs3NTUsMTMgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpo
YW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMl90IGxlbiwgY29u
c3QKIAogICAgIC8vIEdldCBmaWxlIGluZm8KICAgICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRB
IGF0dHJzOwotICAgIGlmICghR2V0RmlsZUF0dHJpYnV0ZXNFeFcoc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmF0dHJz
KSkKKyAgICBpZiAoIUdldEZpbGVBdHRyaWJ1dGVzRXhXKHdjaGFyRnJvbShmaWxlbmFtZS5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIEdldEZpbGVFeEluZm9TdGFuZGFy
ZCwgJmF0dHJzKSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCiAgICAg
aWYgKGF0dHJzLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAg
ICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKIAotICAgIEhBTkRMRSBmaWxlSGFu
ZGxlID0gQ3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5k
YXRhKCksIEZJTEVfUkVBRF9EQVRBLCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcs
IDAsIDApOworICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcod2NoYXJGcm9tKGZp
bGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSwgRklMRV9SRUFE
X0RBVEEsIEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgMCwgMCk7CiAgICAgCiAg
ICAgaWYgKGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVy
biBOUEVSUl9GSUxFX05PVF9GT1VORDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDgzMzFjYTk0
MDRlNTkxNWU3MzZjZTEwYWJkZmZiOThhYjJmYjRiNmMuLmUzYzZjYjBhNTlhZjJmNDI0ODlmNTI3
MGNjYTE5MzU1ZWRlOWIzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNjAsNiArNjAsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51V2luLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC02NDYsMTcgKzY0NywxNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBh
bmVsKEZyYW1lJiwgRmlsZUNob29zZXImIGZpbGVDaG9vc2VyKQogCiAgICAgb2ZuLmxTdHJ1Y3RT
aXplID0gc2l6ZW9mKG9mbik7CiAgICAgb2ZuLmh3bmRPd25lciA9IHZpZXdXaW5kb3c7Ci0gICAg
U3RyaW5nIGFsbEZpbGVzID0gYWxsRmlsZXNUZXh0KCk7Ci0gICAgYWxsRmlsZXMuYXBwZW5kKEwi
XDAqLipcMFwwIiwgNik7CisgICAgU3RyaW5nIGFsbEZpbGVzID0gbWFrZVN0cmluZyhhbGxGaWxl
c1RleHQoKSwgU3RyaW5nKCJcMCouKlwwXDAiLCA2KSk7CiAKICAgICBWZWN0b3I8VUNoYXI+IGZp
bHRlckNoYXJhY3RlcnMgPSBhbGxGaWxlcy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
OyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIEdldE9wZW5GaWxlTmFt
ZSBjYWxsCi0gICAgb2ZuLmxwc3RyRmlsdGVyID0gZmlsdGVyQ2hhcmFjdGVycy5kYXRhKCk7Cisg
ICAgb2ZuLmxwc3RyRmlsdGVyID0gd2NoYXJGcm9tKGZpbHRlckNoYXJhY3RlcnMuZGF0YSgpKTsK
IAogICAgIG9mbi5scHN0ckZpbGUgPSBmaWxlQnVmLmRhdGEoKTsKICAgICBvZm4ubk1heEZpbGUg
PSBmaWxlQnVmLnNpemUoKTsKICAgICBTdHJpbmcgZGlhbG9nVGl0bGUgPSB1cGxvYWRGaWxlVGV4
dCgpOwogICAgIFZlY3RvcjxVQ2hhcj4gZGlhbG9nVGl0bGVDaGFyYWN0ZXJzID0gZGlhbG9nVGl0
bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25n
IGVub3VnaCB0byBtYWtlIHRoZSBHZXRPcGVuRmlsZU5hbWUgY2FsbAotICAgIG9mbi5scHN0clRp
dGxlID0gZGlhbG9nVGl0bGVDaGFyYWN0ZXJzLmRhdGEoKTsKKyAgICBvZm4ubHBzdHJUaXRsZSA9
IHdjaGFyRnJvbShkaWFsb2dUaXRsZUNoYXJhY3RlcnMuZGF0YSgpKTsKICAgICBvZm4uRmxhZ3Mg
PSBPRk5fRU5BQkxFU0laSU5HIHwgT0ZOX0ZJTEVNVVNURVhJU1QgfCBPRk5fUEFUSE1VU1RFWElT
VCB8IE9GTl9FWFBMT1JFUjsKICAgICBpZiAobXVsdGlGaWxlKQogICAgICAgICBvZm4uRmxhZ3Mg
PSBvZm4uRmxhZ3MgfCBPRk5fQUxMT1dNVUxUSVNFTEVDVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IGFhZTFlMDAwZjhmYWM5OGUzNzIyOTQwMDFjNjljNGM3MGVkNTNmZjkuLjkxMGJlODdlMjVi
ZDY0ZDVkMTY1MzIwYWEwNDJmMDkwZGRlODQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
MjYsMTEgKzI2LDExIEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViRWRp
dG9yQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIldl
YktpdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJET01Db3Jl
Q2xhc3Nlcy5oIgogI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNzU4
LDcgKzc1OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmco
U3RyaW5nVmlldyB0ZXh0LCBpbnQqIG1pc3NwZWxsaW5nTG9jCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGluaXRWaWV3U3BlY2lmaWNTcGVsbGluZyhtX3dlYlZpZXcpOwotICAgIGVkLT5jaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcobV93ZWJWaWV3LCB0ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB0
ZXh0Lmxlbmd0aCgpLCBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7Cisg
ICAgZWQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhtX3dlYlZpZXcsIHdjaGFyRnJvbSh0ZXh0LnVw
Y29udmVydGVkQ2hhcmFjdGVycygpKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxpbmdMb2NhdGlv
biwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRB
dXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIGlucHV0
V29yZCkKQEAgLTc4MCw3ICs3ODEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogCiAgICAg
aW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7CiAgICAgQ09NUHRyPElFbnVtV2Vi
R3JhbW1hckRldGFpbHM+IGVudW1EZXRhaWxzT2JqOwotICAgIGlmIChGQUlMRUQoZWQtPmNoZWNr
R3JhbW1hck9mU3RyaW5nKG1fd2ViVmlldywgdGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwg
dGV4dC5sZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdy
YW1tYXJMZW5ndGgpKSkKKyAgICBpZiAoRkFJTEVEKGVkLT5jaGVja0dyYW1tYXJPZlN0cmluZyht
X3dlYlZpZXcsIHdjaGFyRnJvbSh0ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgdGV4dC5s
ZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdyYW1tYXJM
ZW5ndGgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2hpbGUgKHRydWUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCmluZGV4IDIyMWUyMmYzODYwNWE1MWYwNzM3ZWFkM2M4YmU5YzM5NWM0
MjRkYzcuLjU5ZWVkYTZiODQ1N2E5ZmI0M2RkMzc4ZDlhNjYzNjYwNjIyZWU3ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPHdjaGFyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NTAsNyArNDUxLDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZpZXcoKQogdm9pZCBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKQogewogICAgIFN0
cmluZyB0aXRsZSA9IG1ha2VTdHJpbmcoIldlYiBJbnNwZWN0b3IgIiwgc3RhdGljX2Nhc3Q8VUNo
YXI+KDB4MjAxNCksICcgJywgbV9pbnNwZWN0ZWRVUkwpOwotICAgIDo6U2V0V2luZG93VGV4dCht
X2Zyb250ZW5kSHduZCwgdGl0bGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRh
KCkpOworICAgIDo6U2V0V2luZG93VGV4dChtX2Zyb250ZW5kSHduZCwgd2NoYXJGcm9tKHRpdGxl
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiB9CiAKIExSRVNVTFQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Om9uR2V0TWluTWF4SW5mbyhXUEFSQU0sIExQQVJB
TSBsUGFyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNGFkMzE2NjAx
N2YzOTlhZjljODMzOTUwOTZjM2ZkNTdlNTYxMDgzMC4uNTk2ODNiOTRlMTM2NzM3NGQyMjg4ZjE2
YzcxOGVlZmYxODQ0M2IyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAt
MTA1LDYgKzEwNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogI2lmIFVTRShDRykK
ICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CkBAIC03MzEsNyArNzMyLDcg
QEAgSFJFU1VMVCBXZWJGcmFtZTo6ZmluZEZyYW1lTmFtZWQoX0luXyBCU1RSIG5hbWUsIF9DT01f
T3V0cHRyX29wdF8gSVdlYkZyYW1lKiogZnIKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIEZyYW1lKiBmb3VuZEZyYW1lID0gY29yZUZyYW1l
LT50cmVlKCkuZmluZChBdG9taWNTdHJpbmcobmFtZSwgU3lzU3RyaW5nTGVuKG5hbWUpKSwgKmNv
cmVGcmFtZSk7CisgICAgRnJhbWUqIGZvdW5kRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5maW5k
KEF0b21pY1N0cmluZyh1Y2hhckZyb20obmFtZSksIFN5c1N0cmluZ0xlbihuYW1lKSksICpjb3Jl
RnJhbWUpOwogICAgIGlmICghZm91bmRGcmFtZSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmlu
ZGV4IGRlMDIyMWY1NDVmM2RmNGE2YWQxMGMwYWE5NmQzNmNiOGQ5MTYzZjIuLmRkNTc3Y2M0NDM4
Y2I5NWRlMWUyZDAxZjAyZmJhYTRmNjZlMzNkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtMjQsMjAgKzI0LDE5IEBACiAg
Ki8KIAogI2luY2x1ZGUgIldlYktpdERMTC5oIgotCiAjaW5jbHVkZSAiV2ViTG9jYWxpemFibGVT
dHJpbmdzLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCisj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJh
cy5oPgogCiBjbGFzcyBMb2NhbGl6ZWRTdHJpbmc7CiAKQEAgLTgxLDcgKzgwLDcgQEAgcHJpdmF0
ZToKIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX3N0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKTsKKyAgICAgICAgcmV0dXJuIHdjaGFyRnJvbSht
X3N0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CiAKICAgICBt
X3N0cmluZyA9IG1fY2ZTdHJpbmc7CiAKQEAgLTg5LDcgKzg4LDcgQEAgTG9jYWxpemVkU3RyaW5n
OjpvcGVyYXRvciBMUENUU1RSKCkgY29uc3QKICAgICAgICAgaWYgKG1fc3RyaW5nW2ldID09ICdA
JyAmJiAobV9zdHJpbmdbaSAtIDFdID09ICclJyB8fCAoaSA+IDIgJiYgbV9zdHJpbmdbaSAtIDFd
ID09ICckJyAmJiBtX3N0cmluZ1tpIC0gMl0gPj0gJzEnICYmIG1fc3RyaW5nW2kgLSAyXSA8PSAn
OScgJiYgbV9zdHJpbmdbaSAtIDNdID09ICclJykpKQogICAgICAgICAgICAgbV9zdHJpbmcucmVw
bGFjZShpLCAxLCAicyIpOwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpOworICAgIHJldHVybiB3Y2hhckZyb20obV9zdHJpbmcuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOwogfQogCiBzdGF0aWMgQ0ZCdW5k
bGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCAxZmUxMTQ1YWVjMjAwODhhNmZiMWZiZjk4
ZGIwMzJjMDZkMDliMjg1Li5hN2UwMDQxYjc0NmNmY2Y3ZTAxYmFjODAwMTg1ZTk4NzEzNDdmNGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwCkBAIC0yNiwxNSArMjYsMTUgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNpbmNsdWRl
ICJXZWJNdXRhYmxlVVJMUmVxdWVzdC5oIgogCi0jaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVk
ZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Zvcm1EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dp
bi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiAjaWYgVVNFKENGKQogI2luY2x1ZGUgPFdlYkNvcmUv
Q2VydGlmaWNhdGVDRldpbi5oPgpAQCAtMjcyLDcgKzI3Miw3IEBAIEhSRVNVTFQgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OmlzRXF1YWwoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIG90aGVyLCBfT3V0
XyBCT09MCiAKIEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmFkZFZhbHVlKF9Jbl8gQlNU
UiB2YWx1ZSwgX0luXyBCU1RSIGZpZWxkKQogewotICAgIG1fcmVxdWVzdC5hZGRIVFRQSGVhZGVy
RmllbGQoV1RGOjpBdG9taWNTdHJpbmcodmFsdWUsIFN5c1N0cmluZ0xlbih2YWx1ZSkpLCBTdHJp
bmcoZmllbGQsIFN5c1N0cmluZ0xlbihmaWVsZCkpKTsKKyAgICBtX3JlcXVlc3QuYWRkSFRUUEhl
YWRlckZpZWxkKEF0b21pY1N0cmluZyh1Y2hhckZyb20odmFsdWUpLCBTeXNTdHJpbmdMZW4odmFs
dWUpKSwgU3RyaW5nKGZpZWxkLCBTeXNTdHJpbmdMZW4oZmllbGQpKSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFjZjIwODlk
ZTY2ODBlY2EzODU2ZjU3M2MyMjk1MTc0OGYwYS4uMmJhN2E1NGQ4OGU5Yzk4ZDQ4MjYwYjZmOGU0
NDdkM2VjMTEyYWJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE2OSwx
MyArMTY5LDI1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPGNvbWRlZi5o
PgorI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNsdWRlIDxkMmQxLmg+CisjaW5jbHVkZSA8ZGlt
bS5oPgorI2luY2x1ZGUgPG9sZWFjYy5oPgorI2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUg
PHdjaGFyLmg+CisjaW5jbHVkZSA8d2luZG93c3guaD4KKyNpbmNsdWRlIDx3aW51c2VyLmg+CiAj
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2Uu
aD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5o
PgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvd2luL0dESU9i
amVjdC5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQu
aD4KQEAgLTIwNSwxOCArMjE3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxTY3JlZW5Db250
cm9sbGVyLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPFNobE9iai5oPgotI2luY2x1ZGUgPGNvbXV0
aWwuaD4KLSNpbmNsdWRlIDxkaW1tLmg+Ci0jaW5jbHVkZSA8b2xlYWNjLmg+Ci0jaW5jbHVkZSA8
d2NoYXIuaD4KLSNpbmNsdWRlIDx3aW5kb3dzeC5oPgotI2luY2x1ZGUgPHdpbnVzZXIuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi93aW4v
R0RJT2JqZWN0Lmg+Ci0KICNkZWZpbmUgV0VCS0lUX0RSQVdJTkcgNAogCiAvLyBTb2Z0IGxpbmsg
ZnVuY3Rpb25zIGZvciBnZXN0dXJlcyBhbmQgcGFubmluZyBmZWVkYmFjawpAQCAtMjU2LDcgKzI1
Niw3IEBAIFdlYlZpZXcqIGtpdChQYWdlKiBwYWdlKQogCiBzdGF0aWMgaW5saW5lIEF0b21pY1N0
cmluZyB0b0F0b21pY1N0cmluZyhCU1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJuIEF0b21pY1N0cmlu
Zyhic3RyLCBTeXNTdHJpbmdMZW4oYnN0cikpOworICAgIHJldHVybiBBdG9taWNTdHJpbmcodWNo
YXJGcm9tKGJzdHIpLCBTeXNTdHJpbmdMZW4oYnN0cikpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0
cmluZyB0b1N0cmluZyhCU1RSIGJzdHIpCkBAIC0xNTk4LDEzICsxNTk4LDEzIEBAIHN0YXRpYyBI
TUVOVSBjcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyhjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJ
dGVtPiYgaXRlbXMpCiAgICAgICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKICAgICAgICAgY2Fz
ZSBBY3Rpb25UeXBlOgogICAgICAgICBjYXNlIENoZWNrYWJsZUFjdGlvblR5cGU6Ci0gICAgICAg
ICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGl0ZW0uYWN0aW9uKCks
IGl0ZW0udGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7Cisg
ICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGl0ZW0uYWN0
aW9uKCksIHdjaGFyRnJvbShpdGVtLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNlcGFyYXRv
clR5cGU6CiAgICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TRVBBUkFU
T1IsIGl0ZW0uYWN0aW9uKCksIG51bGxwdHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgU3VibWVudVR5cGU6Ci0gICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3Mg
fCBNRl9QT1BVUCwgKFVJTlRfUFRSKWNyZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1zKGl0ZW0uc3Vi
TWVudUl0ZW1zKCkpLCBpdGVtLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpOworICAgICAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfUE9Q
VVAsIChVSU5UX1BUUiljcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyhpdGVtLnN1Yk1lbnVJdGVt
cygpKSwgd2NoYXJGcm9tKGl0ZW0udGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
MjM1LDcgKzMyMzUsNyBAQCB2b2lkIFdlYlZpZXc6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0
b29sVGlwKQogICAgICAgICBpbmZvLnVGbGFncyA9IFRURl9JRElTSFdORDsKICAgICAgICAgaW5m
by51SWQgPSByZWludGVycHJldF9jYXN0PFVJTlRfUFRSPihtX3ZpZXdXaW5kb3cpOwogICAgICAg
ICBWZWN0b3I8VUNoYXI+IHRvb2xUaXBDaGFyYWN0ZXJzID0gbV90b29sVGlwLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBidWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFr
ZSB0aGUgU2VuZE1lc3NhZ2UgY2FsbAotICAgICAgICBpbmZvLmxwc3pUZXh0ID0gY29uc3RfY2Fz
dDxVQ2hhcio+KHRvb2xUaXBDaGFyYWN0ZXJzLmRhdGEoKSk7CisgICAgICAgIGluZm8ubHBzelRl
eHQgPSBjb25zdF9jYXN0PHdjaGFyX3QqPih3Y2hhckZyb20odG9vbFRpcENoYXJhY3RlcnMuZGF0
YSgpKSk7CiAgICAgICAgIDo6U2VuZE1lc3NhZ2UobV90b29sVGlwSHduZCwgVFRNX1VQREFURVRJ
UFRFWFQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaW5mbykpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNKU0NPbmx5LmNtYWtlCmluZGV4IDUwZGYwM2ViNjAwNDRlYTA3OGZlYWMzYjU3YzJi
ZTljNzZhOWE3ZjEuLjk0NzZhZGMwMGM2NGRkYzY5YTZhOWM4NTYxOGUwMTc2ODQ4MTEwNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKQEAgLTk3LDkgKzk3LDYgQEAgZW5kaWYgKCkKIAog
aWYgKE5PVCBBUFBMRSkKICAgICBmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQotICAgIGlmIChX
SU4zMikKLSAgICAgICAgYWRkX2RlZmluaXRpb25zKC1EVUNIQVJfVFlQRT13Y2hhcl90KQotICAg
IGVuZGlmICgpCiBlbHNlICgpCiAgICAgYWRkX2RlZmluaXRpb25zKC1EVV9ESVNBQkxFX1JFTkFN
SU5HPTEgLURVX1NIT1dfQ1BMVVNQTFVTX0FQST0wKQogICAgIHNldChJQ1VfTElCUkFSSUVTIGxp
YmljdWNvcmUuZHlsaWIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IGFlM2E5ZWZmNjJhY2QyYzc4
YzRkZjI1NjI1MDNmNmIwMmZlYmNiMDYuLjYxZmE0ODViMjVkZWI1NWZlODMzZTcyOTRjMGUxNzll
YTZmNTljZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0xNTgsNyArMTU4LDYgQEAgc2V0KFBB
TF9MSUJSQVJZX1RZUEUgU1RBVElDKQogc2V0KFdlYktpdExlZ2FjeV9MSUJSQVJZX1RZUEUgU0hB
UkVEKQogCiBmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQotYWRkX2RlZmluaXRpb25zKC1EVUNI
QVJfVFlQRT13Y2hhcl90KQogCiAjIElmIDx3aW5zb2NrMi5oPiBpcyBub3QgaW5jbHVkZWQgYmVm
b3JlIDx3aW5kb3dzLmg+IHJlZGVmaW5pdGlvbiBlcnJvcnMgb2NjdXIKICMgdW5sZXNzIF9XSU5T
T0NLQVBJXyBpcyBkZWZpbmVkIGJlZm9yZSA8d2luZG93cy5oPiBpcyBpbmNsdWRlZApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNhMTU1ZTgyOTI2
YWYxNzc0MTllYTM1MDQ0YjFmMThlNzE1MGQ2ZGMuLjRjMzllMDdmNTJhYzkxMTVlYTEzNDI0N2U3
ODM5MTIzYTg3YzIxZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQ
RT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICBEZWxldGUgd2NoYXIgdGVzdHMgLS0gdGhlc2Ugd2VyZSBNU1ZDLW9u
bHkgYW5kIHdlIHdvbid0IGJlIHVzaW5nIFN0cmluZzo6b3BlcmF0b3IrIGdvaW5nIGZvcndhcmQg
YW55d2F5LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cDoKKyAgICAgICAgKGZpbmRGb250RmFsbGJhY2spOgorICAgICAgICAoYWRkRm9udEZhbGxiYWNr
SWZQcmVzZW50KToKKyAgICAgICAgKHJlbW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudCk6CisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGll
c1dpbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjptb2R1bGVEaXJlY3Rvcnkp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRo
KToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMgbmVlZGVkLgorCiAyMDE5LTAzLTA2ICBS
b2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQ29uc2lkZXIgc3VwcG9ydGlu
ZyB0aGUgYHJlZmVycmVycG9saWN5YCBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBkYWU1ZGU3NjEwNTc2ZTZlNjM4MjZhYWY2ZjZi
NjkwZGM4Y2IxZTQzLi41MTYxZmViNmI1NTM0NDc5OGI4M2UxYzM4NWM4ZmE4NTZlMDAwZDMyIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTQzLDcg
KzQzLDYgQEAKICNpbmNsdWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlICJXb3Jr
UXVldWVJdGVtLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCi0KICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Rlc3RS
dW5uZXJVdGlscy5oPgogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KQEAgLTY3LDYg
KzY2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiAj
aWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2ll
c1ByaXYuaD4KQEAgLTEwMzgsNyArMTAzOCw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxs
YmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFj
ayA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsKIAogICAgIHdjaGFyX3Qg
ZnVsbFBhdGhbX01BWF9QQVRIXTsKLSAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhU
b0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgX01B
WF9QQVRIKSkKKyAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHdjaGFyRnJvbShwYXRoVG9G
b250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBfTUFY
X1BBVEgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIGlmICghOjpQYXRo
SXNEaXJlY3RvcnlXKGZ1bGxQYXRoKSkKQEAgLTEwNjksNyArMTA2OSw3IEBAIHN0YXRpYyBTdHJp
bmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgZm9yIChWZWN0
b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBwb3MgIT0g
cG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKICAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNr
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNc
XCIpOwogCi0gICAgICAgIGlmICg6OlBhdGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNr
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICAgICAgaWYgKDo6
UGF0aElzRGlyZWN0b3J5Vyh3Y2hhckZyb20ocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gcGF0aFRv
Rm9udEZhbGxiYWNrOwogICAgIH0KIApAQCAtMTA4Myw3ICsxMDgzLDcgQEAgc3RhdGljIHZvaWQg
YWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkK
IAogICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2su
Y3NzIik7CiAKLSAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCisgICAgaWYgKCE6OlBhdGhGaWxlRXhp
c3RzVyh3Y2hhckZyb20oZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oZm9udEZhbGxiYWNrLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpA
QCAtMTA5Niw3ICsxMDk2LDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9udEZhbGxiYWNrSWZQcmVz
ZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKIAogICAgIFN0cmluZyBmb250RmFs
bGJhY2sgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNr
UGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKLSAgICBpZiAoITo6
UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSkpCisgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyh3Y2hhckZyb20oZm9udEZh
bGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24obnVs
bHB0cik7CkBAIC0xNTQxLDEyICsxNTQxLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBj
aGFyKiBhcmd2W10pCiAgICAgU3RyaW5nIGRlc2t0b3BOYW1lID0gbWFrZVN0cmluZygiZGVza3Rv
cCIsIHByb2Nlc3NJZCk7CiAgICAgSERFU0sgZGVza3RvcCA9IG51bGxwdHI7CiAKLSAgICBhdXRv
IHdpbmRvd3NTdGF0aW9uID0gOjpDcmVhdGVXaW5kb3dTdGF0aW9uKHdpbmRvd1N0YXRpb25OYW1l
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBDV0ZfQ1JFQVRFX09OTFks
IFdJTlNUQV9BTExfQUNDRVNTLCBudWxscHRyKTsKKyAgICBhdXRvIHdpbmRvd3NTdGF0aW9uID0g
OjpDcmVhdGVXaW5kb3dTdGF0aW9uKHdjaGFyRnJvbSh3aW5kb3dTdGF0aW9uTmFtZS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSksIENXRl9DUkVBVEVfT05MWSwgV0lOU1RB
X0FMTF9BQ0NFU1MsIG51bGxwdHIpOwogICAgIGlmICh3aW5kb3dzU3RhdGlvbikgewogICAgICAg
ICBpZiAoITo6U2V0UHJvY2Vzc1dpbmRvd1N0YXRpb24od2luZG93c1N0YXRpb24pKQogICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJTZXRQcm9jZXNzV2luZG93U3RhdGlvbiBmYWlsZWQgd2l0
aCBlcnJvciAlbHVcbiIsIDo6R2V0TGFzdEVycm9yKCkpOwogCi0gICAgICAgIGRlc2t0b3AgPSA6
OkNyZWF0ZURlc2t0b3AoZGVza3RvcE5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCksIG51bGxwdHIsIG51bGxwdHIsIDAsIEdFTkVSSUNfQUxMLCBudWxscHRyKTsKKyAg
ICAgICAgZGVza3RvcCA9IDo6Q3JlYXRlRGVza3RvcCh3Y2hhckZyb20oZGVza3RvcE5hbWUuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpLCBudWxscHRyLCBudWxscHRyLCAw
LCBHRU5FUklDX0FMTCwgbnVsbHB0cik7CiAgICAgICAgIGlmICghZGVza3RvcCkKICAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNyZWF0ZSBkZXNrdG9wIHdpdGggZXJyb3Ig
JWx1XG4iLCA6OkdldExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKaW5kZXggOWFiY2JiM2E4
N2Q4YzA3MmQ5NmQwNDJkYmZmMGFhZTRjZDdjNjZmMS4uMGUzYmY5OGY4ODIxNGZjNDdjOWI1MzM1
Zjc0YjA2ZDNlNTNhMjk2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nT3BlcmF0b3JzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdPcGVyYXRvcnMuY3BwCkBAIC0yNTAsNzggKzI1MCw2IEBAIFRFU1QoV1RGLCBTdHJp
bmdPcGVyYXRvcnMpCiAgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmll
dyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsgbGl0ZXJhbCk7
CiAgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIChsaXRlcmFs
ICsgc3RyaW5nICsgbGl0ZXJhbCArIGF0b21pY1N0cmluZyArIGxpdGVyYWwpKTsKICAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nVmlldyArIGxpdGVyYWwpICsgKHN0cmlu
ZyArIGxpdGVyYWwpICsgKGF0b21pY1N0cmluZyArIGxpdGVyYWwpKTsKLQotI2lmIENPTVBJTEVS
KE1TVkMpCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMSwgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDEsIHN0cmluZyArIEwi
d2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBMIndpZGUg
c3RyaW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MSwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDAsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMCwgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKTsKLQotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArIChMIndp
ZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBM
IndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3
aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmlu
Zyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAo
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcp
ICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
YXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0K
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBMIndpZGUgc3RyaW5nIiArIHN0cmlu
Z1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDAsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCAo
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBzdHJpbmdWaWV3ICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDAsIHN0cmluZ1ZpZXcgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJp
bmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygwLCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgTCJ3aWRl
IHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBz
dHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUg
c3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiAr
IGF0b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9t
aWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgKEwid2lkZSBzdHJp
bmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRl
IHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJp
bmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdW
aWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmci
ICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSArIChM
IndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3Ry
aW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBM
IndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5n
ICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWlj
U3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3Ry
aW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKGF0b21pY1N0
cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdW
aWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmci
ICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykgKyAoTCJ3aWRlIHN0
cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiAr
IHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgYXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9X
VEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0
cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsK
LQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgYXRv
bWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJp
bmciICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
KEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmlu
Z1ZpZXcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3
ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsg
c3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21p
Y1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0
cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmci
ICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5n
Iik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIChMIndp
ZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5n
VmlldyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikg
KyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsg
c3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUg
c3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmll
dykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWlj
U3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyAr
IEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcg
KyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3Ry
aW5nVmlldyArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgYXRv
bWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUg
c3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSNlbmRpZgogfQog
CiBURVNUKFdURiwgQ29uY2F0ZW5hdGVDaGFyYWN0ZXJBcnJheUFuZEVtcHR5U3RyaW5nKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCmluZGV4
IDJlNTQzMDg4MTExZDMxYTU5N2VkZjFiMzAxMmE5MjQ2ZThlZjAxY2MuLmIyYTE5NTA3NmIyNDll
ZTdjZjcyOTMwNDFiNDhjMzYxNmQyM2UwMDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
IDxTaGx3YXBpLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYv
VVJMLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGlsIHsKQEAgLTQwLDEyICszOSwx
MiBAQCBzdGF0aWMgU3RyaW5nIG1vZHVsZURpcmVjdG9yeSgpCiAgICAgd2NoYXJfdCBmaWxlbmFt
ZVtidWZmZXJMZW5ndGhdOwogICAgIGF1dG8gbGVuID0gR2V0TW9kdWxlRmlsZU5hbWUobnVsbHB0
ciwgZmlsZW5hbWUsIGJ1ZmZlckxlbmd0aCk7CiAgICAgQVNTRVJUKGxlbiA+IDApOwotICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHdjaGFyVG9TdHJpbmcoZmlsZW5hbWUsIGxl
bikpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKFN0cmluZyhmaWxlbmFt
ZSwgbGVuKSk7CiB9CiAKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7
Ci0gICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1v
ZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxs
IikpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKCJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUu
ZGxsIikpOwogICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwYXRoLnV0
ZjgoKS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggZDJmMTlkNzk3MTIwNzVkYjU1MzZmOTViZmViMDI4OWRkNGU2ZTQ2MC4uMjhhNDBiOTE3Nzlh
MzI0YWUwMTE2MjNmYmE3ZTY3Njg4YmNjYTFjMiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9U
WVBFPXdjaGFyX3Qgc3RvcGdhcCBhbmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc0pTQ09ubHkuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNX
aW4uY21ha2U6CisgICAgICAgIFN0b3AgY29tcGlsaW5nIHdpdGggLURVQ0hBUl9UWVBFPXdjaGFy
X3QuCisKIDIwMTktMDMtMDYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dIEVuYWJsZSBhZGRpdGlvbmFsIGV4cGVyaW1lbnRhbCBmZWF0
dXJlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363841</attachid>
            <date>2019-03-06 20:57:52 -0800</date>
            <delta_ts>2019-03-06 21:04:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195346-20190306205751.patch</filename>
            <type>text/plain</type>
            <size>110591</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YjQxNmM4ZDViNmUyOTkxYTE4NjVmMDNkOTM2NTY2MWRmZTlmZmJmLi4xNGRiMjNlYzNhMTgzMzdm
ZmVmZTM5Nzg5ODgxM2E1NmExN2NiMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3Bn
YXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGN1cnJlbnRX
b3JraW5nRGlyZWN0b3J5KToKKyAgICAgICAgKGZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3Rl
bSk6CisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMgbmVlZGVkLgor
CiAyMDE5LTAzLTA2ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAog
ICAgICAgICBGb2xsb3d1cHMgdG8gKHIyNDIzMDYpOiBVc2UgTG9ja0hvbGRlciBpbnN0ZWFkIG9m
IHN0ZDo6bG9ja19ndWFyZCBvbiBSZW1vdGUgSW5zcGVjdG9yIExvY2tzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhOWIxOWQ3
MTE5NWVhNmI2YTA1Y2ZhNjg3MjEyMjQ1ZGY3Y2U5NDAuLjY2MTUyZDFmNDVjOWU4ZTJmMDhjYzdh
ZDgxMTBlMTk3YWQ2NWUyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDMtMDYgIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIFJlbW92
ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hh
cjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcpOgorICAgICAgICAq
IHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OlN0cmluZyk6Cisg
ICAgICAgICogd3RmL3RleHQvd2luL1N0cmluZ1dpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmc6OndpZGVDaGFyYWN0ZXJzIGNvbnN0KTogUmVuYW1lZCBmcm9tIFdURjo6c3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyLgorICAgICAgICAqIHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oOgorICAgICAgICAoV1RGOjp1Y2hhckZyb20pOgorICAgICAgICAoV1RGOjp3Y2hh
ckZyb20pOgorICAgICAgICAoV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjp3Y2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgQWRkIHN0
YXRpY19hc3NlcnQtZ3VhcmRlZCByZWludGVycHJldF9jYXN0IHdyYXBwZXJzIGZvciBnb2luZyBi
ZXR3ZWVuIFVDaGFyKiBhbmQgd2NoYXJfdCouCisgICAgICAgIE1vdmUgZXhpc3RpbmcgdG8vZnJv
bS1TdHJpbmcgaGVscGVycyBpbnRvIHRoZSBTdHJpbmcgKGFuZCBBdG9taWNTdHJpbmcpIGNsYXNz
KGVzKS4KKworICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaW5kRGF0YSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaW5hbFBhdGhOYW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmNyZWF0ZVN5bWJvbGljTGluayk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxl
dGVGaWxlKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om1vdmVGaWxlKToKKyAgICAgICAg
KFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAg
IChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUlt
cGw6OmdlbmVyYXRlVGVtcG9yYXJ5UGF0aCk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBs
OjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpoYXJkTGlua09yQ29weUZpbGUp
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkp
OgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpsb2Nh
bGVJbmZvKToKKyAgICAgICAgKiB3dGYvd2luL1BhdGhXYWxrZXIuY3BwOgorICAgICAgICAoV1RG
OjpQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAyLTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBXZWFrSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU2MmIyOTk4NTEwOGFlOWJk
ZjcyNjJlYzIzNTA0OGI3MDczNGMwOGEuLjU4YmViZWMwNjZmMjNlZjE1N2IzN2E5ZTE3YmRjYjFh
MjkyYzlhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOS0wMy0wNiAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3Zl
IC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFy
MTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRMaW5rZWRGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaW5rZWRGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlOjpmaWxsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb3dubG9hZEJ1bmRsZTo6YXBwZW5kUmVzdW1lRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpEb3dubG9hZEJ1bmRsZTo6ZXh0cmFjdFJlc3VtZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMQ0lERnJvbUxv
Y2FsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkxDSURGcm9tTG9jYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZVdpbjo6Z2V0TG9jYWxlSW5mb1N0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QlN0cmluZzo6QlN0
cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRXZWJMb2NEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZURlc2NyaXB0b3JEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDRkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdMYWJlbEZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBl
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TU0xL
ZXlHZW5lcmF0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsbEZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJz
IGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LiBSZXBsYWNlIGEgZm9yd2FyZCBk
ZWNsYXJhdGlvbiB3aXRoIGFuIGluY2x1ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExNjIwMzBhZTliZmQxMDIz
ZmQ4Mjc1MzVjNzVlZmE3ZDdmMmE3YjQuLjkyYjBkZDI0M2JlYjk0ZjU1NmYxODE2M2U2OTRiNGRj
OWY0YzMyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDMtMDYgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAt
RFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2
X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUz
NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBs
YXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OmNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKToKKyAgICAgICAgKiBQbGF0Zm9y
bS93aW4vTW9kdWxlV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Y3JlYXRlTWVudUl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNldFRvb2xUaXApOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUpOgorICAgICAgICBVc2Ugd2No
YXIgaGVscGVycyBhcyBuZWVkZWQuCisKIDIwMTktMDMtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBQcm9jZXNzRGlkUmVzdW1lKCkgSVBDIHNob3Vs
ZCBiZSBzZW50IHVwb24gcmVzdW1pbmcgd2hlbiBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5
KCkgSVBDIHdhcyBzZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggN2U4MjdiNWJm
NzQxYzRjYzc4MzZjZTI3ZDc1MzUwMDRkMTc4ZGY1My4uM2FiMTJhMWZlNDlkOTUwZWZlODMwZTNi
YmE1N2YxNzlkMGI1MDY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUxIEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNv
bT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3RvcGdhcCBh
bmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDT01Qcm9wZXJ0eUJhZy5oOgorICAgICAgICAoSGFz
aFR5cGU+OjpHZXRQcm9wZXJ0eUluZm8pOgorICAgICAgICAoSGFzaFR5cGU+OjpMb2FkT2JqZWN0
KToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01Ob2RlOjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTVdpbmRv
dzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01FbGVtZW50Ojpmb250KToKKyAg
ICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50
OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6cmVwbGFj
ZUNoYXJhY3RlcnNJblJhbmdlKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3Jp
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTW96aWxsYVBsdWdpbkRpcmVjdG9yaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjphZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkSmF2YVBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1hY3Jv
bWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdl
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFZlcnNpb25JbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ2hy
b21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5n
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAg
ICAgICAgKiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3Ry
aW5nOjpvcGVyYXRvciBMUENUU1RSIGNvbnN0KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKGNyZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1zKToKKyAgICAgICAgKFdlYlZpZXc6OnNl
dFRvb2xUaXApOgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVycyBhcyBuZWVkZWQuCisKIDIwMTkt
MDMtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gUHJvZ3JhbW1hdGljIHBhc3RlIGFjY2VzcyBzaG91bGQgYmUgZ3JhbnRlZCB3aGVuIGNv
cHlpbmcgYW5kIHBhc3Rpbmcgd2l0aGluIHRoZSBzYW1lIG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAppbmRleCBlNTUwYTcyNDRiNjQxZDI4OTFlYTQxM2QzYWRiOWNlY2UxNGI4YTdkLi43ZWYxYWUx
OGFmODlmZDQ0YzUwNzU0OTEzOTYzZGFjZmRiZjVjNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApA
QCAtOTgsNyArOTgsNiBAQAogI2luY2x1ZGUgPGRpcmVjdC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+
CiAjaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRy
YXMuaD4KICNlbHNlCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKQEAgLTc0OCw3ICs3NDcs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3Rv
cnkoKQogICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2lu
ZG93cy9kZXNrdG9wL2ZmMzgxNDA3LmFzcHgKICAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVyKGJ1
ZmZlckxlbmd0aCk7CiAgICAgRFdPUkQgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3Vy
cmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3RoLCBidWZmZXIuZGF0YSgpKTsKLSAgICBTdHJpbmcg
ZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhOb3RJ
bmNsdWRpbmdOdWxsKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nKGJ1ZmZlci5kYXRhKCks
IGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOwogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29y
ayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxwYXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlT
dHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpA
QCAtMTA2Miw4ICsxMDYxLDcgQEAgc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxl
U3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvciYgYnVmZmUKICNpZiBPUyhXSU5E
T1dTKQogICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2lu
ZG93cy9kZXNrdG9wL2FhMzY1MjQ3LmFzcHgjbWF4cGF0aAogICAgIC8vIFVzZSBsb25nIFVOQyB0
byBwYXNzIHRoZSBsb25nIHBhdGggbmFtZSB0byB0aGUgV2luZG93cyBBUElzLgotICAgIFN0cmlu
ZyBsb25nVU5DUGF0aE5hbWUgPSBXVEY6Om1ha2VTdHJpbmcoIlxcXFw/XFwiLCBmaWxlTmFtZSk7
Ci0gICAgYXV0byBwYXRoTmFtZSA9IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihsb25nVU5D
UGF0aE5hbWUpOworICAgIGF1dG8gcGF0aE5hbWUgPSBtYWtlU3RyaW5nKCJcXFxcP1xcIiwgZmls
ZU5hbWUpLndpZGVDaGFyYWN0ZXJzKCk7CiAgICAgc3RydWN0IF9zdGF0IHN0YXR1cyB7IH07CiAg
ICAgaWYgKF93c3RhdChwYXRoTmFtZS5kYXRhKCksICZzdGF0dXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAKaW5kZXggZmEwZmI0MmUwN2VmNDM2YTVjYzA4MDA2ZTZkZDMyZGI3MGMzZWM0Ny4uNzNl
ZWEzMWYxMjZkNDdhOWI5MDk2NDg0OTYyY2I0NDk5ZjcxZDZlNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0xMDksNyArMTA4LDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMKICAgICAgICAgICAg
IFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwogICAgICAgICAgICAg
R2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7CiAgICAgICAgICAg
ICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8gdGltZVpvbmVJbmZv
cm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0YW5kYXJkTmFtZTsK
LSAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9T
dHJpbmcod2luVGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUo
d2luVGltZVpvbmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsK
ICAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21h
a2UKaW5kZXggMmMzNDAyMjU0OWQ4ODQwZWI5MjMwMjg0YTFkZGQ5ZDI4NTIzOWFhZS4uYzU5Nzlk
ODNhNDMyOWUxMjBlZTBjYmQwNzkyNjllMzAwZTZhMDljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UKQEAgLTgsNiArOCw3IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogKQog
CiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgIHRleHQvd2luL1N0cmluZ1dpbi5jcHAKICAg
ICB0ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcAogCiAgICAgd2lu
L0NQVVRpbWVXaW4uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0
cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCA3ZDc0NTAy
NzNlNWYxYzkwYTM3MDUxNDk5ZDkzOTg4Y2ZlYmFhMmE0Li4xMmQwZjZmODFjMTNhN2UwZDQ4MmNk
ODIwNjJhNmNmNzk3NGU1ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTI2
LDYgKzI2LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgT1MoV0lORE9XUykK
KyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KKyNlbmRpZgorCiAv
LyBEZWZpbmUgJ05PX0lNUExJQ0lUX0FUT01JQ1NUUklORycgYmVmb3JlIGluY2x1ZGluZyB0aGlz
IGhlYWRlciwKIC8vIHRvIGRpc2FsbG93IChleHBlbnNpdmUpIGltcGxpY2l0IFN0cmluZy0tPkF0
b21pY1N0cmluZyBjb252ZXJzaW9ucy4KICNpZmRlZiBOT19JTVBMSUNJVF9BVE9NSUNTVFJJTkcK
QEAgLTE1Myw2ICsxNTcsMTQgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAorI2lmIE9TKFdJTkRPV1MpICYmIFVf
SUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDU5CisgICAgQXRvbWljU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBBdG9taWNTdHJpbmco
dWNoYXJGcm9tKGNoYXJhY3RlcnMpLCBsZW5ndGgpIHsgfQorCisgICAgQXRvbWljU3RyaW5nKGNv
bnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMpCisgICAgICAgIDogQXRvbWljU3RyaW5nKHVjaGFyRnJv
bShjaGFyYWN0ZXJzKSkgeyB9CisjZW5kaWYKKwogICAgIC8vIEF0b21pY1N0cmluZzo6ZnJvbVVU
Rjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBp
bnZhbGlkIFVURi04IHNlcXVlbmNlcy4KICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgo
Y29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYWE1YzlmY2U1ZGM2YWE4
Y2IxMDZmMzFhMDMzMjBmYTUxMmFjOTJmMi4uZWYyNzU4ZTM1NTNhZThmMzI2Nzg3NTczYjk2YTk0
NjJlYTI5MDdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0zNCw2ICszNCwxMCBAQAog
I2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2VuZGlmCiAKKyNpZiBPUyhXSU5ET1dTKQorI2luY2x1
ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXVEYgewogCiAvLyBEZWNsYXJhdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKQEAgLTMzMCw2
ICszMzQsMTYgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdDsKICNl
bmRpZgogCisjaWYgT1MoV0lORE9XUykgJiYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNTkK
KyAgICBTdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQor
ICAgICAgICA6IFN0cmluZyh1Y2hhckZyb20oY2hhcmFjdGVycyksIGxlbmd0aCkgeyB9CisKKyAg
ICBTdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykKKyAgICAgICAgOiBTdHJpbmcodWNo
YXJGcm9tKGNoYXJhY3RlcnMpKSB7IH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8
d2NoYXJfdD4gd2lkZUNoYXJhY3RlcnMoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVUNo
YXIqLCBzaXplX3QpOwogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RhdGlj
IFN0cmluZyBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGlu
ZUNhcGFjaXR5PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9TdHJp
bmdXaW4uY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vU3RyaW5nV2luLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44ODMzY2QyOThiOGVkMzQyZDQ5MzQwY2Y3M2NiNjIwYTEyZmNhOWJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vU3RyaW5nV2luLmNwcApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1ZlY3Rvcjx3Y2hhcl90
PiBTdHJpbmc6OndpZGVDaGFyYWN0ZXJzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8d2NoYXJfdD4g
cmVzdWx0OworCisgICAgaWYgKG1faW1wbCkgeworICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShsZW5ndGgoKSArIDEpOworCisgICAgICAgIGlmIChpczhCaXQoKSkgeworICAg
ICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gbV9pbXBsLT5jaGFyYWN0ZXJzOCgp
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKQorICAg
ICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoY2hhcmFjdGVyczhbaV0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNiA9IG1f
aW1wbC0+Y2hhcmFjdGVyczE2KCk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3Rl
cnMxNiwgbV9pbXBsLT5sZW5ndGgoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQuYXBw
ZW5kKDApOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oCmluZGV4IGQ0MWY0NjI5NGQzNjA0ZWI2
MDRjYjc0NzAxNmNlNTQzNjE3ZWRkZGYuLmZjN2Y5ZTJjMTc3NjExYjZlZWUxYWI0NmFjYTU1ZGU2
YTkwOWMwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgS29uc3RhbnRpbiBU
b2thcmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNSw0NiArMjYsMzMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3Y2hh
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCiBuYW1lc3BhY2UgV1RGIHsK
IAotaW5saW5lIFZlY3Rvcjx3Y2hhcl90PiBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCitpbmxpbmUgY29uc3QgVUNoYXIqIHVjaGFyRnJvbShjb25zdCB3
Y2hhcl90KiBjaGFyYWN0ZXJzKQogewotICAgIFZlY3Rvcjx3Y2hhcl90PiByZXN1bHQ7Ci0KLSAg
ICBpZiAoIXN0cmluZy5pc051bGwoKSkgewotICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzdHJpbmcuaW1wbCgpLT5sZW5ndGgoKSArIDEpOwotCi0gICAgICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCA9IHN0
cmluZy5pbXBsKCktPmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmluZy5pbXBsKCktPmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICAgICAgcmVz
dWx0LnVuY2hlY2tlZEFwcGVuZChjaGFyYWN0ZXJzOFtpXSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2ID0gc3RyaW5nLmltcGwoKS0+Y2hh
cmFjdGVyczE2KCk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3RlcnMxNiwgc3Ry
aW5nLmltcGwoKS0+bGVuZ3RoKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0LmFwcGVu
ZCgwKTsKLSAgICB9CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9m
KFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1lIHNpemUi
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGNoYXJhY3RlcnMp
OworfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKK2lubGluZSBVQ2hhciogdWNoYXJGcm9tKHdjaGFy
X3QqIGNoYXJhY3RlcnMpCit7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0g
c2l6ZW9mKFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1l
IHNpemUiKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGNoYXJhY3RlcnMp
OwogfQogCi1pbmxpbmUgU3RyaW5nIHdjaGFyVG9TdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQoraW5saW5lIGNvbnN0IHdjaGFyX3QqIHdjaGFyRnJvbShj
b25zdCBVQ2hhciogY2hhcmFjdGVycykKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y2hh
cl90KSA9PSBzaXplb2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFyX3QgYW5kIFVDaGFyIGhhdmUg
dGhlIHNhbWUgc2l6ZSIpOwotICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IHdjaGFyX3QqPihjaGFyYWN0ZXJzKTsKIH0KIAotaW5saW5lIFN0cmluZyBudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcoY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykKK2lubGlu
ZSB3Y2hhcl90KiB3Y2hhckZyb20oVUNoYXIqIGNoYXJhY3RlcnMpCiB7Ci0gICAgcmV0dXJuIHdj
aGFyVG9TdHJpbmcoY2hhcmFjdGVycywgd2NzbGVuKGNoYXJhY3RlcnMpKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZih3Y2hhcl90KSA9PSBzaXplb2YoVUNoYXIpLCAiV2UgYXNzdW1lIHdjaGFy
X3QgYW5kIFVDaGFyIGhhdmUgdGhlIHNhbWUgc2l6ZSIpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHdjaGFyX3QqPihjaGFyYWN0ZXJzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
LXVzaW5nIFdURjo6c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyOwotdXNpbmcgV1RGOjp3Y2hh
clRvU3RyaW5nOwotdXNpbmcgV1RGOjpudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmc7Cit1c2lu
ZyBXVEY6OnVjaGFyRnJvbTsKK3VzaW5nIFdURjo6d2NoYXJGcm9tOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCmluZGV4IGQ2NzJhZjYzNzQ2OTNjZjA1MjFlYzM2ODk2ODljZWJjYzAy
ZWRlMzguLmNmNDZhNTA5YjllOThkOTMyZGQ5ZGM5NGE5MTI2Yjg4YjM3MzhkY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGNvbnN0
IFVMT05HTE9ORyBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQgPSAxMTY0NDQ3MzYwMDsKIAog
c3RhdGljIGJvb2wgZ2V0RmluZERhdGEoU3RyaW5nIHBhdGgsIFdJTjMyX0ZJTkRfREFUQVcmIGZp
bmREYXRhKQogewotICAgIEhBTkRMRSBoYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCAmZmluZERhdGEpOworICAgIEhBTkRMRSBo
YW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhwYXRoLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCAmZmlu
ZERhdGEpOwogICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBGaW5kQ2xvc2UoaGFuZGxlKTsKQEAgLTE1MiwxMyArMTUyLDEz
IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9Q
QVRIKTsKLSAgICBpZiAoOjpHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhhbmRsZSwgYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7Cisg
ICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIHdjaGFyRnJvbShidWZm
ZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVfTlQpID49IE1BWF9QQVRIKSB7
CiAgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgfQogICAgIGNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4o
YnVmZmVyLmRhdGEoKSkpOworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZm
ZXIuZGF0YSgpKSkpOwogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBPcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogYm9vbCBjcmVhdGVT
eW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJv
bGljTGlua1BhdGgpCiB7Ci0gICAgcmV0dXJuICE6OkNyZWF0ZVN5bWJvbGljTGlua1coc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKHN5bWJvbGljTGlua1BhdGgpLmRhdGEoKSwgc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKHRhcmdldFBhdGgpLmRhdGEoKSwgMCk7CisgICAgcmV0dXJuICE6
OkNyZWF0ZVN5bWJvbGljTGlua1coc3ltYm9saWNMaW5rUGF0aC53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSwgdGFyZ2V0UGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgMCk7CiB9CiAKIGJvb2wg
ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCkBAIC0yMzMsMzcgKzIzMywzNSBAQCBib29s
IGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQogYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAh
IURlbGV0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgp
KTsKKyAgICByZXR1cm4gISFEZWxldGVGaWxlVyhmaWxlbmFtZS53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSk7CiB9CiAKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgcmV0dXJuICEhUmVtb3ZlRGly
ZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhmaWxlbmFtZS53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSk7CiB9CiAKIGJvb2wgbW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBT
dHJpbmcmIG5ld1BhdGgpCiB7CiAgICAgU3RyaW5nIG9sZEZpbGVuYW1lID0gb2xkUGF0aDsKICAg
ICBTdHJpbmcgbmV3RmlsZW5hbWUgPSBuZXdQYXRoOwotICAgIHJldHVybiAhITo6TW92ZUZpbGVF
eChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIob2xkRmlsZW5hbWUpLmRhdGEoKSwgc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKG5ld0ZpbGVuYW1lKS5kYXRhKCksIE1PVkVGSUxFX0NPUFlf
QUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOworICAgIHJldHVybiAhITo6TW92
ZUZpbGVFeChvbGRGaWxlbmFtZS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgbmV3RmlsZW5hbWUu
d2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIE1PVkVGSUxFX0NPUFlfQUxMT1dFRCB8IE1PVkVGSUxF
X1JFUExBQ0VfRVhJU1RJTkcpOwogfQogCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgVmVj
dG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwotCiAgICAgaWYgKHBhdGgubGVuZ3RoKCkgKyAx
ID4gYnVmZmVyLnNpemUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5n
VmlldyhwYXRoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIuZGF0YSgpKTsKICAg
ICBidWZmZXJbcGF0aC5sZW5ndGgoKV0gPSAnXDAnOwogCi0gICAgaWYgKCFQYXRoQXBwZW5kVyhi
dWZmZXIuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoY29tcG9uZW50KS5kYXRh
KCkpKQorICAgIGlmICghUGF0aEFwcGVuZFcod2NoYXJGcm9tKGJ1ZmZlci5kYXRhKCkpLCBjb21w
b25lbnQud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICBidWZmZXIuc2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7Ci0KKyAgICBidWZm
ZXIuc2hyaW5rKHdjc2xlbih3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSkpKTsKICAgICByZXR1cm4g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCkBAIC0yNzksOSArMjc3LDcgQEAg
U3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBW
ZWN0b3I8U3RyaW5nVmlldz4mIGNvbXAKIAogQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
ID0gU3RyaW5nVmlldyhwYXRoKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLQotICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgIGF1dG8gY2hh
cmFjdGVycyA9IHdjaGFyRnJvbShTdHJpbmdWaWV3KHBhdGgpLnVwY29udmVydGVkQ2hhcmFjdGVy
cygpKTsKICAgICBpbnQgc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCAwLCBjaGFy
YWN0ZXJzLCBwYXRoLmxlbmd0aCgpLCAwLCAwLCAwLCAwKSAtIDE7CiAKICAgICBjaGFyKiBidWZm
ZXI7CkBAIC0yOTcsNyArMjkzLDcgQEAgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiBwYXRoKQogYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGg7Ci0gICAgaWYgKFNIQ3JlYXRl
RGlyZWN0b3J5RXgoMCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZ1bGxQYXRoKS5kYXRh
KCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICBpZiAoU0hDcmVhdGVEaXJlY3RvcnlFeCgw
LCBmdWxsUGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykg
ewogICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOwogICAgICAgICBpZiAoZXJy
b3IgIT0gRVJST1JfRklMRV9FWElTVFMgJiYgZXJyb3IgIT0gRVJST1JfQUxSRUFEWV9FWElTVFMp
IHsKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwYXRoICVzIiwgcGF0
aC5hc2NpaSgpLmRhdGEoKSk7CkBAIC0zMTQsNyArMzEwLDcgQEAgU3RyaW5nIGhvbWVEaXJlY3Rv
cnlQYXRoKCkKIAogU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7
Ci0gICAgcmV0dXJuIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyg6OlBhdGhGaW5kRmlsZU5h
bWUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSkpOworICAgIHJldHVy
biBTdHJpbmcoOjpQYXRoRmluZEZpbGVOYW1lKHBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkp
KTsKIH0KIAogU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMzUw
LDkgKzM0NiwxMCBAQCBzdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQogc3RhdGljIFN0cmluZyBz
dG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQogewogICAgIFZlY3RvcjxVQ2hh
cj4gYnVmZmVyKE1BWF9QQVRIKTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVyUGF0aFcoMCwg
cGF0aElkZW50aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgYnVmZmVyLmRhdGEoKSkp
KQorICAgIGlmIChGQUlMRUQoU0hHZXRGb2xkZXJQYXRoVygwLCBwYXRoSWRlbnRpZmllciB8IENT
SURMX0ZMQUdfQ1JFQVRFLCAwLCAwLCB3Y2hhckZyb20oYnVmZmVyLmRhdGEoKSkpKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRh
KCkpKTsKKworICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKHdjaGFyRnJvbShidWZmZXIuZGF0YSgp
KSkpOwogICAgIFN0cmluZyBkaXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVy
KSk7CiAKICAgICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5
LCAiQXBwbGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwpAQCAtMzk3LDcgKzM5NCw3IEBA
IHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVUZW1wb3JhcnlQYXRoKGNvbnN0IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nJik+JiBhY3Rpb24pCiAKICAgICAgICAgQVNTRVJUKHdjc2xlbih0ZW1wRmls
ZSkgPT0gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wRmlsZSkgLSAxKTsKIAotICAgICAgICBwcm9wb3Nl
ZFBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3Ry
aW5nKHRlbXBQYXRoKSwgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBGaWxlKSk7Cisg
ICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wUGF0aCwg
dGVtcEZpbGUpOwogICAgICAgICBpZiAocHJvcG9zZWRQYXRoLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0gd2hpbGUgKCFhY3Rpb24ocHJvcG9zZWRQYXRoKSk7CkBAIC00MTEs
NyArNDA4LDcgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogCiAgICAgU3RyaW5nIHByb3Bvc2VkUGF0aCA9IGdlbmVy
YXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3RyaW5nJiBwcm9wb3NlZFBhdGgpIHsK
ICAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW4gZXhpc3Rp
bmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKLSAgICAgICAgaGFuZGxlID0gOjpDcmVhdGVGaWxl
VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQYXRoKS5kYXRhKCksIEdFTkVS
SUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9ORVcsIEZJTEVfQVRUUklCVVRF
X05PUk1BTCwgMCk7CisgICAgICAgIGhhbmRsZSA9IDo6Q3JlYXRlRmlsZVcocHJvcG9zZWRQYXRo
LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAw
LCAwLCBDUkVBVEVfTkVXLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwogCiAgICAgICAgIHJl
dHVybiBpc0hhbmRsZVZhbGlkKGhhbmRsZSkgfHwgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxS
RUFEWV9FWElTVFM7CiAgICAgfSk7CkBAIC00NDIsNyArNDM5LDcgQEAgUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAg
fQogCiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKLSAgICByZXR1cm4gQ3JlYXRlRmls
ZShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgZGVzaXJl
ZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVU
RV9OT1JNQUwsIDApOworICAgIHJldHVybiBDcmVhdGVGaWxlKGRlc3RpbmF0aW9uLndpZGVDaGFy
YWN0ZXJzKCkuZGF0YSgpLCBkZXNpcmVkQWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlz
cG9zaXRpb24sIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CiB9CiAKIHZvaWQgY2xvc2VGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQpAQCAtNTAxLDcgKzQ5OCw3IEBAIGludCByZWFk
RnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIAogYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb24pCiB7Ci0gICAgcmV0dXJuICEhOjpDb3B5RmlsZShzdHJpbmdU
b051bGxUZXJtaW5hdGVkV0NoYXIoc291cmNlKS5kYXRhKCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihkZXN0aW5hdGlvbikuZGF0YSgpLCBUUlVFKTsKKyAgICByZXR1cm4gISE6OkNvcHlG
aWxlKHNvdXJjZS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgZGVzdGluYXRpb24ud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCksIFRSVUUpOwogfQogCiBTdHJpbmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCkKQEAgLTU3Miw3ICs1NjksNyBAQCBib29sIGRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKICAgICBTSEZJTEVPUFNUUlVDVCBk
ZWxldGVPcGVyYXRpb24gPSB7CiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgIEZPX0RFTEVURSwK
LSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRpcmVjdG9yeVBhdGgpLmRhdGEo
KSwKKyAgICAgICAgZGlyZWN0b3J5UGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwKICAgICAg
ICAgTCIiLAogICAgICAgICBGT0ZfTk9DT05GSVJNQVRJT04gfCBGT0ZfTk9FUlJPUlVJIHwgRk9G
X1NJTEVOVCwKICAgICAgICAgZmFsc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
TGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAppbmRl
eCAzMDljYTY2MjdlZDhhZmIzMDg2NzMxNTg2NGZmOGMzZTYyMGRhZDUxLi5mYzFmYzUyNzZlZGMx
OTYzYWI3ZjQwYTExMGVkMzhiNTBmNDhhNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAg
LTQ0LDcgKzQ1LDcgQEAgc3RhdGljIFN0cmluZyBsb2NhbGVJbmZvKExDVFlQRSBsb2NhbGVUeXBl
LCBjb25zdCBTdHJpbmcmIGZhbGxiYWNrKQogICAgICAgICByZXR1cm4gZmFsbGJhY2s7CiAgICAg
VUNoYXIqIGxvY2FsZU5hbWVCdWY7CiAgICAgU3RyaW5nIGxvY2FsZU5hbWUgPSBTdHJpbmc6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQobG9jYWxlQ2hhcnMsIGxvY2FsZU5hbWVCdWYpOwotICAgIGxvY2Fs
ZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIGxvY2FsZU5hbWVCdWYs
IGxvY2FsZUNoYXJzKTsKKyAgICBsb2NhbGVDaGFycyA9IEdldExvY2FsZUluZm8obGFuZ0lELCBs
b2NhbGVUeXBlLCB3Y2hhckZyb20obG9jYWxlTmFtZUJ1ZiksIGxvY2FsZUNoYXJzKTsKICAgICBp
ZiAoIWxvY2FsZUNoYXJzKQogICAgICAgICByZXR1cm4gZmFsbGJhY2s7CiAgICAgaWYgKGxvY2Fs
ZU5hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxr
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCmluZGV4IGM2ZDNmOTcw
NjA0OWNiMTNjOWVmNjM1NWViYjYzYTUwNzk4NTAyMjEuLjhkN2Q3YWM2ODM4NTllZTNlNGQxZDA0
YzNlZTA2YTI5ZjBiYzczZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fs
a2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKQEAgLTI3LDE0
ICsyNywxMyBAQAogI2luY2x1ZGUgPHd0Zi93aW4vUGF0aFdhbGtlci5oPgogCiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiBQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiB7CiAgICAgU3Ry
aW5nIHBhdGggPSBkaXJlY3RvcnkgKyAiXFwiICsgcGF0dGVybjsKLSAgICBtX2hhbmRsZSA9IDo6
RmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwg
Jm1fZGF0YSk7CisgICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHBhdGgud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCksICZtX2RhdGEpOwogfQogCiBQYXRoV2Fsa2VyOjp+UGF0aFdhbGtlcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENh
Y2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwCmluZGV4IDA3OTQ4ODEzNjdlMDIyMTQ1OGEwZTdiMGFjNDNkNjc0NDY4OWE0NTAu
LjlhODU2NDBiZGY5MTA3OWVhMzQwMzk1YjhlMjI3MjAxYmQ5MWQ0MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRMaW5rZWRGb250cyhX
Q0hBUiogbGlua2VkRm9udHMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG8KICAgICAgICAgdW5zaWdu
ZWQgaiA9IGk7CiAgICAgICAgIHdoaWxlIChqIDwgbGVuZ3RoICYmIGxpbmtlZEZvbnRzW2pdKQog
ICAgICAgICAgICAgaisrOwotICAgICAgICByZXN1bHQtPmFwcGVuZCh3Y2hhclRvU3RyaW5nKGxp
bmtlZEZvbnRzICsgaSwgaiAtIGkpKTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoU3RyaW5nKGxp
bmtlZEZvbnRzICsgaSwgaiAtIGkpKTsKICAgICAgICAgaSA9IGogKyAxOwogICAgIH0KIH0KQEAg
LTEzMSwxNCArMTMxLDE0IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiogZ2V0TGlua2Vk
Rm9udHMoU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBEV09S
RCBsaW5rZWRGb250c0J1ZmZlclNpemUgPSAwOwotICAgIGlmICg6OlJlZ1F1ZXJ5VmFsdWVFeChm
b250TGlua0tleSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZhbWlseSkuZGF0YSgpLCAw
LCBudWxscHRyLCBudWxscHRyLCAmbGlua2VkRm9udHNCdWZmZXJTaXplKSA9PSBFUlJPUl9GSUxF
X05PVF9GT1VORCkgeworICAgIGlmICg6OlJlZ1F1ZXJ5VmFsdWVFeChmb250TGlua0tleSwgZmFt
aWx5LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCAwLCBudWxscHRyLCBudWxscHRyLCAmbGlua2Vk
Rm9udHNCdWZmZXJTaXplKSA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgewogICAgICAgICBXVEZM
b2dBbHdheXMoIlRoZSBmb250IGxpbmsga2V5ICVzIGRvZXMgbm90IGV4aXN0IGluIHRoZSByZWdp
c3RyeS4iLCBmYW1pbHkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciB1bnNpZ25lZCBJbml0aWFsQnVmZmVy
U2l6ZSB7IDI1NiAvIHNpemVvZihXQ0hBUikgfTsKICAgICBWZWN0b3I8V0NIQVIsIEluaXRpYWxC
dWZmZXJTaXplPiBsaW5rZWRGb250cyhyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXQ0hBUik+
KGxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgLyBzaXplb2YoV0NIQVIpKTsKLSAgICBpZiAoOjpSZWdR
dWVyeVZhbHVlRXgoZm9udExpbmtLZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmYW1p
bHkpLmRhdGEoKSwgMCwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4obGlua2VkRm9u
dHMuZGF0YSgpKSwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgPT0gRVJST1JfU1VDQ0VTUykgewor
ICAgIGlmICg6OlJlZ1F1ZXJ5VmFsdWVFeChmb250TGlua0tleSwgZmFtaWx5LndpZGVDaGFyYWN0
ZXJzKCkuZGF0YSgpLCAwLCBudWxscHRyLCByZWludGVycHJldF9jYXN0PEJZVEUqPihsaW5rZWRG
b250cy5kYXRhKCkpLCAmbGlua2VkRm9udHNCdWZmZXJTaXplKSA9PSBFUlJPUl9TVUNDRVNTKSB7
CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxpbmtlZEZvbnRzQnVmZmVyU2l6ZSAvIHNpemVv
ZihXQ0hBUik7CiAgICAgICAgIGFwcGVuZExpbmtlZEZvbnRzKGxpbmtlZEZvbnRzLmRhdGEoKSwg
bGVuZ3RoLCByZXN1bHQpOwogICAgIH0KQEAgLTI4NSw3ICsyODUsNyBAQCBSZWZQdHI8Rm9udD4g
Rm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBkZXNjcgogICAgICAgICBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCk7CiAgICAgICAgIFdD
SEFSIG5hbWVbTEZfRkFDRVNJWkVdOwogICAgICAgICBHZXRUZXh0RmFjZShoZGMsIExGX0ZBQ0VT
SVpFLCBuYW1lKTsKLSAgICAgICAgZmFtaWx5TmFtZSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0
cmluZyhuYW1lKTsKKyAgICAgICAgZmFtaWx5TmFtZSA9IFN0cmluZyhuYW1lKTsKIAogICAgICAg
ICBpZiAoY29udGFpbnNDaGFyYWN0ZXIgfHwgY3VycmVudEZvbnRDb250YWluc0NoYXJhY3Rlciho
ZGMsIGNoYXJhY3RlcikpCiAgICAgICAgICAgICBicmVhazsKQEAgLTMwMSw3ICszMDEsNyBAQCBS
ZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBkZXNjcgogCiAgICAgICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICAg
ICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7Ci0gICAgICAgIFN0cmluZ1Zp
ZXcobGlua2VkRm9udHMtPmF0KGxpbmtlZEZvbnRJbmRleCkpLmdldENoYXJhY3RlcnNXaXRoVXBj
b252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CisgICAgICAgIFN0cmluZ1ZpZXcobGlua2VkRm9u
dHMtPmF0KGxpbmtlZEZvbnRJbmRleCkpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFy
RnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICAgICAgbG9nRm9udC5sZkZhY2VOYW1lW2xp
bmtlZEZvbnRzLT5hdChsaW5rZWRGb250SW5kZXgpLmxlbmd0aCgpXSA9IDA7CiAgICAgICAgIEVu
dW1Gb250RmFtaWxpZXNFeChoZGMsICZsb2dGb250LCBsaW5rZWRGb250RW51bVByb2MsIHJlaW50
ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaGZvbnQpLCAwKTsKICAgICAgICAgbGlua2VkRm9udEluZGV4
Kys7CkBAIC0zMzAsNyArMzMwLDcgQEAgVmVjdG9yPFN0cmluZz4gRm9udENhY2hlOjpzeXN0ZW1G
b250RmFtaWxpZXMoKQogCiBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpmb250RnJvbURlc2NyaXB0
aW9uQW5kTG9nRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29u
c3QgTE9HRk9OVCYgZm9udCwgQXRvbWljU3RyaW5nJiBvdXRGb250RmFtaWx5TmFtZSkKIHsKLSAg
ICBBdG9taWNTdHJpbmcgZmFtaWx5TmFtZSA9IHdjaGFyVG9TdHJpbmcoZm9udC5sZkZhY2VOYW1l
LCB3Y3NubGVuKGZvbnQubGZGYWNlTmFtZSwgTEZfRkFDRVNJWkUpKTsKKyAgICBBdG9taWNTdHJp
bmcgZmFtaWx5TmFtZShmb250LmxmRmFjZU5hbWUsIHdjc25sZW4oZm9udC5sZkZhY2VOYW1lLCBM
Rl9GQUNFU0laRSkpOwogICAgIFJlZlB0cjxGb250PiBmb250RGF0YSA9IGZvbnRGb3JGYW1pbHko
Zm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKICAgICBpZiAoZm9udERhdGEpCiAgICAgICAg
IG91dEZvbnRGYW1pbHlOYW1lID0gZmFtaWx5TmFtZTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0
aWMgR0RJT2JqZWN0PEhGT05UPiBjcmVhdGVHRElGb250KGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5LCBMT05HIGRlc2lyZWRXZQogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dGb250Lmxm
Q2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKICAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWls
eSA9IFN0cmluZ1ZpZXcoZmFtaWx5KS5zdWJzdHJpbmcoMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExGX0ZBQ0VTSVpFIC0gMSkpOwotICAgIHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChsb2dGb250LmxmRmFjZU5hbWUpOworICAgIHRydW5jYXRlZEZhbWlseS5nZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20obG9nRm9udC5sZkZhY2VOYW1lKSk7CiAg
ICAgbG9nRm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWlseS5sZW5ndGgoKV0gPSAwOwogICAg
IGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CiAKQEAgLTU5OCw3ICs1OTgsNyBAQCBWZWN0
b3I8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4gRm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzSW5GYW1pbAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dGb250Lmxm
Q2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKICAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWls
eSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkuc3Vic3RyaW5nKDAsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihMRl9GQUNFU0laRSAtIDEpKTsKLSAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQobG9nRm9udC5sZkZhY2VOYW1lKTsKKyAgICB0cnVuY2F0ZWRGYW1pbHku
Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGxvZ0ZvbnQubGZGYWNlTmFtZSkp
OwogICAgIGxvZ0ZvbnQubGZGYWNlTmFtZVt0cnVuY2F0ZWRGYW1pbHkubGVuZ3RoKCldID0gMDsK
ICAgICBsb2dGb250LmxmUGl0Y2hBbmRGYW1pbHkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IGE1N2U2OWIyYTdkYTZlNjI1MDIxZmMyZTgxODYwNGE4
YjM0NTg4YmIuLmFiN2M3OTBkNjBmMmU4Zjc0YWYwM2MwNmFjZmM3MmM4ZTM5YzIyZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC0yNSwxMSArMjUsOSBAQAog
I2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJPcGVuVHlwZVV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCiAjaW5jbHVkZSA8Y2Fpcm8td2luMzIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyAr
NDUsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogCiAgICAgTE9HRk9OVCBsb2dGb250Owog
ICAgIG1lbXNldCgmbG9nRm9udCwgMCwgc2l6ZW9mKExPR0ZPTlQpKTsKLSAgICB3Y3NuY3B5KGxv
Z0ZvbnQubGZGYWNlTmFtZSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fbmFtZSkuZGF0
YSgpLCBMRl9GQUNFU0laRSAtIDEpOworICAgIHdjc25jcHkobG9nRm9udC5sZkZhY2VOYW1lLCBt
X25hbWUud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIExGX0ZBQ0VTSVpFIC0gMSk7CiAKICAgICBs
b2dGb250LmxmSGVpZ2h0ID0gLXNpemU7CiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gRm9udFJl
bmRlcmluZ01vZGU6Ok5vcm1hbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcApp
bmRleCA0YTU5ZTFiYmJmYTIxMjM1ZWIwZGY2N2JmMzA3NGE3MzE2Mzc1MzZjLi4zOGNhYThiOWQ5
YjJjZGI1MjFmYjUzYzk3ZWRkOGQ2MDQ1YzIxMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2Rl
Q2Fpcm9XaW4uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJGb250LmgiCiAjaW5j
bHVkZSAiSFduZERDLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNyArNTAsNyBAQCBib29sIEdseXBo
UGFnZTo6ZmlsbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpCiAgICAgU2Vs
ZWN0T2JqZWN0KGRjLCBmb250LnBsYXRmb3JtRGF0YSgpLmhmb250KCkpOwogCiAgICAgV09SRCBs
b2NhbEdseXBoQnVmZmVyW0dseXBoUGFnZTo6c2l6ZSAqIDJdOwotICAgIERXT1JEIHJlc3VsdCA9
IEdldEdseXBoSW5kaWNlcyhkYywgYnVmZmVyLCBidWZmZXJMZW5ndGgsIGxvY2FsR2x5cGhCdWZm
ZXIsIEdHSV9NQVJLX05PTkVYSVNUSU5HX0dMWVBIUyk7CisgICAgRFdPUkQgcmVzdWx0ID0gR2V0
R2x5cGhJbmRpY2VzKGRjLCB3Y2hhckZyb20oYnVmZmVyKSwgYnVmZmVyTGVuZ3RoLCBsb2NhbEds
eXBoQnVmZmVyLCBHR0lfTUFSS19OT05FWElTVElOR19HTFlQSFMpOwogICAgIGJvb2wgc3VjY2Vz
cyA9IHJlc3VsdCAhPSBHRElfRVJST1IgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkg
PT0gYnVmZmVyTGVuZ3RoOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNpemU7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCmluZGV4IDc5OWUzNDc0MDM5NDA2
MzUxMGU5NTRiNmFmMzA5OThlN2QyNWUyYWQuLjg1MmNiYTI5NTcyY2Y0YmExYmU5NzlkNmVjOTk2
MTUzZDk5YWYwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JY29uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSWNvbldpbi5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJMb2NhbFdpbmRvd3ND
b250ZXh0LmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDcgKzUzLDcgQEAgUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAg
ICAgICBtZW1zZXQoJnNmaSwgMCwgc2l6ZW9mKHNmaSkpOwogCiAgICAgICAgIFN0cmluZyB0bXBG
aWxlbmFtZSA9IGZpbGVuYW1lc1swXTsKLSAgICAgICAgaWYgKCFTSEdldEZpbGVJbmZvKHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0bXBGaWxlbmFtZSkuZGF0YSgpLCAwLCAmc2ZpLCBzaXpl
b2Yoc2ZpKSwgU0hHRklfSUNPTiB8IFNIR0ZJX1NIRUxMSUNPTlNJWkUgfCBTSEdGSV9TTUFMTElD
T04pKQorICAgICAgICBpZiAoIVNIR2V0RmlsZUluZm8odG1wRmlsZW5hbWUud2lkZUNoYXJhY3Rl
cnMoKS5kYXRhKCksIDAsICZzZmksIHNpemVvZihzZmkpLCBTSEdGSV9JQ09OIHwgU0hHRklfU0hF
TExJQ09OU0laRSB8IFNIR0ZJX1NNQUxMSUNPTikpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oc2ZpLmhJY29uKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IGM4NDhiNjFiOWM1
OGQ4ZjI5ZjFlYmIzMDk2YmNhMTE3MmRlMWIzMjcuLmVmYjE1NWY0ODJiMzI3N2RiYjMyMWJjOTlk
N2FiOTM5MjA4YjY2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24uY3BwCkBAIC00NCw3ICs0NCw2IEBACiAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBTT0ZUX0xJTktfTElCUkFSWShNZik7CiBTT0ZU
X0xJTktfT1BUSU9OQUwoTWYsIE1GQ3JlYXRlU291cmNlUmVzb2x2ZXIsIEhSRVNVTFQsIFNUREFQ
SUNBTExUWVBFLCAoSU1GU291cmNlUmVzb2x2ZXIqKikpOwpAQCAtMTQyLDcgKzE0MSw3IEBAIHN0
YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWlt
ZVR5cGVDYWNoZSgpCiAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKICAgICAgICAgQ0FMUFdTVFIg
bWltZVR5cGVBcnJheSA9IHByb3BWYXJNaW1lVHlwZUFycmF5LmNhbHB3c3RyOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZVR5cGVBcnJheS5jRWxlbXM7IGkrKykKLSAgICAg
ICAgICAgIGNhY2hlZFR5cGVzLmdldCgpLmFkZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmco
bWltZVR5cGVBcnJheS5wRWxlbXNbaV0pKTsKKyAgICAgICAgICAgIGNhY2hlZFR5cGVzLmdldCgp
LmFkZChtaW1lVHlwZUFycmF5LnBFbGVtc1tpXSk7CiAgICAgfQogCiAgICAgUHJvcFZhcmlhbnRD
bGVhcigmcHJvcFZhck1pbWVUeXBlQXJyYXkpOwpAQCAtNDcwLDcgKzQ2OSw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdGFydENyZWF0ZU1lZGlhU291cmNlKGNv
bnN0IFN0cmluZyYgdXJsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENPTVB0cjxJVW5r
bm93bj4gY2FuY2VsQ29va2llOwotICAgIFZlY3Rvcjx3Y2hhcl90PiB1cmxTb3VyY2UgPSBzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIodXJsKTsKKyAgICBWZWN0b3I8d2NoYXJfdD4gdXJsU291
cmNlID0gdXJsLndpZGVDaGFyYWN0ZXJzKCk7CiAKICAgICBBc3luY0NhbGxiYWNrKiBjYWxsYmFj
ayA9IG5ldyBBc3luY0NhbGxiYWNrKHRoaXMsIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIu
Y3BwCmluZGV4IDExMDQ1NDc2ZGI0NjY2NWJlNWViMjI5M2ExODRlMWUwYTJiZjYzNWUuLjQ3NGM0
ODYwZmYxMDA0NDA5OWI2YWYzZjliZmI5YjQwY2Q3ODhkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxl
ci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJU
ZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQorI2luY2x1ZGUgPHd0Zi90
ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVW5pc2Ny
aWJlQ29udHJvbGxlcjo6aXRlbWl6ZVNoYXBlQW5kUGxhY2UoY29uc3QgVUNoYXIqIGNwLCB1bnNp
Z25lZCBzdHJpbmdPCiAgICAgbV9pdGVtcy5yZXNpemUoNik7CiAgICAgaW50IG51bUl0ZW1zID0g
MDsKICAgICBIUkVTVUxUIHJjID0gU19PSzsKLSAgICB3aGlsZSAocmMgPSA6OlNjcmlwdEl0ZW1p
emUoY3AsIGxlbmd0aCwgbV9pdGVtcy5zaXplKCkgLSAxLCAmbV9jb250cm9sLCAmbV9zdGF0ZSwg
bV9pdGVtcy5kYXRhKCksICZudW1JdGVtcykgPT0gRV9PVVRPRk1FTU9SWSkgeworICAgIHdoaWxl
IChyYyA9IDo6U2NyaXB0SXRlbWl6ZSh3Y2hhckZyb20oY3ApLCBsZW5ndGgsIG1faXRlbXMuc2l6
ZSgpIC0gMSwgJm1fY29udHJvbCwgJm1fc3RhdGUsIG1faXRlbXMuZGF0YSgpLCAmbnVtSXRlbXMp
ID09IEVfT1VUT0ZNRU1PUlkpIHsKICAgICAgICAgbV9pdGVtcy5yZXNpemUobV9pdGVtcy5zaXpl
KCkgKiAyKTsKICAgICAgICAgcmVzZXRDb250cm9sQW5kU3RhdGUoKTsKICAgICB9CkBAIC00Mjgs
NyArNDI4LDcgQEAgYm9vbCBVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZShjb25zdCBVQ2hhciog
c3RyLCBpbnQgbGVuLCBTQ1JJUFRfSVRFTSBpdGVtLCBjb24KICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgZG8gewotICAgICAgICBzaGFwZVJlc3VsdCA9IFNjcmlwdFNoYXBlKGhkYywgZm9u
dERhdGEtPnNjcmlwdENhY2hlKCksIHN0ciwgbGVuLCBnbHlwaHMuc2l6ZSgpLCAmaXRlbS5hLAor
ICAgICAgICBzaGFwZVJlc3VsdCA9IFNjcmlwdFNoYXBlKGhkYywgZm9udERhdGEtPnNjcmlwdENh
Y2hlKCksIHdjaGFyRnJvbShzdHIpLCBsZW4sIGdseXBocy5zaXplKCksICZpdGVtLmEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhzLmRhdGEoKSwgY2x1c3RlcnMuZGF0
YSgpLCB2aXN1YWxBdHRyaWJ1dGVzLmRhdGEoKSwgJmdseXBoQ291bnQpOwogICAgICAgICBpZiAo
c2hhcGVSZXN1bHQgPT0gRV9QRU5ESU5HKSB7CiAgICAgICAgICAgICAvLyBUaGUgc2NyaXB0IGNh
Y2hlIGlzbid0IHByaW1lZCB3aXRoIGVub3VnaCBpbmZvIHlldC4gIFdlIG5lZWQgdG8gc2VsZWN0
IG91ciBIRk9OVCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKaW5kZXggMzhmZDYwYjkyMGI2MTg0Nzlk
ZTE2OGViYjdmNGUyOTZkYWVlODU5OC4uOTAxYjJiNzEwZTRmODFhM2M4MGNhYjAzOTM4ODQ3ZWEx
NjQxZTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4v
RG93bmxvYWRCdW5kbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OSw5ICs1OCw5IEBAIGJvb2wg
YXBwZW5kUmVzdW1lRGF0YShjb25zdCBjaGFyKiByZXN1bWVCeXRlcywgdWludDMyX3QgcmVzdW1l
TGVuZ3RoLCBjb25zdCBTdHJpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBT
dHJpbmcgbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGg7CisgICAgYXV0byBudWxsaWZpZWRQYXRo
ID0gYnVuZGxlUGF0aC53aWRlQ2hhcmFjdGVycygpOwogICAgIEZJTEUqIGJ1bmRsZSA9IDA7Ci0g
ICAgaWYgKF93Zm9wZW5fcygmYnVuZGxlLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobnVs
bGlmaWVkUGF0aCkuZGF0YSgpLCBURVhUKCJhYiIpKSB8fCAhYnVuZGxlKSB7CisgICAgaWYgKF93
Zm9wZW5fcygmYnVuZGxlLCBudWxsaWZpZWRQYXRoLmRhdGEoKSwgVEVYVCgiYWIiKSkgfHwgIWJ1
bmRsZSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMgdG8gYXBw
ZW5kIHJlc3VtZSBkYXRhIiwgYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC05OCw5ICs5Nyw5IEBAIGJvb2wgZXh0cmFjdFJlc3VtZURh
dGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8Y2hhcj4mIHJlc3VtZURhdGEpCiAg
ICAgfQogCiAgICAgLy8gT3BlbiBhIGhhbmRsZSB0byB0aGUgYnVuZGxlIGZpbGUKLSAgICBTdHJp
bmcgbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGg7CisgICAgYXV0byBudWxsaWZpZWRQYXRoID0g
YnVuZGxlUGF0aC53aWRlQ2hhcmFjdGVycygpOwogICAgIEZJTEUqIGJ1bmRsZSA9IDA7Ci0gICAg
aWYgKF93Zm9wZW5fcygmYnVuZGxlLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobnVsbGlm
aWVkUGF0aCkuZGF0YSgpLCBURVhUKCJyK2IiKSkgfHwgIWJ1bmRsZSkgeworICAgIGlmIChfd2Zv
cGVuX3MoJmJ1bmRsZSwgbnVsbGlmaWVkUGF0aC5kYXRhKCksIFRFWFQoInIrYiIpKSB8fCAhYnVu
ZGxlKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0byBnZXQg
cmVzdW1lIGRhdGEiLCBidW5kbGVQYXRoLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCmluZGV4IDE1MzE1Y2E3MzVmZjJlN2FiNDM1MTcxZTZjMWJkZTYwMzczMmNiZGUu
LmE2MWFhOGM1MzY4MmFmZGQyZTQxMDA2MzU3ZDZkY2ZmNDIwYzFhZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNTksNyArNTksNyBA
QCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZUludGVybmFsKExDSUQgdXNlckRlZmF1bHRMQ0lE
LCBjb25zdCBTdHJpbmcmIHVzZXJEZWZhdQogewogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGV4dHJhY3RMYW5ndWFnZUNvZGUobG9jYWxlKSwgdXNlckRlZmF1bHRMYW5ndWFnZUNvZGUp
KQogICAgICAgICByZXR1cm4gdXNlckRlZmF1bHRMQ0lEOwotICAgIHJldHVybiBMb2NhbGVOYW1l
VG9MQ0lEKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihsb2NhbGUpLmRhdGEoKSwgMCk7Cisg
ICAgcmV0dXJuIExvY2FsZU5hbWVUb0xDSUQobG9jYWxlLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgp
LCAwKTsKIH0KIAogc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGUpCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBMQ0lEIExDSURGcm9tTG9jYWxlKGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogICAgIGNvbnN0IHNpemVfdCBsYW5ndWFnZUNvZGVC
dWZmZXJTaXplID0gOTsKICAgICBXQ0hBUiBsb3dlcmNhc2VMYW5ndWFnZUNvZGVbbGFuZ3VhZ2VD
b2RlQnVmZmVyU2l6ZV07CiAgICAgOjpHZXRMb2NhbGVJbmZvKExPQ0FMRV9VU0VSX0RFRkFVTFQs
IExPQ0FMRV9TSVNPNjM5TEFOR05BTUUsIGxvd2VyY2FzZUxhbmd1YWdlQ29kZSwgbGFuZ3VhZ2VD
b2RlQnVmZmVyU2l6ZSk7Ci0gICAgU3RyaW5nIHVzZXJEZWZhdWx0TGFuZ3VhZ2VDb2RlID0gbnVs
bFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGxvd2VyY2FzZUxhbmd1YWdlQ29kZSk7CisgICAgU3Ry
aW5nIHVzZXJEZWZhdWx0TGFuZ3VhZ2VDb2RlKGxvd2VyY2FzZUxhbmd1YWdlQ29kZSk7CiAKICAg
ICBMQ0lEIGxjaWQgPSBMQ0lERnJvbUxvY2FsZUludGVybmFsKExPQ0FMRV9VU0VSX0RFRkFVTFQs
IHVzZXJEZWZhdWx0TGFuZ3VhZ2VDb2RlLCBTdHJpbmcobG9jYWxlKSk7CiAgICAgaWYgKCFsY2lk
KQpAQCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgTG9jYWxlV2luOjpnZXRMb2NhbGVJbmZvU3RyaW5n
KExDVFlQRSB0eXBlKQogICAgIGlmIChidWZmZXJTaXplV2l0aE5VTCA8PSAwKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoYnVmZmVyU2l6ZVdpdGhO
VUwpOwotICAgIDo6R2V0TG9jYWxlSW5mbyhtX2xjaWQsIHR5cGUsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlclNpemVXaXRoTlVMKTsKKyAgICA6OkdldExvY2FsZUluZm8obV9sY2lkLCB0eXBlLCB3Y2hh
ckZyb20oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlclNpemVXaXRoTlVMKTsKICAgICBidWZmZXIuc2hy
aW5rKGJ1ZmZlclNpemVXaXRoTlVMIC0gMSk7CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RG
TW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9CU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApp
bmRleCAwZjQ2YzVkY2FiMjliN2I0NjNiYjZlY2QzMWIwZWIzYjc1OGMyMjNjLi4wMjdjZGRkMzJh
N2Q1N2EzMDhiNDJiODg4M2QyYjViMzk0MTA2OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0JTdHJpbmcuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4K
IAogI2lmIFVTRShDRikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgpAQCAtNjUsNyArNjYsNyBAQCBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFN0cmluZyYgcykKICAg
ICBpZiAocy5pc051bGwoKSkKICAgICAgICAgbV9ic3RyID0gMDsKICAgICBlbHNlCi0gICAgICAg
IG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKFN0cmluZ1ZpZXcocykudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCksIHMubGVuZ3RoKCkpOworICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmluZ0xl
bih3Y2hhckZyb20oU3RyaW5nVmlldyhzKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSksIHMubGVu
Z3RoKCkpOwogfQogCiBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQpAQCAtNzMsNyAr
NzQsNyBAQCBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICh1cmwuaXNO
dWxsKCkpCiAgICAgICAgIG1fYnN0ciA9IDA7CiAgICAgZWxzZQotICAgICAgICBtX2JzdHIgPSBT
eXNBbGxvY1N0cmluZ0xlbihTdHJpbmdWaWV3KHVybC5zdHJpbmcoKSkudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCksIHVybC5zdHJpbmcoKS5sZW5ndGgoKSk7CisgICAgICAgIG1fYnN0ciA9IFN5c0Fs
bG9jU3RyaW5nTGVuKHdjaGFyRnJvbShTdHJpbmdWaWV3KHVybC5zdHJpbmcoKSkudXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzKCkpLCB1cmwuc3RyaW5nKCkubGVuZ3RoKCkpOwogfQogCiBCU3RyaW5nOjpC
U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgcykKQEAgLTgxLDcgKzgyLDcgQEAgQlN0cmluZzo6
QlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHMpCiAgICAgaWYgKHMuaXNOdWxsKCkpCiAgICAg
ICAgIG1fYnN0ciA9IDA7CiAgICAgZWxzZQotICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmlu
Z0xlbihTdHJpbmdWaWV3KHMuc3RyaW5nKCkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzLmxl
bmd0aCgpKTsKKyAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4od2NoYXJGcm9tKFN0
cmluZ1ZpZXcocy5zdHJpbmcoKSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkpLCBzLmxlbmd0aCgp
KTsKIH0KIAogI2lmIFVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggMGU0MDgwYjg1Njc2YTBhNDYxYmJm
OTZiYTE3MzIzNWY1YjdkYjYzYy4uOTUzZDRiZGRiM2YyMjI5ZmFjNzE3MmI1NjRhZDU1N2FjZjUx
YWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgYm9vbCBnZXRXZWJM
b2NEYXRhKGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhT2JqZWN0LCBTdHJpbmcmIHVybCwgU3RyaW5n
KiB0aQogICAgIGlmICghZGF0YU9iamVjdC0+Y29udGFpbnMoY2ZIRHJvcEZvcm1hdCgpLT5jZkZv
cm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHdjc2NweShmaWxlbmFtZSwgc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRhdGFPYmplY3QtPmdldChjZkhEcm9wRm9ybWF0KCkt
PmNmRm9ybWF0KVswXSkuZGF0YSgpKTsKKyAgICB3Y3NjcHkoZmlsZW5hbWUsIGRhdGFPYmplY3Qt
PmdldChjZkhEcm9wRm9ybWF0KCktPmNmRm9ybWF0KVswXS53aWRlQ2hhcmFjdGVycygpLmRhdGEo
KSk7CiAgICAgaWYgKF93Y3NpY21wKFBhdGhGaW5kRXh0ZW5zaW9uVyhmaWxlbmFtZSksIEwiLnVy
bCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7ICAgIAogCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBz
dGF0aWMgYm9vbCBnZXRXZWJMb2NEYXRhKGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhT2JqZWN0LCBT
dHJpbmcmIHVybCwgU3RyaW5nKiB0aQogCiAgICAgaWYgKHRpdGxlKSB7CiAgICAgICAgIFBhdGhS
ZW1vdmVFeHRlbnNpb24oZmlsZW5hbWUpOwotICAgICAgICAqdGl0bGUgPSBudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcoZmlsZW5hbWUpOworICAgICAgICAqdGl0bGUgPSBTdHJpbmcoZmlsZW5h
bWUpOwogICAgIH0KICAgICAKLSAgICB1cmwgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmco
dXJsQnVmZmVyKTsKKyAgICB1cmwgPSBTdHJpbmcodXJsQnVmZmVyKTsKICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg1LDcgKzE4NSw3IEBAIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsRGF0YShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIAog
ICAgIGlmIChjYkRhdGEpIHsKICAgICAgICAgUFdTVFIgYnVmZmVyID0gc3RhdGljX2Nhc3Q8UFdT
VFI+KEdsb2JhbExvY2soY2JEYXRhKSk7Ci0gICAgICAgIF9zbndwcmludGYoYnVmZmVyLCBzaXpl
LCBMIiVzXG4lcyIsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtdXRhYmxlVVJMKS5kYXRh
KCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtdXRhYmxlVGl0bGUpLmRhdGEoKSk7Cisg
ICAgICAgIF9zbndwcmludGYoYnVmZmVyLCBzaXplLCBMIiVzXG4lcyIsIG11dGFibGVVUkwud2lk
ZUNoYXJhY3RlcnMoKS5kYXRhKCksIG11dGFibGVUaXRsZS53aWRlQ2hhcmFjdGVycygpLmRhdGEo
KSk7CiAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgIH0KICAgICByZXR1cm4gY2JE
YXRhOwpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgZ2V0RmlsZURlc2NyaXB0b3JEYXRhKElEYXRh
T2JqZWN0KiBkYXRhT2JqZWN0LCBpbnQmIHNpemUsIFN0cmluZyYgcGF0aG5hbWUpCiAKICAgICBG
SUxFR1JPVVBERVNDUklQVE9SKiBmZ2QgPSBzdGF0aWNfY2FzdDxGSUxFR1JPVVBERVNDUklQVE9S
Kj4oR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKSk7CiAgICAgc2l6ZSA9IGZnZC0+ZmdkWzBdLm5G
aWxlU2l6ZUxvdzsKLSAgICBwYXRobmFtZSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhm
Z2QtPmZnZFswXS5jRmlsZU5hbWUpOworICAgIHBhdGhuYW1lID0gU3RyaW5nKGZnZC0+ZmdkWzBd
LmNGaWxlTmFtZSk7CiAKICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgOjpS
ZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CkBAIC01MjUsOSArNTI1LDEwIEBAIFN0cmluZyBnZXRV
UkwoY29uc3QgRHJhZ0RhdGFNYXAqIGRhdGEsIERyYWdEYXRhOjpGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kgZmlsZW5hCiAgICAgaWYgKCFnZXREYXRhTWFwSXRlbShkYXRhLCBmaWxlbmFtZVdGb3Jt
YXQoKSwgc3RyaW5nRGF0YSkpCiAgICAgICAgIGdldERhdGFNYXBJdGVtKGRhdGEsIGZpbGVuYW1l
Rm9ybWF0KCksIHN0cmluZ0RhdGEpOwogCi0gICAgaWYgKHN0cmluZ0RhdGEuaXNFbXB0eSgpIHx8
ICghUGF0aEZpbGVFeGlzdHMoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN0cmluZ0RhdGEp
LmRhdGEoKSkgJiYgIVBhdGhJc1VOQyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3RyaW5n
RGF0YSkuZGF0YSgpKSkpCisgICAgYXV0byB3Y2hhckRhdGEgPSBzdHJpbmdEYXRhLndpZGVDaGFy
YWN0ZXJzKCkuZGF0YSgpOworICAgIGlmIChzdHJpbmdEYXRhLmlzRW1wdHkoKSB8fCAoIVBhdGhG
aWxlRXhpc3RzKHdjaGFyRGF0YSkgJiYgIVBhdGhJc1VOQyh3Y2hhckRhdGEpKSkKICAgICAgICAg
cmV0dXJuIHVybDsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nID0g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVbmlDaGFyICopc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHN0cmluZ0RhdGEp
LmRhdGEoKSwgd2NzbGVuKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzdHJpbmdEYXRhKS5k
YXRhKCkpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyA9IGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAo
Y29uc3QgVW5pQ2hhciAqKXdjaGFyRGF0YSwgd2NzbGVuKHdjaGFyRGF0YSkpKTsKICAgICBpZiAo
dXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkgJiYgdGl0bGUpCiAgICAgICAg
ICp0aXRsZSA9IHVybDsKICNlbmRpZgpAQCAtNzQyLDcgKzc0Myw3IEBAIHZvaWQgZ2V0Q0ZEYXRh
KElEYXRhT2JqZWN0KiBkYXRhLCBGT1JNQVRFVEMqIGZvcm1hdCwgVmVjdG9yPFN0cmluZz4mIGRh
dGFTdHJpbmdzCiAgICAgZm9yIChVSU5UIGkgPSAwOyBpIDwgZmlsZUNvdW50OyBpKyspIHsKICAg
ICAgICAgaWYgKCFEcmFnUXVlcnlGaWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIFdURl9BUlJBWV9M
RU5HVEgoZmlsZW5hbWUpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBkYXRhU3Ry
aW5ncy5hcHBlbmQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKSk7CisgICAg
ICAgIGRhdGFTdHJpbmdzLmFwcGVuZChmaWxlbmFtZSk7CiAgICAgfQogCiAgICAgR2xvYmFsVW5s
b2NrKHN0b3JlLmhHbG9iYWwpOwpAQCAtNzk3LDcgKzc5OCw3IEBAIHZvaWQgc2V0Q0ZEYXRhKElE
YXRhT2JqZWN0KiBkYXRhLCBGT1JNQVRFVEMqIGZvcm1hdCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRhdGFTCiAgICAgZHJvcEZpbGVzLT5wRmlsZXMgPSBzaXplb2YoRFJPUEZJTEVTKTsKICAgICBk
cm9wRmlsZXMtPmZXaWRlID0gVFJVRTsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBkYXRhU3RyaW5n
cy5maXJzdCgpOwotICAgIHdjc2NweShyZWludGVycHJldF9jYXN0PExQV1NUUj4oZHJvcEZpbGVz
ICsgMSksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxlbmFtZSkuZGF0YSgpKTsKKyAg
ICB3Y3NjcHkocmVpbnRlcnByZXRfY2FzdDxMUFdTVFI+KGRyb3BGaWxlcyArIDEpLCBmaWxlbmFt
ZS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSk7CiAgICAgR2xvYmFsVW5sb2NrKG1lZGl1bS5oR2xv
YmFsKTsKICAgICBkYXRhLT5TZXREYXRhKGZvcm1hdCwgJm1lZGl1bSwgRkFMU0UpOwogICAgIDo6
R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdEYXRhV2luLmNwcAppbmRleCA0NzllMGNhYWY3MzkwMTk3ODk4NDBiMGY4NzZmNmQ0Zjc5
NjRiM2VlLi5lZTBkOGIyNjBjY2NiNGRiY2UxMzBlZDMzMWM4OTNjMGRjMGZiMDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTM3LDcgKzM3LDYg
QEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0No
YXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTgsNyArMTU3
LDcgQEAgVmVjdG9yPFN0cmluZz4gRHJhZ0RhdGE6OmFzRmlsZW5hbWVzKCkgY29uc3QKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZpbGVzOyBpKyspIHsKICAgICAgICAgICAg
IGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIGksIGZpbGVuYW1lLCBXVEZfQVJSQVlfTEVOR1RI
KGZpbGVuYW1lKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhmaWxlbmFtZSkpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChmaWxlbmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBG
cmVlIHVwIG1lbW9yeSBmcm9tIGRyYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAKaW5kZXggMTI1NTQ4MGI0MGEyNmEyNDE4ZmEyM2E2YjEwZGU2ODY0NGI5
ZGU2MS4uZTgxYzgwMTM2YjljMzQ2ZWEzMGQ3NGQ2MjJkODg1NTU1MjA1ZjMzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTQwLDcgKzQwLDYg
QEAKICNpbmNsdWRlICJXZWJDb3JlVGV4dFJlbmRlcmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0No
YXJTdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCiAjaW5j
bHVkZSA8d2luZG93cy5oPgpAQCAtNzQsOCArNzMsOCBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVE
cmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQpCiBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSkKIHsKICAgICBTSEZJTEVJTkZPIHNoZmkgeyB9OwotICAgIFN0cmluZyBmbmFt
ZSA9IGZpbGVuYW1lOwotICAgIGlmIChGQUlMRUQoU0hHZXRGaWxlSW5mbyhzdHJpbmdUb051bGxU
ZXJtaW5hdGVkV0NoYXIoZm5hbWUpLmRhdGEoKSwgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAmc2hm
aSwgc2l6ZW9mKHNoZmkpLCBTSEdGSV9JQ09OIHwgU0hHRklfVVNFRklMRUFUVFJJQlVURVMpKSkK
KyAgICBhdXRvIGZuYW1lID0gZmlsZW5hbWUud2lkZUNoYXJhY3RlcnMoKTsKKyAgICBpZiAoRkFJ
TEVEKFNIR2V0RmlsZUluZm8oZm5hbWUuZGF0YSgpLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsICZz
aGZpLCBzaXplb2Yoc2hmaSksIFNIR0ZJX0lDT04gfCBTSEdGSV9VU0VGSUxFQVRUUklCVVRFUykp
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIElDT05JTkZPIGljb25JbmZvOwpAQCAtMTExLDcg
KzExMCw3IEBAIHN0YXRpYyBGb250Q2FzY2FkZSBkcmFnTGFiZWxGb250KGludCBzaXplLCBib29s
IGJvbGQsIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmluCiAKICAgICBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uOwogICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChib2xkID8gYm9s
ZFdlaWdodFZhbHVlKCkgOiBub3JtYWxXZWlnaHRWYWx1ZSgpKTsKLSAgICBkZXNjcmlwdGlvbi5z
ZXRPbmVGYW1pbHkobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1ldHJpY3MubGZTbUNhcHRp
b25Gb250LmxmRmFjZU5hbWUpKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkobWV0cmlj
cy5sZlNtQ2FwdGlvbkZvbnQubGZGYWNlTmFtZSk7CiAgICAgZGVzY3JpcHRpb24uc2V0U3BlY2lm
aWVkU2l6ZSgoZmxvYXQpc2l6ZSk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKChm
bG9hdClzaXplKTsKICAgICBkZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVn
aXN0cnlXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0
cnlXaW4uY3BwCmluZGV4IGIzNTBmMWNjNzEyZWE4YzAzNWUyYzJkMmQwNjUwMzZmOWQzZTUwZTMu
LmEwNDQ5ODJhMDhlOTBkODAxOWZmMTRjZjJiMDMzYmJkNTUyZTIxMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTMw
LDcgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00MSwxMCArNDAsMTAgQEAgc3RhdGljIFN0cmluZyBtaW1lVHlwZUZvckV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbikKICAgICBEV09SRCBjb250ZW50VHlwZVN0ckxlbiA9IHNpemVv
Zihjb250ZW50VHlwZVN0cik7CiAgICAgRFdPUkQga2V5VHlwZTsKIAotICAgIEhSRVNVTFQgcmVz
dWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0NMQVNTRVNfUk9PVCwgc3RyaW5nVG9OdWxsVGVy
bWluYXRlZFdDaGFyKGV4dCkuZGF0YSgpLCBMIkNvbnRlbnQgVHlwZSIsICZrZXlUeXBlLCBjb250
ZW50VHlwZVN0ciwgJmNvbnRlbnRUeXBlU3RyTGVuKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGdl
dFJlZ2lzdHJ5VmFsdWUoSEtFWV9DTEFTU0VTX1JPT1QsIGV4dC53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSwgTCJDb250ZW50IFR5cGUiLCAma2V5VHlwZSwgY29udGVudFR5cGVTdHIsICZjb250ZW50
VHlwZVN0ckxlbik7CiAKICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYga2V5VHlw
ZSA9PSBSRUdfU1opCi0gICAgICAgIHJldHVybiB3Y2hhclRvU3RyaW5nKGNvbnRlbnRUeXBlU3Ry
LCBjb250ZW50VHlwZVN0ckxlbiAvIHNpemVvZihjb250ZW50VHlwZVN0clswXSkgLSAxKTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZyhjb250ZW50VHlwZVN0ciwgY29udGVudFR5cGVTdHJMZW4gLyBz
aXplb2YoY29udGVudFR5cGVTdHJbMF0pIC0gMSk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CkBAIC01NiwxMCArNTUsMTAgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJl
ZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBEV09SRCBleHRT
dHJMZW4gPSBzaXplb2YoZXh0U3RyKTsKICAgICBEV09SRCBrZXlUeXBlOwogCi0gICAgSFJFU1VM
VCByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfQ0xBU1NFU19ST09ULCBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIocGF0aCkuZGF0YSgpLCBMIkV4dGVuc2lvbiIsICZrZXlUeXBlLCBl
eHRTdHIsICZleHRTdHJMZW4pOworICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1
ZShIS0VZX0NMQVNTRVNfUk9PVCwgcGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgTCJFeHRl
bnNpb24iLCAma2V5VHlwZSwgZXh0U3RyLCAmZXh0U3RyTGVuKTsKIAogICAgIGlmIChyZXN1bHQg
PT0gRVJST1JfU1VDQ0VTUyAmJiBrZXlUeXBlID09IFJFR19TWikKLSAgICAgICAgcmV0dXJuIHdj
aGFyVG9TdHJpbmcoZXh0U3RyICsgMSwgZXh0U3RyTGVuIC8gc2l6ZW9mKGV4dFN0clswXSkgLSAy
KTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhleHRTdHIgKyAxLCBleHRTdHJMZW4gLyBzaXplb2Yo
ZXh0U3RyWzBdKSAtIDIpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGE1ZmQ5MzBhZTkxYjkx
N2I5Y2JhMDg2NGJiYTU1MzRlY2IyYzFlMTMuLmVmY2M2YjYzZDNkMTdmZDNiYmE4ZGEyNWQ4NDUy
NzI5Y2I5ODdhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZEZpbGVSZWFkZXImIHJlYWRlcikKICAgICAgICAgZm9yIChVSU5UIGkgPSAwOyBpIDwgZmls
ZUNvdW50OyBpKyspIHsKICAgICAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIGks
IGZpbGVuYW1lLCBXVEZfQVJSQVlfTEVOR1RIKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKG51bGxUZXJtaW5hdGVk
V0NoYXJUb1N0cmluZyhmaWxlbmFtZSkpOworICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlbmFt
ZShmaWxlbmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBHbG9iYWxVbmxvY2sobWVkaXVtLmhH
bG9iYWwpOwpAQCAtNTU1LDIzICs1NTUsMjIgQEAgc3RhdGljIGlubGluZSB2b2lkIHBhdGhSZW1v
dmVCYWRGU0NoYXJhY3RlcnMoUFdTVFIgcHN6LCBzaXplX3QgbGVuZ3RoKQogICAgIHBzelt3cml0
ZVRvXSA9IDA7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRs
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgVUNoYXIqIGV4
dGVuc2lvbiwgYm9vbCBpc0xpbmspCitzdGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJvbVVy
bE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBib29sIGlzTGluaykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ051bGxUZXJtaW5hdG9yID0gTUFYX1BBVEggLSAxOwog
ICAgIGJvb2wgdXNlZFVSTCA9IGZhbHNlOwotICAgIFdDSEFSIGZzUGF0aEJ1ZmZlcltNQVhfUEFU
SF07CisgICAgVUNoYXIgZnNQYXRoQnVmZmVyW01BWF9QQVRIXTsKICAgICBmc1BhdGhCdWZmZXJb
MF0gPSAwOwotICAgIGludCBleHRlbnNpb25MZW4gPSBleHRlbnNpb24gPyBsc3RybGVuKGV4dGVu
c2lvbikgOiAwOwotICAgIGludCBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24gPSBm
c1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdOdWxsVGVybWluYXRvciAtIGV4dGVuc2lvbkxlbjsKKyAg
ICBpbnQgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uID0gZnNQYXRoTWF4TGVuZ3Ro
RXhjbHVkaW5nTnVsbFRlcm1pbmF0b3IgLSBleHRlbnNpb24ubGVuZ3RoKCk7CiAKICAgICBpZiAo
IXRpdGxlLmlzRW1wdHkoKSkgewogICAgICAgICBzaXplX3QgbGVuID0gc3RkOjptaW48c2l6ZV90
Pih0aXRsZS5sZW5ndGgoKSwgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uKTsKICAg
ICAgICAgU3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dp
dGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgZnNQYXRoQnVmZmVyW2xlbl0gPSAw
OwotICAgICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKGZzUGF0aEJ1ZmZlciwgbGVuKTsK
KyAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVmZmVy
KSwgbGVuKTsKICAgICB9CiAKLSAgICBpZiAoIWxzdHJsZW4oZnNQYXRoQnVmZmVyKSkgeworICAg
IGlmICghd2NzbGVuKHdjaGFyRnJvbShmc1BhdGhCdWZmZXIpKSkgewogICAgICAgICBVUkwga3Vy
bChVUkwoKSwgdXJsKTsKICAgICAgICAgdXNlZFVSTCA9IHRydWU7CiAgICAgICAgIC8vIFRoZSBm
aWxlbmFtZSBmb3IgYW55IGNvbnRlbnQgYmFzZWQgZHJhZyBvciBmaWxlIHVybCBzaG91bGQgYmUg
dGhlIGxhc3QgZWxlbWVudCBvZiAKQEAgLTU4NywxOCArNTg2LDE4IEBAIHN0YXRpYyBTdHJpbmcg
ZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsCiAgICAgICAgICAgICBTdHJpbmdWaWV3KHVybCkuc3Vic3RyaW5nKDAsIGxlbiku
Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgfQogICAg
ICAgICBmc1BhdGhCdWZmZXJbbGVuXSA9IDA7Ci0gICAgICAgIHBhdGhSZW1vdmVCYWRGU0NoYXJh
Y3RlcnMoZnNQYXRoQnVmZmVyLCBsZW4pOworICAgICAgICBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0
ZXJzKHdjaGFyRnJvbShmc1BhdGhCdWZmZXIpLCBsZW4pOwogICAgIH0KIAotICAgIGlmICghZXh0
ZW5zaW9uKQotICAgICAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFyKj4oZnNQYXRo
QnVmZmVyKSk7CisgICAgaWYgKGV4dGVuc2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBT
dHJpbmcoZnNQYXRoQnVmZmVyKTsKIAogICAgIGlmICghaXNMaW5rICYmIHVzZWRVUkwpIHsKLSAg
ICAgICAgUGF0aFJlbmFtZUV4dGVuc2lvbihmc1BhdGhCdWZmZXIsIGV4dGVuc2lvbik7Ci0gICAg
ICAgIHJldHVybiBTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPihmc1BhdGhCdWZmZXIpKTsKKyAg
ICAgICAgUGF0aFJlbmFtZUV4dGVuc2lvbih3Y2hhckZyb20oZnNQYXRoQnVmZmVyKSwgZXh0ZW5z
aW9uLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhmc1Bh
dGhCdWZmZXIpOwogICAgIH0KIAotICAgIHJldHVybiBtYWtlU3RyaW5nKHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4oZnNQYXRoQnVmZmVyKSwgZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhjb25zdF9jYXN0PGNvbnN0IFVDaGFyKj4oZnNQYXRoQnVmZmVyKSwgZXh0ZW5zaW9uKTsK
IH0KIAogLy8gd3JpdGVGaWxlVG9EYXRhT2JqZWN0IHRha2VzIG93bmVyc2hpcCBvZiBmaWxlRGVz
Y3JpcHRvciBhbmQgZmlsZUNvbnRlbnQKQEAgLTY1NSw3ICs2NTQsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0
aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJs
LmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBT
dHJpbmcgZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlU3Ry
LCBMIi5VUkwiLCB0cnVlKTsKKyAgICBTdHJpbmcgZnNQYXRoID0gZmlsZXN5c3RlbVBhdGhGcm9t
VXJsT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOwogICAgIFN0cmluZyBjb250
ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwog
ICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTY4NCw3
ICs2ODMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVS
TCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBmZ2QtPmZnZFswXS5uRmlsZVNp
emVMb3cgPSBjb250ZW50Lmxlbmd0aCgpOwogCiAgICAgdW5zaWduZWQgbWF4U2l6ZSA9IHN0ZDo6
bWluPHVuc2lnbmVkPihmc1BhdGgubGVuZ3RoKCksIFdURl9BUlJBWV9MRU5HVEgoZmdkLT5mZ2Rb
MF0uY0ZpbGVOYW1lKSk7Ci0gICAgU3RyaW5nVmlldyhmc1BhdGgpLnN1YnN0cmluZygwLCBtYXhT
aXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpOwor
ICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwogICAgIEds
b2JhbFVubG9jayh1cmxGaWxlRGVzY3JpcHRvcik7CiAKICAgICBjaGFyKiBmaWxlQ29udGVudHMg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayh1cmxGaWxlQ29udGVudCkpOwpAQCAtOTE0
LDcgKzkxMyw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iLCAwKTsKLSAgICBmc1BhdGggPSBmaWxlc3lz
dGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgcHJlZmVycmVkVGl0bGUsIGV4dGVuc2lvbi5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZmFsc2UpOworICAgIGZzUGF0aCA9
IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKICAgICAgICAg
R2xvYmFsVW5sb2NrKG1lbU9iaik7CkBAIC05MjMsNyArOTIyLDcgQEAgc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJgogICAgIH0KIAogICAgIGludCBtYXhTaXplID0gc3RkOjptaW48aW50Pihmc1BhdGgu
bGVuZ3RoKCksIFdURl9BUlJBWV9MRU5HVEgoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7Ci0gICAg
U3RyaW5nVmlldyhmc1BhdGgpLnN1YnN0cmluZygwLCBtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRo
KS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJG
cm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwog
CiAgICAgcmV0dXJuIG1lbU9iajsKQEAgLTk2MSw4ICs5NjAsNyBAQCBzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUs
IFNoYXJlZAogICAgICAgICAvLyB3aW5kb3dzIGRvZXMgbm90IGVuam95IGEgbGVhZGluZyBzbGFz
aCBvbiBwYXRocwogICAgICAgICBpZiAobG9jYWxQYXRoWzBdID09ICcvJykKICAgICAgICAgICAg
IGxvY2FsUGF0aCA9IGxvY2FsUGF0aC5zdWJzdHJpbmcoMSk7Ci0gICAgICAgIGF1dG8gbG9jYWxQ
YXRoV2lkZSA9IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihsb2NhbFBhdGgpOwotICAgICAg
ICBMUENXU1RSIGxvY2FsUGF0aFN0ciA9IGxvY2FsUGF0aFdpZGUuZGF0YSgpOworICAgICAgICBM
UENXU1RSIGxvY2FsUGF0aFN0ciA9IGxvY2FsUGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsK
ICAgICAgICAgaWYgKGxvY2FsUGF0aFN0ciAmJiB3Y3NsZW4obG9jYWxQYXRoU3RyKSArIDEgPCBN
QVhfUEFUSCkKICAgICAgICAgICAgIHdjc2NweV9zKGZpbGVQYXRoLCBNQVhfUEFUSCwgbG9jYWxQ
YXRoU3RyKTsKICAgICAgICAgZWxzZQpAQCAtOTcyLDcgKzk3MCw3IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFt
ZSwgU2hhcmVkCiAgICAgICAgIFdDSEFSIGV4dGVuc2lvbltNQVhfUEFUSF07CiAgICAgICAgIGlm
ICghOjpHZXRUZW1wUGF0aChXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwgdGVtcFBhdGgpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghOjpQYXRoQXBwZW5kKHRlbXBQYXRo
LCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZU5hbWUpLmRhdGEoKSkpCisgICAgICAg
IGlmICghOjpQYXRoQXBwZW5kKHRlbXBQYXRoLCBmaWxlTmFtZS53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgTFBDV1NUUiBmb3VuZEV4dGVu
c2lvbiA9IDo6UGF0aEZpbmRFeHRlbnNpb24odGVtcFBhdGgpOwogICAgICAgICBpZiAoZm91bmRF
eHRlbnNpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xL
ZXlHZW5lcmF0b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdl
bmVyYXRvcldpbi5jcHAKaW5kZXggZmQ2ODA2ZWZkOTNmNmY2NmI1ODA5OWZjNTBhODMxNjhjNjUy
OTE1ZC4uNmI3Mjk4NDhmNDM1MjBmNGYzZmVjZmYzYmQ0ZWY1OWEwOTMwM2JjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAKQEAg
LTIyLDcgKzIyLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3aW5jcnlwdC5oPgpA
QCAtNjcsNyArNjYsNyBAQCBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZQogICAgICAgICBTdHJpbmcg
bG9jYWxDaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7CiAKICAgICAgICAgLy8gV2luZG93cyBBUEkgd29u
J3Qgd3JpdGUgdG8gb3VyIGJ1ZmZlciwgYWx0aG91Z2ggaXQncyBub3QgZGVjbGFyZWQgd2l0aCBj
b25zdC4KLSAgICAgICAgYXV0byBsb2NhbENoYWxsZW5nZVdpZGUgPSBzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIobG9jYWxDaGFsbGVuZ2UpOworICAgICAgICBhdXRvIGxvY2FsQ2hhbGxlbmdl
V2lkZSA9IGxvY2FsQ2hhbGxlbmdlLndpZGVDaGFyYWN0ZXJzKCk7CiAgICAgICAgIHJlcXVlc3RJ
bmZvLnB3c3pDaGFsbGVuZ2VTdHJpbmcgPSBjb25zdF9jYXN0PHdjaGFyX3QqPihsb2NhbENoYWxs
ZW5nZVdpZGUuZGF0YSgpKTsKIAogICAgICAgICBDUllQVF9BTEdPUklUSE1fSURFTlRJRklFUiBz
aWduQWxnbyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZm
ZXJXaW4uY3BwCmluZGV4IDViZGFiYjYyODBlZGEyOTc0MmM5NjZkNTBlZDNlZWYwYWExYTA3NDgu
LjYyOTFiNjQyNDY0ZjI3NWI0NTNiY2M5ZTQwZTFjOWZjNTA5OWE5NjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0
cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDcgKzM5LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBT
dHJpbmcgbnVsbGlmaWVkUGF0aCA9IGZpbGVQYXRoOwotICAgIEhBTkRMRSBmaWxlSGFuZGxlID0g
Q3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG51bGxpZmllZFBhdGgpLmRh
dGEoKSwgR0VORVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIEZJ
TEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CisgICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVG
aWxlVyhudWxsaWZpZWRQYXRoLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBHRU5FUklDX1JFQUQs
IEZJTEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgRklMRV9BVFRSSUJVVEVfTk9STUFM
LCAwKTsKICAgICBpZiAoZmlsZUhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMgdG8gY3JlYXRlIHNoYXJlZCBi
dWZmZXIsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0
TGFzdEVycm9yKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDZlNDEzODE2NGJlNDhiMGYzMjAxYTAx
YjZmOGI5MjI0ZGIzNTZiNmEuLjdlYjcwM2EzM2QxNjA5OTdjNTQ1MmEyNDliNzk5ZTNkZWI5ZWRl
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAt
NDAsNyArNDAsNiBAQAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93
aW4vR0RJT2JqZWN0Lmg+CiAKICNpZiBFTkFCTEUoVklERU8pCkBAIC0zMTgsNyArMzE3LDcgQEAg
Q29sb3IgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoT3B0aW9uU2V0PFN0eWxlQ28KIHN0YXRpYyB2b2lkIGZpbGxGb250RGVzY3JpcHRpb24o
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBMT0dGT05UJiBsb2dGb250
LCBmbG9hdCBmb250U2l6ZSkKIHsgICAgCiAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1
dGVTaXplKHRydWUpOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkobnVsbFRlcm1p
bmF0ZWRXQ2hhclRvU3RyaW5nKGxvZ0ZvbnQubGZGYWNlTmFtZSkpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRPbmVGYW1pbHkobG9nRm9udC5sZkZhY2VOYW1lKTsKICAgICBmb250RGVzY3JpcHRp
b24uc2V0U3BlY2lmaWVkU2l6ZShmb250U2l6ZSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChsb2dGb250LmxmV2VpZ2h0ID49IDcwMCA/IGJvbGRXZWlnaHRWYWx1ZSgpIDogbm9ybWFs
V2VpZ2h0VmFsdWUoKSk7IC8vIEZJWE1FOiBVc2UgcmVhbCB3ZWlnaHQuCiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldElzSXRhbGljKGxvZ0ZvbnQubGZJdGFsaWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IGViYjM3Mzg0YzMzN2Jm
MTJmNWQ2ZGU4YTZiNDZmNmYwNDgxYzc4ZjkuLmUyNmE3ZTIyYjc1YzY0ZTVlMjc5MTBiZGEwZmE0
ZmYwZTg3ZTRiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9D
b25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29u
bmVjdGlvbldpbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVT
ZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQK
ICAgICAgICAgdW5zaWduZWQgdW5pcXVlSUQgPSByYW5kb21OdW1iZXIoKSAqIHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKICAgICAgICAgcGlwZU5hbWUgPSBtYWtlU3RyaW5n
KCJcXFxcLlxccGlwZVxcY29tLmFwcGxlLldlYktpdC4iLCBoZXgodW5pcXVlSUQpKTsKIAotICAg
ICAgICBzZXJ2ZXJJZGVudGlmaWVyID0gOjpDcmVhdGVOYW1lZFBpcGUocGlwZU5hbWUuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksCisgICAgICAgIHNlcnZlcklkZW50aWZp
ZXIgPSA6OkNyZWF0ZU5hbWVkUGlwZShwaXBlTmFtZS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwK
ICAgICAgICAgICAgIFBJUEVfQUNDRVNTX0RVUExFWCB8IEZJTEVfRkxBR19GSVJTVF9QSVBFX0lO
U1RBTkNFIHwgRklMRV9GTEFHX09WRVJMQVBQRUQsCiAgICAgICAgICAgICBQSVBFX1RZUEVfTUVT
U0FHRSB8IFBJUEVfUkVBRE1PREVfTUVTU0FHRSwgMSwgaW5saW5lTWVzc2FnZU1heFNpemUsIGlu
bGluZU1lc3NhZ2VNYXhTaXplLAogICAgICAgICAgICAgMCwgMCk7CkBAIC01Miw3ICs1Miw3IEBA
IGJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExF
JiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAgaWYgKCFzZXJ2ZXJJZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjbGllbnRJZGVudGlmaWVyID0gOjpDcmVhdGVGaWxl
VyhwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgR0VORVJJ
Q19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX09W
RVJMQVBQRUQsIDApOworICAgIGNsaWVudElkZW50aWZpZXIgPSA6OkNyZWF0ZUZpbGVXKHBpcGVO
YW1lLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRF
LCAwLCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgMCk7CiAgICAgaWYg
KCFjbGllbnRJZGVudGlmaWVyKSB7CiAgICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRp
Zmllcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vd2luL01vZHVsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9N
b2R1bGVXaW4uY3BwCmluZGV4IDdiNjVkNzc4NjkxNjYyZmRiNWZmNjBkNzM2ODlkMmNlY2M5YjMy
ZmMuLjMzYjcwOWUxZDcxMjczYmQyZjNlY2NkMjg3MTg4ZTllYmQxZmNhODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL01vZHVsZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS93aW4vTW9kdWxlV2luLmNwcApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogYm9vbCBNb2R1bGU6OmxvYWQoKQogewotICAgIEFTU0VSVCghOjpQYXRo
SXNSZWxhdGl2ZVcobV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSk7Ci0gICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKG1fcGF0aC5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BB
VEgpOworICAgIEFTU0VSVCghOjpQYXRoSXNSZWxhdGl2ZVcobV9wYXRoLndpZGVDaGFyYWN0ZXJz
KCkuZGF0YSgpKSk7CisgICAgbV9tb2R1bGUgPSA6OkxvYWRMaWJyYXJ5RXhXKG1fcGF0aC53aWRl
Q2hhcmFjdGVycygpLmRhdGEoKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOwog
ICAgIHJldHVybiBtX21vZHVsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAppbmRleCA1Nzdl
NDY5Y2FkZTExMWJkMTQ4NGNjODE0MGE0ZDM0MmQ1NTg3YjYzLi5kM2QxNzFkYWQ3MzYwMGMyM2E1
ZjE0YzYxZTIzOWE0MzFiOGRmNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgPFdURi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8c2hsd2FwaS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93
aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTg1LDcg
Kzg0LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGNvbW1h
bmRMaW5lQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNsaWVudElkZW50aWZpZXIpKSk7CiAgICAgY29tbWFuZExpbmVCdWlsZGVyLmFwcGVu
ZCgnXDAnKTsKIAotICAgIGF1dG8gY29tbWFuZExpbmUgPSBzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoY29tbWFuZExpbmVCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGF1dG8gY29tbWFuZExp
bmUgPSBjb21tYW5kTGluZUJ1aWxkZXIudG9TdHJpbmcoKS53aWRlQ2hhcmFjdGVycygpOwogCiAg
ICAgU1RBUlRVUElORk8gc3RhcnR1cEluZm8geyB9OwogICAgIHN0YXJ0dXBJbmZvLmNiID0gc2l6
ZW9mKHN0YXJ0dXBJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcAppbmRleCBhZjQzNWMxNjVlNjRhZTU1ZTk4N2Zl
MzljODIyZDY0YTliZDBkMjBkLi5hYTE3MWY0OGJjNDBhOTZhODZkOTUxNDUxYjU3OGY2MDljNTcz
ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dE1l
bnVQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRl
eHRNZW51UHJveHlXaW4uY3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZU1l
bnVJdGVtKGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEgJmNvbnRleHQsIEhNRU5VIG1lbnUs
IGNvCiAgICAgc3dpdGNoIChkYXRhLnR5cGUoKSkgewogICAgIGNhc2UgQWN0aW9uVHlwZToKICAg
ICBjYXNlIENoZWNrYWJsZUFjdGlvblR5cGU6Ci0gICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBm
bGFncyB8IE1GX1NUUklORywgZGF0YS5hY3Rpb24oKSwgZGF0YS50aXRsZSgpLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUs
IGZsYWdzIHwgTUZfU1RSSU5HLCBkYXRhLmFjdGlvbigpLCBkYXRhLnRpdGxlKCkud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlcGFyYXRvclR5cGU6
CiAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1NFUEFSQVRPUiwgZGF0YS5h
Y3Rpb24oKSwgbnVsbHB0cik7CkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZU1l
bnVJdGVtKGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEgJmNvbnRleHQsIEhNRU5VIG1lbnUs
IGNvCiAgICAgY2FzZSBTdWJtZW51VHlwZToKICAgICAgICAgSE1FTlUgc3VibWVudSA9IGNyZWF0
ZU1lbnUoY29udGV4dCk7CiAgICAgICAgIHBvcHVsYXRlKGNvbnRleHQsIHN1Ym1lbnUsIGRhdGEu
c3VibWVudSgpKTsKLSAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfUE9QVVAs
IChVSU5UX1BUUilzdWJtZW51LCBkYXRhLnRpdGxlKCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpOworICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9Q
T1BVUCwgKFVJTlRfUFRSKXN1Ym1lbnUsIGRhdGEudGl0bGUoKS53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJWaWV3LmNwcAppbmRleCAxNGIxZDlmYTgxYThmMGQzNDI2YjRmYjUyZTJkNjI2NWJiY2I5
OWFhLi40NTBhMDZkZjdhMGMzZTJjZWUzZjE0ODg1M2QxOTZjMjNmMTY5NmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC04NzQsOCArODc0LDggQEAgdm9pZCBX
ZWJWaWV3OjpzZXRUb29sVGlwKGNvbnN0IFN0cmluZyYgdG9vbFRpcCkKICAgICAgICAgaW5mby5j
YlNpemUgPSBzaXplb2YoaW5mbyk7CiAgICAgICAgIGluZm8udUZsYWdzID0gVFRGX0lESVNIV05E
OwogICAgICAgICBpbmZvLnVJZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUlOVF9QVFI+KG5hdGl2ZVdp
bmRvdygpKTsKLSAgICAgICAgVmVjdG9yPFVDaGFyPiB0b29sVGlwQ2hhcmFjdGVycyA9IHRvb2xU
aXAuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25n
IGVub3VnaCB0byBtYWtlIHRoZSBTZW5kTWVzc2FnZSBjYWxsCi0gICAgICAgIGluZm8ubHBzelRl
eHQgPSBjb25zdF9jYXN0PFVDaGFyKj4odG9vbFRpcENoYXJhY3RlcnMuZGF0YSgpKTsKKyAgICAg
ICAgVmVjdG9yPHdjaGFyX3Q+IHRvb2xUaXBDaGFyYWN0ZXJzID0gdG9vbFRpcC53aWRlQ2hhcmFj
dGVycygpOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIFNlbmRNZXNz
YWdlIGNhbGwKKyAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KHRv
b2xUaXBDaGFyYWN0ZXJzLmRhdGEoKSk7CiAgICAgICAgIDo6U2VuZE1lc3NhZ2UobV90b29sVGlw
V2luZG93LCBUVE1fVVBEQVRFVElQVEVYVCwgMCwgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZp
bmZvKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCmluZGV4IGY5
ODdlYjdhMzEyY2E2MjI1Yzg1ZTlhYjFlNzllZjA1ZTJkYmY2MjEuLmY3NWMyYWE3NTExMjE2Zjll
ZTI0MjAyNzI5ZTg1ZjRlMTRlZTM1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4u
Y3BwCkBAIC0yOCwxMyArMjgsMTIgQEAKIAogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQnVuZGxlSW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBJbmplY3Rl
ZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwg
QVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7Ci0gICAgSE1PRFVMRSBsaWIg
PSA6OkxvYWRMaWJyYXJ5KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEo
KSk7CisgICAgSE1PRFVMRSBsaWIgPSA6OkxvYWRMaWJyYXJ5KG1fcGF0aC53aWRlQ2hhcmFjdGVy
cygpLmRhdGEoKSk7CiAgICAgaWYgKCFsaWIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ09NUHJvcGVydHlCYWcuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NPTVByb3BlcnR5QmFnLmgKaW5kZXggMjE2NWEyMzU2ZDllYWEy
Y2FhMDk0NDFkMThmYTgzZGVmOTRiOWZkNS4uY2MzZDhkNWM1NTc1MmExMzVmMzA3YjlhNDJhYjA1
MmI4NWYyZjEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ09NUHJvcGVy
dHlCYWcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCkBA
IC0yMywxNyArMjMsMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgQ09NUHJv
cGVydHlCYWdfaAotI2RlZmluZSBDT01Qcm9wZXJ0eUJhZ19oCisjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkNPTVZhcmlhbnRTZXR0ZXIuaCIKICNpbmNsdWRlIDxvY2lkbC5oPgogI2luY2x1ZGUg
PHVua253bi5oPgotCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KIAotI2luY2x1ZGUgIkNPTVZhcmlhbnRTZXR0ZXIuaCIKLQogdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlID0gdHlwZW5hbWUgV1RGOjpTdHJp
bmcsIHR5cGVuYW1lIEhhc2hUeXBlID0gdHlwZW5hbWUgV1RGOjpTdHJpbmdIYXNoPgogY2xhc3Mg
Q09NUHJvcGVydHlCYWcgZmluYWwgOiBwdWJsaWMgSVByb3BlcnR5QmFnLCBwdWJsaWMgSVByb3Bl
cnR5QmFnMiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ09NUHJvcGVydHlCYWcpOwpAQCAt
MjIwLDcgKzIxNyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ09NUHJvcGVydHlCYWc8
VmFsdWVUeXBlLCBLZXlUeXBlLCBIYXNoVHlwZT46OkdldFByb3BlCiAgICAgICAgIHBQcm9wQmFn
W2pdLnBzdHJOYW1lID0gKExQT0xFU1RSKUNvVGFza01lbUFsbG9jKHNpemVvZih3Y2hhcl90KSoo
Y3VycmVudC0+a2V5Lmxlbmd0aCgpKzEpKTsKICAgICAgICAgaWYgKCFwUHJvcEJhZ1tqXS5wc3Ry
TmFtZSkKICAgICAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwotICAgICAgICB3Y3NjcHlf
cyhwUHJvcEJhZ1tqXS5wc3RyTmFtZSwgY3VycmVudC0+a2V5Lmxlbmd0aCgpKzEsIHN0YXRpY19j
YXN0PFN0cmluZz4oY3VycmVudC0+a2V5KS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSk7CisgICAgICAgIHdjc2NweV9zKHBQcm9wQmFnW2pdLnBzdHJOYW1lLCBjdXJyZW50
LT5rZXkubGVuZ3RoKCkrMSwgY3VycmVudC0+a2V5LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKTsK
ICAgICAgICAgKysqcGNQcm9wZXJ0aWVzOwogICAgIH0KICAgICByZXR1cm4gU19PSzsKQEAgLTIz
MSw1ICsyMjgsMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVByb3BlcnR5QmFnPFZh
bHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpMb2FkT2JqZQogewogICAgIHJldHVybiBFX05P
VElNUEw7CiB9Ci0KLSNlbmRpZiAvLyBDT01Qcm9wZXJ0eUJhZ19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggYzU4ODBlYTRkZDg1MmI1YzAwZGRhYjNj
ODI1ZDZhOWY2Y2YwODNjZi4uZWFkYTNlNmJjNTVjMDAxN2ZlYzlmMGVjMTk1OGQ5YzQxYzc3ZWZh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkRPTUV2ZW50c0NsYXNzZXMuaCIKICNpbmNsdWRlICJET01I
VE1MQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIldlYktpdEdyYXBoaWNzLmgiCi0KICNpbmNsdWRlIDxX
ZWJDb3JlL0F0dHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0NPTVB0ci5oPgpAQCAtNTYsOCArNTUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVu
ZGVyVHJlZUFzVGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsSW50b1ZpZXdPcHRpb25z
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdHlsZWRFbGVtZW50Lmg+Ci0KICNpbmNsdWRlIDxpbml0
Z3VpZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorCiAv
LyB7M0IwQzBFRkYtNDc4Qi00YjBiLTgyOTAtRDIzMjFFMDhFMjNFfQogREVGSU5FX0dVSUQoSUlE
X0RPTUVsZW1lbnQsIDB4M2IwYzBlZmYsIDB4NDc4YiwgMHg0YjBiLCAweDgyLCAweDkwLCAweGQy
LCAweDMyLCAweDFlLCAweDgsIDB4ZTIsIDB4M2UpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgSFJF
U1VMVCBET01Ob2RlOjpzZXRUZXh0Q29udGVudChfSW5fIEJTVFIgLyp0ZXh0Ki8pCiBIUkVTVUxU
IERPTU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01F
dmVudExpc3RlbmVyKiBsaXN0ZW5lciwgQk9PTCB1c2VDYXB0dXJlKQogewogICAgIGF1dG8gd2Vi
TGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fbm9k
ZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBXVEZNb3ZlKHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVy
ZSk7CisgICAgbV9ub2RlLT5hZGRFdmVudExpc3RlbmVyKHVjaGFyRnJvbSh0eXBlKSwgV1RGTW92
ZSh3ZWJMaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00
MjYsNyArNDI2LDcgQEAgSFJFU1VMVCBET01Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKF9Jbl8g
QlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lcioKICAgICBpZiAoIW1fbm9kZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBtX25vZGUtPnJlbW92ZUV2ZW50TGlzdGVu
ZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgIG1fbm9kZS0+cmVtb3ZlRXZl
bnRMaXN0ZW5lcih1Y2hhckZyb20odHlwZSksIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtOTI0LDcgKzkyNCw3IEBAIEhSRVNVTFQgRE9NV2luZG93
OjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0
ZW5lcioKICAgICBpZiAoIW1fd2luZG93KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGF1
dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAg
IG1fd2luZG93LT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIFdURk1vdmUod2ViTGlzdGVuZXIpLCB1
c2VDYXB0dXJlKTsKKyAgICBtX3dpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcih1Y2hhckZyb20odHlw
ZSksIFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtOTM1LDcgKzkzNSw3IEBAIEhSRVNVTFQgRE9NV2luZG93OjpyZW1vdmVFdmVudExp
c3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lCiAgICAgaWYg
KCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBhdXRvIHdlYkxpc3RlbmVy
ID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBtX3dpbmRvdy0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgbV93
aW5kb3ctPnJlbW92ZUV2ZW50TGlzdGVuZXIodWNoYXJGcm9tKHR5cGUpLCB3ZWJMaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEyOTIsNyArMTI5Miw3IEBA
IEhSRVNVTFQgRE9NRWxlbWVudDo6Zm9udChfT3V0XyBXZWJGb250RGVzY3JpcHRpb24qIHdlYkZv
bnREZXNjcmlwdGlvbikKICAgICBVQ2hhciogZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlciA9IG5ldyBV
Q2hhcltmYW1pbHkubGVuZ3RoKCldOwogICAgIFN0cmluZ1ZpZXcoZmFtaWx5LnN0cmluZygpKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmYW1pbHlDaGFyYWN0ZXJzQnVmZmVyKTsKIAotICAg
IHdlYkZvbnREZXNjcmlwdGlvbi0+ZmFtaWx5ID0gZmFtaWx5Q2hhcmFjdGVyc0J1ZmZlcjsKKyAg
ICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IHdjaGFyRnJvbShmYW1pbHlDaGFyYWN0ZXJz
QnVmZmVyKTsKICAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseUxlbmd0aCA9IGZhbWlseS5s
ZW5ndGgoKTsKICAgICB3ZWJGb250RGVzY3JpcHRpb24tPnNpemUgPSBmb250RGVzY3JpcHRpb24u
Y29tcHV0ZWRTaXplKCk7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5ib2xkID0gaXNGb250V2Vp
Z2h0Qm9sZChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vRE9NSFRNTENsYXNzZXMuY3BwCmluZGV4IDNjZjM4YjQ1NjYzZWU1ZTg5ZjQ5OWFmNjc3MTJi
YzM5YzdjNWE2MzkuLjRjMWZmNjNiZGY2OTAzZGQwMjA1M2FjYjllZjk4ZmEwYmQzYmRjYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1MQ2xhc3Nlcy5jcHAKQEAgLTEyMjgsNyAr
MTIyOCw3IEBAIEhSRVNVTFQgRE9NSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVGb3JVc2VyKF9J
bl8gQlNUUiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8SFRNTElucHV0RWxlbWVudD4obV9lbGVt
ZW50KSk7CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKm1fZWxlbWVudCk7Ci0gICAgaW5wdXRFbGVtZW50LnNldFZhbHVlRm9y
VXNlcihTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPih2YWx1ZSksIFN5c1N0cmluZ0xlbih2YWx1
ZSkpKTsKKyAgICBpbnB1dEVsZW1lbnQuc2V0VmFsdWVGb3JVc2VyKFN0cmluZyh2YWx1ZSwgU3lz
U3RyaW5nTGVuKHZhbHVlKSkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMzI2LDcgKzEz
MjYsNyBAQCBIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnJlcGxhY2VDaGFyYWN0ZXJzSW5S
YW5nZShpbnQgc3RhcnRUYXJnZXQsIGludCBlbmRUYQogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlu
cHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwogCiAg
ICAgU3RyaW5nIG5ld1ZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlKCk7Ci0gICAgU3RyaW5nIHdl
YkNvcmVSZXBsYWNlbWVudFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hhcio+KHJlcGxhY2VtZW50U3Ry
aW5nKSwgU3lzU3RyaW5nTGVuKHJlcGxhY2VtZW50U3RyaW5nKSk7CisgICAgU3RyaW5nIHdlYkNv
cmVSZXBsYWNlbWVudFN0cmluZyhyZXBsYWNlbWVudFN0cmluZywgU3lzU3RyaW5nTGVuKHJlcGxh
Y2VtZW50U3RyaW5nKSk7CiAgICAgbmV3VmFsdWUucmVwbGFjZShzdGFydFRhcmdldCwgZW5kVGFy
Z2V0IC0gc3RhcnRUYXJnZXQsIHdlYkNvcmVSZXBsYWNlbWVudFN0cmluZyk7CiAgICAgaW5wdXRF
bGVtZW50LnNldFZhbHVlKG5ld1ZhbHVlKTsKICAgICBpbnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9u
UmFuZ2UoaW5kZXgsIG5ld1ZhbHVlLmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5kZXggODE0ZTJiYjZk
YzM5MWZjMmZmYTFhOTViNjllNDZkNDU4MGMwMzY1My4uODA3YTljMTdmNWVlZjAzZmU5MjliM2Ix
ZmI3YTZhZjhmZjQzMTk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9X
aW5kb3dzRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsNyArNjEsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgYWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0cnkoSEtFWSByb290S2V5LCBIYXNoU2V0
PFN0cmluZz4mIHBhdAogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MgfHwgdHlw
ZSAhPSBSRUdfU1opCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBwYXRocy5hZGQo
d2NoYXJUb1N0cmluZyhwYXRoU3RyLCBwYXRoU3RyU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7
CisgICAgICAgIHBhdGhzLmFkZChTdHJpbmcocGF0aFN0ciwgcGF0aFN0clNpemUgLyBzaXplb2Yo
V0NIQVIpIC0gMSkpOwogICAgIH0KIAogICAgIFJlZ0Nsb3NlS2V5KGtleSk7CkBAIC04Myw3ICs4
Miw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhI
YXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAogICAgIGZvciAoYXV0byYgZGlyZWN0b3J5IDog
bV9wbHVnaW5EaXJlY3RvcmllcykgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9IGRpcmVjdG9y
eSArICJcXCoiOwogCi0gICAgICAgIGhGaW5kID0gRmluZEZpcnN0RmlsZVcoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKHBhdHRlcm4pLmRhdGEoKSwgJmZpbmRGaWxlRGF0YSk7CisgICAgICAg
IGhGaW5kID0gRmluZEZpcnN0RmlsZVcocGF0dGVybi53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwg
JmZpbmRGaWxlRGF0YSk7CiAKICAgICAgICAgaWYgKGhGaW5kID09IElOVkFMSURfSEFORExFX1ZB
TFVFKQogICAgICAgICAgICAgY29udGludWU7CkBAIC05Miw3ICs5MSw3IEBAIHZvaWQgUGx1Z2lu
RGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBh
dGhzKSBjb25zdAogICAgICAgICAgICAgaWYgKGZpbmRGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1dGVz
ICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSB3Y2hhclRvU3RyaW5nKGZpbmRGaWxlRGF0
YS5jRmlsZU5hbWUsIHdjc2xlbihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CisgICAgICAgICAg
ICBTdHJpbmcgZmlsZW5hbWUoZmluZEZpbGVEYXRhLmNGaWxlTmFtZSwgd2NzbGVuKGZpbmRGaWxl
RGF0YS5jRmlsZU5hbWUpKTsKICAgICAgICAgICAgIGlmICghKHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZmlsZW5hbWUsICJucCIpICYmIGZpbGVuYW1lLmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoImRsbCIpKQogICAgICAgICAgICAgICAgICYmICEoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZmlsZW5hbWUsICJwbHVnaW4uZGxsIikgJiYgZGlyZWN0b3J5LmVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoInNob2Nrd2F2ZSAxMCIpKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTE4MCwxMSArMTc5LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNb3pp
bGxhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAg
ICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uc1BhdGggPSB3Y2hhclRvU3RyaW5nKG5h
bWUsIG5hbWVMZW4pICsgIlxcRXh0ZW5zaW9ucyI7CisgICAgICAgICAgICBTdHJpbmcgZXh0ZW5z
aW9uc1BhdGggPSBTdHJpbmcobmFtZSwgbmFtZUxlbikgKyAiXFxFeHRlbnNpb25zIjsKICAgICAg
ICAgICAgIEhLRVkgZXh0ZW5zaW9uc0tleTsKIAogICAgICAgICAgICAgLy8gVHJ5IG9wZW5pbmcg
dGhlIGtleQotICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3BlbktleUV4KGtleSwgc3RyaW5nVG9O
dWxsVGVybWluYXRlZFdDaGFyKGV4dGVuc2lvbnNQYXRoKS5kYXRhKCksIDAsIEtFWV9SRUFELCAm
ZXh0ZW5zaW9uc0tleSk7CisgICAgICAgICAgICByZXN1bHQgPSBSZWdPcGVuS2V5RXgoa2V5LCBl
eHRlbnNpb25zUGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgMCwgS0VZX1JFQUQsICZleHRl
bnNpb25zS2V5KTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTKSB7
CiAgICAgICAgICAgICAgICAgLy8gTm93IGdldCB0aGUgcGx1Z2lucyBkaXJlY3RvcnkKQEAgLTE5
NSw3ICsxOTQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjdG9y
aWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBSZWdRdWVyeVZhbHVlRXgoZXh0ZW5zaW9uc0tleSwgVEVYVCgiUGx1Z2lucyIpLCAwLCAmdHlw
ZSwgKExQQllURSkmcGx1Z2luc0RpcmVjdG9yeVN0ciwgJnBsdWdpbnNEaXJlY3RvcnlTaXplKTsK
IAogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB0eXBlID09
IFJFR19TWikKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9T
dHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVjdG9yeVNpemUgLyBzaXplb2Yo
V0NIQVIpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3Ry
aW5nKHBsdWdpbnNEaXJlY3RvcnlTdHIsIHBsdWdpbnNEaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdD
SEFSKSAtIDEpKTsKIAogICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGV4dGVuc2lvbnNLZXkp
OwogICAgICAgICAgICAgfQpAQCAtMjEyLDcgKzIxMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVj
dG9yCiAgICAgRFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6ZSA9IDo6RXhwYW5kRW52aXJvbm1lbnRT
dHJpbmdzVyhURVhUKCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiKSwgcGx1Z2luRGly
ZWN0b3J5U3RyLCBXVEZfQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVjdG9yeVN0cikpOwogCiAgICAg
aWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBsdWdpbkRpcmVjdG9yeVNpemUgPD0gV1RG
X0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIpKQotICAgICAgICBkaXJlY3Rvcmllcy5h
cHBlbmQod2NoYXJUb1N0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNp
emUgLSAxKSk7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luRGlyZWN0
b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOwogCiAgICAgRFdPUkQgdHlwZTsKICAg
ICBXQ0hBUiBpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHJbX01BWF9QQVRIXTsKQEAgLTIyMSw3ICsy
MjAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGly
ZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcgogICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0
UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01BQ0hJTkUsIEwiU29mdHdhcmVcXE1pY3Jvc29mdFxc
TWVkaWFQbGF5ZXIiLCBMIkluc3RhbGxhdGlvbiBEaXJlY3RvcnkiLCAmdHlwZSwgJmluc3RhbGxh
dGlvbkRpcmVjdG9yeVN0ciwgJmluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUpOwogCiAgICAgaWYg
KHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQotICAgICAgICBkaXJl
Y3Rvcmllcy5hcHBlbmQod2NoYXJUb1N0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsIGlu
c3RhbGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworICAgICAgICBk
aXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0ciwgaW5zdGFs
bGF0aW9uRGlyZWN0b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4m
IGRpcmVjdG9yaWVzKQpAQCAtMjQ1LDEwICsyNDQsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMp
CiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIFZlY3RvcjxpbnQ+IGFjcm9iYXRWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3Ry
aW5nKHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBh
Y3JvYmF0VmVyc2lvbiA9IHBhcnNlVmVyc2lvblN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikp
OwogICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKGFjcm9iYXRWZXJzaW9uLCBsYXRlc3RBY3Jv
YmF0VmVyc2lvbikpIHsKICAgICAgICAgICAgIGxhdGVzdEFjcm9iYXRWZXJzaW9uID0gYWNyb2Jh
dFZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyA9IHdjaGFy
VG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lv
blN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjU4LDEwICsyNTcsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdp
bkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIERXT1JEIGFj
cm9iYXRJbnN0YWxsUGF0aFNpemUgPSBzaXplb2YoYWNyb2JhdEluc3RhbGxQYXRoU3RyKTsKIAog
ICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbktleVBhdGggPSAiU29mdHdhcmVcXEFkb2JlXFxB
Y3JvYmF0IFJlYWRlclxcIiArIGxhdGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nICsgIlxcSW5zdGFs
bFBhdGgiOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFD
SElORSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGFjcm9iYXRQbHVnaW5LZXlQYXRoKS5k
YXRhKCksIDAsICZ0eXBlLCBhY3JvYmF0SW5zdGFsbFBhdGhTdHIsICZhY3JvYmF0SW5zdGFsbFBh
dGhTaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xPQ0FMX01B
Q0hJTkUsIGFjcm9iYXRQbHVnaW5LZXlQYXRoLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCAwLCAm
dHlwZSwgYWNyb2JhdEluc3RhbGxQYXRoU3RyLCAmYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSk7CiAK
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBTdHJp
bmcgYWNyb2JhdFBsdWdpbkRpcmVjdG9yeSA9IHdjaGFyVG9TdHJpbmcoYWNyb2JhdEluc3RhbGxQ
YXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxc
YnJvd3NlciI7CisgICAgICAgICAgICBTdHJpbmcgYWNyb2JhdFBsdWdpbkRpcmVjdG9yeSA9IFN0
cmluZyhhY3JvYmF0SW5zdGFsbFBhdGhTdHIsIGFjcm9iYXRJbnN0YWxsUGF0aFNpemUgLyBzaXpl
b2YoV0NIQVIpIC0gMSkgKyAiXFxicm93c2VyIjsKICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFw
cGVuZChhY3JvYmF0UGx1Z2luRGlyZWN0b3J5KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI5MCwx
MCArMjg5LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRKYXZhUGx1Z2luRGlyZWN0b3J5KFZl
Y3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9T
VUNDRVNTKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGludD4gamF2YVZl
cnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcod2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKSk7
CisgICAgICAgIFZlY3RvcjxpbnQ+IGphdmFWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKFN0
cmluZyhuYW1lLCBuYW1lTGVuKSk7CiAgICAgICAgIGlmIChjb21wYXJlVmVyc2lvbnMoamF2YVZl
cnNpb24sIGxhdGVzdEphdmFWZXJzaW9uKSkgewogICAgICAgICAgICAgbGF0ZXN0SmF2YVZlcnNp
b24gPSBqYXZhVmVyc2lvbjsKLSAgICAgICAgICAgIGxhdGVzdEphdmFWZXJzaW9uU3RyaW5nID0g
d2NoYXJUb1N0cmluZyhuYW1lLCBuYW1lTGVuKTsKKyAgICAgICAgICAgIGxhdGVzdEphdmFWZXJz
aW9uU3RyaW5nID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4pOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0zMDUsMTIgKzMwNCwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBsdWdpbkRpcmVj
dG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIERXT1JEIHVzZU5ld1Bs
dWdpblNpemU7CiAKICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJl
XFxKYXZhU29mdFxcSmF2YSBQbHVnLWluXFwiICsgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmc7Ci0g
ICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBsdWdpbktleVBhdGgpLmRhdGEoKSwgTCJVc2VO
ZXdKYXZhUGx1Z2luIiwgJnR5cGUsICZ1c2VOZXdQbHVnaW5WYWx1ZSwgJnVzZU5ld1BsdWdpblNp
emUpOworICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFDSElO
RSwgamF2YVBsdWdpbktleVBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIEwiVXNlTmV3SmF2
YVBsdWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFsdWUsICZ1c2VOZXdQbHVnaW5TaXplKTsK
IAogICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYgdXNlTmV3UGx1Z2luVmFs
dWUgPT0gMSkgewotICAgICAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xP
Q0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihqYXZhUGx1Z2luS2V5UGF0
aCkuZGF0YSgpLCBMIkphdmFIb21lIiwgJnR5cGUsIGphdmFJbnN0YWxsUGF0aFN0ciwgJmphdmFJ
bnN0YWxsUGF0aFNpemUpOworICAgICAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShI
S0VZX0xPQ0FMX01BQ0hJTkUsIGphdmFQbHVnaW5LZXlQYXRoLndpZGVDaGFyYWN0ZXJzKCkuZGF0
YSgpLCBMIkphdmFIb21lIiwgJnR5cGUsIGphdmFJbnN0YWxsUGF0aFN0ciwgJmphdmFJbnN0YWxs
UGF0aFNpemUpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTKSB7Ci0g
ICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQbHVnaW5EaXJlY3RvcnkgPSB3Y2hhclRvU3RyaW5n
KGphdmFJbnN0YWxsUGF0aFN0ciwgamF2YUluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikg
LSAxKSArICJcXGJpblxcbmV3X3BsdWdpbiI7CisgICAgICAgICAgICAgICAgU3RyaW5nIGphdmFQ
bHVnaW5EaXJlY3RvcnkgPSBTdHJpbmcoamF2YUluc3RhbGxQYXRoU3RyLCBqYXZhSW5zdGFsbFBh
dGhTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYmluXFxuZXdfcGx1Z2luIjsKICAgICAg
ICAgICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoamF2YVBsdWdpbkRpcmVjdG9yeSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzNiw3ICszMzUsNyBAQCBzdGF0aWMgaW5saW5lIFN0
cmluZyBzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KCkKICAgICAgICAgaWYgKCFQYXRoUmVtb3ZlRmls
ZVNwZWMobW9kdWxlRmlsZU5hbWVTdHIpKQogICAgICAgICAgICAgZ290byBleGl0OwogCi0gICAg
ICAgIHBsdWdpbnNEaXJlY3RvcnkgPSBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobW9kdWxl
RmlsZU5hbWVTdHIpICsgIlxcUGx1Z2lucyI7CisgICAgICAgIHBsdWdpbnNEaXJlY3RvcnkgPSBT
dHJpbmcobW9kdWxlRmlsZU5hbWVTdHIpICsgIlxcUGx1Z2lucyI7CiAgICAgfQogZXhpdDoKICAg
ICByZXR1cm4gcGx1Z2luc0RpcmVjdG9yeTsKQEAgLTM1MiwxMCArMzUxLDEwIEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBhZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4m
IGRpcmVjdG9yaWVzKQogICAgIFdDSEFSIG1hY3JvbWVkaWFEaXJlY3RvcnlTdHJbTUFYX1BBVEhd
OwogCiAgICAgUGF0aENvbWJpbmUobWFjcm9tZWRpYURpcmVjdG9yeVN0ciwgc3lzdGVtRGlyZWN0
b3J5U3RyLCBURVhUKCJtYWNyb21lZFxcRmxhc2giKSk7Ci0gICAgZGlyZWN0b3JpZXMuYXBwZW5k
KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtYWNyb21lZGlhRGlyZWN0b3J5U3RyKSk7Cisg
ICAgZGlyZWN0b3JpZXMuYXBwZW5kKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpOwogCiAgICAgUGF0
aENvbWJpbmUobWFjcm9tZWRpYURpcmVjdG9yeVN0ciwgc3lzdGVtRGlyZWN0b3J5U3RyLCBURVhU
KCJtYWNyb21lZFxcU2hvY2t3YXZlIDEwIikpOwotICAgIGRpcmVjdG9yaWVzLmFwcGVuZChudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWFjcm9tZWRpYURpcmVjdG9yeVN0cikpOworICAgIGRp
cmVjdG9yaWVzLmFwcGVuZChtYWNyb21lZGlhRGlyZWN0b3J5U3RyKTsKIH0KIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggOTRiYmE2YTllN2I2NjU0OGE2OGIz
NjdiMzg3NTg5NWVmZTliNTI2NS4uZmYyNzQxNTk3NWIxOTc3OTlmZjA4YzM2ZGZjZGMzNGVlMzJi
NDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blBhY2thZ2VXaW4uY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0NSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0VmVyc2lv
bkluZm8oY29uc3QgTFBWT0lEIHZlcnNpb25JbmZvRGF0YSwgY29uc3QgU3RyaW5nJiBpbmZvKQog
ICAgIFVJTlQgYnVmZmVyTGVuZ3RoOwogICAgIFN0cmluZyBzdWJJbmZvID0gIlxcU3RyaW5nZmls
ZUluZm9cXDA0MDkwNEU0XFwiICsgaW5mbzsKICAgICBib29sIHJldHZhbCA9IFZlclF1ZXJ5VmFs
dWVXKHZlcnNpb25JbmZvRGF0YSwKLSAgICAgICAgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFy
KHN1YkluZm8pLmRhdGEoKSwKKyAgICAgICAgc3ViSW5mby53aWRlQ2hhcmFjdGVycygpLmRhdGEo
KSwKICAgICAgICAgJmJ1ZmZlciwgJmJ1ZmZlckxlbmd0aCk7CiAgICAgaWYgKCFyZXR2YWwgfHwg
YnVmZmVyTGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE2NiwxMyAr
MTY1LDEzIEBAIHZvaWQgUGx1Z2luUGFja2FnZTo6ZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiB7CiAgICAgRFdP
UkQgdmVyc2lvbkluZm9TaXplLCB6ZXJvSGFuZGxlOwotICAgIHZlcnNpb25JbmZvU2l6ZSA9IEdl
dEZpbGVWZXJzaW9uSW5mb1NpemVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgp
LmRhdGEoKSwgJnplcm9IYW5kbGUpOworICAgIHZlcnNpb25JbmZvU2l6ZSA9IEdldEZpbGVWZXJz
aW9uSW5mb1NpemVXKG1fcGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgJnplcm9IYW5kbGUp
OwogICAgIGlmICh2ZXJzaW9uSW5mb1NpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgVmVjdG9yPGNoYXI+IHZlcnNpb25JbmZvRGF0YSh2ZXJzaW9uSW5mb1NpemUpOwogCi0g
ICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhciht
X3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZGF0YSgp
KSkKKyAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1cobV9wYXRoLndpZGVDaGFyYWN0ZXJzKCku
ZGF0YSgpLCAwLCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5kYXRhKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX25hbWUgPSBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9u
SW5mb0RhdGEuZGF0YSgpLCAiUHJvZHVjdE5hbWUiKTsKQEAgLTIzOCwxMSArMjM3LDExIEBAIGJv
b2wgUGx1Z2luUGFja2FnZTo6bG9hZCgpCiAKICAgICAgICAgU3RyaW5nIHBhdGggPSBtX3BhdGgu
c3Vic3RyaW5nKDAsIG1fcGF0aC5yZXZlcnNlRmluZCgnXFwnKSk7CiAKLSAgICAgICAgaWYgKCE6
OlNldEN1cnJlbnREaXJlY3RvcnlXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5k
YXRhKCkpKQorICAgICAgICBpZiAoITo6U2V0Q3VycmVudERpcmVjdG9yeVcocGF0aC53aWRlQ2hh
cmFjdGVycygpLmRhdGEoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
Ly8gTG9hZCB0aGUgbGlicmFyeQotICAgICAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFco
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhf
QUxURVJFRF9TRUFSQ0hfUEFUSCk7CisgICAgICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4
VyhtX3BhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVEX1NF
QVJDSF9QQVRIKTsKIAogICAgICAgICBpZiAoITo6U2V0Q3VycmVudERpcmVjdG9yeVcoY3VycmVu
dFBhdGgpKSB7CiAgICAgICAgICAgICBpZiAobV9tb2R1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCA0YTY2M2UwNjQ4YzUz
MTk1YWIwOWUwMDVjYWU1M2U0NTQ5N2JkOTM5Li4wNTcyOGYzZWQzNzIwNTA0YWY1NWY5ODc3Zjg2
MjFiZGMwNWNlNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlld1dpbi5jcHAKQEAgLTcxLDcgKzcxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL3J1
bnRpbWVfcm9vdC5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIAogI2lmIFVTRShDQUlSTykK
QEAgLTc1NSwxMyArNzU0LDEzIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRG
aWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzJfdCBsZW4sIGNvbnN0CiAKICAgICAvLyBH
ZXQgZmlsZSBpbmZvCiAgICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBhdHRyczsKLSAgICBp
ZiAoIUdldEZpbGVBdHRyaWJ1dGVzRXhXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmaWxl
bmFtZSkuZGF0YSgpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykpCisgICAgaWYgKCFH
ZXRGaWxlQXR0cmlidXRlc0V4VyhmaWxlbmFtZS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgR2V0
RmlsZUV4SW5mb1N0YW5kYXJkLCAmYXR0cnMpKQogICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9O
T1RfRk9VTkQ7CiAKICAgICBpZiAoYXR0cnMuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklC
VVRFX0RJUkVDVE9SWSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCi0g
ICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZmlsZW5hbWUpLmRhdGEoKSwgRklMRV9SRUFEX0RBVEEsIEZJTEVfU0hBUkVfUkVBRCwg
MCwgT1BFTl9FWElTVElORywgMCwgMCk7CisgICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVG
aWxlVyhmaWxlbmFtZS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgRklMRV9SRUFEX0RBVEEsIEZJ
TEVfU0hBUkVfUkVBRCwgMCwgT1BFTl9FWElTVElORywgMCwgMCk7CiAgICAgCiAgICAgaWYgKGZp
bGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBOUEVSUl9G
SUxFX05PVF9GT1VORDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDgzMzFjYTk0MDRlNTkxNWU3
MzZjZTEwYWJkZmZiOThhYjJmYjRiNmMuLjhmNjdhMTE2MjNiOGNiZWUyMWU5ZWQ2NDg2OTE4Yjdl
NWU5YmJkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNjQ2LDE2ICs2NDYsMTUgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJiBmaWxl
Q2hvb3NlcikKIAogICAgIG9mbi5sU3RydWN0U2l6ZSA9IHNpemVvZihvZm4pOwogICAgIG9mbi5o
d25kT3duZXIgPSB2aWV3V2luZG93OwotICAgIFN0cmluZyBhbGxGaWxlcyA9IGFsbEZpbGVzVGV4
dCgpOwotICAgIGFsbEZpbGVzLmFwcGVuZChMIlwwKi4qXDBcMCIsIDYpOworICAgIFN0cmluZyBh
bGxGaWxlcyA9IG1ha2VTdHJpbmcoYWxsRmlsZXNUZXh0KCksIFN0cmluZygiXDAqLipcMFwwIiwg
NikpOwogCi0gICAgVmVjdG9yPFVDaGFyPiBmaWx0ZXJDaGFyYWN0ZXJzID0gYWxsRmlsZXMuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3Vn
aCB0byBtYWtlIHRoZSBHZXRPcGVuRmlsZU5hbWUgY2FsbAorICAgIFZlY3Rvcjx3Y2hhcl90PiBm
aWx0ZXJDaGFyYWN0ZXJzID0gYWxsRmlsZXMud2lkZUNoYXJhY3RlcnMoKTsgLy8gUmV0YWluIGJ1
ZmZlciBsb25nIGVub3VnaCB0byBtYWtlIHRoZSBHZXRPcGVuRmlsZU5hbWUgY2FsbAogICAgIG9m
bi5scHN0ckZpbHRlciA9IGZpbHRlckNoYXJhY3RlcnMuZGF0YSgpOwogCiAgICAgb2ZuLmxwc3Ry
RmlsZSA9IGZpbGVCdWYuZGF0YSgpOwogICAgIG9mbi5uTWF4RmlsZSA9IGZpbGVCdWYuc2l6ZSgp
OwogICAgIFN0cmluZyBkaWFsb2dUaXRsZSA9IHVwbG9hZEZpbGVUZXh0KCk7Ci0gICAgVmVjdG9y
PFVDaGFyPiBkaWFsb2dUaXRsZUNoYXJhY3RlcnMgPSBkaWFsb2dUaXRsZS5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2Ug
dGhlIEdldE9wZW5GaWxlTmFtZSBjYWxsCisgICAgVmVjdG9yPHdjaGFyX3Q+IGRpYWxvZ1RpdGxl
Q2hhcmFjdGVycyA9IGRpYWxvZ1RpdGxlLndpZGVDaGFyYWN0ZXJzKCk7IC8vIFJldGFpbiBidWZm
ZXIgbG9uZyBlbm91Z2ggdG8gbWFrZSB0aGUgR2V0T3BlbkZpbGVOYW1lIGNhbGwKICAgICBvZm4u
bHBzdHJUaXRsZSA9IGRpYWxvZ1RpdGxlQ2hhcmFjdGVycy5kYXRhKCk7CiAgICAgb2ZuLkZsYWdz
ID0gT0ZOX0VOQUJMRVNJWklORyB8IE9GTl9GSUxFTVVTVEVYSVNUIHwgT0ZOX1BBVEhNVVNURVhJ
U1QgfCBPRk5fRVhQTE9SRVI7CiAgICAgaWYgKG11bHRpRmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CmluZGV4IGFhZTFlMDAwZjhmYWM5OGUzNzIyOTQwMDFjNjljNGM3MGVkNTNmZjkuLjkxMGJlODdl
MjViZDY0ZDVkMTY1MzIwYWEwNDJmMDkwZGRlODQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApA
QCAtMjYsMTEgKzI2LDExIEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2Vi
RWRpdG9yQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUg
IldlYktpdC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvbkNlbnRlci5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJET01D
b3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JT
dHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAt
NzU4LDcgKzc1OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJp
bmcoU3RyaW5nVmlldyB0ZXh0LCBpbnQqIG1pc3NwZWxsaW5nTG9jCiAgICAgICAgIHJldHVybjsK
IAogICAgIGluaXRWaWV3U3BlY2lmaWNTcGVsbGluZyhtX3dlYlZpZXcpOwotICAgIGVkLT5jaGVj
a1NwZWxsaW5nT2ZTdHJpbmcobV93ZWJWaWV3LCB0ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygp
LCB0ZXh0Lmxlbmd0aCgpLCBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7
CisgICAgZWQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhtX3dlYlZpZXcsIHdjaGFyRnJvbSh0ZXh0
LnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxpbmdMb2Nh
dGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIGlu
cHV0V29yZCkKQEAgLTc4MCw3ICs3ODEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tH
cmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldyB0ZXh0LCBWZWN0b3I8R3JhbW1hckRldGFpbAogCiAg
ICAgaW5pdFZpZXdTcGVjaWZpY1NwZWxsaW5nKG1fd2ViVmlldyk7CiAgICAgQ09NUHRyPElFbnVt
V2ViR3JhbW1hckRldGFpbHM+IGVudW1EZXRhaWxzT2JqOwotICAgIGlmIChGQUlMRUQoZWQtPmNo
ZWNrR3JhbW1hck9mU3RyaW5nKG1fd2ViVmlldywgdGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KSwgdGV4dC5sZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJh
ZEdyYW1tYXJMZW5ndGgpKSkKKyAgICBpZiAoRkFJTEVEKGVkLT5jaGVja0dyYW1tYXJPZlN0cmlu
ZyhtX3dlYlZpZXcsIHdjaGFyRnJvbSh0ZXh0LnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgdGV4
dC5sZW5ndGgoKSwgJmVudW1EZXRhaWxzT2JqLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdyYW1t
YXJMZW5ndGgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2hpbGUgKHRydWUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDIyMWUyMmYzODYwNWE1MWYwNzM3ZWFkM2M4YmU5YzM5
NWM0MjRkYzcuLjA2YWMxMWM3MGQxYWRiYWZmOTAzNWEzY2I5NDc3NjZlNWQ2ZDdmNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCkKIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkKIHsKICAgICBTdHJpbmcgdGl0
bGUgPSBtYWtlU3RyaW5nKCJXZWIgSW5zcGVjdG9yICIsIHN0YXRpY19jYXN0PFVDaGFyPigweDIw
MTQpLCAnICcsIG1faW5zcGVjdGVkVVJMKTsKLSAgICA6OlNldFdpbmRvd1RleHQobV9mcm9udGVu
ZEh3bmQsIHRpdGxlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAg
ICA6OlNldFdpbmRvd1RleHQobV9mcm9udGVuZEh3bmQsIHRpdGxlLndpZGVDaGFyYWN0ZXJzKCku
ZGF0YSgpKTsKIH0KIAogTFJFU1VMVCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6b25HZXRN
aW5NYXhJbmZvKFdQQVJBTSwgTFBBUkFNIGxQYXJhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGRlMDIyMWY1NDVmM2RmNGE2
YWQxMGMwYWE5NmQzNmNiOGQ5MTYzZjIuLjRjMjU3Y2YwZjEwMDhiMTM0MWNlMGNlMDRlNWM0NjBh
MDMzYWQxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXph
YmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFi
bGVTdHJpbmdzLmNwcApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogTG9jYWxpemVkU3RyaW5n
OjpvcGVyYXRvciBMUENUU1RSKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3RyaW5nLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpOworICAgICAgICByZXR1cm4gbV9zdHJpbmcud2lkZUNoYXJhY3RlcnMoKS5kYXRh
KCk7CiAKICAgICBtX3N0cmluZyA9IG1fY2ZTdHJpbmc7CiAKQEAgLTg5LDcgKzg5LDcgQEAgTG9j
YWxpemVkU3RyaW5nOjpvcGVyYXRvciBMUENUU1RSKCkgY29uc3QKICAgICAgICAgaWYgKG1fc3Ry
aW5nW2ldID09ICdAJyAmJiAobV9zdHJpbmdbaSAtIDFdID09ICclJyB8fCAoaSA+IDIgJiYgbV9z
dHJpbmdbaSAtIDFdID09ICckJyAmJiBtX3N0cmluZ1tpIC0gMl0gPj0gJzEnICYmIG1fc3RyaW5n
W2kgLSAyXSA8PSAnOScgJiYgbV9zdHJpbmdbaSAtIDNdID09ICclJykpKQogICAgICAgICAgICAg
bV9zdHJpbmcucmVwbGFjZShpLCAxLCAicyIpOwogCi0gICAgcmV0dXJuIG1fc3RyaW5nLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpOworICAgIHJldHVybiBtX3N0cmluZy53
aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsKIH0KIAogc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdl
YktpdEJ1bmRsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDNmZjgxY2Yy
MDg5ZGU2NjgwZWNhMzg1NmY1NzNjMjI5NTE3NDhmMGEuLmI0ZDIyOGZlMjZlMzc3MmFhNWNjMDVk
NjNlZmQwYWQ0MTA2N2U1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0x
NTk4LDEzICsxNTk4LDEzIEBAIHN0YXRpYyBITUVOVSBjcmVhdGVDb250ZXh0TWVudUZyb21JdGVt
cyhjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCiAgICAgICAgIHN3aXRjaCAo
aXRlbS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBY3Rpb25UeXBlOgogICAgICAgICBjYXNlIENo
ZWNrYWJsZUFjdGlvblR5cGU6Ci0gICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3Mg
fCBNRl9TVFJJTkcsIGl0ZW0uYWN0aW9uKCksIGl0ZW0udGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwg
ZmxhZ3MgfCBNRl9TVFJJTkcsIGl0ZW0uYWN0aW9uKCksIGl0ZW0udGl0bGUoKS53aWRlQ2hhcmFj
dGVycygpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTZXBhcmF0
b3JUeXBlOgogICAgICAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdzIHwgTUZfU0VQQVJB
VE9SLCBpdGVtLmFjdGlvbigpLCBudWxscHRyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFN1Ym1lbnVUeXBlOgotICAgICAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZsYWdz
IHwgTUZfUE9QVVAsIChVSU5UX1BUUiljcmVhdGVDb250ZXh0TWVudUZyb21JdGVtcyhpdGVtLnN1
Yk1lbnVJdGVtcygpKSwgaXRlbS50aXRsZSgpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8IE1GX1BP
UFVQLCAoVUlOVF9QVFIpY3JlYXRlQ29udGV4dE1lbnVGcm9tSXRlbXMoaXRlbS5zdWJNZW51SXRl
bXMoKSksIGl0ZW0udGl0bGUoKS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTMyMzQsOCArMzIzNCw4IEBAIHZvaWQgV2Vi
Vmlldzo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAgICAgIGluZm8uY2JT
aXplID0gc2l6ZW9mKGluZm8pOwogICAgICAgICBpbmZvLnVGbGFncyA9IFRURl9JRElTSFdORDsK
ICAgICAgICAgaW5mby51SWQgPSByZWludGVycHJldF9jYXN0PFVJTlRfUFRSPihtX3ZpZXdXaW5k
b3cpOwotICAgICAgICBWZWN0b3I8VUNoYXI+IHRvb2xUaXBDaGFyYWN0ZXJzID0gbV90b29sVGlw
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBidWZmZXIgbG9uZyBl
bm91Z2ggdG8gbWFrZSB0aGUgU2VuZE1lc3NhZ2UgY2FsbAotICAgICAgICBpbmZvLmxwc3pUZXh0
ID0gY29uc3RfY2FzdDxVQ2hhcio+KHRvb2xUaXBDaGFyYWN0ZXJzLmRhdGEoKSk7CisgICAgICAg
IFZlY3Rvcjx3Y2hhcl90PiB0b29sVGlwQ2hhcmFjdGVycyA9IG1fdG9vbFRpcC53aWRlQ2hhcmFj
dGVycygpOyAvLyBSZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIFNlbmRNZXNz
YWdlIGNhbGwKKyAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KHRv
b2xUaXBDaGFyYWN0ZXJzLmRhdGEoKSk7CiAgICAgICAgIDo6U2VuZE1lc3NhZ2UobV90b29sVGlw
SHduZCwgVFRNX1VQREFURVRJUFRFWFQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaW5m
bykpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCmluZGV4IDUwZGYwM2ViNjAw
NDRlYTA3OGZlYWMzYjU3YzJiZTljNzZhOWE3ZjEuLjk0NzZhZGMwMGM2NGRkYzY5YTZhOWM4NTYx
OGUwMTc2ODQ4MTEwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKQEAgLTk3LDkgKzk3
LDYgQEAgZW5kaWYgKCkKIAogaWYgKE5PVCBBUFBMRSkKICAgICBmaW5kX3BhY2thZ2UoSUNVIFJF
UVVJUkVEKQotICAgIGlmIChXSU4zMikKLSAgICAgICAgYWRkX2RlZmluaXRpb25zKC1EVUNIQVJf
VFlQRT13Y2hhcl90KQotICAgIGVuZGlmICgpCiBlbHNlICgpCiAgICAgYWRkX2RlZmluaXRpb25z
KC1EVV9ESVNBQkxFX1JFTkFNSU5HPTEgLURVX1NIT1dfQ1BMVVNQTFVTX0FQST0wKQogICAgIHNl
dChJQ1VfTElCUkFSSUVTIGxpYmljdWNvcmUuZHlsaWIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4
IGFlM2E5ZWZmNjJhY2QyYzc4YzRkZjI1NjI1MDNmNmIwMmZlYmNiMDYuLjYxZmE0ODViMjVkZWI1
NWZlODMzZTcyOTRjMGUxNzllYTZmNTljZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zV2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0xNTgs
NyArMTU4LDYgQEAgc2V0KFBBTF9MSUJSQVJZX1RZUEUgU1RBVElDKQogc2V0KFdlYktpdExlZ2Fj
eV9MSUJSQVJZX1RZUEUgU0hBUkVEKQogCiBmaW5kX3BhY2thZ2UoSUNVIFJFUVVJUkVEKQotYWRk
X2RlZmluaXRpb25zKC1EVUNIQVJfVFlQRT13Y2hhcl90KQogCiAjIElmIDx3aW5zb2NrMi5oPiBp
cyBub3QgaW5jbHVkZWQgYmVmb3JlIDx3aW5kb3dzLmg+IHJlZGVmaW5pdGlvbiBlcnJvcnMgb2Nj
dXIKICMgdW5sZXNzIF9XSU5TT0NLQVBJXyBpcyBkZWZpbmVkIGJlZm9yZSA8d2luZG93cy5oPiBp
cyBpbmNsdWRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGNhMTU1ZTgyOTI2YWYxNzc0MTllYTM1MDQ0YjFmMThlNzE1MGQ2ZGMuLjYyYWIxYzc5
MzcwMGQ0ZmMxNzNiNGZmNGY0YTU4MTUxMDIwNzgzOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0wMy0wNiAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0g
UmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0
aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBEZWxldGUgd2NoYXIgdGVzdHMgLS0g
dGhlc2UgYXJlIE1TVkMtb25seSBhbmQgd2Ugd29uJ3QgYmUgdXNpbmcgU3RyaW5nOjpvcGVyYXRv
cisgZ29pbmcgZm9yd2FyZCBhbnl3YXkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoZmluZEZvbnRGYWxsYmFjayk6CisgICAgICAg
IChhZGRGb250RmFsbGJhY2tJZlByZXNlbnQpOgorICAgICAgICAocmVtb3ZlRm9udEZhbGxiYWNr
SWZQcmVzZW50KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2lu
L1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6
Om1vZHVsZURpcmVjdG9yeSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVJ
bmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVycyBhcyBuZWVkZWQu
CisKIDIwMTktMDMtMDYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBD
b25zaWRlciBzdXBwb3J0aW5nIHRoZSBgcmVmZXJyZXJwb2xpY3lgIGF0dHJpYnV0ZS4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGRhZTVkZTc2MTA1
NzZlNmU2MzgyNmFhZjZmNmI2OTBkYzhjYjFlNDMuLjJjNGU1MGMyMzZmMjJmNmMyYTEyYTJmMzQ3
Mjk2MjYwMTEwN2JlMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcApAQCAtMTAzOCw3ICsxMDM4LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxi
YWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNr
ID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwpOwogCiAgICAgd2NoYXJfdCBm
dWxsUGF0aFtfTUFYX1BBVEhdOwotICAgIGlmICghX3dmdWxscGF0aChmdWxsUGF0aCwgcGF0aFRv
Rm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBfTUFY
X1BBVEgpKQorICAgIGlmICghX3dmdWxscGF0aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNr
LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBfTUFYX1BBVEgpKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIGlmICghOjpQYXRoSXNEaXJlY3RvcnlXKGZ1bGxQYXRoKSkKQEAg
LTEwNjksNyArMTA2OSw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBj
aGFyKiBwYXRoT3JVcmwpCiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0g
cG9zc2libGVQYXRocy5iZWdpbigpOyBwb3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3Mp
IHsKICAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOwogCi0gICAgICAgIGlmICg6OlBhdGhJ
c0RpcmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCkuZGF0YSgpKSkKKyAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250
RmFsbGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIHBh
dGhUb0ZvbnRGYWxsYmFjazsKICAgICB9CiAKQEAgLTEwODMsNyArMTA4Myw3IEBAIHN0YXRpYyB2
b2lkIGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1Bh
dGgpCiAKICAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxi
YWNrLmNzcyIpOwogCi0gICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQorICAgIGlmICghOjpQYXRoRmls
ZUV4aXN0c1coZm9udEZhbGxiYWNrLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgOjpzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihmb250
RmFsbGJhY2suY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBz
dGF0aWMgdm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250
RmFsbGJhY2tQYXRoKQogCiAgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUt
Zm9udC1mYWxsYmFjay5jc3MiKTsKIAotICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZh
bGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICBpZiAo
ITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24obnVsbHB0cik7CkBAIC0xNTQxLDEyICsxNTQxLDEyIEBAIGludCBtYWluKGludCBhcmdj
LCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgU3RyaW5nIGRlc2t0b3BOYW1lID0gbWFrZVN0cmlu
ZygiZGVza3RvcCIsIHByb2Nlc3NJZCk7CiAgICAgSERFU0sgZGVza3RvcCA9IG51bGxwdHI7CiAK
LSAgICBhdXRvIHdpbmRvd3NTdGF0aW9uID0gOjpDcmVhdGVXaW5kb3dTdGF0aW9uKHdpbmRvd1N0
YXRpb25OYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBDV0ZfQ1JF
QVRFX09OTFksIFdJTlNUQV9BTExfQUNDRVNTLCBudWxscHRyKTsKKyAgICBhdXRvIHdpbmRvd3NT
dGF0aW9uID0gOjpDcmVhdGVXaW5kb3dTdGF0aW9uKHdpbmRvd1N0YXRpb25OYW1lLndpZGVDaGFy
YWN0ZXJzKCkuZGF0YSgpLCBDV0ZfQ1JFQVRFX09OTFksIFdJTlNUQV9BTExfQUNDRVNTLCBudWxs
cHRyKTsKICAgICBpZiAod2luZG93c1N0YXRpb24pIHsKICAgICAgICAgaWYgKCE6OlNldFByb2Nl
c3NXaW5kb3dTdGF0aW9uKHdpbmRvd3NTdGF0aW9uKSkKICAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiU2V0UHJvY2Vzc1dpbmRvd1N0YXRpb24gZmFpbGVkIHdpdGggZXJyb3IgJWx1XG4iLCA6
OkdldExhc3RFcnJvcigpKTsKIAotICAgICAgICBkZXNrdG9wID0gOjpDcmVhdGVEZXNrdG9wKGRl
c2t0b3BOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBudWxscHRy
LCBudWxscHRyLCAwLCBHRU5FUklDX0FMTCwgbnVsbHB0cik7CisgICAgICAgIGRlc2t0b3AgPSA6
OkNyZWF0ZURlc2t0b3AoZGVza3RvcE5hbWUud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIG51bGxw
dHIsIG51bGxwdHIsIDAsIEdFTkVSSUNfQUxMLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFkZXNr
dG9wKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY3JlYXRlIGRlc2t0
b3Agd2l0aCBlcnJvciAlbHVcbiIsIDo6R2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZSB7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcApp
bmRleCA5YWJjYmIzYTg3ZDhjMDcyZDk2ZDA0MmRiZmYwYWFlNGNkN2M2NmYxLi4wZTNiZjk4Zjg4
MjE0ZmM0N2M5YjUzMzVmNzRiMDZkM2U1M2EyOTZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKQEAgLTI1MCw3OCArMjUwLDYgQEAg
VEVTVChXVEYsIFN0cmluZ09wZXJhdG9ycykKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElF
UygyLCBzdHJpbmdWaWV3ICsgbGl0ZXJhbCArIHN0cmluZyArIGxpdGVyYWwgKyBhdG9taWNTdHJp
bmcgKyBsaXRlcmFsKTsKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdW
aWV3ICsgKGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsgYXRvbWljU3RyaW5nICsgbGl0ZXJh
bCkpOwogICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsgbGl0
ZXJhbCkgKyAoc3RyaW5nICsgbGl0ZXJhbCkgKyAoYXRvbWljU3RyaW5nICsgbGl0ZXJhbCkpOwot
Ci0jaWYgQ09NUElMRVIoTVNWQykKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygxLCBM
IndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MSwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDEsIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygxLCBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KTsK
LSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0
cmluZyIpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRl
IHN0cmluZyIgKyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJp
bmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwg
c3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIp
ICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmci
ICsgYXRvbWljU3RyaW5nKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBMIndp
ZGUgc3RyaW5nIiArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmlu
ZykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChMIndpZGUgc3RyaW5nIiAr
IGF0b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5n
IiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIs
IChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIEwid2lkZSBz
dHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nVmll
dyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDAsIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKEwid2lkZSBzdHJp
bmciICsgc3RyaW5nVmlldykpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIHN0
cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgc3RyaW5nVmlldyArIChMIndpZGUg
c3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDAsIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmlu
Z1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJ
RVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0
cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIg
KyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBF
Q1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpICsgKEwi
d2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcgKyBMIndpZGUg
c3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwi
d2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmcg
KyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmlu
Z1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAg
RVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0cmlu
ZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBz
dHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIGF0
b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygyLCBzdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0
cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nVmll
dyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwot
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBhdG9t
aWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmlu
ZyIgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAo
TCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5n
KSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwi
d2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikpOwot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChhdG9taWNTdHJpbmcgKyBMIndpZGUg
c3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndp
ZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRl
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBM
IndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MiwgTCJ3aWRlIHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJp
bmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBz
dHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5n
IiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmci
KTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBhdG9taWNTdHJpbmcgKyAoTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIChhdG9taWNT
dHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSAr
IChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBh
dG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5nVmlldyArIEwid2lkZSBz
dHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3
KSArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJpbmdWaWV3ICsg
TCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyAr
IEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCBzdHJp
bmdWaWV3ICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09Q
SUVTKDIsIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyArIEwi
d2lkZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoc3RyaW5n
VmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNT
dHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmdWaWV3KSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykgKyAoTCJ3aWRlIHN0
cmluZyIgKyBhdG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIiAr
IGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCBzdHJpbmdWaWV3ICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotICAgIEVYUEVDVF9O
X1dURl9TVFJJTkdfQ09QSUVTKDIsIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0
cmluZyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIikp
OwotI2VuZGlmCiB9CiAKIFRFU1QoV1RGLCBDb25jYXRlbmF0ZUNoYXJhY3RlckFycmF5QW5kRW1w
dHlTdHJpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0
aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGll
c1dpbi5jcHAKaW5kZXggMmU1NDMwODgxMTFkMzFhNTk3ZWRmMWIzMDEyYTkyNDZlOGVmMDFjYy4u
M2Q1OWQyNTUwMjdmOTRkNDM5Yzg3OGQ5MWVlYWEyNjg5OGYzMzRmZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2luY2x1ZGUgPFNobHdhcGkuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogbmFtZXNwYWNlIFV0aWwgewpA
QCAtNDAsMTIgKzM5LDEyIEBAIHN0YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5KCkKICAgICB3
Y2hhcl90IGZpbGVuYW1lW2J1ZmZlckxlbmd0aF07CiAgICAgYXV0byBsZW4gPSBHZXRNb2R1bGVG
aWxlTmFtZShudWxscHRyLCBmaWxlbmFtZSwgYnVmZmVyTGVuZ3RoKTsKICAgICBBU1NFUlQobGVu
ID4gMCk7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmlu
ZyhmaWxlbmFtZSwgbGVuKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUo
U3RyaW5nKGZpbGVuYW1lLCBsZW4pKTsKIH0KIAogV0tTdHJpbmdSZWYgY3JlYXRlSW5qZWN0ZWRC
dW5kbGVQYXRoKCkKIHsKLSAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobW9kdWxlRGlyZWN0b3J5KCksIFN0cmluZyhMIlRlc3RXZWJLaXRBUElJbmpl
Y3RlZEJ1bmRsZS5kbGwiKSk7CisgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCAiVGVzdFdlYktpdEFQSUluamVjdGVk
QnVuZGxlLmRsbCIpOwogICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhw
YXRoLnV0ZjgoKS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggZDJmMTlkNzk3MTIwNzVkYjU1MzZmOTViZmViMDI4OWRkNGU2ZTQ2MC4uMjhhNDBi
OTE3NzlhMzI0YWUwMTE2MjNmYmE3ZTY3Njg4YmNjYTFjMiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURV
Q0hBUl9UWVBFPXdjaGFyX3Qgc3RvcGdhcCBhbmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3Vy
Y2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2U6CisgICAgICAgIFN0b3AgY29tcGlsaW5nIHdpdGggLURVQ0hBUl9UWVBF
PXdjaGFyX3QuCisKIDIwMTktMDMtMDYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255
LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEVuYWJsZSBhZGRpdGlvbmFsIGV4cGVyaW1lbnRh
bCBmZWF0dXJlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363843</attachid>
            <date>2019-03-06 21:04:50 -0800</date>
            <delta_ts>2019-03-06 23:32:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195346-20190306210449.patch</filename>
            <type>text/plain</type>
            <size>110601</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YjQxNmM4ZDViNmUyOTkxYTE4NjVmMDNkOTM2NTY2MWRmZTlmZmJmLi4xNGRiMjNlYzNhMTgzMzdm
ZmVmZTM5Nzg5ODgxM2E1NmExN2NiMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wMy0wNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3Bn
YXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGN1cnJlbnRX
b3JraW5nRGlyZWN0b3J5KToKKyAgICAgICAgKGZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3Rl
bSk6CisgICAgICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdERhdGVUaW1lKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMgbmVlZGVkLgor
CiAyMDE5LTAzLTA2ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAog
ICAgICAgICBGb2xsb3d1cHMgdG8gKHIyNDIzMDYpOiBVc2UgTG9ja0hvbGRlciBpbnN0ZWFkIG9m
IHN0ZDo6bG9ja19ndWFyZCBvbiBSZW1vdGUgSW5zcGVjdG9yIExvY2tzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFhOWIxOWQ3
MTE5NWVhNmI2YTA1Y2ZhNjg3MjEyMjQ1ZGY3Y2U5NDAuLjY2MTUyZDFmNDVjOWU4ZTJmMDhjYzdh
ZDgxMTBlMTk3YWQ2NWUyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDMtMDYgIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIFJlbW92
ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hh
cjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpBdG9taWNTdHJpbmcpOgorICAgICAgICAq
IHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OlN0cmluZyk6Cisg
ICAgICAgICogd3RmL3RleHQvd2luL1N0cmluZ1dpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RG
OjpTdHJpbmc6OndpZGVDaGFyYWN0ZXJzIGNvbnN0KTogUmVuYW1lZCBmcm9tIFdURjo6c3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyLgorICAgICAgICAqIHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmlu
Z0V4dHJhcy5oOgorICAgICAgICAoV1RGOjp1Y2hhckZyb20pOgorICAgICAgICAoV1RGOjp3Y2hh
ckZyb20pOgorICAgICAgICAoV1RGOjpzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjp3Y2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgQWRkIHN0
YXRpY19hc3NlcnQtZ3VhcmRlZCByZWludGVycHJldF9jYXN0IHdyYXBwZXJzIGZvciBnb2luZyBi
ZXR3ZWVuIFVDaGFyKiBhbmQgd2NoYXJfdCouCisgICAgICAgIE1vdmUgZXhpc3RpbmcgdG8vZnJv
bS1TdHJpbmcgaGVscGVycyBpbnRvIHRoZSBTdHJpbmcgKGFuZCBBdG9taWNTdHJpbmcpIGNsYXNz
KGVzKS4KKworICAgICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaW5kRGF0YSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaW5hbFBhdGhOYW1lKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmNyZWF0ZVN5bWJvbGljTGluayk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxl
dGVGaWxlKToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6Om1vdmVGaWxlKToKKyAgICAgICAg
KFdURjo6RmlsZVN5c3RlbUltcGw6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6CisgICAgICAg
IChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXVEY6OkZpbGVT
eXN0ZW1JbXBsOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUlt
cGw6OmdlbmVyYXRlVGVtcG9yYXJ5UGF0aCk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBs
OjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpvcGVu
RmlsZSk6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpoYXJkTGlua09yQ29weUZpbGUp
OgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlTm9uRW1wdHlEaXJlY3Rvcnkp
OgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV1RGOjpsb2Nh
bGVJbmZvKToKKyAgICAgICAgKiB3dGYvd2luL1BhdGhXYWxrZXIuY3BwOgorICAgICAgICAoV1RG
OjpQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMgYXMg
bmVlZGVkLgorCiAyMDE5LTAyLTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBXZWFrSGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU2MmIyOTk4NTEwOGFlOWJk
ZjcyNjJlYzIzNTA0OGI3MDczNGMwOGEuLjU4YmViZWMwNjZmMjNlZjE1N2IzN2E5ZTE3YmRjYjFh
MjkyYzlhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOS0wMy0wNiAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gUmVtb3Zl
IC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0aCBjaGFy
MTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRMaW5rZWRGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaW5rZWRGb250cyk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRy
ZWVOb2RlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlOjpmaWxsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bWltZVR5cGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN0YXJ0Q3JlYXRlTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb3dubG9hZEJ1bmRsZTo6YXBwZW5kUmVzdW1lRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpEb3dubG9hZEJ1bmRsZTo6ZXh0cmFjdFJlc3VtZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMQ0lERnJvbUxv
Y2FsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkxDSURGcm9tTG9jYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZVdpbjo6Z2V0TG9jYWxlSW5mb1N0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QlN0cmluZzo6QlN0
cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRXZWJMb2NEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZURlc2NyaXB0b3JEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRDRkRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdMYWJlbEZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBl
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBy
ZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TU0xL
ZXlHZW5lcmF0b3JXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsbEZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIFVzZSB3Y2hhciBoZWxwZXJz
IGFzIG5lZWRlZC4KKwogMjAxOS0wMy0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LiBSZXBsYWNlIGEgZm9yd2FyZCBk
ZWNsYXJhdGlvbiB3aXRoIGFuIGluY2x1ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExNjIwMzBhZTliZmQxMDIz
ZmQ4Mjc1MzVjNzVlZmE3ZDdmMmE3YjQuLjkyYjBkZDI0M2JlYjk0ZjU1NmYxODE2M2U2OTRiNGRj
OWY0YzMyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDMtMDYgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dIFJlbW92ZSAt
RFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFybiB0byBsaXZlIHdpdGggY2hhcjE2
X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUz
NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBs
YXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OmNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKToKKyAgICAgICAgKiBQbGF0Zm9y
bS93aW4vTW9kdWxlV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Y3JlYXRlTWVudUl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNldFRvb2xUaXApOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUpOgorICAgICAgICBVc2Ugd2No
YXIgaGVscGVycyBhcyBuZWVkZWQuCisKIDIwMTktMDMtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBQcm9jZXNzRGlkUmVzdW1lKCkgSVBDIHNob3Vs
ZCBiZSBzZW50IHVwb24gcmVzdW1pbmcgd2hlbiBQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5
KCkgSVBDIHdhcyBzZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggN2U4MjdiNWJm
NzQxYzRjYzc4MzZjZTI3ZDc1MzUwMDRkMTc4ZGY1My4uM2FiMTJhMWZlNDlkOTUwZWZlODMwZTNi
YmE1N2YxNzlkMGI1MDY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUxIEBACisyMDE5LTAzLTA2ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNv
bT4KKworICAgICAgICBbV2luXSBSZW1vdmUgLURVQ0hBUl9UWVBFPXdjaGFyX3Qgc3RvcGdhcCBh
bmQgbGVhcm4gdG8gbGl2ZSB3aXRoIGNoYXIxNl90LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDT01Qcm9wZXJ0eUJhZy5oOgorICAgICAgICAoSGFz
aFR5cGU+OjpHZXRQcm9wZXJ0eUluZm8pOgorICAgICAgICAoSGFzaFR5cGU+OjpMb2FkT2JqZWN0
KToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01Ob2RlOjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTVdpbmRv
dzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01FbGVtZW50Ojpmb250KToKKyAg
ICAgICAgKiBET01IVE1MQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01IVE1MSW5wdXRFbGVtZW50
OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAoRE9NSFRNTElucHV0RWxlbWVudDo6cmVwbGFj
ZUNoYXJhY3RlcnNJblJhbmdlKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3Jp
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTW96aWxsYVBsdWdpbkRpcmVjdG9yaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjphZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkSmF2YVBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJD
b3JlOjpzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1hY3Jv
bWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdl
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFZlcnNpb25JbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ2hy
b21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5n
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAg
ICAgICAgKiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoTG9jYWxpemVkU3Ry
aW5nOjpvcGVyYXRvciBMUENUU1RSIGNvbnN0KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKGNyZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1zKToKKyAgICAgICAgKFdlYlZpZXc6OnNl
dFRvb2xUaXApOgorICAgICAgICBVc2Ugd2NoYXIgaGVscGVycyBhcyBuZWVkZWQuCisKIDIwMTkt
MDMtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gUHJvZ3JhbW1hdGljIHBhc3RlIGFjY2VzcyBzaG91bGQgYmUgZ3JhbnRlZCB3aGVuIGNv
cHlpbmcgYW5kIHBhc3Rpbmcgd2l0aGluIHRoZSBzYW1lIG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAppbmRleCBlNTUwYTcyNDRiNjQxZDI4OTFlYTQxM2QzYWRiOWNlY2UxNGI4YTdkLi43ZWYxYWUx
OGFmODlmZDQ0YzUwNzU0OTEzOTYzZGFjZmRiZjVjNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApA
QCAtOTgsNyArOTgsNiBAQAogI2luY2x1ZGUgPGRpcmVjdC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+
CiAjaW5jbHVkZSA8aW8uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRy
YXMuaD4KICNlbHNlCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKQEAgLTc0OCw3ICs3NDcs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3Rv
cnkoKQogICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2lu
ZG93cy9kZXNrdG9wL2ZmMzgxNDA3LmFzcHgKICAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVyKGJ1
ZmZlckxlbmd0aCk7CiAgICAgRFdPUkQgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3Vy
cmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3RoLCBidWZmZXIuZGF0YSgpKTsKLSAgICBTdHJpbmcg
ZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhOb3RJ
bmNsdWRpbmdOdWxsKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nKGJ1ZmZlci5kYXRhKCks
IGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOwogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29y
ayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxwYXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlT
dHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpA
QCAtMTA2Miw4ICsxMDYxLDcgQEAgc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxl
U3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvciYgYnVmZmUKICNpZiBPUyhXSU5E
T1dTKQogICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2lu
ZG93cy9kZXNrdG9wL2FhMzY1MjQ3LmFzcHgjbWF4cGF0aAogICAgIC8vIFVzZSBsb25nIFVOQyB0
byBwYXNzIHRoZSBsb25nIHBhdGggbmFtZSB0byB0aGUgV2luZG93cyBBUElzLgotICAgIFN0cmlu
ZyBsb25nVU5DUGF0aE5hbWUgPSBXVEY6Om1ha2VTdHJpbmcoIlxcXFw/XFwiLCBmaWxlTmFtZSk7
Ci0gICAgYXV0byBwYXRoTmFtZSA9IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihsb25nVU5D
UGF0aE5hbWUpOworICAgIGF1dG8gcGF0aE5hbWUgPSBtYWtlU3RyaW5nKCJcXFxcP1xcIiwgZmls
ZU5hbWUpLndpZGVDaGFyYWN0ZXJzKCk7CiAgICAgc3RydWN0IF9zdGF0IHN0YXR1cyB7IH07CiAg
ICAgaWYgKF93c3RhdChwYXRoTmFtZS5kYXRhKCksICZzdGF0dXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5jcHAKaW5kZXggZmEwZmI0MmUwN2VmNDM2YTVjYzA4MDA2ZTZkZDMyZGI3MGMzZWM0Ny4uNzNl
ZWEzMWYxMjZkNDdhOWI5MDk2NDg0OTYyY2I0NDk5ZjcxZDZlNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0xMDksNyArMTA4LDcgQEAgU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXMKICAgICAgICAgICAg
IFRJTUVfWk9ORV9JTkZPUk1BVElPTiB0aW1lWm9uZUluZm9ybWF0aW9uOwogICAgICAgICAgICAg
R2V0VGltZVpvbmVJbmZvcm1hdGlvbigmdGltZVpvbmVJbmZvcm1hdGlvbik7CiAgICAgICAgICAg
ICBjb25zdCBXQ0hBUiogd2luVGltZVpvbmVOYW1lID0gdC5pc0RTVCgpID8gdGltZVpvbmVJbmZv
cm1hdGlvbi5EYXlsaWdodE5hbWUgOiB0aW1lWm9uZUluZm9ybWF0aW9uLlN0YW5kYXJkTmFtZTsK
LSAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUgPSBudWxsVGVybWluYXRlZFdDaGFyVG9T
dHJpbmcod2luVGltZVpvbmVOYW1lKTsKKyAgICAgICAgICAgIFN0cmluZyB0aW1lWm9uZU5hbWUo
d2luVGltZVpvbmVOYW1lKTsKICNlbHNlCiAgICAgICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsK
ICAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1lWzcwXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21h
a2UKaW5kZXggMmMzNDAyMjU0OWQ4ODQwZWI5MjMwMjg0YTFkZGQ5ZDI4NTIzOWFhZS4uYzU5Nzlk
ODNhNDMyOWUxMjBlZTBjYmQwNzkyNjllMzAwZTZhMDljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4u
Y21ha2UKQEAgLTgsNiArOCw3IEBAIGxpc3QoQVBQRU5EIFdURl9QVUJMSUNfSEVBREVSUwogKQog
CiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUworICAgIHRleHQvd2luL1N0cmluZ1dpbi5jcHAKICAg
ICB0ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcAogCiAgICAgd2lu
L0NQVVRpbWVXaW4uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0
cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCA3ZDc0NTAy
NzNlNWYxYzkwYTM3MDUxNDk5ZDkzOTg4Y2ZlYmFhMmE0Li4xMmQwZjZmODFjMTNhN2UwZDQ4MmNk
ODIwNjJhNmNmNzk3NGU1ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTI2
LDYgKzI2LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgT1MoV0lORE9XUykK
KyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KKyNlbmRpZgorCiAv
LyBEZWZpbmUgJ05PX0lNUExJQ0lUX0FUT01JQ1NUUklORycgYmVmb3JlIGluY2x1ZGluZyB0aGlz
IGhlYWRlciwKIC8vIHRvIGRpc2FsbG93IChleHBlbnNpdmUpIGltcGxpY2l0IFN0cmluZy0tPkF0
b21pY1N0cmluZyBjb252ZXJzaW9ucy4KICNpZmRlZiBOT19JTVBMSUNJVF9BVE9NSUNTVFJJTkcK
QEAgLTE1Myw2ICsxNTcsMTQgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAorI2lmIE9TKFdJTkRPV1MpICYmIFVf
SUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDU5CisgICAgQXRvbWljU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBBdG9taWNTdHJpbmco
dWNoYXJGcm9tKGNoYXJhY3RlcnMpLCBsZW5ndGgpIHsgfQorCisgICAgQXRvbWljU3RyaW5nKGNv
bnN0IHdjaGFyX3QqIGNoYXJhY3RlcnMpCisgICAgICAgIDogQXRvbWljU3RyaW5nKHVjaGFyRnJv
bShjaGFyYWN0ZXJzKSkgeyB9CisjZW5kaWYKKwogICAgIC8vIEF0b21pY1N0cmluZzo6ZnJvbVVU
Rjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBp
bnZhbGlkIFVURi04IHNlcXVlbmNlcy4KICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4
KGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjgo
Y29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYWE1YzlmY2U1ZGM2YWE4
Y2IxMDZmMzFhMDMzMjBmYTUxMmFjOTJmMi4uMWQ5ZjBkYjAwODMwNDE5NDlhYTAwNTg2NGU1MDQ0
NDA5MjAxZGU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0zNCw2ICszNCwxMCBAQAog
I2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2VuZGlmCiAKKyNpZiBPUyhXSU5ET1dTKQorI2luY2x1
ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXVEYgewogCiAvLyBEZWNsYXJhdGlvbnMgb2Ygc3RyaW5nIG9wZXJhdGlvbnMKQEAgLTMzMCw2
ICszMzQsMTggQEAgcHVibGljOgogICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdDsKICNl
bmRpZgogCisjaWYgT1MoV0lORE9XUykKKyNpZiBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA1
OQorICAgIFN0cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
CisgICAgICAgIDogU3RyaW5nKHVjaGFyRnJvbShjaGFyYWN0ZXJzKSwgbGVuZ3RoKSB7IH0KKwor
ICAgIFN0cmluZyhjb25zdCB3Y2hhcl90KiBjaGFyYWN0ZXJzKQorICAgICAgICA6IFN0cmluZyh1
Y2hhckZyb20oY2hhcmFjdGVycykpIHsgfQorI2VuZGlmCisKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgVmVjdG9yPHdjaGFyX3Q+IHdpZGVDaGFyYWN0ZXJzKCkgY29uc3Q7CisjZW5kaWYKKwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0RnJvbTE2Qml0U291cmNl
KGNvbnN0IFVDaGFyKiwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVmVjdG9yPFVD
aGFyLCBpbmxpbmVDYXBhY2l0eT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC93aW4vU3RyaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1N0cmluZ1dpbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODgzM2NkMjk4YjhlZDM0MmQ0OTM0MGNmNzNjYjYyMGExMmZjYTliYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1N0cmluZ1dpbi5jcHAK
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitWZWN0
b3I8d2NoYXJfdD4gU3RyaW5nOjp3aWRlQ2hhcmFjdGVycygpIGNvbnN0Cit7CisgICAgVmVjdG9y
PHdjaGFyX3Q+IHJlc3VsdDsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgcmVzdWx0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKCkgKyAxKTsKKworICAgICAgICBpZiAoaXM4Qml0
KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCA9IG1faW1wbC0+Y2hh
cmFjdGVyczgoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoKCk7
ICsraSkKKyAgICAgICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGNoYXJhY3RlcnM4
W2ldKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzMTYgPSBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChjaGFyYWN0ZXJzMTYsIG1faW1wbC0+bGVuZ3RoKCkpOworICAgICAgICB9CisKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCgwKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaAppbmRleCBkNDFmNDYy
OTRkMzYwNGViNjA0Y2I3NDcwMTZjZTU0MzYxN2VkZGRmLi5mYzdmOWUyYzE3NzYxMWI2ZWVlMWFi
NDZhY2E1NWRlNmE5MDljMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1dDaGFyU3Ry
aW5nRXh0cmFzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IEtv
bnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsNDYgKzI2LDMzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSA8d2NoYXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQogbmFtZXNw
YWNlIFdURiB7CiAKLWlubGluZSBWZWN0b3I8d2NoYXJfdD4gc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoraW5saW5lIGNvbnN0IFVDaGFyKiB1Y2hhckZy
b20oY29uc3Qgd2NoYXJfdCogY2hhcmFjdGVycykKIHsKLSAgICBWZWN0b3I8d2NoYXJfdD4gcmVz
dWx0OwotCi0gICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgcmVzdWx0LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc3RyaW5nLmltcGwoKS0+bGVuZ3RoKCkgKyAxKTsKLQotICAgICAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFj
dGVyczggPSBzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJpbmcuaW1wbCgpLT5sZW5ndGgoKTsgKytpKQotICAgICAgICAg
ICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoY2hhcmFjdGVyczhbaV0pOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNiA9IHN0cmluZy5p
bXBsKCktPmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0
ZXJzMTYsIHN0cmluZy5pbXBsKCktPmxlbmd0aCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
c3VsdC5hcHBlbmQoMCk7Ci0gICAgfQorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdjaGFyX3Qp
ID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIgaGF2ZSB0aGUg
c2FtZSBzaXplIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihj
aGFyYWN0ZXJzKTsKK30KIAotICAgIHJldHVybiByZXN1bHQ7CitpbmxpbmUgVUNoYXIqIHVjaGFy
RnJvbSh3Y2hhcl90KiBjaGFyYWN0ZXJzKQoreworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdj
aGFyX3QpID09IHNpemVvZihVQ2hhciksICJXZSBhc3N1bWUgd2NoYXJfdCBhbmQgVUNoYXIgaGF2
ZSB0aGUgc2FtZSBzaXplIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihj
aGFyYWN0ZXJzKTsKIH0KIAotaW5saW5lIFN0cmluZyB3Y2hhclRvU3RyaW5nKGNvbnN0IHdjaGFy
X3QqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK2lubGluZSBjb25zdCB3Y2hhcl90KiB3
Y2hhckZyb20oY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMpCiB7CiAgICAgc3RhdGljX2Fzc2VydChz
aXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVDaGFyKSwgIldlIGFzc3VtZSB3Y2hhcl90IGFuZCBV
Q2hhciBoYXZlIHRoZSBzYW1lIHNpemUiKTsKLSAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUNoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oY2hhcmFjdGVycyk7CiB9CiAKLWlubGluZSBT
dHJpbmcgbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGNvbnN0IHdjaGFyX3QqIGNoYXJhY3Rl
cnMpCitpbmxpbmUgd2NoYXJfdCogd2NoYXJGcm9tKFVDaGFyKiBjaGFyYWN0ZXJzKQogewotICAg
IHJldHVybiB3Y2hhclRvU3RyaW5nKGNoYXJhY3RlcnMsIHdjc2xlbihjaGFyYWN0ZXJzKSk7Cisg
ICAgc3RhdGljX2Fzc2VydChzaXplb2Yod2NoYXJfdCkgPT0gc2l6ZW9mKFVDaGFyKSwgIldlIGFz
c3VtZSB3Y2hhcl90IGFuZCBVQ2hhciBoYXZlIHRoZSBzYW1lIHNpemUiKTsKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4oY2hhcmFjdGVycyk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCi11c2luZyBXVEY6OnN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcjsKLXVzaW5n
IFdURjo6d2NoYXJUb1N0cmluZzsKLXVzaW5nIFdURjo6bnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3Ry
aW5nOwordXNpbmcgV1RGOjp1Y2hhckZyb207Cit1c2luZyBXVEY6OndjaGFyRnJvbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBkNjcyYWY2Mzc0NjkzY2YwNTIxZWMzNjg5
Njg5Y2ViY2MwMmVkZTM4Li5jZjQ2YTUwOWI5ZTk4ZDkzMmRkOWRjOTRhOTEyNmI4OGIzNzM4ZGNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0
YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0
NzM2MDA7CiAKIHN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5E
X0RBVEFXJiBmaW5kRGF0YSkKIHsKLSAgICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVco
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgJmZpbmREYXRhKTsKKyAg
ICBIQU5ETEUgaGFuZGxlID0gRmluZEZpcnN0RmlsZVcocGF0aC53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSwgJmZpbmREYXRhKTsKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVF
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRmluZENsb3NlKGhhbmRsZSk7CkBAIC0xNTIs
MTMgKzE1MiwxMyBAQCBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBWZWN0b3I8VUNoYXI+IGJ1
ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5k
bGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBNQVhf
UEFUSCkgeworICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGFuZGxlLCB3Y2hh
ckZyb20oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBN
QVhfUEFUSCkgewogICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogICAgIH0KICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgIGJ1ZmZlci5zaHJp
bmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbih3Y2hh
ckZyb20oYnVmZmVyLmRhdGEoKSkpKTsKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3Zl
KGJ1ZmZlcikpOwogfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgT3B0aW9uYWw8RmlsZU1ldGFkYXRh
PiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCiAKIGJv
b2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3Ry
aW5nJiBzeW1ib2xpY0xpbmtQYXRoKQogewotICAgIHJldHVybiAhOjpDcmVhdGVTeW1ib2xpY0xp
bmtXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihzeW1ib2xpY0xpbmtQYXRoKS5kYXRhKCks
IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcih0YXJnZXRQYXRoKS5kYXRhKCksIDApOworICAg
IHJldHVybiAhOjpDcmVhdGVTeW1ib2xpY0xpbmtXKHN5bWJvbGljTGlua1BhdGgud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCksIHRhcmdldFBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIDApOwog
fQogCiBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMjMzLDM3ICsyMzMs
MzUgQEAgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIGJvb2wgZGVsZXRlRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKLSAg
ICByZXR1cm4gISFEZWxldGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5h
bWUpLmRhdGEoKSk7CisgICAgcmV0dXJuICEhRGVsZXRlRmlsZVcoZmlsZW5hbWUud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCkpOwogfQogCiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAh
IVJlbW92ZURpcmVjdG9yeVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5k
YXRhKCkpOworICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoZmlsZW5hbWUud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCkpOwogfQogCiBib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0
aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQogewogICAgIFN0cmluZyBvbGRGaWxlbmFtZSA9IG9s
ZFBhdGg7CiAgICAgU3RyaW5nIG5ld0ZpbGVuYW1lID0gbmV3UGF0aDsKLSAgICByZXR1cm4gISE6
Ok1vdmVGaWxlRXgoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG9sZEZpbGVuYW1lKS5kYXRh
KCksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihuZXdGaWxlbmFtZSkuZGF0YSgpLCBNT1ZF
RklMRV9DT1BZX0FMTE9XRUQgfCBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKKyAgICByZXR1
cm4gISE6Ok1vdmVGaWxlRXgob2xkRmlsZW5hbWUud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIG5l
d0ZpbGVuYW1lLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBNT1ZFRklMRV9DT1BZX0FMTE9XRUQg
fCBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKIH0KIAogU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQog
ewogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKLQogICAgIGlmIChwYXRoLmxl
bmd0aCgpICsgMSA+IGJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAog
ICAgIFN0cmluZ1ZpZXcocGF0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyLmRh
dGEoKSk7CiAgICAgYnVmZmVyW3BhdGgubGVuZ3RoKCldID0gJ1wwJzsKIAotICAgIGlmICghUGF0
aEFwcGVuZFcoYnVmZmVyLmRhdGEoKSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGNvbXBv
bmVudCkuZGF0YSgpKSkKKyAgICBpZiAoIVBhdGhBcHBlbmRXKHdjaGFyRnJvbShidWZmZXIuZGF0
YSgpKSwgY29tcG9uZW50LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCi0gICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwot
CisgICAgYnVmZmVyLnNocmluayh3Y3NsZW4od2NoYXJGcm9tKGJ1ZmZlci5kYXRhKCkpKSk7CiAg
ICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIH0KIApAQCAtMjc5LDkg
KzI3Nyw3IEBAIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0
aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wCiAKIENTdHJpbmcgZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBhdXRvIHVwY29udmVydGVk
Q2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocGF0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0K
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAg
ICBhdXRvIGNoYXJhY3RlcnMgPSB3Y2hhckZyb20oU3RyaW5nVmlldyhwYXRoKS51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKSk7CiAgICAgaW50IHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FD
UCwgMCwgY2hhcmFjdGVycywgcGF0aC5sZW5ndGgoKSwgMCwgMCwgMCwgMCkgLSAxOwogCiAgICAg
Y2hhciogYnVmZmVyOwpAQCAtMjk3LDcgKzI5Myw3IEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBTdHJpbmcgZnVsbFBhdGggPSBwYXRoOwotICAgIGlm
IChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmdWxs
UGF0aCkuZGF0YSgpLCAwKSAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgaWYgKFNIQ3JlYXRlRGly
ZWN0b3J5RXgoMCwgZnVsbFBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIDApICE9IEVSUk9S
X1NVQ0NFU1MpIHsKICAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKICAgICAg
ICAgaWYgKGVycm9yICE9IEVSUk9SX0ZJTEVfRVhJU1RTICYmIGVycm9yICE9IEVSUk9SX0FMUkVB
RFlfRVhJU1RTKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcGF0
aCAlcyIsIHBhdGguYXNjaWkoKS5kYXRhKCkpOwpAQCAtMzE0LDcgKzMxMCw3IEBAIFN0cmluZyBo
b21lRGlyZWN0b3J5UGF0aCgpCiAKIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQogewotICAgIHJldHVybiBudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoOjpQYXRo
RmluZEZpbGVOYW1lKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRoKS5kYXRhKCkpKTsK
KyAgICByZXR1cm4gU3RyaW5nKDo6UGF0aEZpbmRGaWxlTmFtZShwYXRoLndpZGVDaGFyYWN0ZXJz
KCkuZGF0YSgpKSk7CiB9CiAKIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKQEAgLTM1MCw5ICszNDYsMTAgQEAgc3RhdGljIFN0cmluZyBidW5kbGVOYW1lKCkKIHN0YXRp
YyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKIHsKICAgICBW
ZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFUSCk7Ci0gICAgaWYgKEZBSUxFRChTSEdldEZvbGRl
clBhdGhXKDAsIHBhdGhJZGVudGlmaWVyIHwgQ1NJRExfRkxBR19DUkVBVEUsIDAsIDAsIGJ1ZmZl
ci5kYXRhKCkpKSkKKyAgICBpZiAoRkFJTEVEKFNIR2V0Rm9sZGVyUGF0aFcoMCwgcGF0aElkZW50
aWZpZXIgfCBDU0lETF9GTEFHX0NSRUFURSwgMCwgMCwgd2NoYXJGcm9tKGJ1ZmZlci5kYXRhKCkp
KSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBidWZmZXIucmVzaXplKHdjc2xlbihi
dWZmZXIuZGF0YSgpKSk7CisKKyAgICBidWZmZXIuc2hyaW5rKHdjc2xlbih3Y2hhckZyb20oYnVm
ZmVyLmRhdGEoKSkpKTsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5nOjphZG9wdChXVEZN
b3ZlKGJ1ZmZlcikpOwogCiAgICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgpKTsKQEAgLTM5Nyw3
ICszOTQsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChjb25zdCBGdW5j
dGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiYgYWN0aW9uKQogCiAgICAgICAgIEFTU0VSVCh3Y3Ns
ZW4odGVtcEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZpbGUpIC0gMSk7CiAKLSAgICAg
ICAgcHJvcG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG51bGxUZXJtaW5hdGVk
V0NoYXJUb1N0cmluZyh0ZW1wUGF0aCksIG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyh0ZW1w
RmlsZSkpOworICAgICAgICBwcm9wb3NlZFBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcFBhdGgsIHRlbXBGaWxlKTsKICAgICAgICAgaWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBicmVhazsKICAgICB9IHdoaWxlICghYWN0aW9uKHByb3Bvc2VkUGF0aCkp
OwpAQCAtNDExLDcgKzQwOCw3IEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIAogICAgIFN0cmluZyBwcm9wb3NlZFBh
dGggPSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZoYW5kbGVdKGNvbnN0IFN0cmluZyYgcHJvcG9z
ZWRQYXRoKSB7CiAgICAgICAgIC8vIHVzZSBDUkVBVEVfTkVXIHRvIGF2b2lkIG92ZXJ3cml0aW5n
IGFuIGV4aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCi0gICAgICAgIGhhbmRsZSA9IDo6
Q3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHByb3Bvc2VkUGF0aCkuZGF0
YSgpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVXLCBGSUxF
X0FUVFJJQlVURV9OT1JNQUwsIDApOworICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHBy
b3Bvc2VkUGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJ
Q19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKIAog
ICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdldExhc3RFcnJvcigpID09
IEVSUk9SX0FMUkVBRFlfRVhJU1RTOwogICAgIH0pOwpAQCAtNDQyLDcgKzQzOSw3IEBAIFBsYXRm
b3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBt
b2RlKQogICAgIH0KIAogICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHBhdGg7Ci0gICAgcmV0dXJu
IENyZWF0ZUZpbGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGRlc3RpbmF0aW9uKS5kYXRh
KCksIGRlc2lyZWRBY2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25EaXNwb3NpdGlvbiwgRklM
RV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKyAgICByZXR1cm4gQ3JlYXRlRmlsZShkZXN0aW5hdGlv
bi53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgZGVzaXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBj
cmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwogfQogCiB2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKQEAgLTUwMSw3ICs0OTgsNyBA
QCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCiAKIGJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQogewotICAgIHJldHVybiAhITo6Q29weUZp
bGUoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHNvdXJjZSkuZGF0YSgpLCBzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIoZGVzdGluYXRpb24pLmRhdGEoKSwgVFJVRSk7CisgICAgcmV0dXJu
ICEhOjpDb3B5RmlsZShzb3VyY2Uud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIGRlc3RpbmF0aW9u
LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBUUlVFKTsKIH0KIAogU3RyaW5nIGxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCkBAIC01NzIsNyArNTY5LDcgQEAgYm9vbCBkZWxldGVO
b25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgU0hGSUxF
T1BTVFJVQ1QgZGVsZXRlT3BlcmF0aW9uID0gewogICAgICAgICBudWxscHRyLAogICAgICAgICBG
T19ERUxFVEUsCi0gICAgICAgIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQ
YXRoKS5kYXRhKCksCisgICAgICAgIGRpcmVjdG9yeVBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRh
KCksCiAgICAgICAgIEwiIiwKICAgICAgICAgRk9GX05PQ09ORklSTUFUSU9OIHwgRk9GX05PRVJS
T1JVSSB8IEZPRl9TSUxFTlQsCiAgICAgICAgIGZhbHNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdp
bi5jcHAKaW5kZXggMzA5Y2E2NjI3ZWQ4YWZiMzA4NjczMTU4NjRmZjhjM2U2MjBkYWQ1MS4uZmMx
ZmM1Mjc2ZWRjMTk2M2FiN2Y0MGExMTBlZDM4YjUwZjQ4YTZmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogCkBAIC00NCw3ICs0NSw3IEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUg
bG9jYWxlVHlwZSwgY29uc3QgU3RyaW5nJiBmYWxsYmFjaykKICAgICAgICAgcmV0dXJuIGZhbGxi
YWNrOwogICAgIFVDaGFyKiBsb2NhbGVOYW1lQnVmOwogICAgIFN0cmluZyBsb2NhbGVOYW1lID0g
U3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxvY2FsZUNoYXJzLCBsb2NhbGVOYW1lQnVmKTsK
LSAgICBsb2NhbGVDaGFycyA9IEdldExvY2FsZUluZm8obGFuZ0lELCBsb2NhbGVUeXBlLCBsb2Nh
bGVOYW1lQnVmLCBsb2NhbGVDaGFycyk7CisgICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZv
KGxhbmdJRCwgbG9jYWxlVHlwZSwgd2NoYXJGcm9tKGxvY2FsZU5hbWVCdWYpLCBsb2NhbGVDaGFy
cyk7CiAgICAgaWYgKCFsb2NhbGVDaGFycykKICAgICAgICAgcmV0dXJuIGZhbGxiYWNrOwogICAg
IGlmIChsb2NhbGVOYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcAppbmRl
eCBjNmQzZjk3MDYwNDljYjEzYzllZjYzNTVlYmI2M2E1MDc5ODUwMjIxLi44ZDdkN2FjNjgzODU5
ZWUzZTRkMWQwNGMzZWUwNmEyOWYwYmM3M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vUGF0aFdhbGtlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3Bw
CkBAIC0yNywxNCArMjcsMTMgQEAKICNpbmNsdWRlIDx3dGYvd2luL1BhdGhXYWxrZXIuaD4KIAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9X
Q2hhclN0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogUGF0aFdhbGtlcjo6UGF0
aFdhbGtlcihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQog
ewogICAgIFN0cmluZyBwYXRoID0gZGlyZWN0b3J5ICsgIlxcIiArIHBhdHRlcm47Ci0gICAgbV9o
YW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXRo
KS5kYXRhKCksICZtX2RhdGEpOworICAgIG1faGFuZGxlID0gOjpGaW5kRmlyc3RGaWxlVyhwYXRo
LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCAmbV9kYXRhKTsKIH0KIAogUGF0aFdhbGtlcjo6flBh
dGhXYWxrZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENhY2hlV2luLmNwcAppbmRleCAwNzk0ODgxMzY3ZTAyMjE0NThhMGU3YjBhYzQzZDY3
NDQ2ODlhNDUwLi45YTg1NjQwYmRmOTEwNzllYTM0MDM5NWI4ZTIyNzIwMWJkOTFkNDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hl
V2luLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kTGlu
a2VkRm9udHMoV0NIQVIqIGxpbmtlZEZvbnRzLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvCiAgICAg
ICAgIHVuc2lnbmVkIGogPSBpOwogICAgICAgICB3aGlsZSAoaiA8IGxlbmd0aCAmJiBsaW5rZWRG
b250c1tqXSkKICAgICAgICAgICAgIGorKzsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQod2NoYXJU
b1N0cmluZyhsaW5rZWRGb250cyArIGksIGogLSBpKSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5k
KFN0cmluZyhsaW5rZWRGb250cyArIGksIGogLSBpKSk7CiAgICAgICAgIGkgPSBqICsgMTsKICAg
ICB9CiB9CkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4q
IGdldExpbmtlZEZvbnRzKFN0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAgICAgRFdPUkQgbGlua2VkRm9udHNCdWZmZXJTaXplID0gMDsKLSAgICBpZiAoOjpSZWdRdWVy
eVZhbHVlRXgoZm9udExpbmtLZXksIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihmYW1pbHkp
LmRhdGEoKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgPT0g
RVJST1JfRklMRV9OT1RfRk9VTkQpIHsKKyAgICBpZiAoOjpSZWdRdWVyeVZhbHVlRXgoZm9udExp
bmtLZXksIGZhbWlseS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgMCwgbnVsbHB0ciwgbnVsbHB0
ciwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJUaGUgZm9udCBsaW5rIGtleSAlcyBkb2VzIG5vdCBleGlzdCBp
biB0aGUgcmVnaXN0cnkuIiwgZmFtaWx5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIgdW5zaWduZWQgSW5p
dGlhbEJ1ZmZlclNpemUgeyAyNTYgLyBzaXplb2YoV0NIQVIpIH07CiAgICAgVmVjdG9yPFdDSEFS
LCBJbml0aWFsQnVmZmVyU2l6ZT4gbGlua2VkRm9udHMocm91bmRVcFRvTXVsdGlwbGVPZjxzaXpl
b2YoV0NIQVIpPihsaW5rZWRGb250c0J1ZmZlclNpemUpIC8gc2l6ZW9mKFdDSEFSKSk7Ci0gICAg
aWYgKDo6UmVnUXVlcnlWYWx1ZUV4KGZvbnRMaW5rS2V5LCBzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZmFtaWx5KS5kYXRhKCksIDAsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+
KGxpbmtlZEZvbnRzLmRhdGEoKSksICZsaW5rZWRGb250c0J1ZmZlclNpemUpID09IEVSUk9SX1NV
Q0NFU1MpIHsKKyAgICBpZiAoOjpSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIGZhbWlseS53
aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgMCwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxCWVRF
Kj4obGlua2VkRm9udHMuZGF0YSgpKSwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkgPT0gRVJST1Jf
U1VDQ0VTUykgewogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBsaW5rZWRGb250c0J1ZmZlclNp
emUgLyBzaXplb2YoV0NIQVIpOwogICAgICAgICBhcHBlbmRMaW5rZWRGb250cyhsaW5rZWRGb250
cy5kYXRhKCksIGxlbmd0aCwgcmVzdWx0KTsKICAgICB9CkBAIC0yODUsNyArMjg1LDcgQEAgUmVm
UHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZGVzY3IKICAgICAgICAgU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQpOwog
ICAgICAgICBXQ0hBUiBuYW1lW0xGX0ZBQ0VTSVpFXTsKICAgICAgICAgR2V0VGV4dEZhY2UoaGRj
LCBMRl9GQUNFU0laRSwgbmFtZSk7Ci0gICAgICAgIGZhbWlseU5hbWUgPSBudWxsVGVybWluYXRl
ZFdDaGFyVG9TdHJpbmcobmFtZSk7CisgICAgICAgIGZhbWlseU5hbWUgPSBTdHJpbmcobmFtZSk7
CiAKICAgICAgICAgaWYgKGNvbnRhaW5zQ2hhcmFjdGVyIHx8IGN1cnJlbnRGb250Q29udGFpbnND
aGFyYWN0ZXIoaGRjLCBjaGFyYWN0ZXIpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDEsNyAr
MzAxLDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0
ZXJzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3IKIAogICAgICAgICBMT0dGT05UIGxvZ0Zv
bnQ7CiAgICAgICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwotICAgICAg
ICBTdHJpbmdWaWV3KGxpbmtlZEZvbnRzLT5hdChsaW5rZWRGb250SW5kZXgpKS5nZXRDaGFyYWN0
ZXJzV2l0aFVwY29udmVydChsb2dGb250LmxmRmFjZU5hbWUpOworICAgICAgICBTdHJpbmdWaWV3
KGxpbmtlZEZvbnRzLT5hdChsaW5rZWRGb250SW5kZXgpKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydCh1Y2hhckZyb20obG9nRm9udC5sZkZhY2VOYW1lKSk7CiAgICAgICAgIGxvZ0ZvbnQubGZG
YWNlTmFtZVtsaW5rZWRGb250cy0+YXQobGlua2VkRm9udEluZGV4KS5sZW5ndGgoKV0gPSAwOwog
ICAgICAgICBFbnVtRm9udEZhbWlsaWVzRXgoaGRjLCAmbG9nRm9udCwgbGlua2VkRm9udEVudW1Q
cm9jLCByZWludGVycHJldF9jYXN0PExQQVJBTT4oJmhmb250KSwgMCk7CiAgICAgICAgIGxpbmtl
ZEZvbnRJbmRleCsrOwpAQCAtMzMwLDcgKzMzMCw3IEBAIFZlY3RvcjxTdHJpbmc+IEZvbnRDYWNo
ZTo6c3lzdGVtRm9udEZhbWlsaWVzKCkKIAogUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6Zm9udEZy
b21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3Jp
cHRpb24sIGNvbnN0IExPR0ZPTlQmIGZvbnQsIEF0b21pY1N0cmluZyYgb3V0Rm9udEZhbWlseU5h
bWUpCiB7Ci0gICAgQXRvbWljU3RyaW5nIGZhbWlseU5hbWUgPSB3Y2hhclRvU3RyaW5nKGZvbnQu
bGZGYWNlTmFtZSwgd2Nzbmxlbihmb250LmxmRmFjZU5hbWUsIExGX0ZBQ0VTSVpFKSk7CisgICAg
QXRvbWljU3RyaW5nIGZhbWlseU5hbWUoZm9udC5sZkZhY2VOYW1lLCB3Y3NubGVuKGZvbnQubGZG
YWNlTmFtZSwgTEZfRkFDRVNJWkUpKTsKICAgICBSZWZQdHI8Rm9udD4gZm9udERhdGEgPSBmb250
Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CiAgICAgaWYgKGZvbnREYXRh
KQogICAgICAgICBvdXRGb250RmFtaWx5TmFtZSA9IGZhbWlseU5hbWU7CkBAIC00ODQsNyArNDg0
LDcgQEAgc3RhdGljIEdESU9iamVjdDxIRk9OVD4gY3JlYXRlR0RJRm9udChjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseSwgTE9ORyBkZXNpcmVkV2UKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAg
bG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7CiAgICAgU3RyaW5nVmlldyB0cnVu
Y2F0ZWRGYW1pbHkgPSBTdHJpbmdWaWV3KGZhbWlseSkuc3Vic3RyaW5nKDAsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihMRl9GQUNFU0laRSAtIDEpKTsKLSAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0Q2hh
cmFjdGVyc1dpdGhVcGNvbnZlcnQobG9nRm9udC5sZkZhY2VOYW1lKTsKKyAgICB0cnVuY2F0ZWRG
YW1pbHkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGxvZ0ZvbnQubGZGYWNl
TmFtZSkpOwogICAgIGxvZ0ZvbnQubGZGYWNlTmFtZVt0cnVuY2F0ZWRGYW1pbHkubGVuZ3RoKCld
ID0gMDsKICAgICBsb2dGb250LmxmUGl0Y2hBbmRGYW1pbHkgPSAwOwogCkBAIC01OTgsNyArNTk4
LDcgQEAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IEZvbnRDYWNoZTo6Z2V0Rm9u
dFNlbGVjdGlvbkNhcGFiaWxpdGllc0luRmFtaWwKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAg
bG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7CiAgICAgU3RyaW5nVmlldyB0cnVu
Y2F0ZWRGYW1pbHkgPSBTdHJpbmdWaWV3KGZhbWlseU5hbWUpLnN1YnN0cmluZygwLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7Ci0gICAgdHJ1bmNhdGVkRmFtaWx5Lmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CisgICAgdHJ1bmNh
dGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250Lmxm
RmFjZU5hbWUpKTsKICAgICBsb2dGb250LmxmRmFjZU5hbWVbdHJ1bmNhdGVkRmFtaWx5Lmxlbmd0
aCgpXSA9IDA7CiAgICAgbG9nRm9udC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCBhNTdlNjliMmE3ZGE2ZTYyNTAyMWZj
MmU4MTg2MDRhOGIzNDU4OGJiLi5hYjdjNzkwZDYwZjJlOGY3NGFmMDNjMDZhY2ZjNzJjOGUzOWMy
MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtMjUsMTEg
KzI1LDkgQEAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiT3BlblR5
cGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQogI2luY2x1ZGUgPGNh
aXJvLXdpbjMyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0Jhc2U2NC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0cmluZ0V4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQ3LDcgKzQ1LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
Ojpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKIAogICAgIExPR0ZPTlQg
bG9nRm9udDsKICAgICBtZW1zZXQoJmxvZ0ZvbnQsIDAsIHNpemVvZihMT0dGT05UKSk7Ci0gICAg
d2NzbmNweShsb2dGb250LmxmRmFjZU5hbWUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhciht
X25hbWUpLmRhdGEoKSwgTEZfRkFDRVNJWkUgLSAxKTsKKyAgICB3Y3NuY3B5KGxvZ0ZvbnQubGZG
YWNlTmFtZSwgbV9uYW1lLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBMRl9GQUNFU0laRSAtIDEp
OwogCiAgICAgbG9nRm9udC5sZkhlaWdodCA9IC1zaXplOwogICAgIGlmIChyZW5kZXJpbmdNb2Rl
ID09IEZvbnRSZW5kZXJpbmdNb2RlOjpOb3JtYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVDYWlyb1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR2x5cGhQYWdlVHJlZU5vZGVDYWly
b1dpbi5jcHAKaW5kZXggNGE1OWUxYmJiZmEyMTIzNWViMGRmNjdiZjMwNzRhNzMxNjM3NTM2Yy4u
MzhjYWE4YjlkOWIyY2RiNTIxZmI1M2M5N2VkZDhkNjA0NWMyMTI5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9X
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBh
Z2VUcmVlTm9kZUNhaXJvV2luLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRm9u
dC5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0
cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ5LDcgKzUwLDcgQEAg
Ym9vbCBHbHlwaFBhZ2U6OmZpbGwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3Ro
KQogICAgIFNlbGVjdE9iamVjdChkYywgZm9udC5wbGF0Zm9ybURhdGEoKS5oZm9udCgpKTsKIAog
ICAgIFdPUkQgbG9jYWxHbHlwaEJ1ZmZlcltHbHlwaFBhZ2U6OnNpemUgKiAyXTsKLSAgICBEV09S
RCByZXN1bHQgPSBHZXRHbHlwaEluZGljZXMoZGMsIGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBsb2Nh
bEdseXBoQnVmZmVyLCBHR0lfTUFSS19OT05FWElTVElOR19HTFlQSFMpOworICAgIERXT1JEIHJl
c3VsdCA9IEdldEdseXBoSW5kaWNlcyhkYywgd2NoYXJGcm9tKGJ1ZmZlciksIGJ1ZmZlckxlbmd0
aCwgbG9jYWxHbHlwaEJ1ZmZlciwgR0dJX01BUktfTk9ORVhJU1RJTkdfR0xZUEhTKTsKICAgICBi
b29sIHN1Y2Nlc3MgPSByZXN1bHQgIT0gR0RJX0VSUk9SICYmIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyZXN1bHQpID09IGJ1ZmZlckxlbmd0aDsKICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR2x5cGhQYWdlOjpzaXplOyBpKyspIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAppbmRleCA3OTll
MzQ3NDAzOTQwNjM1MTBlOTU0YjZhZjMwOTk4ZTdkMjVlMmFkLi44NTJjYmEyOTU3MmNmNGJhMWJl
OTc5ZDZlYzk5NjE1M2Q5OWFmMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiTG9j
YWxXaW5kb3dzQ29udGV4dC5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1Myw3IEBAIFJlZlB0cjxJ
Y29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcykKICAgICAgICAgbWVtc2V0KCZzZmksIDAsIHNpemVvZihzZmkpKTsKIAogICAgICAgICBT
dHJpbmcgdG1wRmlsZW5hbWUgPSBmaWxlbmFtZXNbMF07Ci0gICAgICAgIGlmICghU0hHZXRGaWxl
SW5mbyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIodG1wRmlsZW5hbWUpLmRhdGEoKSwgMCwg
JnNmaSwgc2l6ZW9mKHNmaSksIFNIR0ZJX0lDT04gfCBTSEdGSV9TSEVMTElDT05TSVpFIHwgU0hH
RklfU01BTExJQ09OKSkKKyAgICAgICAgaWYgKCFTSEdldEZpbGVJbmZvKHRtcEZpbGVuYW1lLndp
ZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCAwLCAmc2ZpLCBzaXplb2Yoc2ZpKSwgU0hHRklfSUNPTiB8
IFNIR0ZJX1NIRUxMSUNPTlNJWkUgfCBTSEdGSV9TTUFMTElDT04pKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKHNmaS5oSWNvbikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCBj
ODQ4YjYxYjljNThkOGYyOWYxZWJiMzA5NmJjYTExNzJkZTFiMzI3Li5lZmIxNTVmNDgyYjMyNzdk
YmIzMjFiYzk5ZDdhYjkzOTIwOGI2NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtNDQsNyArNDQsNiBAQAogCiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogU09GVF9MSU5LX0xJQlJBUlko
TWYpOwogU09GVF9MSU5LX09QVElPTkFMKE1mLCBNRkNyZWF0ZVNvdXJjZVJlc29sdmVyLCBIUkVT
VUxULCBTVERBUElDQUxMVFlQRSwgKElNRlNvdXJjZVJlc29sdmVyKiopKTsKQEAgLTE0Miw3ICsx
NDEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mIG1pbWVUeXBlQ2FjaGUoKQogICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CiAgICAgICAg
IENBTFBXU1RSIG1pbWVUeXBlQXJyYXkgPSBwcm9wVmFyTWltZVR5cGVBcnJheS5jYWxwd3N0cjsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVUeXBlQXJyYXkuY0VsZW1zOyBp
KyspCi0gICAgICAgICAgICBjYWNoZWRUeXBlcy5nZXQoKS5hZGQobnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKG1pbWVUeXBlQXJyYXkucEVsZW1zW2ldKSk7CisgICAgICAgICAgICBjYWNoZWRU
eXBlcy5nZXQoKS5hZGQobWltZVR5cGVBcnJheS5wRWxlbXNbaV0pOwogICAgIH0KIAogICAgIFBy
b3BWYXJpYW50Q2xlYXIoJnByb3BWYXJNaW1lVHlwZUFycmF5KTsKQEAgLTQ3MCw3ICs0NjksNyBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3RhcnRDcmVhdGVNZWRp
YVNvdXJjZShjb25zdCBTdHJpbmcmIHVybAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBD
T01QdHI8SVVua25vd24+IGNhbmNlbENvb2tpZTsKLSAgICBWZWN0b3I8d2NoYXJfdD4gdXJsU291
cmNlID0gc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHVybCk7CisgICAgVmVjdG9yPHdjaGFy
X3Q+IHVybFNvdXJjZSA9IHVybC53aWRlQ2hhcmFjdGVycygpOwogCiAgICAgQXN5bmNDYWxsYmFj
ayogY2FsbGJhY2sgPSBuZXcgQXN5bmNDYWxsYmFjayh0aGlzLCBmYWxzZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVD
b250cm9sbGVyLmNwcAppbmRleCAxMTA0NTQ3NmRiNDY2NjViZTVlYjIyOTNhMTg0ZTFlMGEyYmY2
MzVlLi40NzRjNDg2MGZmMTAwNDQwOTliNmFmM2Y5YmZiOWI0MGNkNzg4ZGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmli
ZUNvbnRyb2xsZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSFduZERDLmgiCiAj
aW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KKyNpbmNs
dWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2
b2lkIFVuaXNjcmliZUNvbnRyb2xsZXI6Oml0ZW1pemVTaGFwZUFuZFBsYWNlKGNvbnN0IFVDaGFy
KiBjcCwgdW5zaWduZWQgc3RyaW5nTwogICAgIG1faXRlbXMucmVzaXplKDYpOwogICAgIGludCBu
dW1JdGVtcyA9IDA7CiAgICAgSFJFU1VMVCByYyA9IFNfT0s7Ci0gICAgd2hpbGUgKHJjID0gOjpT
Y3JpcHRJdGVtaXplKGNwLCBsZW5ndGgsIG1faXRlbXMuc2l6ZSgpIC0gMSwgJm1fY29udHJvbCwg
Jm1fc3RhdGUsIG1faXRlbXMuZGF0YSgpLCAmbnVtSXRlbXMpID09IEVfT1VUT0ZNRU1PUlkpIHsK
KyAgICB3aGlsZSAocmMgPSA6OlNjcmlwdEl0ZW1pemUod2NoYXJGcm9tKGNwKSwgbGVuZ3RoLCBt
X2l0ZW1zLnNpemUoKSAtIDEsICZtX2NvbnRyb2wsICZtX3N0YXRlLCBtX2l0ZW1zLmRhdGEoKSwg
Jm51bUl0ZW1zKSA9PSBFX09VVE9GTUVNT1JZKSB7CiAgICAgICAgIG1faXRlbXMucmVzaXplKG1f
aXRlbXMuc2l6ZSgpICogMik7CiAgICAgICAgIHJlc2V0Q29udHJvbEFuZFN0YXRlKCk7CiAgICAg
fQpAQCAtNDI4LDcgKzQyOCw3IEBAIGJvb2wgVW5pc2NyaWJlQ29udHJvbGxlcjo6c2hhcGUoY29u
c3QgVUNoYXIqIHN0ciwgaW50IGxlbiwgU0NSSVBUX0lURU0gaXRlbSwgY29uCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGRvIHsKLSAgICAgICAgc2hhcGVSZXN1bHQgPSBTY3JpcHRTaGFw
ZShoZGMsIGZvbnREYXRhLT5zY3JpcHRDYWNoZSgpLCBzdHIsIGxlbiwgZ2x5cGhzLnNpemUoKSwg
Jml0ZW0uYSwKKyAgICAgICAgc2hhcGVSZXN1bHQgPSBTY3JpcHRTaGFwZShoZGMsIGZvbnREYXRh
LT5zY3JpcHRDYWNoZSgpLCB3Y2hhckZyb20oc3RyKSwgbGVuLCBnbHlwaHMuc2l6ZSgpLCAmaXRl
bS5hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBocy5kYXRhKCksIGNs
dXN0ZXJzLmRhdGEoKSwgdmlzdWFsQXR0cmlidXRlcy5kYXRhKCksICZnbHlwaENvdW50KTsKICAg
ICAgICAgaWYgKHNoYXBlUmVzdWx0ID09IEVfUEVORElORykgewogICAgICAgICAgICAgLy8gVGhl
IHNjcmlwdCBjYWNoZSBpc24ndCBwcmltZWQgd2l0aCBlbm91Z2ggaW5mbyB5ZXQuICBXZSBuZWVk
IHRvIHNlbGVjdCBvdXIgSEZPTlQgaW50bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCmluZGV4IDM4ZmQ2MGI5
MjBiNjE4NDc5ZGUxNjhlYmI3ZjRlMjk2ZGFlZTg1OTguLjkwMWIyYjcxMGU0ZjgxYTNjODBjYWIw
MzkzODg0N2VhMTY0MWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dD
aGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksOSArNTgs
OSBAQCBib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgY2hhciogcmVzdW1lQnl0ZXMsIHVpbnQz
Ml90IHJlc3VtZUxlbmd0aCwgY29uc3QgU3RyaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgU3RyaW5nIG51bGxpZmllZFBhdGggPSBidW5kbGVQYXRoOworICAgIGF1dG8gbnVs
bGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGgud2lkZUNoYXJhY3RlcnMoKTsKICAgICBGSUxFKiBidW5k
bGUgPSAwOwotICAgIGlmIChfd2ZvcGVuX3MoJmJ1bmRsZSwgc3RyaW5nVG9OdWxsVGVybWluYXRl
ZFdDaGFyKG51bGxpZmllZFBhdGgpLmRhdGEoKSwgVEVYVCgiYWIiKSkgfHwgIWJ1bmRsZSkgewor
ICAgIGlmIChfd2ZvcGVuX3MoJmJ1bmRsZSwgbnVsbGlmaWVkUGF0aC5kYXRhKCksIFRFWFQoImFi
IikpIHx8ICFidW5kbGUpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxl
ICVzIHRvIGFwcGVuZCByZXN1bWUgZGF0YSIsIGJ1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtOTgsOSArOTcsOSBAQCBib29sIGV4dHJh
Y3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1
bWVEYXRhKQogICAgIH0KIAogICAgIC8vIE9wZW4gYSBoYW5kbGUgdG8gdGhlIGJ1bmRsZSBmaWxl
Ci0gICAgU3RyaW5nIG51bGxpZmllZFBhdGggPSBidW5kbGVQYXRoOworICAgIGF1dG8gbnVsbGlm
aWVkUGF0aCA9IGJ1bmRsZVBhdGgud2lkZUNoYXJhY3RlcnMoKTsKICAgICBGSUxFKiBidW5kbGUg
PSAwOwotICAgIGlmIChfd2ZvcGVuX3MoJmJ1bmRsZSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKG51bGxpZmllZFBhdGgpLmRhdGEoKSwgVEVYVCgicitiIikpIHx8ICFidW5kbGUpIHsKKyAg
ICBpZiAoX3dmb3Blbl9zKCZidW5kbGUsIG51bGxpZmllZFBhdGguZGF0YSgpLCBURVhUKCJyK2Ii
KSkgfHwgIWJ1bmRsZSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGZpbGUg
JXMgdG8gZ2V0IHJlc3VtZSBkYXRhIiwgYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCAxNTMxNWNhNzM1ZmYyZTdhYjQzNTE3MWU2YzFiZGU2
MDM3MzJjYmRlLi5hNjFhYThjNTM2ODJhZmRkMmU0MTAwNjM1N2Q2ZGNmZjQyMGMxYWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGVJbnRlcm5hbChMQ0lEIHVzZXJE
ZWZhdWx0TENJRCwgY29uc3QgU3RyaW5nJiB1c2VyRGVmYXUKIHsKICAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShleHRyYWN0TGFuZ3VhZ2VDb2RlKGxvY2FsZSksIHVzZXJEZWZhdWx0TGFu
Z3VhZ2VDb2RlKSkKICAgICAgICAgcmV0dXJuIHVzZXJEZWZhdWx0TENJRDsKLSAgICByZXR1cm4g
TG9jYWxlTmFtZVRvTENJRChzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobG9jYWxlKS5kYXRh
KCksIDApOworICAgIHJldHVybiBMb2NhbGVOYW1lVG9MQ0lEKGxvY2FsZS53aWRlQ2hhcmFjdGVy
cygpLmRhdGEoKSwgMCk7CiB9CiAKIHN0YXRpYyBMQ0lEIExDSURGcm9tTG9jYWxlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlKQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJv
bUxvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKICAgICBjb25zdCBzaXplX3QgbGFu
Z3VhZ2VDb2RlQnVmZmVyU2l6ZSA9IDk7CiAgICAgV0NIQVIgbG93ZXJjYXNlTGFuZ3VhZ2VDb2Rl
W2xhbmd1YWdlQ29kZUJ1ZmZlclNpemVdOwogICAgIDo6R2V0TG9jYWxlSW5mbyhMT0NBTEVfVVNF
Ul9ERUZBVUxULCBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCBsb3dlcmNhc2VMYW5ndWFnZUNvZGUs
IGxhbmd1YWdlQ29kZUJ1ZmZlclNpemUpOwotICAgIFN0cmluZyB1c2VyRGVmYXVsdExhbmd1YWdl
Q29kZSA9IG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhsb3dlcmNhc2VMYW5ndWFnZUNvZGUp
OworICAgIFN0cmluZyB1c2VyRGVmYXVsdExhbmd1YWdlQ29kZShsb3dlcmNhc2VMYW5ndWFnZUNv
ZGUpOwogCiAgICAgTENJRCBsY2lkID0gTENJREZyb21Mb2NhbGVJbnRlcm5hbChMT0NBTEVfVVNF
Ul9ERUZBVUxULCB1c2VyRGVmYXVsdExhbmd1YWdlQ29kZSwgU3RyaW5nKGxvY2FsZSkpOwogICAg
IGlmICghbGNpZCkKQEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIExvY2FsZVdpbjo6Z2V0TG9jYWxl
SW5mb1N0cmluZyhMQ1RZUEUgdHlwZSkKICAgICBpZiAoYnVmZmVyU2l6ZVdpdGhOVUwgPD0gMCkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGJ1ZmZl
clNpemVXaXRoTlVMKTsKLSAgICA6OkdldExvY2FsZUluZm8obV9sY2lkLCB0eXBlLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXJTaXplV2l0aE5VTCk7CisgICAgOjpHZXRMb2NhbGVJbmZvKG1fbGNpZCwg
dHlwZSwgd2NoYXJGcm9tKGJ1ZmZlci5kYXRhKCkpLCBidWZmZXJTaXplV2l0aE5VTCk7CiAgICAg
YnVmZmVyLnNocmluayhidWZmZXJTaXplV2l0aE5VTCAtIDEpOwogICAgIHJldHVybiBTdHJpbmc6
OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0
cmluZy5jcHAKaW5kZXggMGY0NmM1ZGNhYjI5YjdiNDYzYmI2ZWNkMzFiMGViM2I3NThjMjIzYy4u
MDI3Y2RkZDMyYTdkNTdhMzA4YjQyYjg4ODNkMmI1YjM5NDEwNjhhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0
Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5n
RXh0cmFzLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KQEAgLTY1LDcgKzY2LDcgQEAgQlN0cmluZzo6QlN0cmluZyhjb25zdCBTdHJp
bmcmIHMpCiAgICAgaWYgKHMuaXNOdWxsKCkpCiAgICAgICAgIG1fYnN0ciA9IDA7CiAgICAgZWxz
ZQotICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbihTdHJpbmdWaWV3KHMpLnVwY29u
dmVydGVkQ2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsKKyAgICAgICAgbV9ic3RyID0gU3lzQWxs
b2NTdHJpbmdMZW4od2NoYXJGcm9tKFN0cmluZ1ZpZXcocykudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCkpLCBzLmxlbmd0aCgpKTsKIH0KIAogQlN0cmluZzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkK
QEAgLTczLDcgKzc0LDcgQEAgQlN0cmluZzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICBp
ZiAodXJsLmlzTnVsbCgpKQogICAgICAgICBtX2JzdHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAg
bV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4oU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkpLnVwY29u
dmVydGVkQ2hhcmFjdGVycygpLCB1cmwuc3RyaW5nKCkubGVuZ3RoKCkpOworICAgICAgICBtX2Jz
dHIgPSBTeXNBbGxvY1N0cmluZ0xlbih3Y2hhckZyb20oU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkp
LnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwgdXJsLnN0cmluZygpLmxlbmd0aCgpKTsKIH0KIAog
QlN0cmluZzo6QlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHMpCkBAIC04MSw3ICs4Miw3IEBA
IEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzKQogICAgIGlmIChzLmlzTnVs
bCgpKQogICAgICAgICBtX2JzdHIgPSAwOwogICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lz
QWxsb2NTdHJpbmdMZW4oU3RyaW5nVmlldyhzLnN0cmluZygpKS51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSwgcy5sZW5ndGgoKSk7CisgICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHdj
aGFyRnJvbShTdHJpbmdWaWV3KHMuc3RyaW5nKCkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpKSwg
cy5sZW5ndGgoKSk7CiB9CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IDBlNDA4MGI4NTY3
NmEwYTQ2MWJiZjk2YmExNzMyMzVmNWI3ZGI2M2MuLjk1M2Q0YmRkYjNmMjIyOWZhYzcxNzJiNTY0
YWQ1NTdhY2Y1MWFiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIGJv
b2wgZ2V0V2ViTG9jRGF0YShjb25zdCBEcmFnRGF0YU1hcCogZGF0YU9iamVjdCwgU3RyaW5nJiB1
cmwsIFN0cmluZyogdGkKICAgICBpZiAoIWRhdGFPYmplY3QtPmNvbnRhaW5zKGNmSERyb3BGb3Jt
YXQoKS0+Y2ZGb3JtYXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3NjcHkoZmls
ZW5hbWUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkYXRhT2JqZWN0LT5nZXQoY2ZIRHJv
cEZvcm1hdCgpLT5jZkZvcm1hdClbMF0pLmRhdGEoKSk7CisgICAgd2NzY3B5KGZpbGVuYW1lLCBk
YXRhT2JqZWN0LT5nZXQoY2ZIRHJvcEZvcm1hdCgpLT5jZkZvcm1hdClbMF0ud2lkZUNoYXJhY3Rl
cnMoKS5kYXRhKCkpOwogICAgIGlmIChfd2NzaWNtcChQYXRoRmluZEV4dGVuc2lvblcoZmlsZW5h
bWUpLCBMIi51cmwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAKIApAQCAtMTQwLDEwICsx
NDAsMTAgQEAgc3RhdGljIGJvb2wgZ2V0V2ViTG9jRGF0YShjb25zdCBEcmFnRGF0YU1hcCogZGF0
YU9iamVjdCwgU3RyaW5nJiB1cmwsIFN0cmluZyogdGkKIAogICAgIGlmICh0aXRsZSkgewogICAg
ICAgICBQYXRoUmVtb3ZlRXh0ZW5zaW9uKGZpbGVuYW1lKTsKLSAgICAgICAgKnRpdGxlID0gbnVs
bFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKGZpbGVuYW1lKTsKKyAgICAgICAgKnRpdGxlID0gU3Ry
aW5nKGZpbGVuYW1lKTsKICAgICB9CiAgICAgCi0gICAgdXJsID0gbnVsbFRlcm1pbmF0ZWRXQ2hh
clRvU3RyaW5nKHVybEJ1ZmZlcik7CisgICAgdXJsID0gU3RyaW5nKHVybEJ1ZmZlcik7CiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NSw3ICsxODUsNyBA
QCBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCiAKICAgICBpZiAoY2JEYXRhKSB7CiAgICAgICAgIFBXU1RSIGJ1ZmZlciA9IHN0YXRp
Y19jYXN0PFBXU1RSPihHbG9iYWxMb2NrKGNiRGF0YSkpOwotICAgICAgICBfc253cHJpbnRmKGJ1
ZmZlciwgc2l6ZSwgTCIlc1xuJXMiLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobXV0YWJs
ZVVSTCkuZGF0YSgpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobXV0YWJsZVRpdGxlKS5k
YXRhKCkpOworICAgICAgICBfc253cHJpbnRmKGJ1ZmZlciwgc2l6ZSwgTCIlc1xuJXMiLCBtdXRh
YmxlVVJMLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBtdXRhYmxlVGl0bGUud2lkZUNoYXJhY3Rl
cnMoKS5kYXRhKCkpOwogICAgICAgICBHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAgICB9CiAgICAg
cmV0dXJuIGNiRGF0YTsKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGdldEZpbGVEZXNjcmlwdG9y
RGF0YShJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgaW50JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1l
KQogCiAgICAgRklMRUdST1VQREVTQ1JJUFRPUiogZmdkID0gc3RhdGljX2Nhc3Q8RklMRUdST1VQ
REVTQ1JJUFRPUio+KEdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCkpOwogICAgIHNpemUgPSBmZ2Qt
PmZnZFswXS5uRmlsZVNpemVMb3c7Ci0gICAgcGF0aG5hbWUgPSBudWxsVGVybWluYXRlZFdDaGFy
VG9TdHJpbmcoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKTsKKyAgICBwYXRobmFtZSA9IFN0cmluZyhm
Z2QtPmZnZFswXS5jRmlsZU5hbWUpOwogCiAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwp
OwogICAgIDo6UmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwpAQCAtNTI1LDkgKzUyNSwxMCBAQCBT
dHJpbmcgZ2V0VVJMKGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhLCBEcmFnRGF0YTo6RmlsZW5hbWVD
b252ZXJzaW9uUG9saWN5IGZpbGVuYQogICAgIGlmICghZ2V0RGF0YU1hcEl0ZW0oZGF0YSwgZmls
ZW5hbWVXRm9ybWF0KCksIHN0cmluZ0RhdGEpKQogICAgICAgICBnZXREYXRhTWFwSXRlbShkYXRh
LCBmaWxlbmFtZUZvcm1hdCgpLCBzdHJpbmdEYXRhKTsKIAotICAgIGlmIChzdHJpbmdEYXRhLmlz
RW1wdHkoKSB8fCAoIVBhdGhGaWxlRXhpc3RzKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihz
dHJpbmdEYXRhKS5kYXRhKCkpICYmICFQYXRoSXNVTkMoc3RyaW5nVG9OdWxsVGVybWluYXRlZFdD
aGFyKHN0cmluZ0RhdGEpLmRhdGEoKSkpKQorICAgIGF1dG8gd2NoYXJEYXRhID0gc3RyaW5nRGF0
YS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKTsKKyAgICBpZiAoc3RyaW5nRGF0YS5pc0VtcHR5KCkg
fHwgKCFQYXRoRmlsZUV4aXN0cyh3Y2hhckRhdGEpICYmICFQYXRoSXNVTkMod2NoYXJEYXRhKSkp
CiAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXND
RlN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciAqKXN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihz
dHJpbmdEYXRhKS5kYXRhKCksIHdjc2xlbihzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoc3Ry
aW5nRGF0YSkuZGF0YSgpKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZT
dHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIgKil3Y2hhckRhdGEsIHdjc2xlbih3Y2hhckRhdGEpKSk7
CiAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpICYmIHRpdGxl
KQogICAgICAgICAqdGl0bGUgPSB1cmw7CiAjZW5kaWYKQEAgLTc0Miw3ICs3NDMsNyBAQCB2b2lk
IGdldENGRGF0YShJRGF0YU9iamVjdCogZGF0YSwgRk9STUFURVRDKiBmb3JtYXQsIFZlY3RvcjxT
dHJpbmc+JiBkYXRhU3RyaW5ncwogICAgIGZvciAoVUlOVCBpID0gMDsgaSA8IGZpbGVDb3VudDsg
aSsrKSB7CiAgICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIGksIGZpbGVuYW1lLCBX
VEZfQVJSQVlfTEVOR1RIKGZpbGVuYW1lKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgZGF0YVN0cmluZ3MuYXBwZW5kKG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhmaWxlbmFt
ZSkpOworICAgICAgICBkYXRhU3RyaW5ncy5hcHBlbmQoZmlsZW5hbWUpOwogICAgIH0KIAogICAg
IEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKQEAgLTc5Nyw3ICs3OTgsNyBAQCB2b2lkIHNl
dENGRGF0YShJRGF0YU9iamVjdCogZGF0YSwgRk9STUFURVRDKiBmb3JtYXQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkYXRhUwogICAgIGRyb3BGaWxlcy0+cEZpbGVzID0gc2l6ZW9mKERST1BGSUxF
Uyk7CiAgICAgZHJvcEZpbGVzLT5mV2lkZSA9IFRSVUU7CiAgICAgU3RyaW5nIGZpbGVuYW1lID0g
ZGF0YVN0cmluZ3MuZmlyc3QoKTsKLSAgICB3Y3NjcHkocmVpbnRlcnByZXRfY2FzdDxMUFdTVFI+
KGRyb3BGaWxlcyArIDEpLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZmlsZW5hbWUpLmRh
dGEoKSk7CisgICAgd2NzY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8TFBXU1RSPihkcm9wRmlsZXMgKyAx
KSwgZmlsZW5hbWUud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpOwogICAgIEdsb2JhbFVubG9jayht
ZWRpdW0uaEdsb2JhbCk7CiAgICAgZGF0YS0+U2V0RGF0YShmb3JtYXQsICZtZWRpdW0sIEZBTFNF
KTsKICAgICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggNDc5ZTBjYWFmNzM5MDE5Nzg5ODQwYjBm
ODc2ZjZkNGY3OTY0YjNlZS4uZWUwZDhiMjYwY2NjYjRkYmNlMTMwZWQzMzFjODkzYzBkYzBmYjAz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC0z
Nyw3ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MTU4LDcgKzE1Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IERyYWdEYXRhOjphc0ZpbGVuYW1lcygpIGNv
bnN0CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GaWxlczsgaSsrKSB7CiAg
ICAgICAgICAgICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9wLCBpLCBmaWxlbmFtZSwgV1RGX0FS
UkFZX0xFTkdUSChmaWxlbmFtZSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcoZmlsZW5hbWUp
KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZmlsZW5hbWUpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRnJlZSB1cCBtZW1vcnkgZnJvbSBkcmFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDEyNTU0ODBiNDBhMjZhMjQxOGZhMjNhNmIx
MGRlNjg2NDRiOWRlNjEuLmU4MWM4MDEzNmI5YzM0NmVhMzBkNzRkNjIyZDg4NTU1NTIwNWYzM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC00
MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiV2ViQ29yZVRleHRSZW5kZXJlci5oIgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3Qu
aD4KIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTc0LDggKzczLDggQEAgRHJhZ0ltYWdlUmVm
IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0KQog
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7CiAgICAgU0hGSUxFSU5GTyBzaGZpIHsgfTsKLSAgICBT
dHJpbmcgZm5hbWUgPSBmaWxlbmFtZTsKLSAgICBpZiAoRkFJTEVEKFNIR2V0RmlsZUluZm8oc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZuYW1lKS5kYXRhKCksIEZJTEVfQVRUUklCVVRFX05P
Uk1BTCwgJnNoZmksIHNpemVvZihzaGZpKSwgU0hHRklfSUNPTiB8IFNIR0ZJX1VTRUZJTEVBVFRS
SUJVVEVTKSkpCisgICAgYXV0byBmbmFtZSA9IGZpbGVuYW1lLndpZGVDaGFyYWN0ZXJzKCk7Cisg
ICAgaWYgKEZBSUxFRChTSEdldEZpbGVJbmZvKGZuYW1lLmRhdGEoKSwgRklMRV9BVFRSSUJVVEVf
Tk9STUFMLCAmc2hmaSwgc2l6ZW9mKHNoZmkpLCBTSEdGSV9JQ09OIHwgU0hHRklfVVNFRklMRUFU
VFJJQlVURVMpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBJQ09OSU5GTyBpY29uSW5mbzsK
QEAgLTExMSw3ICsxMTAsNyBAQCBzdGF0aWMgRm9udENhc2NhZGUgZHJhZ0xhYmVsRm9udChpbnQg
c2l6ZSwgYm9vbCBib2xkLCBGb250UmVuZGVyaW5nTW9kZSByZW5kZXJpbgogCiAgICAgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKICAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQo
Ym9sZCA/IGJvbGRXZWlnaHRWYWx1ZSgpIDogbm9ybWFsV2VpZ2h0VmFsdWUoKSk7Ci0gICAgZGVz
Y3JpcHRpb24uc2V0T25lRmFtaWx5KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhtZXRyaWNz
LmxmU21DYXB0aW9uRm9udC5sZkZhY2VOYW1lKSk7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFt
aWx5KG1ldHJpY3MubGZTbUNhcHRpb25Gb250LmxmRmFjZU5hbWUpOwogICAgIGRlc2NyaXB0aW9u
LnNldFNwZWNpZmllZFNpemUoKGZsb2F0KXNpemUpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1
dGVkU2l6ZSgoZmxvYXQpc2l6ZSk7CiAgICAgZGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShy
ZW5kZXJpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9N
SU1FVHlwZVJlZ2lzdHJ5V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1F
VHlwZVJlZ2lzdHJ5V2luLmNwcAppbmRleCBiMzUwZjFjYzcxMmVhOGMwMzVlMmMyZDJkMDY1MDM2
ZjlkM2U1MGUzLi5hMDQ0OTgyYTA4ZTkwZDgwMTlmZjE0Y2YyYjAzM2JiZDU1MmUyMTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDEsMTAgKzQwLDEwIEBAIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAgICAgRFdPUkQgY29udGVudFR5cGVTdHJM
ZW4gPSBzaXplb2YoY29udGVudFR5cGVTdHIpOwogICAgIERXT1JEIGtleVR5cGU7CiAKLSAgICBI
UkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9DTEFTU0VTX1JPT1QsIHN0cmlu
Z1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHQpLmRhdGEoKSwgTCJDb250ZW50IFR5cGUiLCAma2V5
VHlwZSwgY29udGVudFR5cGVTdHIsICZjb250ZW50VHlwZVN0ckxlbik7CisgICAgSFJFU1VMVCBy
ZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfQ0xBU1NFU19ST09ULCBleHQud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCksIEwiQ29udGVudCBUeXBlIiwgJmtleVR5cGUsIGNvbnRlbnRUeXBlU3Ry
LCAmY29udGVudFR5cGVTdHJMZW4pOwogCiAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNT
ICYmIGtleVR5cGUgPT0gUkVHX1NaKQotICAgICAgICByZXR1cm4gd2NoYXJUb1N0cmluZyhjb250
ZW50VHlwZVN0ciwgY29udGVudFR5cGVTdHJMZW4gLyBzaXplb2YoY29udGVudFR5cGVTdHJbMF0p
IC0gMSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoY29udGVudFR5cGVTdHIsIGNvbnRlbnRUeXBl
U3RyTGVuIC8gc2l6ZW9mKGNvbnRlbnRUeXBlU3RyWzBdKSAtIDEpOwogCiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQpAQCAtNTYsMTAgKzU1LDEwIEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAg
RFdPUkQgZXh0U3RyTGVuID0gc2l6ZW9mKGV4dFN0cik7CiAgICAgRFdPUkQga2V5VHlwZTsKIAot
ICAgIEhSRVNVTFQgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0NMQVNTRVNfUk9PVCwg
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKHBhdGgpLmRhdGEoKSwgTCJFeHRlbnNpb24iLCAm
a2V5VHlwZSwgZXh0U3RyLCAmZXh0U3RyTGVuKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGdldFJl
Z2lzdHJ5VmFsdWUoSEtFWV9DTEFTU0VTX1JPT1QsIHBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRh
KCksIEwiRXh0ZW5zaW9uIiwgJmtleVR5cGUsIGV4dFN0ciwgJmV4dFN0ckxlbik7CiAKICAgICBp
ZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYga2V5VHlwZSA9PSBSRUdfU1opCi0gICAgICAg
IHJldHVybiB3Y2hhclRvU3RyaW5nKGV4dFN0ciArIDEsIGV4dFN0ckxlbiAvIHNpemVvZihleHRT
dHJbMF0pIC0gMik7CisgICAgICAgIHJldHVybiBTdHJpbmcoZXh0U3RyICsgMSwgZXh0U3RyTGVu
IC8gc2l6ZW9mKGV4dFN0clswXSkgLSAyKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBhNWZk
OTMwYWU5MWI5MTdiOWNiYTA4NjRiYmE1NTM0ZWNiMmMxZTEzLi5lZmNjNmI2M2QzZDE3ZmQzYmJh
OGRhMjVkODQ1MjcyOWNiOTg3YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiByZWFkZXIpCiAgICAgICAgIGZvciAoVUlOVCBpID0g
MDsgaSA8IGZpbGVDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoIURyYWdRdWVyeUZpbGVX
KGhkcm9wLCBpLCBmaWxlbmFtZSwgV1RGX0FSUkFZX0xFTkdUSChmaWxlbmFtZSkpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlbmFtZShudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcoZmlsZW5hbWUpKTsKKyAgICAgICAgICAgIHJlYWRlci5y
ZWFkRmlsZW5hbWUoZmlsZW5hbWUpOwogICAgICAgICB9CiAKICAgICAgICAgR2xvYmFsVW5sb2Nr
KG1lZGl1bS5oR2xvYmFsKTsKQEAgLTU1NSwyMyArNTU1LDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBwYXRoUmVtb3ZlQmFkRlNDaGFyYWN0ZXJzKFBXU1RSIHBzeiwgc2l6ZV90IGxlbmd0aCkKICAg
ICBwc3pbd3JpdGVUb10gPSAwOwogfQogCi1zdGF0aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJv
bVVybE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFVDaGFyKiBleHRlbnNpb24sIGJvb2wgaXNMaW5rKQorc3RhdGljIFN0cmluZyBmaWxlc3lzdGVt
UGF0aEZyb21VcmxPclRpdGxlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgYm9vbCBpc0xpbmspCiB7CiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdOdWxsVGVybWluYXRvciA9IE1BWF9Q
QVRIIC0gMTsKICAgICBib29sIHVzZWRVUkwgPSBmYWxzZTsKLSAgICBXQ0hBUiBmc1BhdGhCdWZm
ZXJbTUFYX1BBVEhdOworICAgIFVDaGFyIGZzUGF0aEJ1ZmZlcltNQVhfUEFUSF07CiAgICAgZnNQ
YXRoQnVmZmVyWzBdID0gMDsKLSAgICBpbnQgZXh0ZW5zaW9uTGVuID0gZXh0ZW5zaW9uID8gbHN0
cmxlbihleHRlbnNpb24pIDogMDsKLSAgICBpbnQgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0
ZW5zaW9uID0gZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nTnVsbFRlcm1pbmF0b3IgLSBleHRlbnNp
b25MZW47CisgICAgaW50IGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVuc2lvbiA9IGZzUGF0
aE1heExlbmd0aEV4Y2x1ZGluZ051bGxUZXJtaW5hdG9yIC0gZXh0ZW5zaW9uLmxlbmd0aCgpOwog
CiAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgc2l6ZV90IGxlbiA9IHN0ZDo6
bWluPHNpemVfdD4odGl0bGUubGVuZ3RoKCksIGZzUGF0aE1heExlbmd0aEV4Y2x1ZGluZ0V4dGVu
c2lvbik7CiAgICAgICAgIFN0cmluZ1ZpZXcodGl0bGUpLnN1YnN0cmluZygwLCBsZW4pLmdldENo
YXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIGZzUGF0aEJ1ZmZl
cltsZW5dID0gMDsKLSAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyhmc1BhdGhCdWZm
ZXIsIGxlbik7CisgICAgICAgIHBhdGhSZW1vdmVCYWRGU0NoYXJhY3RlcnMod2NoYXJGcm9tKGZz
UGF0aEJ1ZmZlciksIGxlbik7CiAgICAgfQogCi0gICAgaWYgKCFsc3RybGVuKGZzUGF0aEJ1ZmZl
cikpIHsKKyAgICBpZiAoIXdjc2xlbih3Y2hhckZyb20oZnNQYXRoQnVmZmVyKSkpIHsKICAgICAg
ICAgVVJMIGt1cmwoVVJMKCksIHVybCk7CiAgICAgICAgIHVzZWRVUkwgPSB0cnVlOwogICAgICAg
ICAvLyBUaGUgZmlsZW5hbWUgZm9yIGFueSBjb250ZW50IGJhc2VkIGRyYWcgb3IgZmlsZSB1cmwg
c2hvdWxkIGJlIHRoZSBsYXN0IGVsZW1lbnQgb2YgCkBAIC01ODcsMTggKzU4NiwxOCBAQCBzdGF0
aWMgU3RyaW5nIGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgdGl0bAogICAgICAgICAgICAgU3RyaW5nVmlldyh1cmwpLnN1YnN0cmlu
ZygwLCBsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CiAgICAg
ICAgIH0KICAgICAgICAgZnNQYXRoQnVmZmVyW2xlbl0gPSAwOwotICAgICAgICBwYXRoUmVtb3Zl
QmFkRlNDaGFyYWN0ZXJzKGZzUGF0aEJ1ZmZlciwgbGVuKTsKKyAgICAgICAgcGF0aFJlbW92ZUJh
ZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVmZmVyKSwgbGVuKTsKICAgICB9CiAKLSAg
ICBpZiAoIWV4dGVuc2lvbikKLSAgICAgICAgcmV0dXJuIFN0cmluZyhzdGF0aWNfY2FzdDxVQ2hh
cio+KGZzUGF0aEJ1ZmZlcikpOworICAgIGlmIChleHRlbnNpb24uaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKGZzUGF0aEJ1ZmZlcik7CiAKICAgICBpZiAoIWlzTGluayAmJiB1c2Vk
VVJMKSB7Ci0gICAgICAgIFBhdGhSZW5hbWVFeHRlbnNpb24oZnNQYXRoQnVmZmVyLCBleHRlbnNp
b24pOwotICAgICAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFyKj4oZnNQYXRoQnVm
ZmVyKSk7CisgICAgICAgIFBhdGhSZW5hbWVFeHRlbnNpb24od2NoYXJGcm9tKGZzUGF0aEJ1ZmZl
ciksIGV4dGVuc2lvbi53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBT
dHJpbmcoZnNQYXRoQnVmZmVyKTsKICAgICB9CiAKLSAgICByZXR1cm4gbWFrZVN0cmluZyhzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KGZzUGF0aEJ1ZmZlciksIGV4dGVuc2lvbik7CisgICAgcmV0
dXJuIG1ha2VTdHJpbmcoY29uc3RfY2FzdDxjb25zdCBVQ2hhcio+KGZzUGF0aEJ1ZmZlciksIGV4
dGVuc2lvbik7CiB9CiAKIC8vIHdyaXRlRmlsZVRvRGF0YU9iamVjdCB0YWtlcyBvd25lcnNoaXAg
b2YgZmlsZURlc2NyaXB0b3IgYW5kIGZpbGVDb250ZW50CkBAIC02NTUsNyArNjU0LDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgU3RyaW5nIHVybCA9IGt1cmwuc3RyaW5nKCk7CiAgICAg
QVNTRVJUKHVybC5pc0FsbEFTQ0lJKCkpOyAvLyBVUkw6OnN0cmluZygpIGlzIFVSTCBlbmNvZGVk
LgogCi0gICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJs
LCB0aXRsZVN0ciwgTCIuVVJMIiwgdHJ1ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0
ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgIi5VUkwiLCB0cnVlKTsKICAgICBT
dHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsg
IlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwog
CkBAIC02ODQsNyArNjgzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVj
dChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2Rb
MF0ubkZpbGVTaXplTG93ID0gY29udGVudC5sZW5ndGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNp
emUgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RI
KGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJp
bmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmdkLT5mZ2RbMF0uY0Zp
bGVOYW1lKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUp
KTsKICAgICBHbG9iYWxVbmxvY2sodXJsRmlsZURlc2NyaXB0b3IpOwogCiAgICAgY2hhciogZmls
ZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2sodXJsRmlsZUNvbnRlbnQp
KTsKQEAgLTkxNCw3ICs5MTMsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZp
bGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICBleHRlbnNpb24uaW5zZXJ0KCIuIiwgMCk7Ci0gICAgZnNQYXRo
ID0gZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRl
bnNpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIGZhbHNlKTsKKyAg
ICBmc1BhdGggPSBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgcHJlZmVycmVkVGl0
bGUsIGV4dGVuc2lvbiwgZmFsc2UpOwogCiAgICAgaWYgKGZzUGF0aC5sZW5ndGgoKSA8PSAwKSB7
CiAgICAgICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwpAQCAtOTIzLDcgKzkyMiw3IEBAIHN0YXRp
YyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYKICAgICB9CiAKICAgICBpbnQgbWF4U2l6ZSA9IHN0ZDo6bWluPGlu
dD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxlTmFt
ZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hh
cmFjdGVyc1dpdGhVcGNvbnZlcnQoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKTsKKyAgICBTdHJpbmdW
aWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252
ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2so
bWVtT2JqKTsKIAogICAgIHJldHVybiBtZW1PYmo7CkBAIC05NjEsOCArOTYwLDcgQEAgc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcm
IGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gd2luZG93cyBkb2VzIG5vdCBlbmpveSBhIGxl
YWRpbmcgc2xhc2ggb24gcGF0aHMKICAgICAgICAgaWYgKGxvY2FsUGF0aFswXSA9PSAnLycpCiAg
ICAgICAgICAgICBsb2NhbFBhdGggPSBsb2NhbFBhdGguc3Vic3RyaW5nKDEpOwotICAgICAgICBh
dXRvIGxvY2FsUGF0aFdpZGUgPSBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobG9jYWxQYXRo
KTsKLSAgICAgICAgTFBDV1NUUiBsb2NhbFBhdGhTdHIgPSBsb2NhbFBhdGhXaWRlLmRhdGEoKTsK
KyAgICAgICAgTFBDV1NUUiBsb2NhbFBhdGhTdHIgPSBsb2NhbFBhdGgud2lkZUNoYXJhY3RlcnMo
KS5kYXRhKCk7CiAgICAgICAgIGlmIChsb2NhbFBhdGhTdHIgJiYgd2NzbGVuKGxvY2FsUGF0aFN0
cikgKyAxIDwgTUFYX1BBVEgpCiAgICAgICAgICAgICB3Y3NjcHlfcyhmaWxlUGF0aCwgTUFYX1BB
VEgsIGxvY2FsUGF0aFN0cik7CiAgICAgICAgIGVsc2UKQEAgLTk3Miw3ICs5NzAsNyBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmlu
ZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICBXQ0hBUiBleHRlbnNpb25bTUFYX1BBVEhdOwog
ICAgICAgICBpZiAoITo6R2V0VGVtcFBhdGgoV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCksIHRl
bXBQYXRoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoITo6UGF0aEFwcGVu
ZCh0ZW1wUGF0aCwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGZpbGVOYW1lKS5kYXRhKCkp
KQorICAgICAgICBpZiAoITo6UGF0aEFwcGVuZCh0ZW1wUGF0aCwgZmlsZU5hbWUud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIExQQ1dTVFIg
Zm91bmRFeHRlbnNpb24gPSA6OlBhdGhGaW5kRXh0ZW5zaW9uKHRlbXBQYXRoKTsKICAgICAgICAg
aWYgKGZvdW5kRXh0ZW5zaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TU0xLZXlHZW5lcmF0b3JXaW4uY3BwCmluZGV4IGZkNjgwNmVmZDkzZjZmNjZiNTgwOTlmYzUw
YTgzMTY4YzY1MjkxNWQuLjZiNzI5ODQ4ZjQzNTIwZjRmM2ZlY2ZmM2JkNGVmNTlhMDkzMDNiYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JX
aW4uY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dD
aGFyU3RyaW5nRXh0cmFzLmg+CiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d2lu
Y3J5cHQuaD4KQEAgLTY3LDcgKzY2LDcgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2UKICAgICAg
ICAgU3RyaW5nIGxvY2FsQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwogCiAgICAgICAgIC8vIFdpbmRv
d3MgQVBJIHdvbid0IHdyaXRlIHRvIG91ciBidWZmZXIsIGFsdGhvdWdoIGl0J3Mgbm90IGRlY2xh
cmVkIHdpdGggY29uc3QuCi0gICAgICAgIGF1dG8gbG9jYWxDaGFsbGVuZ2VXaWRlID0gc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKGxvY2FsQ2hhbGxlbmdlKTsKKyAgICAgICAgYXV0byBsb2Nh
bENoYWxsZW5nZVdpZGUgPSBsb2NhbENoYWxsZW5nZS53aWRlQ2hhcmFjdGVycygpOwogICAgICAg
ICByZXF1ZXN0SW5mby5wd3N6Q2hhbGxlbmdlU3RyaW5nID0gY29uc3RfY2FzdDx3Y2hhcl90Kj4o
bG9jYWxDaGFsbGVuZ2VXaWRlLmRhdGEoKSk7CiAKICAgICAgICAgQ1JZUFRfQUxHT1JJVEhNX0lE
RU5USUZJRVIgc2lnbkFsZ28geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA1YmRhYmI2MjgwZWRhMjk3NDJjOTY2ZDUwZWQzZWVm
MGFhMWEwNzQ4Li42MjkxYjY0MjQ2NGYyNzViNDUzYmNjOWU0MGUxYzlmYzUwOTlhOTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93
aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw3
ICszOSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgU3RyaW5nIG51bGxpZmllZFBhdGggPSBmaWxlUGF0aDsKLSAgICBIQU5ETEUgZmls
ZUhhbmRsZSA9IENyZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihudWxsaWZp
ZWRQYXRoKS5kYXRhKCksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VY
SVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworICAgIEhBTkRMRSBmaWxlSGFuZGxl
ID0gQ3JlYXRlRmlsZVcobnVsbGlmaWVkUGF0aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgR0VO
RVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklC
VVRFX05PUk1BTCwgMCk7CiAgICAgaWYgKGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFM
VUUpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGNyZWF0
ZSBzaGFyZWQgYnVmZmVyLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5k
YXRhKCksIEdldExhc3RFcnJvcigpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCA2ZTQxMzgxNjRiZTQ4
YjBmMzIwMWEwMWI2ZjhiOTIyNGRiMzU2YjZhLi43ZWI3MDNhMzNkMTYwOTk3YzU0NTJhMjQ5Yjc5
OWUzZGViOWVkZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtMzE4LDcg
KzMxNyw3IEBAIENvbG9yIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKE9wdGlvblNldDxTdHlsZUNvCiBzdGF0aWMgdm9pZCBmaWxsRm9udERl
c2NyaXB0aW9uKEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgTE9HRk9O
VCYgbG9nRm9udCwgZmxvYXQgZm9udFNpemUpCiB7ICAgIAogICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5
KG51bGxUZXJtaW5hdGVkV0NoYXJUb1N0cmluZyhsb2dGb250LmxmRmFjZU5hbWUpKTsKKyAgICBm
b250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KGxvZ0ZvbnQubGZGYWNlTmFtZSk7CiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOwogICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRXZWlnaHQobG9nRm9udC5sZldlaWdodCA+PSA3MDAgPyBib2xkV2VpZ2h0VmFsdWUo
KSA6IG5vcm1hbFdlaWdodFZhbHVlKCkpOyAvLyBGSVhNRTogVXNlIHJlYWwgd2VpZ2h0LgogICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhsb2dGb250LmxmSXRhbGljKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCBlYmIz
NzM4NGMzMzdiZjEyZjVkNmRlOGE2YjQ2ZjZmMDQ4MWM3OGY5Li5lMjZhN2UyMmI3NWM2NGU1ZTI3
OTEwYmRhMGZhNGZmMGU4N2U0YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgQ29ubmVjdGlv
bjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2ZXJJZGVudGlm
aWVyLCBIQU5ECiAgICAgICAgIHVuc2lnbmVkIHVuaXF1ZUlEID0gcmFuZG9tTnVtYmVyKCkgKiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CiAgICAgICAgIHBpcGVOYW1lID0g
bWFrZVN0cmluZygiXFxcXC5cXHBpcGVcXGNvbS5hcHBsZS5XZWJLaXQuIiwgaGV4KHVuaXF1ZUlE
KSk7CiAKLSAgICAgICAgc2VydmVySWRlbnRpZmllciA9IDo6Q3JlYXRlTmFtZWRQaXBlKHBpcGVO
YW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLAorICAgICAgICBzZXJ2
ZXJJZGVudGlmaWVyID0gOjpDcmVhdGVOYW1lZFBpcGUocGlwZU5hbWUud2lkZUNoYXJhY3RlcnMo
KS5kYXRhKCksCiAgICAgICAgICAgICBQSVBFX0FDQ0VTU19EVVBMRVggfCBGSUxFX0ZMQUdfRklS
U1RfUElQRV9JTlNUQU5DRSB8IEZJTEVfRkxBR19PVkVSTEFQUEVELAogICAgICAgICAgICAgUElQ
RV9UWVBFX01FU1NBR0UgfCBQSVBFX1JFQURNT0RFX01FU1NBR0UsIDEsIGlubGluZU1lc3NhZ2VN
YXhTaXplLCBpbmxpbmVNZXNzYWdlTWF4U2l6ZSwKICAgICAgICAgICAgIDAsIDApOwpAQCAtNTIs
NyArNTIsNyBAQCBib29sIENvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZp
ZXJzKEhBTkRMRSYgc2VydmVySWRlbnRpZmllciwgSEFORAogICAgIGlmICghc2VydmVySWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY2xpZW50SWRlbnRpZmllciA9IDo6
Q3JlYXRlRmlsZVcocGlwZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRh
KCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIE9QRU5fRVhJU1RJTkcsIEZJ
TEVfRkxBR19PVkVSTEFQUEVELCAwKTsKKyAgICBjbGllbnRJZGVudGlmaWVyID0gOjpDcmVhdGVG
aWxlVyhwaXBlTmFtZS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VO
RVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX09WRVJMQVBQRUQsIDAp
OwogICAgIGlmICghY2xpZW50SWRlbnRpZmllcikgewogICAgICAgICA6OkNsb3NlSGFuZGxlKHNl
cnZlcklkZW50aWZpZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS93aW4vTW9kdWxlV2luLmNwcAppbmRleCA3YjY1ZDc3ODY5MTY2MmZkYjVmZjYwZDczNjg5
ZDJjZWNjOWIzMmZjLi4zM2I3MDllMWQ3MTI3M2JkMmYzZWNjZDI4NzE4OGU5ZWJkMWZjYTg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Nb2R1bGVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL01vZHVsZVdpbi5jcHAKQEAgLTM0LDggKzM0LDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAgICBBU1NF
UlQoITo6UGF0aElzUmVsYXRpdmVXKG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSkpOwotICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4VyhtX3BhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVE
X1NFQVJDSF9QQVRIKTsKKyAgICBBU1NFUlQoITo6UGF0aElzUmVsYXRpdmVXKG1fcGF0aC53aWRl
Q2hhcmFjdGVycygpLmRhdGEoKSkpOworICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4Vyht
X3BhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIDAsIExPQURfV0lUSF9BTFRFUkVEX1NFQVJD
SF9QQVRIKTsKICAgICByZXR1cm4gbV9tb2R1bGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAK
aW5kZXggNTc3ZTQ2OWNhZGUxMTFiZDE0ODRjYzgxNDBhNGQzNDJkNTU4N2I2My4uZDNkMTcxZGFk
NzM2MDBjMjNhNWYxNGM2MWUyMzlhNDMxYjhkZjUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDxXVEYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHNo
bHdhcGkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CkBAIC04NSw3ICs4NCw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkK
ICAgICBjb21tYW5kTGluZUJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihjbGllbnRJZGVudGlmaWVyKSkpOwogICAgIGNvbW1hbmRMaW5lQnVp
bGRlci5hcHBlbmQoJ1wwJyk7CiAKLSAgICBhdXRvIGNvbW1hbmRMaW5lID0gc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGNvbW1hbmRMaW5lQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBhdXRv
IGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmVCdWlsZGVyLnRvU3RyaW5nKCkud2lkZUNoYXJhY3Rl
cnMoKTsKIAogICAgIFNUQVJUVVBJTkZPIHN0YXJ0dXBJbmZvIHsgfTsKICAgICBzdGFydHVwSW5m
by5jYiA9IHNpemVvZihzdGFydHVwSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViQ29udGV4dE1lbnVQcm94eVdpbi5jcHAKaW5kZXggYWY0MzVjMTY1ZTY0
YWU1NWU5ODdmZTM5YzgyMmQ2NGE5YmQwZDIwZC4uYWExNzFmNDhiYzQwYTk2YTg2ZDk1MTQ1MWI1
NzhmNjA5YzU3M2ZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9p
ZCBjcmVhdGVNZW51SXRlbShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhICZjb250ZXh0LCBI
TUVOVSBtZW51LCBjbwogICAgIHN3aXRjaCAoZGF0YS50eXBlKCkpIHsKICAgICBjYXNlIEFjdGlv
blR5cGU6CiAgICAgY2FzZSBDaGVja2FibGVBY3Rpb25UeXBlOgotICAgICAgICA6OkFwcGVuZE1l
bnUobWVudSwgZmxhZ3MgfCBNRl9TVFJJTkcsIGRhdGEuYWN0aW9uKCksIGRhdGEudGl0bGUoKS5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAgIDo6QXBwZW5k
TWVudShtZW51LCBmbGFncyB8IE1GX1NUUklORywgZGF0YS5hY3Rpb24oKSwgZGF0YS50aXRsZSgp
LndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXBh
cmF0b3JUeXBlOgogICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxhZ3MgfCBNRl9TRVBBUkFU
T1IsIGRhdGEuYWN0aW9uKCksIG51bGxwdHIpOwpAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgdm9p
ZCBjcmVhdGVNZW51SXRlbShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhICZjb250ZXh0LCBI
TUVOVSBtZW51LCBjbwogICAgIGNhc2UgU3VibWVudVR5cGU6CiAgICAgICAgIEhNRU5VIHN1Ym1l
bnUgPSBjcmVhdGVNZW51KGNvbnRleHQpOwogICAgICAgICBwb3B1bGF0ZShjb250ZXh0LCBzdWJt
ZW51LCBkYXRhLnN1Ym1lbnUoKSk7Ci0gICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8
IE1GX1BPUFVQLCAoVUlOVF9QVFIpc3VibWVudSwgZGF0YS50aXRsZSgpLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKKyAgICAgICAgOjpBcHBlbmRNZW51KG1lbnUsIGZs
YWdzIHwgTUZfUE9QVVAsIChVSU5UX1BUUilzdWJtZW51LCBkYXRhLnRpdGxlKCkud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggMTRiMWQ5ZmE4MWE4ZjBkMzQyNmI0ZmI1MmUy
ZDYyNjViYmNiOTlhYS4uNDUwYTA2ZGY3YTBjM2UyY2VlM2YxNDg4NTNkMTk2YzIzZjE2OTZjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtODc0LDggKzg3NCw4
IEBAIHZvaWQgV2ViVmlldzo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAg
ICAgIGluZm8uY2JTaXplID0gc2l6ZW9mKGluZm8pOwogICAgICAgICBpbmZvLnVGbGFncyA9IFRU
Rl9JRElTSFdORDsKICAgICAgICAgaW5mby51SWQgPSByZWludGVycHJldF9jYXN0PFVJTlRfUFRS
PihuYXRpdmVXaW5kb3coKSk7Ci0gICAgICAgIFZlY3RvcjxVQ2hhcj4gdG9vbFRpcENoYXJhY3Rl
cnMgPSB0b29sVGlwLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBi
dWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFrZSB0aGUgU2VuZE1lc3NhZ2UgY2FsbAotICAgICAgICBp
bmZvLmxwc3pUZXh0ID0gY29uc3RfY2FzdDxVQ2hhcio+KHRvb2xUaXBDaGFyYWN0ZXJzLmRhdGEo
KSk7CisgICAgICAgIFZlY3Rvcjx3Y2hhcl90PiB0b29sVGlwQ2hhcmFjdGVycyA9IHRvb2xUaXAu
d2lkZUNoYXJhY3RlcnMoKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3VnaCB0byBtYWtlIHRo
ZSBTZW5kTWVzc2FnZSBjYWxsCisgICAgICAgIGluZm8ubHBzelRleHQgPSBjb25zdF9jYXN0PHdj
aGFyX3QqPih0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpOwogICAgICAgICA6OlNlbmRNZXNzYWdl
KG1fdG9vbFRpcFdpbmRvdywgVFRNX1VQREFURVRJUFRFWFQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
TFBBUkFNPigmaW5mbykpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNw
cAppbmRleCBmOTg3ZWI3YTMxMmNhNjIyNWM4NWU5YWIxZTc5ZWYwNWUyZGJmNjIxLi5mNzVjMmFh
NzUxMTIxNmY5ZWUyNDIwMjcyOWU4NWY0ZTE0ZWUzNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVk
QnVuZGxlV2luLmNwcApAQCAtMjgsMTMgKzI4LDEyIEBACiAKICNpbmNsdWRlICJXS0J1bmRsZUFQ
SUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJv
b2wgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogewotICAgIEhN
T0RVTEUgbGliID0gOjpMb2FkTGlicmFyeShzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9w
YXRoKS5kYXRhKCkpOworICAgIEhNT0RVTEUgbGliID0gOjpMb2FkTGlicmFyeShtX3BhdGgud2lk
ZUNoYXJhY3RlcnMoKS5kYXRhKCkpOwogICAgIGlmICghbGliKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NPTVByb3BlcnR5QmFn
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCmluZGV4IDIxNjVh
MjM1NmQ5ZWFhMmNhYTA5NDQxZDE4ZmE4M2RlZjk0YjlmZDUuLmNjM2Q4ZDVjNTU3NTJhMTM1ZjMw
N2I5YTQyYWIwNTJiODVmMmYxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NPTVByb3BlcnR5QmFnLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ09NUHJvcGVy
dHlCYWcuaApAQCAtMjMsMTcgKzIzLDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZu
ZGVmIENPTVByb3BlcnR5QmFnX2gKLSNkZWZpbmUgQ09NUHJvcGVydHlCYWdfaAorI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJDT01WYXJpYW50U2V0dGVyLmgiCiAjaW5jbHVkZSA8b2NpZGwuaD4K
ICNpbmNsdWRlIDx1bmtud24uaD4KLQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKLSNpbmNsdWRlICJDT01WYXJpYW50U2V0dGVyLmgiCi0K
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSA9IHR5cGVuYW1l
IFdURjo6U3RyaW5nLCB0eXBlbmFtZSBIYXNoVHlwZSA9IHR5cGVuYW1lIFdURjo6U3RyaW5nSGFz
aD4KIGNsYXNzIENPTVByb3BlcnR5QmFnIGZpbmFsIDogcHVibGljIElQcm9wZXJ0eUJhZywgcHVi
bGljIElQcm9wZXJ0eUJhZzIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENPTVByb3BlcnR5
QmFnKTsKQEAgLTIyMCw3ICsyMTcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENPTVBy
b3BlcnR5QmFnPFZhbHVlVHlwZSwgS2V5VHlwZSwgSGFzaFR5cGU+OjpHZXRQcm9wZQogICAgICAg
ICBwUHJvcEJhZ1tqXS5wc3RyTmFtZSA9IChMUE9MRVNUUilDb1Rhc2tNZW1BbGxvYyhzaXplb2Yo
d2NoYXJfdCkqKGN1cnJlbnQtPmtleS5sZW5ndGgoKSsxKSk7CiAgICAgICAgIGlmICghcFByb3BC
YWdbal0ucHN0ck5hbWUpCiAgICAgICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKLSAgICAg
ICAgd2NzY3B5X3MocFByb3BCYWdbal0ucHN0ck5hbWUsIGN1cnJlbnQtPmtleS5sZW5ndGgoKSsx
LCBzdGF0aWNfY2FzdDxTdHJpbmc+KGN1cnJlbnQtPmtleSkuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpOworICAgICAgICB3Y3NjcHlfcyhwUHJvcEJhZ1tqXS5wc3RyTmFt
ZSwgY3VycmVudC0+a2V5Lmxlbmd0aCgpKzEsIGN1cnJlbnQtPmtleS53aWRlQ2hhcmFjdGVycygp
LmRhdGEoKSk7CiAgICAgICAgICsrKnBjUHJvcGVydGllczsKICAgICB9CiAgICAgcmV0dXJuIFNf
T0s7CkBAIC0yMzEsNSArMjI4LDMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9w
ZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6TG9hZE9iamUKIHsKICAgICBy
ZXR1cm4gRV9OT1RJTVBMOwogfQotCi0jZW5kaWYgLy8gQ09NUHJvcGVydHlCYWdfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IGM1ODgwZWE0ZGQ4NTJi
NWMwMGRkYWIzYzgyNWQ2YTlmNmNmMDgzY2YuLmVhZGEzZTZiYzU1YzAwMTdmZWM5ZjBlYzE5NThk
OWM0MWM3N2VmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUNvcmVD
bGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01Db3JlQ2xhc3Nlcy5j
cHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJET01FdmVudHNDbGFzc2VzLmgiCiAjaW5j
bHVkZSAiRE9NSFRNTENsYXNzZXMuaCIKICNpbmNsdWRlICJXZWJLaXRHcmFwaGljcy5oIgotCiAj
aW5jbHVkZSA8V2ViQ29yZS9BdHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KQEAgLTU2LDggKzU1LDkgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1JlbmRlclRyZWVBc1RleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbEludG9W
aWV3T3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3R5bGVkRWxlbWVudC5oPgotCiAjaW5j
bHVkZSA8aW5pdGd1aWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRy
YXMuaD4KKwogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4RTIzRX0KIERFRklO
RV9HVUlEKElJRF9ET01FbGVtZW50LCAweDNiMGMwZWZmLCAweDQ3OGIsIDB4NGIwYiwgMHg4Miwg
MHg5MCwgMHhkMiwgMHgzMiwgMHgxZSwgMHg4LCAweGUyLCAweDNlKTsKIApAQCAtNDE0LDcgKzQx
NCw3IEBAIEhSRVNVTFQgRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQoX0luXyBCU1RSIC8qdGV4dCov
KQogSFJFU1VMVCBET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5f
b3B0XyBJRE9NRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIEJPT0wgdXNlQ2FwdHVyZSkKIHsKICAg
ICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsK
LSAgICBtX25vZGUtPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciks
IHVzZUNhcHR1cmUpOworICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih1Y2hhckZyb20odHlw
ZSksIFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAogICAgIHJldHVybiBTX09L
OwogfQpAQCAtNDI2LDcgKzQyNiw3IEBAIEhSRVNVTFQgRE9NTm9kZTo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVuZXIqCiAgICAgaWYg
KCFtX25vZGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0byB3ZWJMaXN0ZW5lciA9
IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV9ub2RlLT5yZW1vdmVF
dmVudExpc3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBtX25vZGUt
PnJlbW92ZUV2ZW50TGlzdGVuZXIodWNoYXJGcm9tKHR5cGUpLCB3ZWJMaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTkyNCw3ICs5MjQsNyBAQCBIUkVTVUxU
IERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURP
TUV2ZW50TGlzdGVuZXIqCiAgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKICAgICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3Rl
bmVyKTsKLSAgICBtX3dpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBXVEZNb3ZlKHdlYkxp
c3RlbmVyKSwgdXNlQ2FwdHVyZSk7CisgICAgbV93aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIodWNo
YXJGcm9tKHR5cGUpLCBXVEZNb3ZlKHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKQEAgLTkzNSw3ICs5MzUsNyBAQCBIUkVTVUxUIERPTVdpbmRvdzo6cmVt
b3ZlRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVu
ZQogICAgIGlmICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgYXV0byB3
ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV93
aW5kb3ctPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworICAgIG1fd2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKHVjaGFyRnJvbSh0eXBlKSwgd2Vi
TGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMjkyLDcg
KzEyOTIsNyBAQCBIUkVTVUxUIERPTUVsZW1lbnQ6OmZvbnQoX091dF8gV2ViRm9udERlc2NyaXB0
aW9uKiB3ZWJGb250RGVzY3JpcHRpb24pCiAgICAgVUNoYXIqIGZhbWlseUNoYXJhY3RlcnNCdWZm
ZXIgPSBuZXcgVUNoYXJbZmFtaWx5Lmxlbmd0aCgpXTsKICAgICBTdHJpbmdWaWV3KGZhbWlseS5z
dHJpbmcoKSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZmFtaWx5Q2hhcmFjdGVyc0J1ZmZl
cik7CiAKLSAgICB3ZWJGb250RGVzY3JpcHRpb24tPmZhbWlseSA9IGZhbWlseUNoYXJhY3RlcnNC
dWZmZXI7CisgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHkgPSB3Y2hhckZyb20oZmFtaWx5
Q2hhcmFjdGVyc0J1ZmZlcik7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5mYW1pbHlMZW5ndGgg
PSBmYW1pbHkubGVuZ3RoKCk7CiAgICAgd2ViRm9udERlc2NyaXB0aW9uLT5zaXplID0gZm9udERl
c2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOwogICAgIHdlYkZvbnREZXNjcmlwdGlvbi0+Ym9sZCA9
IGlzRm9udFdlaWdodEJvbGQoZm9udERlc2NyaXB0aW9uLndlaWdodCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0RPTUhUTUxDbGFzc2VzLmNwcAppbmRleCAzY2YzOGI0NTY2M2VlNWU4OWY0
OTlhZjY3NzEyYmMzOWM3YzVhNjM5Li40YzFmZjYzYmRmNjkwM2RkMDIwNTNhY2I5ZWY5OGZhMGJk
M2JkY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9ET01IVE1MQ2xhc3Nl
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRE9NSFRNTENsYXNzZXMuY3BwCkBA
IC0xMjI4LDcgKzEyMjgsNyBAQCBIUkVTVUxUIERPTUhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVl
Rm9yVXNlcihfSW5fIEJTVFIgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGlzPEhUTUxJbnB1dEVsZW1l
bnQ+KG1fZWxlbWVudCkpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRv
d25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2VsZW1lbnQpOwotICAgIGlucHV0RWxlbWVudC5z
ZXRWYWx1ZUZvclVzZXIoU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFyKj4odmFsdWUpLCBTeXNTdHJp
bmdMZW4odmFsdWUpKSk7CisgICAgaW5wdXRFbGVtZW50LnNldFZhbHVlRm9yVXNlcihTdHJpbmco
dmFsdWUsIFN5c1N0cmluZ0xlbih2YWx1ZSkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
MTMyNiw3ICsxMzI2LDcgQEAgSFJFU1VMVCBET01IVE1MSW5wdXRFbGVtZW50OjpyZXBsYWNlQ2hh
cmFjdGVyc0luUmFuZ2UoaW50IHN0YXJ0VGFyZ2V0LCBpbnQgZW5kVGEKICAgICBIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9lbGVt
ZW50KTsKIAogICAgIFN0cmluZyBuZXdWYWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZSgpOwotICAg
IFN0cmluZyB3ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcoc3RhdGljX2Nhc3Q8VUNoYXIqPihyZXBs
YWNlbWVudFN0cmluZyksIFN5c1N0cmluZ0xlbihyZXBsYWNlbWVudFN0cmluZykpOworICAgIFN0
cmluZyB3ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcocmVwbGFjZW1lbnRTdHJpbmcsIFN5c1N0cmlu
Z0xlbihyZXBsYWNlbWVudFN0cmluZykpOwogICAgIG5ld1ZhbHVlLnJlcGxhY2Uoc3RhcnRUYXJn
ZXQsIGVuZFRhcmdldCAtIHN0YXJ0VGFyZ2V0LCB3ZWJDb3JlUmVwbGFjZW1lbnRTdHJpbmcpOwog
ICAgIGlucHV0RWxlbWVudC5zZXRWYWx1ZShuZXdWYWx1ZSk7CiAgICAgaW5wdXRFbGVtZW50LnNl
dFNlbGVjdGlvblJhbmdlKGluZGV4LCBuZXdWYWx1ZS5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4
IDgxNGUyYmI2ZGMzOTFmYzJmZmExYTk1YjY5ZTQ2ZDQ1ODBjMDM2NTMuLjgwN2E5YzE3ZjVlZWYw
M2ZlOTI5YjNiMWZiN2E2YWY4ZmY0MzE5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0zMSw3ICszMSw2IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hhclN0
cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYyLDcgKzYxLDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGFkZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KEhLRVkgcm9vdEtl
eSwgSGFzaFNldDxTdHJpbmc+JiBwYXQKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUND
RVNTIHx8IHR5cGUgIT0gUkVHX1NaKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
cGF0aHMuYWRkKHdjaGFyVG9TdHJpbmcocGF0aFN0ciwgcGF0aFN0clNpemUgLyBzaXplb2YoV0NI
QVIpIC0gMSkpOworICAgICAgICBwYXRocy5hZGQoU3RyaW5nKHBhdGhTdHIsIHBhdGhTdHJTaXpl
IC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKICAgICB9CiAKICAgICBSZWdDbG9zZUtleShrZXkpOwpA
QCAtODMsNyArODIsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGly
ZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKICAgICBmb3IgKGF1dG8mIGRp
cmVjdG9yeSA6IG1fcGx1Z2luRGlyZWN0b3JpZXMpIHsKICAgICAgICAgU3RyaW5nIHBhdHRlcm4g
PSBkaXJlY3RvcnkgKyAiXFwqIjsKIAotICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwYXR0ZXJuKS5kYXRhKCksICZmaW5kRmlsZURhdGEp
OworICAgICAgICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHBhdHRlcm4ud2lkZUNoYXJhY3RlcnMo
KS5kYXRhKCksICZmaW5kRmlsZURhdGEpOwogCiAgICAgICAgIGlmIChoRmluZCA9PSBJTlZBTElE
X0hBTkRMRV9WQUxVRSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTIsNyArOTEsNyBAQCB2
b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxT
dHJpbmc+JiBwYXRocykgY29uc3QKICAgICAgICAgICAgIGlmIChmaW5kRmlsZURhdGEuZHdGaWxl
QXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gd2NoYXJUb1N0cmluZyhm
aW5kRmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4oZmluZEZpbGVEYXRhLmNGaWxlTmFtZSkpOwor
ICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lKGZpbmRGaWxlRGF0YS5jRmlsZU5hbWUsIHdjc2xl
bihmaW5kRmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAgICAgICAgICBpZiAoIShzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAibnAiKSAmJiBmaWxlbmFtZS5lbmRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKCJkbGwiKSkKICAgICAgICAgICAgICAgICAmJiAhKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZpbGVuYW1lLCAicGx1Z2luLmRsbCIpICYmIGRpcmVj
dG9yeS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJzaG9ja3dhdmUgMTAiKSkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CkBAIC0xODAsMTEgKzE3OSwxMSBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcmll
cykKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNQYXRoID0gd2NoYXJU
b1N0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lvbnMiOworICAgICAgICAgICAgU3Ry
aW5nIGV4dGVuc2lvbnNQYXRoID0gU3RyaW5nKG5hbWUsIG5hbWVMZW4pICsgIlxcRXh0ZW5zaW9u
cyI7CiAgICAgICAgICAgICBIS0VZIGV4dGVuc2lvbnNLZXk7CiAKICAgICAgICAgICAgIC8vIFRy
eSBvcGVuaW5nIHRoZSBrZXkKLSAgICAgICAgICAgIHJlc3VsdCA9IFJlZ09wZW5LZXlFeChrZXks
IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihleHRlbnNpb25zUGF0aCkuZGF0YSgpLCAwLCBL
RVlfUkVBRCwgJmV4dGVuc2lvbnNLZXkpOworICAgICAgICAgICAgcmVzdWx0ID0gUmVnT3Blbktl
eUV4KGtleSwgZXh0ZW5zaW9uc1BhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIDAsIEtFWV9S
RUFELCAmZXh0ZW5zaW9uc0tleSk7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1Jf
U1VDQ0VTUykgewogICAgICAgICAgICAgICAgIC8vIE5vdyBnZXQgdGhlIHBsdWdpbnMgZGlyZWN0
b3J5CkBAIC0xOTUsNyArMTk0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1vemlsbGFQbHVn
aW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gUmVnUXVlcnlWYWx1ZUV4KGV4dGVuc2lvbnNLZXksIFRFWFQoIlBsdWdpbnMi
KSwgMCwgJnR5cGUsIChMUEJZVEUpJnBsdWdpbnNEaXJlY3RvcnlTdHIsICZwbHVnaW5zRGlyZWN0
b3J5U2l6ZSk7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1Mg
JiYgdHlwZSA9PSBSRUdfU1opCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVu
ZCh3Y2hhclRvU3RyaW5nKHBsdWdpbnNEaXJlY3RvcnlTdHIsIHBsdWdpbnNEaXJlY3RvcnlTaXpl
IC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMu
YXBwZW5kKFN0cmluZyhwbHVnaW5zRGlyZWN0b3J5U3RyLCBwbHVnaW5zRGlyZWN0b3J5U2l6ZSAv
IHNpemVvZihXQ0hBUikgLSAxKSk7CiAKICAgICAgICAgICAgICAgICBSZWdDbG9zZUtleShleHRl
bnNpb25zS2V5KTsKICAgICAgICAgICAgIH0KQEAgLTIxMiw3ICsyMTEsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJp
bmc+JiBkaXJlY3RvcgogICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4cGFuZEVu
dmlyb25tZW50U3RyaW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQbHVnaW5zIiks
IHBsdWdpbkRpcmVjdG9yeVN0ciwgV1RGX0FSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIp
KTsKIAogICAgIGlmIChwbHVnaW5EaXJlY3RvcnlTaXplID4gMCAmJiBwbHVnaW5EaXJlY3RvcnlT
aXplIDw9IFdURl9BUlJBWV9MRU5HVEgocGx1Z2luRGlyZWN0b3J5U3RyKSkKLSAgICAgICAgZGly
ZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9TdHJpbmcocGx1Z2luRGlyZWN0b3J5U3RyLCBwbHVnaW5E
aXJlY3RvcnlTaXplIC0gMSkpOworICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBs
dWdpbkRpcmVjdG9yeVN0ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKIAogICAgIERXT1JE
IHR5cGU7CiAgICAgV0NIQVIgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyW19NQVhfUEFUSF07CkBA
IC0yMjEsNyArMjIwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXll
clBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICAgICBIUkVTVUxUIHJl
c3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBMIlNvZnR3YXJlXFxN
aWNyb3NvZnRcXE1lZGlhUGxheWVyIiwgTCJJbnN0YWxsYXRpb24gRGlyZWN0b3J5IiwgJnR5cGUs
ICZpbnN0YWxsYXRpb25EaXJlY3RvcnlTdHIsICZpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplKTsK
IAogICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB0eXBlID09IFJFR19TWikKLSAg
ICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKHdjaGFyVG9TdHJpbmcoaW5zdGFsbGF0aW9uRGlyZWN0
b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpKTsK
KyAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKFN0cmluZyhpbnN0YWxsYXRpb25EaXJlY3RvcnlT
dHIsIGluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOwogfQog
CiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcykKQEAgLTI0NSwxMCArMjQ0LDEwIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRp
cmVjdG9yaWVzKQogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICBWZWN0b3I8aW50PiBhY3JvYmF0VmVyc2lvbiA9IHBhcnNl
VmVyc2lvblN0cmluZyh3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pKTsKKyAgICAgICAgVmVj
dG9yPGludD4gYWNyb2JhdFZlcnNpb24gPSBwYXJzZVZlcnNpb25TdHJpbmcoU3RyaW5nKG5hbWUs
IG5hbWVMZW4pKTsKICAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhhY3JvYmF0VmVyc2lvbiwg
bGF0ZXN0QWNyb2JhdFZlcnNpb24pKSB7CiAgICAgICAgICAgICBsYXRlc3RBY3JvYmF0VmVyc2lv
biA9IGFjcm9iYXRWZXJzaW9uOwotICAgICAgICAgICAgbGF0ZXN0QWNyb2JhdFZlcnNpb25TdHJp
bmcgPSB3Y2hhclRvU3RyaW5nKG5hbWUsIG5hbWVMZW4pOworICAgICAgICAgICAgbGF0ZXN0QWNy
b2JhdFZlcnNpb25TdHJpbmcgPSBTdHJpbmcobmFtZSwgbmFtZUxlbik7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTI1OCwxMCArMjU3LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRBZG9iZUFj
cm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAg
ICBEV09SRCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplID0gc2l6ZW9mKGFjcm9iYXRJbnN0YWxsUGF0
aFN0cik7CiAKICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJl
XFxBZG9iZVxcQWNyb2JhdCBSZWFkZXJcXCIgKyBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyAr
ICJcXEluc3RhbGxQYXRoIjsKLSAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZ
X0xPQ0FMX01BQ0hJTkUsIHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihhY3JvYmF0UGx1Z2lu
S2V5UGF0aCkuZGF0YSgpLCAwLCAmdHlwZSwgYWNyb2JhdEluc3RhbGxQYXRoU3RyLCAmYWNyb2Jh
dEluc3RhbGxQYXRoU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtF
WV9MT0NBTF9NQUNISU5FLCBhY3JvYmF0UGx1Z2luS2V5UGF0aC53aWRlQ2hhcmFjdGVycygpLmRh
dGEoKSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0YWxsUGF0aFN0ciwgJmFjcm9iYXRJbnN0YWxsUGF0
aFNpemUpOwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUykgewotICAgICAg
ICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3RvcnkgPSB3Y2hhclRvU3RyaW5nKGFjcm9i
YXRJbnN0YWxsUGF0aFN0ciwgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikg
LSAxKSArICJcXGJyb3dzZXIiOworICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJl
Y3RvcnkgPSBTdHJpbmcoYWNyb2JhdEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhT
aXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYnJvd3NlciI7CiAgICAgICAgICAgICBkaXJl
Y3Rvcmllcy5hcHBlbmQoYWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yOTAsMTAgKzI4OSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBsdWdpbkRp
cmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIGlmIChyZXN1bHQg
IT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFZlY3Rvcjxp
bnQ+IGphdmFWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKHdjaGFyVG9TdHJpbmcobmFtZSwg
bmFtZUxlbikpOworICAgICAgICBWZWN0b3I8aW50PiBqYXZhVmVyc2lvbiA9IHBhcnNlVmVyc2lv
blN0cmluZyhTdHJpbmcobmFtZSwgbmFtZUxlbikpOwogICAgICAgICBpZiAoY29tcGFyZVZlcnNp
b25zKGphdmFWZXJzaW9uLCBsYXRlc3RKYXZhVmVyc2lvbikpIHsKICAgICAgICAgICAgIGxhdGVz
dEphdmFWZXJzaW9uID0gamF2YVZlcnNpb247Ci0gICAgICAgICAgICBsYXRlc3RKYXZhVmVyc2lv
blN0cmluZyA9IHdjaGFyVG9TdHJpbmcobmFtZSwgbmFtZUxlbik7CisgICAgICAgICAgICBsYXRl
c3RKYXZhVmVyc2lvblN0cmluZyA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMzA1LDEyICszMDQsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEphdmFQ
bHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogICAgICAgICBEV09S
RCB1c2VOZXdQbHVnaW5TaXplOwogCiAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luS2V5UGF0aCA9
ICJTb2Z0d2FyZVxcSmF2YVNvZnRcXEphdmEgUGx1Zy1pblxcIiArIGxhdGVzdEphdmFWZXJzaW9u
U3RyaW5nOwotICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxfTUFD
SElORSwgc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKGphdmFQbHVnaW5LZXlQYXRoKS5kYXRh
KCksIEwiVXNlTmV3SmF2YVBsdWdpbiIsICZ0eXBlLCAmdXNlTmV3UGx1Z2luVmFsdWUsICZ1c2VO
ZXdQbHVnaW5TaXplKTsKKyAgICAgICAgcmVzdWx0ID0gZ2V0UmVnaXN0cnlWYWx1ZShIS0VZX0xP
Q0FMX01BQ0hJTkUsIGphdmFQbHVnaW5LZXlQYXRoLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBM
IlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwgJnVzZU5ld1BsdWdpblZhbHVlLCAmdXNlTmV3UGx1
Z2luU2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHVzZU5l
d1BsdWdpblZhbHVlID09IDEpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFs
dWUoSEtFWV9MT0NBTF9NQUNISU5FLCBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoamF2YVBs
dWdpbktleVBhdGgpLmRhdGEoKSwgTCJKYXZhSG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhT
dHIsICZqYXZhSW5zdGFsbFBhdGhTaXplKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lz
dHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5UGF0aC53aWRlQ2hhcmFj
dGVycygpLmRhdGEoKSwgTCJKYXZhSG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZq
YXZhSW5zdGFsbFBhdGhTaXplKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VD
Q0VTUykgewotICAgICAgICAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gd2No
YXJUb1N0cmluZyhqYXZhSW5zdGFsbFBhdGhTdHIsIGphdmFJbnN0YWxsUGF0aFNpemUgLyBzaXpl
b2YoV0NIQVIpIC0gMSkgKyAiXFxiaW5cXG5ld19wbHVnaW4iOworICAgICAgICAgICAgICAgIFN0
cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gU3RyaW5nKGphdmFJbnN0YWxsUGF0aFN0ciwgamF2
YUluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSArICJcXGJpblxcbmV3X3BsdWdp
biI7CiAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMuYXBwZW5kKGphdmFQbHVnaW5EaXJlY3Rv
cnkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMzYsNyArMzM1LDcgQEAgc3RhdGlj
IGlubGluZSBTdHJpbmcgc2FmYXJpUGx1Z2luc0RpcmVjdG9yeSgpCiAgICAgICAgIGlmICghUGF0
aFJlbW92ZUZpbGVTcGVjKG1vZHVsZUZpbGVOYW1lU3RyKSkKICAgICAgICAgICAgIGdvdG8gZXhp
dDsKIAotICAgICAgICBwbHVnaW5zRGlyZWN0b3J5ID0gbnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3Ry
aW5nKG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOworICAgICAgICBwbHVnaW5zRGly
ZWN0b3J5ID0gU3RyaW5nKG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOwogICAgIH0K
IGV4aXQ6CiAgICAgcmV0dXJuIHBsdWdpbnNEaXJlY3Rvcnk7CkBAIC0zNTIsMTAgKzM1MSwxMCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICAgICBXQ0hBUiBtYWNyb21lZGlhRGlyZWN0b3J5U3Ry
W01BWF9QQVRIXTsKIAogICAgIFBhdGhDb21iaW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5
c3RlbURpcmVjdG9yeVN0ciwgVEVYVCgibWFjcm9tZWRcXEZsYXNoIikpOwotICAgIGRpcmVjdG9y
aWVzLmFwcGVuZChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcobWFjcm9tZWRpYURpcmVjdG9y
eVN0cikpOworICAgIGRpcmVjdG9yaWVzLmFwcGVuZChtYWNyb21lZGlhRGlyZWN0b3J5U3RyKTsK
IAogICAgIFBhdGhDb21iaW5lKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVjdG9y
eVN0ciwgVEVYVCgibWFjcm9tZWRcXFNob2Nrd2F2ZSAxMCIpKTsKLSAgICBkaXJlY3Rvcmllcy5h
cHBlbmQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIp
KTsKKyAgICBkaXJlY3Rvcmllcy5hcHBlbmQobWFjcm9tZWRpYURpcmVjdG9yeVN0cik7CiB9CiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCmluZGV4IDk0YmJhNmE5ZTdi
NjY1NDhhNjhiMzY3YjM4NzU4OTVlZmU5YjUyNjUuLmZmMjc0MTU5NzViMTk3Nzk5ZmYwOGMzNmRm
Y2RjMzRlZTMyYjQ1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPHN0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0cmFzLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDUsNyBAQCBzdGF0aWMgU3RyaW5n
IGdldFZlcnNpb25JbmZvKGNvbnN0IExQVk9JRCB2ZXJzaW9uSW5mb0RhdGEsIGNvbnN0IFN0cmlu
ZyYgaW5mbykKICAgICBVSU5UIGJ1ZmZlckxlbmd0aDsKICAgICBTdHJpbmcgc3ViSW5mbyA9ICJc
XFN0cmluZ2ZpbGVJbmZvXFwwNDA5MDRFNFxcIiArIGluZm87CiAgICAgYm9vbCByZXR2YWwgPSBW
ZXJRdWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEsCi0gICAgICAgIHN0cmluZ1RvTnVsbFRlcm1p
bmF0ZWRXQ2hhcihzdWJJbmZvKS5kYXRhKCksCisgICAgICAgIHN1YkluZm8ud2lkZUNoYXJhY3Rl
cnMoKS5kYXRhKCksCiAgICAgICAgICZidWZmZXIsICZidWZmZXJMZW5ndGgpOwogICAgIGlmICgh
cmV0dmFsIHx8IGJ1ZmZlckxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBA
IC0xNjYsMTMgKzE2NSwxMyBAQCB2b2lkIFBsdWdpblBhY2thZ2U6OmRldGVybWluZVF1aXJrcyhj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQog
ewogICAgIERXT1JEIHZlcnNpb25JbmZvU2l6ZSwgemVyb0hhbmRsZTsKLSAgICB2ZXJzaW9uSW5m
b1NpemUgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIobV9wYXRoKS5kYXRhKCksICZ6ZXJvSGFuZGxlKTsKKyAgICB2ZXJzaW9uSW5mb1NpemUgPSBH
ZXRGaWxlVmVyc2lvbkluZm9TaXplVyhtX3BhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksICZ6
ZXJvSGFuZGxlKTsKICAgICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFZlY3RvcjxjaGFyPiB2ZXJzaW9uSW5mb0RhdGEodmVyc2lvbkluZm9T
aXplKTsKIAotICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9E
YXRhLmRhdGEoKSkpCisgICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKG1fcGF0aC53aWRlQ2hh
cmFjdGVycygpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZGF0
YSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9uYW1lID0gZ2V0VmVyc2lvbklu
Zm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7CkBAIC0yMzgsMTEgKzIz
NywxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogCiAgICAgICAgIFN0cmluZyBwYXRo
ID0gbV9wYXRoLnN1YnN0cmluZygwLCBtX3BhdGgucmV2ZXJzZUZpbmQoJ1xcJykpOwogCi0gICAg
ICAgIGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0No
YXIocGF0aCkuZGF0YSgpKSkKKyAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKHBh
dGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIC8vIExvYWQgdGhlIGxpYnJhcnkKLSAgICAgICAgbV9tb2R1bGUgPSA6OkxvYWRM
aWJyYXJ5RXhXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwg
TE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOworICAgICAgICBtX21vZHVsZSA9IDo6TG9h
ZExpYnJhcnlFeFcobV9wYXRoLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCAwLCBMT0FEX1dJVEhf
QUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAKICAgICAgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3Rv
cnlXKGN1cnJlbnRQYXRoKSkgewogICAgICAgICAgICAgaWYgKG1fbW9kdWxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggNGE2
NjNlMDY0OGM1MzE5NWFiMDllMDA1Y2FlNTNlNDU0OTdiZDkzOS4uMDU3MjhmM2VkMzcyMDUwNGFm
NTVmOTg3N2Y4NjIxYmRjMDVjZTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBAIC03MSw3ICs3MSw2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9ydW50aW1lX3Jvb3QuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L3dpbi9XQ2hh
clN0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZiBV
U0UoQ0FJUk8pCkBAIC03NTUsMTMgKzc1NCwxMyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRs
ZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyX3QgbGVuLCBjb25zdAog
CiAgICAgLy8gR2V0IGZpbGUgaW5mbwogICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgYXR0
cnM7Ci0gICAgaWYgKCFHZXRGaWxlQXR0cmlidXRlc0V4VyhzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIoZmlsZW5hbWUpLmRhdGEoKSwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmYXR0cnMpKQor
ICAgIGlmICghR2V0RmlsZUF0dHJpYnV0ZXNFeFcoZmlsZW5hbWUud2lkZUNoYXJhY3RlcnMoKS5k
YXRhKCksIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmF0dHJzKSkKICAgICAgICAgcmV0dXJuIE5Q
RVJSX0ZJTEVfTk9UX0ZPVU5EOwogCiAgICAgaWYgKGF0dHJzLmR3RmlsZUF0dHJpYnV0ZXMgJiBG
SUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCiAgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9G
T1VORDsKIAotICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcoc3RyaW5nVG9OdWxs
VGVybWluYXRlZFdDaGFyKGZpbGVuYW1lKS5kYXRhKCksIEZJTEVfUkVBRF9EQVRBLCBGSUxFX1NI
QVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIDAsIDApOworICAgIEhBTkRMRSBmaWxlSGFuZGxl
ID0gQ3JlYXRlRmlsZVcoZmlsZW5hbWUud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIEZJTEVfUkVB
RF9EQVRBLCBGSUxFX1NIQVJFX1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIDAsIDApOwogICAgIAog
ICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1
cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA4MzMxY2E5
NDA0ZTU5MTVlNzM2Y2UxMGFiZGZmYjk4YWIyZmI0YjZjLi44ZjY3YTExNjIzYjhjYmVlMjFlOWVk
NjQ4NjkxOGI3ZTVlOWJiZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTY0NiwxNiArNjQ2
LDE1IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hv
b3NlciYgZmlsZUNob29zZXIpCiAKICAgICBvZm4ubFN0cnVjdFNpemUgPSBzaXplb2Yob2ZuKTsK
ICAgICBvZm4uaHduZE93bmVyID0gdmlld1dpbmRvdzsKLSAgICBTdHJpbmcgYWxsRmlsZXMgPSBh
bGxGaWxlc1RleHQoKTsKLSAgICBhbGxGaWxlcy5hcHBlbmQoTCJcMCouKlwwXDAiLCA2KTsKKyAg
ICBTdHJpbmcgYWxsRmlsZXMgPSBtYWtlU3RyaW5nKGFsbEZpbGVzVGV4dCgpLCBTdHJpbmcoIlww
Ki4qXDBcMCIsIDYpKTsKIAotICAgIFZlY3RvcjxVQ2hhcj4gZmlsdGVyQ2hhcmFjdGVycyA9IGFs
bEZpbGVzLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7IC8vIFJldGFpbiBidWZmZXIg
bG9uZyBlbm91Z2ggdG8gbWFrZSB0aGUgR2V0T3BlbkZpbGVOYW1lIGNhbGwKKyAgICBWZWN0b3I8
d2NoYXJfdD4gZmlsdGVyQ2hhcmFjdGVycyA9IGFsbEZpbGVzLndpZGVDaGFyYWN0ZXJzKCk7IC8v
IFJldGFpbiBidWZmZXIgbG9uZyBlbm91Z2ggdG8gbWFrZSB0aGUgR2V0T3BlbkZpbGVOYW1lIGNh
bGwKICAgICBvZm4ubHBzdHJGaWx0ZXIgPSBmaWx0ZXJDaGFyYWN0ZXJzLmRhdGEoKTsKIAogICAg
IG9mbi5scHN0ckZpbGUgPSBmaWxlQnVmLmRhdGEoKTsKICAgICBvZm4ubk1heEZpbGUgPSBmaWxl
QnVmLnNpemUoKTsKICAgICBTdHJpbmcgZGlhbG9nVGl0bGUgPSB1cGxvYWRGaWxlVGV4dCgpOwot
ICAgIFZlY3RvcjxVQ2hhcj4gZGlhbG9nVGl0bGVDaGFyYWN0ZXJzID0gZGlhbG9nVGl0bGUuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3Vn
aCB0byBtYWtlIHRoZSBHZXRPcGVuRmlsZU5hbWUgY2FsbAorICAgIFZlY3Rvcjx3Y2hhcl90PiBk
aWFsb2dUaXRsZUNoYXJhY3RlcnMgPSBkaWFsb2dUaXRsZS53aWRlQ2hhcmFjdGVycygpOyAvLyBS
ZXRhaW4gYnVmZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIEdldE9wZW5GaWxlTmFtZSBjYWxs
CiAgICAgb2ZuLmxwc3RyVGl0bGUgPSBkaWFsb2dUaXRsZUNoYXJhY3RlcnMuZGF0YSgpOwogICAg
IG9mbi5GbGFncyA9IE9GTl9FTkFCTEVTSVpJTkcgfCBPRk5fRklMRU1VU1RFWElTVCB8IE9GTl9Q
QVRITVVTVEVYSVNUIHwgT0ZOX0VYUExPUkVSOwogICAgIGlmIChtdWx0aUZpbGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAppbmRleCBhYWUxZTAwMGY4ZmFjOThlMzcyMjk0MDAxYzY5YzRjNzBlZDUzZmY5
Li45MTBiZTg3ZTI1YmQ2NGQ1ZDE2NTMyMGFhMDQyZjA5MGRkZTg0M2Q3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2lu
Y2x1ZGUgIldlYkVkaXRvckNsaWVudC5oIgogCisjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIK
ICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNs
dWRlICJXZWJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5j
bHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlIDxjb211dGlsLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgpAQCAtNDgs
NiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFyU3RyaW5nRXh0
cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKQEAgLTc1OCw3ICs3NTksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVs
bGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgaW50KiBtaXNzcGVsbGluZ0xvYwogICAgICAg
ICByZXR1cm47CiAKICAgICBpbml0Vmlld1NwZWNpZmljU3BlbGxpbmcobV93ZWJWaWV3KTsKLSAg
ICBlZC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKG1fd2ViVmlldywgdGV4dC51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxp
bmdMZW5ndGgpOworICAgIGVkLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcobV93ZWJWaWV3LCB3Y2hh
ckZyb20odGV4dC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSksIHRleHQubGVuZ3RoKCksIG1pc3Nw
ZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKIH0KIAogU3RyaW5nIFdlYkVkaXRv
ckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJiBpbnB1dFdvcmQpCkBAIC03ODAsNyArNzgxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcgdGV4dCwgVmVjdG9yPEdyYW1tYXJE
ZXRhaWwKIAogICAgIGluaXRWaWV3U3BlY2lmaWNTcGVsbGluZyhtX3dlYlZpZXcpOwogICAgIENP
TVB0cjxJRW51bVdlYkdyYW1tYXJEZXRhaWxzPiBlbnVtRGV0YWlsc09iajsKLSAgICBpZiAoRkFJ
TEVEKGVkLT5jaGVja0dyYW1tYXJPZlN0cmluZyhtX3dlYlZpZXcsIHRleHQudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksICZlbnVtRGV0YWlsc09iaiwgYmFkR3JhbW1hckxv
Y2F0aW9uLCBiYWRHcmFtbWFyTGVuZ3RoKSkpCisgICAgaWYgKEZBSUxFRChlZC0+Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcobV93ZWJWaWV3LCB3Y2hhckZyb20odGV4dC51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSksIHRleHQubGVuZ3RoKCksICZlbnVtRGV0YWlsc09iaiwgYmFkR3JhbW1hckxvY2F0aW9u
LCBiYWRHcmFtbWFyTGVuZ3RoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHdoaWxlICh0cnVl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAyMjFlMjJmMzg2MDVhNTFmMDczN2Vh
ZDNjOGJlOWMzOTVjNDI0ZGM3Li4wNmFjMTFjNzBkMWFkYmFmZjkwMzVhM2NiOTQ3NzY2ZTVkNmQ3
ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yVmlldygpCiB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpCiB7CiAgICAg
U3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZygiV2ViIEluc3BlY3RvciAiLCBzdGF0aWNfY2FzdDxV
Q2hhcj4oMHgyMDE0KSwgJyAnLCBtX2luc3BlY3RlZFVSTCk7Ci0gICAgOjpTZXRXaW5kb3dUZXh0
KG1fZnJvbnRlbmRId25kLCB0aXRsZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSk7CisgICAgOjpTZXRXaW5kb3dUZXh0KG1fZnJvbnRlbmRId25kLCB0aXRsZS53aWRlQ2hh
cmFjdGVycygpLmRhdGEoKSk7CiB9CiAKIExSRVNVTFQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6Om9uR2V0TWluTWF4SW5mbyhXUEFSQU0sIExQQVJBTSBsUGFyYW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAppbmRleCBkZTAyMjFm
NTQ1ZjNkZjRhNmFkMTBjMGFhOTZkMzZjYjhkOTE2M2YyLi40YzI1N2NmMGYxMDA4YjEzNDFjZTBj
ZTA0ZTVjNDYwYTAzM2FkMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKIExvY2Fs
aXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3N0cmlu
Zy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKTsKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nLndpZGVDaGFyYWN0
ZXJzKCkuZGF0YSgpOwogCiAgICAgbV9zdHJpbmcgPSBtX2NmU3RyaW5nOwogCkBAIC04OSw3ICs4
OSw3IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAgICAg
IGlmIChtX3N0cmluZ1tpXSA9PSAnQCcgJiYgKG1fc3RyaW5nW2kgLSAxXSA9PSAnJScgfHwgKGkg
PiAyICYmIG1fc3RyaW5nW2kgLSAxXSA9PSAnJCcgJiYgbV9zdHJpbmdbaSAtIDJdID49ICcxJyAm
JiBtX3N0cmluZ1tpIC0gMl0gPD0gJzknICYmIG1fc3RyaW5nW2kgLSAzXSA9PSAnJScpKSkKICAg
ICAgICAgICAgIG1fc3RyaW5nLnJlcGxhY2UoaSwgMSwgInMiKTsKIAotICAgIHJldHVybiBtX3N0
cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKTsKKyAgICByZXR1cm4g
bV9zdHJpbmcud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCk7CiB9CiAKIHN0YXRpYyBDRkJ1bmRsZVJl
ZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCAzZmY4MWNmMjA4OWRlNjY4MGVjYTM4NTZmNTczYzIyOTUxNzQ4ZjBhLi5iNGQyMjhmZTI2ZTM3
NzJhYTVjYzA1ZDYzZWZkMGFkNDEwNjdlNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcApAQCAtMTU5OCwxMyArMTU5OCwxMyBAQCBzdGF0aWMgSE1FTlUgY3JlYXRlQ29udGV4dE1l
bnVGcm9tSXRlbXMoY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQogICAgICAg
ICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQWN0aW9uVHlwZToKICAgICAg
ICAgY2FzZSBDaGVja2FibGVBY3Rpb25UeXBlOgotICAgICAgICAgICAgOjpBcHBlbmRNZW51KG1l
bnUsIGZsYWdzIHwgTUZfU1RSSU5HLCBpdGVtLmFjdGlvbigpLCBpdGVtLnRpdGxlKCkuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOworICAgICAgICAgICAgOjpBcHBlbmRN
ZW51KG1lbnUsIGZsYWdzIHwgTUZfU1RSSU5HLCBpdGVtLmFjdGlvbigpLCBpdGVtLnRpdGxlKCku
d2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgU2VwYXJhdG9yVHlwZToKICAgICAgICAgICAgIDo6QXBwZW5kTWVudShtZW51LCBmbGFncyB8
IE1GX1NFUEFSQVRPUiwgaXRlbS5hY3Rpb24oKSwgbnVsbHB0cik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBTdWJtZW51VHlwZToKLSAgICAgICAgICAgIDo6QXBwZW5kTWVudSht
ZW51LCBmbGFncyB8IE1GX1BPUFVQLCAoVUlOVF9QVFIpY3JlYXRlQ29udGV4dE1lbnVGcm9tSXRl
bXMoaXRlbS5zdWJNZW51SXRlbXMoKSksIGl0ZW0udGl0bGUoKS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSk7CisgICAgICAgICAgICA6OkFwcGVuZE1lbnUobWVudSwgZmxh
Z3MgfCBNRl9QT1BVUCwgKFVJTlRfUFRSKWNyZWF0ZUNvbnRleHRNZW51RnJvbUl0ZW1zKGl0ZW0u
c3ViTWVudUl0ZW1zKCkpLCBpdGVtLnRpdGxlKCkud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMjM0LDggKzMyMzQsOCBA
QCB2b2lkIFdlYlZpZXc6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0b29sVGlwKQogICAgICAg
ICBpbmZvLmNiU2l6ZSA9IHNpemVvZihpbmZvKTsKICAgICAgICAgaW5mby51RmxhZ3MgPSBUVEZf
SURJU0hXTkQ7CiAgICAgICAgIGluZm8udUlkID0gcmVpbnRlcnByZXRfY2FzdDxVSU5UX1BUUj4o
bV92aWV3V2luZG93KTsKLSAgICAgICAgVmVjdG9yPFVDaGFyPiB0b29sVGlwQ2hhcmFjdGVycyA9
IG1fdG9vbFRpcC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOyAvLyBSZXRhaW4gYnVm
ZmVyIGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIFNlbmRNZXNzYWdlIGNhbGwKLSAgICAgICAgaW5m
by5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8VUNoYXIqPih0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkp
OworICAgICAgICBWZWN0b3I8d2NoYXJfdD4gdG9vbFRpcENoYXJhY3RlcnMgPSBtX3Rvb2xUaXAu
d2lkZUNoYXJhY3RlcnMoKTsgLy8gUmV0YWluIGJ1ZmZlciBsb25nIGVub3VnaCB0byBtYWtlIHRo
ZSBTZW5kTWVzc2FnZSBjYWxsCisgICAgICAgIGluZm8ubHBzelRleHQgPSBjb25zdF9jYXN0PHdj
aGFyX3QqPih0b29sVGlwQ2hhcmFjdGVycy5kYXRhKCkpOwogICAgICAgICA6OlNlbmRNZXNzYWdl
KG1fdG9vbFRpcEh3bmQsIFRUTV9VUERBVEVUSVBURVhULCAwLCByZWludGVycHJldF9jYXN0PExQ
QVJBTT4oJmluZm8pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
SlNDT25seS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQppbmRleCA1
MGRmMDNlYjYwMDQ0ZWEwNzhmZWFjM2I1N2MyYmU5Yzc2YTlhN2YxLi45NDc2YWRjMDBjNjRkZGM2
OWE2YTljODU2MThlMDE3Njg0ODExMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0pTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCkBA
IC05Nyw5ICs5Nyw2IEBAIGVuZGlmICgpCiAKIGlmIChOT1QgQVBQTEUpCiAgICAgZmluZF9wYWNr
YWdlKElDVSBSRVFVSVJFRCkKLSAgICBpZiAoV0lOMzIpCi0gICAgICAgIGFkZF9kZWZpbml0aW9u
cygtRFVDSEFSX1RZUEU9d2NoYXJfdCkKLSAgICBlbmRpZiAoKQogZWxzZSAoKQogICAgIGFkZF9k
ZWZpbml0aW9ucygtRFVfRElTQUJMRV9SRU5BTUlORz0xIC1EVV9TSE9XX0NQTFVTUExVU19BUEk9
MCkKICAgICBzZXQoSUNVX0xJQlJBUklFUyBsaWJpY3Vjb3JlLmR5bGliKQpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5j
bWFrZQppbmRleCBhZTNhOWVmZjYyYWNkMmM3OGM0ZGYyNTYyNTAzZjZiMDJmZWJjYjA2Li42MWZh
NDg1YjI1ZGViNTVmZTgzM2U3Mjk0YzBlMTc5ZWE2ZjU5Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFr
ZQpAQCAtMTU4LDcgKzE1OCw2IEBAIHNldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykKIHNldChX
ZWJLaXRMZWdhY3lfTElCUkFSWV9UWVBFIFNIQVJFRCkKIAogZmluZF9wYWNrYWdlKElDVSBSRVFV
SVJFRCkKLWFkZF9kZWZpbml0aW9ucygtRFVDSEFSX1RZUEU9d2NoYXJfdCkKIAogIyBJZiA8d2lu
c29jazIuaD4gaXMgbm90IGluY2x1ZGVkIGJlZm9yZSA8d2luZG93cy5oPiByZWRlZmluaXRpb24g
ZXJyb3JzIG9jY3VyCiAjIHVubGVzcyBfV0lOU09DS0FQSV8gaXMgZGVmaW5lZCBiZWZvcmUgPHdp
bmRvd3MuaD4gaXMgaW5jbHVkZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBjYTE1NWU4MjkyNmFmMTc3NDE5ZWEzNTA0NGIxZjE4ZTcxNTBkNmRj
Li42MmFiMWM3OTM3MDBkNGZjMTczYjRmZjRmNGE1ODE1MTAyMDc4MzhiIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTktMDMtMDYgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAg
ICAgIFtXaW5dIFJlbW92ZSAtRFVDSEFSX1RZUEU9d2NoYXJfdCBzdG9wZ2FwIGFuZCBsZWFybiB0
byBsaXZlIHdpdGggY2hhcjE2X3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTUzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgRGVsZXRlIHdjaGFy
IHRlc3RzIC0tIHRoZXNlIGFyZSBNU1ZDLW9ubHkgYW5kIHdlIHdvbid0IGJlIHVzaW5nIFN0cmlu
Zzo6b3BlcmF0b3IrIGdvaW5nIGZvcndhcmQgYW55d2F5LgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGZpbmRGb250RmFsbGJhY2sp
OgorICAgICAgICAoYWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KToKKyAgICAgICAgKHJlbW92ZUZv
bnRGYWxsYmFja0lmUHJlc2VudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpVdGlsOjptb2R1bGVEaXJlY3RvcnkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRp
bDo6Y3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAgVXNlIHdjaGFyIGhlbHBlcnMg
YXMgbmVlZGVkLgorCiAyMDE5LTAzLTA2ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgQ29uc2lkZXIgc3VwcG9ydGluZyB0aGUgYHJlZmVycmVycG9saWN5YCBhdHRyaWJ1
dGUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBk
YWU1ZGU3NjEwNTc2ZTZlNjM4MjZhYWY2ZjZiNjkwZGM4Y2IxZTQzLi4yYzRlNTBjMjM2ZjIyZjZj
MmExMmEyZjM0NzI5NjI2MDExMDdiZTJmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHN0YXRpYyBTdHJpbmcgZmlu
ZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgU3RyaW5nIHBhdGhUb0Zv
bnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsKIAogICAg
IHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKLSAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBh
dGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSwgX01BWF9QQVRIKSkKKyAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0Zv
bnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgX01BWF9QQVRIKSkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBpZiAoITo6UGF0aElzRGlyZWN0b3J5VyhmdWxs
UGF0aCkpCkBAIC0xMDY5LDcgKzEwNjksNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJh
Y2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJh
dG9yIHBvcyA9IHBvc3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5k
KCk7ICsrcG9zKSB7CiAgICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsKIAotICAgICAgICBp
ZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCisgICAgICAgIGlmICg6OlBhdGhJc0RpcmVjdG9yeVco
cGF0aFRvRm9udEZhbGxiYWNrLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKSkKICAgICAgICAgICAg
IHJldHVybiBwYXRoVG9Gb250RmFsbGJhY2s7CiAgICAgfQogCkBAIC0xMDgzLDcgKzEwODMsNyBA
QCBzdGF0aWMgdm9pZCBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250
RmFsbGJhY2tQYXRoKQogCiAgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUt
Zm9udC1mYWxsYmFjay5jc3MiKTsKIAotICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZh
bGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKKyAgICBpZiAo
ITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oZm9udEZhbGxiYWNrLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMTA5Niw3ICsx
MDk2LDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0
cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKIAogICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1j
b21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKLSAgICBpZiAoITo6UGF0aEZpbGVFeGlz
dHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkp
CisgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2sud2lkZUNoYXJhY3RlcnMo
KS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICA6OnNldFBlcnNpc3RlbnRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKG51bGxwdHIpOwpAQCAtMTU0MSwxMiArMTU0MSwxMiBAQCBpbnQgbWFp
bihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIFN0cmluZyBkZXNrdG9wTmFtZSA9
IG1ha2VTdHJpbmcoImRlc2t0b3AiLCBwcm9jZXNzSWQpOwogICAgIEhERVNLIGRlc2t0b3AgPSBu
dWxscHRyOwogCi0gICAgYXV0byB3aW5kb3dzU3RhdGlvbiA9IDo6Q3JlYXRlV2luZG93U3RhdGlv
bih3aW5kb3dTdGF0aW9uTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSwgQ1dGX0NSRUFURV9PTkxZLCBXSU5TVEFfQUxMX0FDQ0VTUywgbnVsbHB0cik7CisgICAgYXV0
byB3aW5kb3dzU3RhdGlvbiA9IDo6Q3JlYXRlV2luZG93U3RhdGlvbih3aW5kb3dTdGF0aW9uTmFt
ZS53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgQ1dGX0NSRUFURV9PTkxZLCBXSU5TVEFfQUxMX0FD
Q0VTUywgbnVsbHB0cik7CiAgICAgaWYgKHdpbmRvd3NTdGF0aW9uKSB7CiAgICAgICAgIGlmICgh
OjpTZXRQcm9jZXNzV2luZG93U3RhdGlvbih3aW5kb3dzU3RhdGlvbikpCiAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIlNldFByb2Nlc3NXaW5kb3dTdGF0aW9uIGZhaWxlZCB3aXRoIGVycm9y
ICVsdVxuIiwgOjpHZXRMYXN0RXJyb3IoKSk7CiAKLSAgICAgICAgZGVza3RvcCA9IDo6Q3JlYXRl
RGVza3RvcChkZXNrdG9wTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgR0VORVJJQ19BTEwsIG51bGxwdHIpOworICAgICAgICBk
ZXNrdG9wID0gOjpDcmVhdGVEZXNrdG9wKGRlc2t0b3BOYW1lLndpZGVDaGFyYWN0ZXJzKCkuZGF0
YSgpLCBudWxscHRyLCBudWxscHRyLCAwLCBHRU5FUklDX0FMTCwgbnVsbHB0cik7CiAgICAgICAg
IGlmICghZGVza3RvcCkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBkZXNrdG9wIHdpdGggZXJyb3IgJWx1XG4iLCA6OkdldExhc3RFcnJvcigpKTsKICAgICB9
IGVsc2UgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
T3BlcmF0b3JzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJh
dG9ycy5jcHAKaW5kZXggOWFiY2JiM2E4N2Q4YzA3MmQ5NmQwNDJkYmZmMGFhZTRjZDdjNjZmMS4u
MGUzYmY5OGY4ODIxNGZjNDdjOWI1MzM1Zjc0YjA2ZDNlNTNhMjk2ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCkBAIC0yNTAsNzgg
KzI1MCw2IEBAIFRFU1QoV1RGLCBTdHJpbmdPcGVyYXRvcnMpCiAgICAgRVhQRUNUX05fV1RGX1NU
UklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIGxpdGVyYWwgKyBzdHJpbmcgKyBsaXRlcmFsICsg
YXRvbWljU3RyaW5nICsgbGl0ZXJhbCk7CiAgICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
Miwgc3RyaW5nVmlldyArIChsaXRlcmFsICsgc3RyaW5nICsgbGl0ZXJhbCArIGF0b21pY1N0cmlu
ZyArIGxpdGVyYWwpKTsKICAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5n
VmlldyArIGxpdGVyYWwpICsgKHN0cmluZyArIGxpdGVyYWwpICsgKGF0b21pY1N0cmluZyArIGxp
dGVyYWwpKTsKLQotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMSwgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDEsIHN0cmluZyArIEwid2lkZSBzdHJpbmciKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygxLCBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQ
RUNUX05fV1RGX1NUUklOR19DT1BJRVMoMSwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIp
OwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nVmlldyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMCwgc3RyaW5nVmlldyAr
IEwid2lkZSBzdHJpbmciKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwi
d2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwi
d2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
MiwgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZykp
OwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIHN0cmluZyArIEwid2lkZSBzdHJp
bmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdf
Q09QSUVTKDIsIHN0cmluZyArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJp
bmciKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKHN0cmluZyArIEwid2lk
ZSBzdHJpbmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikpOwotCi0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJ
RVMoMiwgTCJ3aWRlIHN0cmluZyIgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBh
dG9taWNTdHJpbmcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoTCJ3aWRl
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5n
KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsg
YXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5H
X0NPUElFUygyLCAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmlu
ZyArIEwid2lkZSBzdHJpbmciKSk7Ci0KLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygw
LCBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1Zp
ZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIEwid2lkZSBzdHJpbmciICsg
KHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1Rf
Tl9XVEZfU1RSSU5HX0NPUElFUygwLCAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSArIChM
IndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NP
UElFUygwLCBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRl
IHN0cmluZyIpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDAsIHN0cmluZ1ZpZXcg
KyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygwLCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmci
KSArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9T
VFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIg
KyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVD
VF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZyArIEwid2lk
ZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7
Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nKSArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmlu
Z1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMo
Miwgc3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmlu
ZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RS
SU5HX0NPUElFUygyLCAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKGF0b21pY1N0cmluZyAr
IEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAg
IEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJp
bmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsg
KHN0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsg
YXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nKSArIChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKEwi
d2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0
cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RG
X1NUUklOR19DT1BJRVMoMiwgc3RyaW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyAr
IEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBF
WFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsg
KHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0
cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJp
bmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndpZGUgc3Ry
aW5nIiArIHN0cmluZ1ZpZXcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwi
d2lkZSBzdHJpbmciICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsg
TCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19D
T1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSArIChMIndpZGUgc3RyaW5n
IiArIHN0cmluZykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3KSk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBz
dHJpbmcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIik7Ci0g
ICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgKEwid2lkZSBz
dHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0
cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoYXRvbWljU3RyaW5n
ICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZyArIEwid2lkZSBzdHJpbmciKSArIChzdHJpbmdW
aWV3ICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVT
KDIsIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJp
bmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJ
TkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJp
bmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNU
X05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSAr
IChMIndpZGUgc3RyaW5nIiArIHN0cmluZ1ZpZXcpICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5n
KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3RyaW5nICsgTCJ3
aWRlIHN0cmluZyIgKyBzdHJpbmdWaWV3ICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcgKyBMIndp
ZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgYXRvbWljU3Ry
aW5nICsgKEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3Ry
aW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygy
LCAoYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUg
c3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQotICAgIEVYUEVDVF9OX1dU
Rl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5nVmlldyArIEwid2lkZSBz
dHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpOwotICAgIEVY
UEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgKHN0cmluZ1ZpZXcg
KyBMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5n
KSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwid2lkZSBzdHJpbmciICsg
c3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNTdHJpbmcpICsgKEwid2lkZSBz
dHJpbmciICsgc3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgc3Ry
aW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIg
KyBzdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJ
RVMoMiwgc3RyaW5nVmlldyArIChMIndpZGUgc3RyaW5nIiArIGF0b21pY1N0cmluZyArIEwid2lk
ZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAgICBFWFBFQ1RfTl9XVEZf
U1RSSU5HX0NPUElFUygyLCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciKSArIChhdG9taWNT
dHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLQot
ICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmciICsgc3RyaW5n
VmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRlIHN0cmluZyIgKyBhdG9taWNT
dHJpbmcpOwotICAgIEVYUEVDVF9OX1dURl9TVFJJTkdfQ09QSUVTKDIsIEwid2lkZSBzdHJpbmci
ICsgKHN0cmluZ1ZpZXcgKyBMIndpZGUgc3RyaW5nIiArIHN0cmluZyArIEwid2lkZSBzdHJpbmci
ICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklOR19DT1BJRVMoMiwgKEwi
d2lkZSBzdHJpbmciICsgc3RyaW5nVmlldykgKyAoTCJ3aWRlIHN0cmluZyIgKyBzdHJpbmcpICsg
KEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nKSk7Ci0gICAgRVhQRUNUX05fV1RGX1NUUklO
R19DT1BJRVMoMiwgc3RyaW5nVmlldyArIEwid2lkZSBzdHJpbmciICsgc3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIgKyBhdG9taWNTdHJpbmcgKyBMIndpZGUgc3RyaW5nIik7Ci0gICAgRVhQRUNUX05f
V1RGX1NUUklOR19DT1BJRVMoMiwgc3RyaW5nVmlldyArIChMIndpZGUgc3RyaW5nIiArIHN0cmlu
ZyArIEwid2lkZSBzdHJpbmciICsgYXRvbWljU3RyaW5nICsgTCJ3aWRlIHN0cmluZyIpKTsKLSAg
ICBFWFBFQ1RfTl9XVEZfU1RSSU5HX0NPUElFUygyLCAoc3RyaW5nVmlldyArIEwid2lkZSBzdHJp
bmciKSArIChzdHJpbmcgKyBMIndpZGUgc3RyaW5nIikgKyAoYXRvbWljU3RyaW5nICsgTCJ3aWRl
IHN0cmluZyIpKTsKLSNlbmRpZgogfQogCiBURVNUKFdURiwgQ29uY2F0ZW5hdGVDaGFyYWN0ZXJB
cnJheUFuZEVtcHR5U3RyaW5nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4v
UGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1VdGlsaXRpZXNXaW4uY3BwCmluZGV4IDJlNTQzMDg4MTExZDMxYTU5N2VkZjFiMzAxMmE5MjQ2
ZThlZjAxY2MuLjNkNTlkMjU1MDI3Zjk0ZDQzOWM4NzhkOTFlZWFhMjY4OThmMzM0ZmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKQEAg
LTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxTaGx3YXBpLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvd2luL1dD
aGFyU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFj
ZSBVdGlsIHsKQEAgLTQwLDEyICszOSwxMiBAQCBzdGF0aWMgU3RyaW5nIG1vZHVsZURpcmVjdG9y
eSgpCiAgICAgd2NoYXJfdCBmaWxlbmFtZVtidWZmZXJMZW5ndGhdOwogICAgIGF1dG8gbGVuID0g
R2V0TW9kdWxlRmlsZU5hbWUobnVsbHB0ciwgZmlsZW5hbWUsIGJ1ZmZlckxlbmd0aCk7CiAgICAg
QVNTRVJUKGxlbiA+IDApOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHdj
aGFyVG9TdHJpbmcoZmlsZW5hbWUsIGxlbikpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKFN0cmluZyhmaWxlbmFtZSwgbGVuKSk7CiB9CiAKIFdLU3RyaW5nUmVmIGNyZWF0
ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7Ci0gICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2Vi
S2l0QVBJSW5qZWN0ZWRCdW5kbGUuZGxsIikpOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgIlRlc3RXZWJLaXRB
UElJbmplY3RlZEJ1bmRsZS5kbGwiKTsKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IGQyZjE5ZDc5NzEyMDc1ZGI1NTM2Zjk1YmZlYjAyODlkZDRlNmU0
NjAuLjI4YTQwYjkxNzc5YTMyNGFlMDExNjIzZmJhN2U2NzY4OGJjY2ExYzIgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMy0wNiAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0g
UmVtb3ZlIC1EVUNIQVJfVFlQRT13Y2hhcl90IHN0b3BnYXAgYW5kIGxlYXJuIHRvIGxpdmUgd2l0
aCBjaGFyMTZfdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTM0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlOgorICAgICAgICAqIFNvdXJj
ZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgorICAgICAgICBTdG9wIGNvbXBpbGluZyB3aXRoIC1E
VUNIQVJfVFlQRT13Y2hhcl90LgorCiAyMDE5LTAzLTA2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBFbmFibGUgYWRkaXRpb25hbCBl
eHBlcmltZW50YWwgZmVhdHVyZXMK
</data>

          </attachment>
      

    </bug>

</bugzilla>