<?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>124167</bug_id>
          
          <creation_ts>2013-11-11 14:30:22 -0800</creation_ts>
          <short_desc>Make DiskImageCache cross-platform</short_desc>
          <delta_ts>2015-08-20 12:06:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gustavo Noronha (kov)">gustavo</reporter>
          <assigned_to name="Gustavo Noronha (kov)">gustavo</assigned_to>
          <cc>andersca</cc>
    
    <cc>andrunko</cc>
    
    <cc>bugzilla</cc>
    
    <cc>buildbot</cc>
    
    <cc>bunhere</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>tomeu</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949455</commentid>
    <comment_count>0</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-11 14:30:22 -0800</bug_when>
    <thetext>Make DiskImageCache cross-platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949493</commentid>
    <comment_count>1</comment_count>
      <attachid>216623</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-11 16:59:35 -0800</bug_when>
    <thetext>Created attachment 216623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949497</commentid>
    <comment_count>2</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-11 17:03:21 -0800</bug_when>
    <thetext>So this patch ports the code to POSIX so that we can share it and wires enabling it in WebKit2. I have a patch in the works that makes it possible to map an empty file of a given size to back decoded image data, which should allow for more memory savings than backing the cached resource I hope (still need to test it, will probably get to do that by tomorrow).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949500</commentid>
    <comment_count>3</comment_count>
      <attachid>216623</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-11 17:07:40 -0800</bug_when>
    <thetext>Comment on attachment 216623
Patch

Attachment 216623 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/22639483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949502</commentid>
    <comment_count>4</comment_count>
      <attachid>216623</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-11 17:13:53 -0800</bug_when>
    <thetext>Comment on attachment 216623
Patch

Attachment 216623 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/22938276</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949627</commentid>
    <comment_count>5</comment_count>
      <attachid>216656</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-12 05:24:52 -0800</bug_when>
    <thetext>Created attachment 216656
Patch

Fixes EFL build, couple improvements to GTK+ (using the more appropriate XDG user cache directory by default, cleaning up left-overs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949756</commentid>
    <comment_count>6</comment_count>
      <attachid>216656</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-12 11:28:36 -0800</bug_when>
    <thetext>Comment on attachment 216656
Patch

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

Overall, the patch looks good to me. The DiskImageCache conversions look good, I&apos;m not qualified to review the WebKit2 or GTK parts, though they look good.

I have one concern, but you&apos;re not in a position to be able to test it so I don&apos;t expect anything from you in verifying this. Converting from dispatch_queues (in this case dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) to threads might have some performance characteristic changes. On iOS, DiskImageCache mappings happen on memory warnings, at a point where memory is already very constrained. Threads are probably heavier weight than the queues, and may have priority differences. However, I don&apos;t really know if this would exhibit any problems, this is just a concern.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:13069
&gt; +		FA7094EB7D9A7AE4144F3A05 /* DiskImageCacheClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskImageCacheClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };

This will need to be settings = {ATTRIBUTES = (Private, ); like DiskImageCacheClientIOS.h used to be. It is used by WebKit/ios/WebCoreSupport/WebDiskImageCacheClientIOS.h.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:20272
&gt;  		CE79D68617F220ED00815C00 /* ios */ = {
&gt;  			isa = PBXGroup;
&gt;  			children = (
&gt; -				A5F9EF6E1266750D00FCCF52 /* DiskImageCacheIOS.mm */,
&gt; -				A5F9EF6F1266750D00FCCF52 /* DiskImageCacheIOS.h */,
&gt; -				A5C566AA127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h */,
&gt;  			);
&gt;  			path = ios;
&gt;  			sourceTree = &quot;&lt;group&gt;&quot;;

This group is now empty and could be removed.

&gt; Source/WebCore/platform/DiskImageCache.h:3
&gt; +/*
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; + *

You can include your copyright here as well since you&apos;re making some changes.

&gt; Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:142
&gt; +    // Notify the buffer in the case of a successful mapping.
&gt; +    // This should happen on the main thread because this is being run
&gt; +    // asynchronously inside a dispatch queue.

The &quot;dispatch queue&quot; comment is now out of date.

&gt; Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:235
&gt; +    // FIXME: run in main thread when we move the above to its own thread.

Is this FIXME needed anymore? Sounds like you are running the didRemoveFile on the main thread.

&gt; Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:276
&gt; +    // The lifetime of the Entry is handled on the main thread. Before we send
&gt; +    // to a dispatch queue we need to ref so that we are sure the object still
&gt; +    // exists. This call is balanced in the callbacks dispatched from
&gt; +    // Entry::map. or the early return in this dispatch.

More outdated &quot;dispatch queue&quot; related comments.

&gt; Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:295
&gt; +    RefPtr&lt;DiskImageCache::Entry&gt; entry = m_table.get(id);
&gt; +    m_table.remove(id);

Doh. I didn&apos;t realize this before, but I think these two lines can just use HashMap&lt;&gt;::take and do one instead of 2 hash lookups:

    RefPtr&lt;DiskImageCache::Entry&gt; entry = m_table.take(id);

Could you drive by fix this?

&gt; Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:340
&gt; +// For GTK+ we use a well-known name inside the user&apos;s XDG cache directory, so that we can
&gt; +// better manage its cleanup.

Cleanup is actually what the &quot;didCreateDiskImageCacheDirectory&quot; m_client method is for. However, what you have here is fine, since you will be reusing the same directory over and over. I wonder if it might be easier delete and recreate the directory instead of listing and deleting files one by one.

&gt; Source/WebCore/platform/posix/FileSystemPOSIX.cpp:294
&gt;  #if !PLATFORM(MAC)
&gt; +String createTemporaryDirectory(const String&amp; prefix)

This would likely need !PLATFORM(IOS) around it because FileSystemIOS.mm includes an implementation of createTemporaryDirectory. The IOS implementation uses things like NSTemporaryDirectory() that it likely wants to keep instead of switching to the Posix version.

Maybe the iOS methods will also need to change their signatures. It has NSStrings but it could change to WTF::Strings. You don&apos;t need to speculatively fix this since there is no EWS bot for the iOS port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950276</commentid>
    <comment_count>7</comment_count>
      <attachid>216830</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-13 11:55:30 -0800</bug_when>
    <thetext>Created attachment 216830
Patch

Thanks for the review, it&apos;s very helpful! I did not: a) add the PLATFORM(IOS) check (doesn&apos;t the !PLATFORM(MAC) include IOS?) b) change the hash removal to take() - when I did that I started getting asserts in some cases because the entry would have its last ref removed on the last line of DiskImageCache::Entry::removeFileThreadStart, I guess there&apos;s some subtle interaction between HashMap::take and RefCounted that I did not grasp, any ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950277</commentid>
    <comment_count>8</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-13 11:56:36 -0800</bug_when>
    <thetext>Here&apos;s the assert:

0x00007ffff1e96daf in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:341
341         *(int *)(uintptr_t)0xbbadbeef = 0;
Missing separate debuginfos, use: debuginfo-install google-talkplugin-4.9.1.0-1.x86_64 icedtea-web-1.4.1-0.fc20.x86_64
(gdb) bt
#0  0x00007ffff1e96daf in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:341
#1  0x00007ffff3a96d64 in WebCore::DiskImageCache::Entry::~Entry (this=0xbd4d90, __in_chrg=&lt;optimized out&gt;)
    at ../../Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:79
#2  0x00007ffff3a985a9 in WTF::RefCounted&lt;WebCore::DiskImageCache::Entry&gt;::deref (this=0xbd4d90) at ../../Source/WTF/wtf/RefCounted.h:196
#3  0x00007ffff3a9aaa8 in WTF::RefAndDeref&lt;WebCore::DiskImageCache::Entry*, true&gt;::deref (t=0xbd4d90) at ../../Source/WTF/wtf/Functional.h:412
#4  0x00007ffff3a9aa12 in WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (WebCore::DiskImageCache::Entry::*)()&gt;, void (WebCore::DiskImageCache::Entry*)&gt;::~BoundFunctionImpl() (this=0x7fff58000970, __in_chrg=&lt;optimized out&gt;) at ../../Source/WTF/wtf/Functional.h:491
#5  0x00007ffff3a9aa4e in WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (WebCore::DiskImageCache::Entry::*)()&gt;, void (WebCore::DiskImageCache::Entry*)&gt;::~BoundFunctionImpl() (this=0x7fff58000970, __in_chrg=&lt;optimized out&gt;) at ../../Source/WTF/wtf/Functional.h:492
#6  0x00007ffff3a993ea in WTF::ThreadSafeRefCounted&lt;WTF::FunctionImplBase&gt;::deref (this=0x7fff58000978) at ../../Source/WTF/wtf/ThreadSafeRefCounted.h:116
#7  0x00007ffff3a98a93 in WTF::derefIfNotNull&lt;WTF::FunctionImplBase&gt; (ptr=0x7fff58000970) at ../../Source/WTF/wtf/PassRefPtr.h:39
#8  0x00007ffff3a98445 in WTF::RefPtr&lt;WTF::FunctionImplBase&gt;::~RefPtr (this=0x7fff418e4b50, __in_chrg=&lt;optimized out&gt;) at ../../Source/WTF/wtf/RefPtr.h:55
#9  0x00007ffff3a983c0 in WTF::FunctionBase::~FunctionBase (this=0x7fff418e4b50, __in_chrg=&lt;optimized out&gt;) at ../../Source/WTF/wtf/Functional.h:659
#10 0x00007ffff3a983da in WTF::Function&lt;void ()&gt;::~Function() (this=0x7fff418e4b50, __in_chrg=&lt;optimized out&gt;) at ../../Source/WTF/wtf/Functional.h:689
#11 0x00007ffff3a97884 in WebCore::DiskImageCache::Entry::removeFileThreadStart (entryPtr=0xbd4d90)
    at ../../Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:271
#12 0x00007ffff1eb076d in WTF::threadEntryPoint (contextData=0xbdcc40) at ../../Source/WTF/wtf/Threading.cpp:69
#13 0x00007ffff1eb0cf9 in WTF::wtfThreadEntryPoint (param=0xbb8170) at ../../Source/WTF/wtf/ThreadingPthreads.cpp:195
#14 0x0000003ba4207f33 in start_thread (arg=0x7fff418e5700) at pthread_create.c:309
#15 0x0000003ba3af4ead in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950288</commentid>
    <comment_count>9</comment_count>
      <attachid>216830</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-13 12:09:08 -0800</bug_when>
    <thetext>Comment on attachment 216830
Patch

Attachment 216830 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/22640090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950289</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-13 12:09:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=216830) [details]
&gt; Patch
&gt; 
&gt; Thanks for the review, it&apos;s very helpful! I did not: a) add the PLATFORM(IOS) check (doesn&apos;t the !PLATFORM(MAC) include IOS?) b) change the hash removal to take() - when I did that I started getting asserts in some cases because the entry would have its last ref removed on the last line of DiskImageCache::Entry::removeFileThreadStart, I guess there&apos;s some subtle interaction between HashMap::take and RefCounted that I did not grasp, any ideas?

Ahh, you might be right. Before the RefPtr you&apos;re assigning into can ref the pointer, maybe internally in take the last ref might be going away. I&apos;m not entirely sure, but I think I remember encountering that exact same issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950299</commentid>
    <comment_count>11</comment_count>
      <attachid>216830</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-13 12:25:29 -0800</bug_when>
    <thetext>Comment on attachment 216830
Patch

Attachment 216830 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/22899094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950590</commentid>
    <comment_count>12</comment_count>
      <attachid>216914</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-14 03:52:44 -0800</bug_when>
    <thetext>Created attachment 216914
Patch

Try to fix my hand-editing of the xcode project file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967443</commentid>
    <comment_count>13</comment_count>
      <attachid>221072</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-13 12:19:08 -0800</bug_when>
    <thetext>Created attachment 221072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967444</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-13 12:21:05 -0800</bug_when>
    <thetext>Attachment 221072 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/PlatformEfl.cmake&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;Source/WebCore/loader/cache/MemoryCache.cpp&apos;, u&apos;Source/WebCore/loader/ios/DiskImageCacheClientIOS.h&apos;, u&apos;Source/WebCore/loader/ios/DiskImageCacheIOS.h&apos;, u&apos;Source/WebCore/loader/ios/DiskImageCacheIOS.mm&apos;, u&apos;Source/WebCore/platform/DiskImageCache.h&apos;, u&apos;Source/WebCore/platform/DiskImageCacheClient.h&apos;, u&apos;Source/WebCore/platform/FileSystem.h&apos;, u&apos;Source/WebCore/platform/SharedBuffer.cpp&apos;, u&apos;Source/WebCore/platform/gtk/FileSystemGtk.cpp&apos;, u&apos;Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp&apos;, u&apos;Source/WebCore/platform/posix/FileSystemPOSIX.cpp&apos;, u&apos;Source/WebCore/platform/soup/SharedBufferSoup.cpp&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebDiskImageCacheClientIOS.h&apos;, u&apos;Source/autotools/SetupWebKitFeatures.m4&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitperl/FeatureList.pm&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:106:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:108:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/posix/DiskImageCachePOSIX.cpp:115:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 3 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967479</commentid>
    <comment_count>15</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-01-13 13:51:58 -0800</bug_when>
    <thetext>I&apos;m pretty sure the style issues are false-positives, I think the style checker is misparsing that part of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990560</commentid>
    <comment_count>16</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-03-14 10:44:57 -0700</bug_when>
    <thetext>Ping, how should I move forward with this? I guess one thing would be to revisit the PLATFORM(IOS) bit after the PLATFORM(MAC) changes came through?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990578</commentid>
    <comment_count>17</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-03-14 11:25:54 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Ping, how should I move forward with this? I guess one thing would be to revisit the PLATFORM(IOS) bit after the PLATFORM(MAC) changes came through?

Good question. Is EFL interesting in enabling this soon? If so, we should get a review and probably coordinate with someone on iOS to ensure after landing that it still behaves as expected on iOS. That coordination is the tricky part =).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990580</commentid>
    <comment_count>18</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-03-14 11:27:01 -0700</bug_when>
    <thetext>EFL or GTK*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119310</commentid>
    <comment_count>19</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-08-20 12:06:30 -0700</bug_when>
    <thetext>Closing in favor of bug #148028.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216623</attachid>
            <date>2013-11-11 16:59:35 -0800</date>
            <delta_ts>2013-11-12 05:24:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124167-20131111225933.patch</filename>
            <type>text/plain</type>
            <size>65848</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE4MmM0MWUyZmMxYmQ0
ZjFkZTZiNjA2OWMwZTMzYTk2YTMyYzQ2Mi4uZTA0OTc1NzFiOTg4NGY4NzU3YjgzNGM4ZDE3MmY5
M2E1ZjhiZTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTExLTExICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBNYWtlIERpc2tJbWFnZUNhY2hlIGNyb3NzLXBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaG91bGQgYmUgY292ZXJlZCBieSBleGlz
dGluZyBpbWFnZSB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ciBpcyBleHBlY3RlZAorICAg
ICAgICBmcm9tIHRoZSBvcmlnaW5hbCBJT1MgY29kZSB0aGF0IHdhcyB1cHN0cmVhbWVkLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogYWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiB1c2UgbmV3IGZpbGVzLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6IGFkb3B0IG5ldyBoZWFkZXIgbmFtZS4KKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9EaXNrSW1hZ2VD
YWNoZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VD
YWNoZUlPUy5oLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjppZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6aXNNYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjYWNoZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNr
SW1hZ2VDYWNoZTo6aXNGdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp+
RGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hl
Q2xpZW50SU9TLmguCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZUNsaWVudDo6fkRp
c2tJbWFnZUNhY2hlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDogYWRvcHQgbmV3IGhlYWRlciBuYW1l
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSk6IEdUSysgaW1wbGVtZW50YXRpb24gb2Yg
bmV3IG1ldGhvZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLAorICAgICAgICBjcmVhdGVz
IGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFy
eUZpbGUpOiBkaXR0bywgYnV0IGNyZWF0ZXMgYSBmaWxlLgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OmRpc2tJ
bWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6RW50
cnkpOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6fkVu
dHJ5KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1h
cEludGVybmFsKTogZGl0dG8uIEFsc28gdXNlIGZpbGUgZGVzY3JpcHRvciBkaXJlY3RseSBpbnN0
ZWFkIG9mIFBsYXRmb3JtRmlsZUhhbmRsZQorICAgICAgICBzaW5jZSB0aGlzIGlzIGEgUE9TSVgg
aW1wbGVtZW50YXRpb24sIGFuZCBpdCB3b3VsZCBtYWtlIGxpZmUgaGFyZGVyIHRvIEdUSysgd2hp
Y2ggdXNlcyBoaWdoZXIgbGV2ZWwgb2JqZWN0cworICAgICAgICBhcyBpdHMgUGxhdGZvcm1GaWxl
SGFuZGxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWls
TWVtb3J5TWFwKTogY2xlYW51cCBhZnRlciBmYWlsdXJlLgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRNYXBNZW1vcnkpOiBtYXJrIGJ1ZmZlciBhcyBtYXBwZWQg
YW5kIGNsZWFudXAgb24gc3VjY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6bWFwKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJlYWRpbmcgQVBJ
cyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6OnVubWFwKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2Fj
aGU6OkVudHJ5OjpyZW1vdmVGaWxlKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJl
YWRpbmcgQVBJcyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6RW50cnk6OmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKTogdW5jaGFuZ2VkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmlsZUludGVybmFs
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpz
ZXRUZW1wb3JhcnlGaWxlUGF0aCk6IG5ldyBoZWxwZXIgdXNlZCBieSB0aGUgY29kZSB0aGF0IHVz
ZWQgdG8gYmUgYSBsaWJkaXNwYXRjaAorICAgICAgICBibG9jay4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcFRocmVhZFN0YXJ0KTogZGl0dG8uIFN0YXJ0
cyB0aGUgdGhyZWFkIHRoYXQgbWFwcyB0aGUgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSk6IGRpdHRvLiBDbGVhbnMgdXAgYWZ0ZXIg
ZmlsZSByZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpy
ZW1vdmVGaWxlVGhyZWFkU3RhcnQpOiBkaXR0by4gU3RhcnRzIHRoZSB0aHJlYWQgdGhhdCByZW1v
dmVzIHRoZSBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkRpc2tJbWFn
ZUNhY2hlKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6Ondy
aXRlSXRlbSk6IHBvcnRlZCBhd2F5IGZyb20gbGliZGlzcGF0Y2gvYmxvY2tzIGFuZCBNQUMvSU9T
IHRocmVhZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXpl
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnJlbW92ZUl0
ZW0pOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRl
bSk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjcmVhdGVE
aXJlY3RvcnlJZk5lZWRlZCk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFn
ZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQpOiB1bmNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KTogdXNlIFN0cmluZyBpbnN0ZWFkIG9m
IE5TU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeUZp
bGUpOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogbmV3IG1ldGhv
ZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVj
dG9yeS4KKwogMjAxMy0xMS0xMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtBWF0gQ2xlYW4gdXAgc3RhdGljX2Nhc3Q8PiB0byBjYXN0IGZyb20g
QWNjZXNzaWJpbGl0eU9iamVjdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMWYwNWVmODNmZDc1YmI0NzNiZWNi
ZjFlZGRlMGMzMTViMWYxMWEwLi5jZDk5M2FmMjFlZWRlMTk3OTJjZjZlNjY2ZGY1ZWIzYzc5ZmZj
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMTEtMTEgIEd1c3Rhdm8gTm9y
b25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgorCisgICAgICAgIE1h
a2UgRGlza0ltYWdlQ2FjaGUgY3Jvc3MtcGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUpOiBoYW5kbGUgbmV3IGRpc2sgaW1hZ2UgY3JlYXRpb24gcGFyYW1ldGVyLgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6IGRpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVX
ZWJQcm9jZXNzKTogZGl0dG8uCisKIDIwMTMtMTEtMDkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyIHdoZW4gY29udmVy
dGluZyBhIFN0cmluZyB0byBhIENGVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCA3NzFmZTBjMGVkOTI2NjNlMGU4NmJlZWE0ZmQ4YzU5Yjk2YjcyMjJkLi43MTgzMzQ1M2MyY2M3
YmZkZjI0MWU4Y2M5MjY3NzEzZWU4ZTAwMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTU4ODcsNiArNTg4Nyw3IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBcCkBAIC01OTcyLDYgKzU5NzMsOCBA
QCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGlt
ZUNob29zZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlz
a0ltYWdlQ2FjaGVDbGllbnQuaCBcCiAgICAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwIFwKICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIFwK
ICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCmluZGV4IDEyZDhlMGJhMDdkYzc5ZGYyYTA1YWExNzU2ODNmYmYzNzA5ODVl
MmYuLjM4ODYxMmMzNTc1OWZjZDFhYTcwYWQ1MzUyZTQ2YzY3N2ViZmRhYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0xNjksNiArMTY5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNMb2FkZXJDbGllbnRTb3VwLmNwcAogCisg
ICAgcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAKICAgICBwbGF0Zm9ybS9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCiAgICAgcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVy
UE9TSVguY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwYjdmNjA4YTNjZDAyNjYyYTMzNjQ2NTMxMmJjYTIyNGQ3ODIzZTNm
Li4wNjk4MDczODA3ZWUwNTg1MWYwODc2NDQ1NTgzY2JlZjM5MjIzN2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTEwLDkg
KzM1MTAsNiBAQAogCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgg
Ki87IH07CiAJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFB
NzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcwMEIw
NDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNUM1NjZBQjEyN0Ez
QUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAv
KiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUE1RjlFRjcwMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1h
Z2VDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1RjlFRjZFMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSAqLzsg
fTsKLQkJQTVGOUVGNzExMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUY5RUY2RjEyNjY3
NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNjE0OEE2MjEyRTQxRDNBMDA0NEE3ODQgLyog
RE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhBNjExMkU0MUQzQTAwNDRBNzg0IC8qIERPTUhUTUxL
ZXlnZW5FbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJQTYxNDhBNjcxMkU0MUQ5NDAwNDRBNzg0
IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNjE0OEE2NTEyRTQxRDk0MDA0NEE3ODQgLyogRE9NSFRNTEtleWdl
bkVsZW1lbnQuaCAqLzsgfTsKIAkJQTYxNDhBNjgxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhUTUxL
ZXlnZW5FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTYxNDhBNjYxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50Lm1t
ICovOyB9OwpAQCAtNTgxOSw2ICs1ODE2LDcgQEAKIAkJRUQ1MDFEQzYwQjI0OUYyOTAwQUUxOEQ5
IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi87IH07CiAJ
CUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8q
IENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERUM5ODAyMEFFRDdFMTcw
MDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUVFNzNGNDlGRTM1RDdDRjZGMUM5
N0JBRSAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNDFGRTYzOTM5Q0I4RjkxMTMzRjVDNiAvKiBEaXNrSW1h
Z2VDYWNoZVBPU0lYLmNwcCAqLzsgfTsKIAkJRjEyMTcxRjUxNkE4Q0VEMjAwMDA1M0NBIC8qIFdl
YlZUVEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjEyMTcxRjMxNkE4QkM2MzAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwICovOyB9
OwogCQlGMTIxNzFGNjE2QThDRjBCMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjEyMTcxRjQxNkE4QkM2MzAw
MDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCAqLzsgfTsKIAkJRjI5M0IyN0U1NkMxMTJGMzczRkZG
MjdFIC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2ZVF1
ZXVlLmNwcCAqLzsgfTsKQEAgLTc3MzEsNiArNzcyOSw3IEBACiAJCTMxRkIxQTYzMTIwQTVEM0Yw
MERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMUZCMUE2NDEyMEE1RDNGMDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25F
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRkIxQTZCMTIwQTVENjkwMERD
MDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMjE0MTg3M0YxMUE5NEFCMUVCMURCRTAgLyogRGlza0lt
YWdlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRTkxMDg5MjA4NjAwMEYw
RTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMzFGRjY3REUxOTdCNTczOTNDNDZBQTcgLyogUmVuZGVyTWF0aE1M
U3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVuZGVyTWF0aE1MU3Bh
Y2UuaDsgcGF0aCA9IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMTAyNjgsMTEgKzEwMjY3LDggQEAKIAkJQTVBQkI3
ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGVwUmFu
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RTExNTE1MUE3MDBC
MDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
ZXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUM1NjZBQTEyN0EzQUFE
MDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gS2V5RXZlbnRDb2NvYS5oOyBwYXRo
ID0gY29jb2EvS2V5RXZlbnRDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEtleUV2ZW50Q29jb2EubW07IHBhdGggPSBjb2Nv
YS9LZXlFdmVudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUY5RUY2
RTEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVGOUVGNkYxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFn
ZUNhY2hlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFnZUNh
Y2hlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE2MTQ4QTYxMTJFNDFEM0Ew
MDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxLZXlnZW5FbGVtZW50SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTYxNDhBNjUxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhU
TUxLZXlnZW5FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhU
TUxLZXlnZW5FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE2MTQ4QTY2
MTJFNDFEOTQwMDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxLZXlnZW5FbGVtZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1NjUsNiArMTI1NjEsNyBAQAogCQlEQkZDQjBF
QkZGNUNENzdFQkVCMzUzOTUgLyogUmVuZGVyTWF0aE1MU3BhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVuZGVyTWF0aE1MU3BhY2UuY3BwOyBwYXRoID0gcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFDREZFIC8qIFdlYkNvcmVPYmpDRXh0cmFz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDc2M0JCMTA5OTJDMkM5MDA3NDBCOEUg
LyogbGlieG1sMi5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGlieG1sMi5keWxpYjsg
cGF0aCA9IC91c3IvbGliL2xpYnhtbDIuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CisJCURFNDFGRTYzOTM5Q0I4RjkxMTMzRjVDNiAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlUE9T
SVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTQ5QjJGRjE2NUYyRkM2MDAx
MDMzOEQgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNDlCMzAwMTY1RjJGQzYwMDEwMzM4RCAvKiBNZWRpYUNv
bnRyb2xFbGVtZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFDb250cm9sRWxlbWVudFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURF
NDlCMzA3MTY1RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzA2OSw2ICsxMzA2
Niw3IEBACiAJCUZBNjU0QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTZBMTEwOEFCRUQwMDI2
MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXRoTUxUZXh0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
QTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAgLyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQTcwOTRFQjdEOUE3QUU0MTQ0RjNBMDUgLyogRGlza0ltYWdlQ2FjaGVD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUQxMDU5QzFFQjAw
RDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWF0aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkFCRTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDA2NSw2ICsxNDA2Myw4IEBACiAJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBz
cWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTMyMTQx
ODczRjExQTk0QUIxRUIxREJFMCAvKiBEaXNrSW1hZ2VDYWNoZS5oICovLAorCQkJCUZBNzA5NEVC
N0Q5QTdBRTQxNDRGM0EwNSAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudC5oICovLAogCQkJCTFBMkU2
RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRob3JpemVyLmNwcCAqLywKIAkJCQkxQTIy
NDY0MzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuY3BwICovLAogCQkJCTFBMjI0
NjQ0MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5oICovLApAQCAtMTUwODAsNiAr
MTUwODAsNyBAQAogCQk1MTYwMzAwOTBDQzQyNDU0MDBDOEFDMjUgLyogcG9zaXggKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCURFNDFGRTYzOTM5Q0I4Rjkx
MTMzRjVDNiAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCAqLywKIAkJCQk1MTYwMzAwQTBDQzQy
NTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
cG9zaXg7CkBAIC0yMDI2Niw5ICsyMDI2Nyw2IEBACiAJCUNFNzlENjg2MTdGMjIwRUQwMDgxNUMw
MCAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUE1RjlFRjZFMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSAqLywKLQkJ
CQlBNUY5RUY2RjEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCAqLywKLQkJ
CQlBNUM1NjZBQTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI1NDQ2LDYgKzI1NDQ0LDcgQEAKIAkJCQlGRDMxNjAzRDEyQjAyNjc2MDBDMUEzNTkgLyogQW5h
bHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5MDcwN0U2MTIxOUMwNDMwMEQ5MEU1
MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTJBQTBF
RkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUVFNzNG
NDlGRTM1RDdDRjZGMUM5N0JBRSAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTlBNTI4RTgzMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlv
bkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZFMURBNzAwQkY2MDg4IC8q
IEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTc3Myw3ICsyNTc3
Miw2IEBACiAJCQkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRDY3QjExNTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rp
b25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBRjE5OTgxNTEzRDEzMTAwOERCMEMzIC8q
IERpcmVjdENvbnZvbHZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTY2MEFDMjE4MjhDODQ2
MDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1RjlFRjcwMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRjJENkMxNDQzNUQy
MTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGU2YmY5
OTZkYThlZmRhOWQ3MzExZDRmYmJiNDQwZTE3NmZjOTVlYjUuLjU5NzE3M2YyZjQ0ZjdjZmRjNDIw
ZDM5OWY4Yjg0NWY3MjY1ZmJiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtNTQsNyArNTQsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoRElT
S19JTUFHRV9DQUNIRSkKLSNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUlPUy5oIgorI2luY2x1ZGUg
IkRpc2tJbWFnZUNhY2hlLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNDY5MDQ4NWMwZjVm
NzJhZmEwZTE4ZjliYjY3ZTA0NmRkYmQ1NTQwZC4uZTk5ZWU3NmM3N2VkYmFiZTUzYTlkNGNiYWI2
MTA2Yzg0OWI2NzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0jaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJ
T1MuaCIKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVm
ZmVyLmgiCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9E
aXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNr
SW1hZ2VDYWNoZUNsaWVudElPUy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTkx
MzYzNWU5ZjlmZjQxMjQ2ZmUxYjExMjAwNTNiNTdiZTliZDFmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1MuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TX2gKLSNkZWZpbmUgRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1NfaAotCi0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpICYm
IFBMQVRGT1JNKElPUykKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlz
a0ltYWdlQ2FjaGVDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXNrSW1hZ2VDYWNoZUNsaWVu
dD4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkRpc2tJbWFnZUNhY2hlQ2xpZW50KCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURpc2tJbWFnZUNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5KSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCi0jZW5k
aWYgLy8gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
ZDMxNmI3NjQxM2Y5OTRlNTMzMzJhNGY4Yzg5MzY2YjQzNDExN2M4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
RGlza0ltYWdlQ2FjaGVJT1MuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBEaXNrSW1hZ2VDYWNoZUlPU19oCi0jZGVmaW5lIERpc2tJbWFnZUNh
Y2hlSU9TX2gKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1Mp
Ci0KLSNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdHlwZWRlZiB1bnNpZ25lZCBE
aXNrSW1hZ2VDYWNoZUlkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEdsb2JhbCBkaXNr
IGltYWdlIGNhY2hlIG9iamVjdC4KLWNsYXNzIERpc2tJbWFnZUNhY2hlIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEaXNrSW1hZ2VDYWNoZSk7Ci1wcml2YXRlOgotCi0gICAgLy8gTGlmZXRp
bWUgb2YgdGhpcyBFbnRyeSBhbmQgdGhlIFNoYXJlZEJ1ZmZlciBpdCB3cmFwcyBpcyBtYW5hZ2Vk
IG9uIHRoZSBXZWJUaHJlYWQuCi0gICAgY2xhc3MgRW50cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxF
bnRyeT4gewotICAgIHByaXZhdGU6Ci0gICAgICAgIEVudHJ5KFNoYXJlZEJ1ZmZlciosIERpc2tJ
bWFnZUNhY2hlSWQpOwotCi0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
aXNrSW1hZ2VDYWNoZTo6RW50cnk+IGNyZWF0ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGlza0lt
YWdlQ2FjaGVJZCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEaXNrSW1hZ2VDYWNoZTo6RW50cnkoYnVmZmVyLCBpZCkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgfkVudHJ5KCk7Ci0KLSAgICAgICAgdm9pZCBtYXAoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAg
ICAgICAgdm9pZCB1bm1hcCgpOwotICAgICAgICB2b2lkIHJlbW92ZUZpbGUoKTsKLSAgICAgICAg
dm9pZCBjbGVhckRhdGFXaXRob3V0TWFwcGluZygpOwotCi0gICAgICAgIERpc2tJbWFnZUNhY2hl
SWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0gICAgICAgIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwcGluZzsgfQotICAgICAgICBib29sIGlzTWFwcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tYXBwaW5nICE9IG51bGxwdHI7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgbWFw
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICAgICAgaW50IHdyaXRlVG9GaWxlSW50
ZXJuYWwoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLQotICAgICAgICBTaGFyZWRCdWZmZXIqIG1fYnVm
ZmVyOwotICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIG1faWQ7Ci0gICAgICAgIHVuc2lnbmVkIG1f
c2l6ZTsKLSAgICAgICAgdm9pZCogbV9tYXBwaW5nOwotICAgICAgICBTdHJpbmcgbV9wYXRoOwot
ICAgIH07Ci0KLXB1YmxpYzoKLSAgICBmcmllbmQgRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNh
Y2hlKCk7Ci0gICAgc3RhdGljIGNvbnN0IERpc2tJbWFnZUNhY2hlSWQgaW52YWxpZERpc2tDYWNo
ZUlkID0gMDsKLQotICAgIC8vIFdyaXRlIG91dCBhbiBpdGVtLgotICAgIERpc2tJbWFnZUNhY2hl
SWQgd3JpdGVJdGVtKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci0KLSAgICAvLyBSZW1vdmUg
aXRlbS4KLSAgICB2b2lkIHJlbW92ZUl0ZW0oRGlza0ltYWdlQ2FjaGVJZCk7Ci0KLSAgICAvLyBN
YXBwaW5nIGZvciBhbiBpdGVtLgotICAgIHZvaWQqIGRhdGFGb3JJdGVtKERpc2tJbWFnZUNhY2hl
SWQpOwotCi0gICAgLy8gU2V0dXAgYSBjbGllbnQgZm9yIGNhbGxiYWNrcy4KLSAgICB2b2lkIHNl
dENsaWVudChQYXNzUmVmUHRyPERpc2tJbWFnZUNhY2hlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGll
bnQgPSBjbGllbnQ7IH0KLQotICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9l
bmFibGVkOyB9Ci0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQg
PSBlbmFibGVkOyB9Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtQ2FjaGVTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhpbXVtQ2FjaGVTaXplOyB9Ci0gICAgdm9pZCBzZXRNYXhpbXVtQ2FjaGVTaXpl
KHVuc2lnbmVkIG1heGltdW0pIHsgbV9tYXhpbXVtQ2FjaGVTaXplID0gbWF4aW11bTsgfQotCi0g
ICAgdW5zaWduZWQgbWluaW11bUltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUlt
YWdlU2l6ZTsgfQotICAgIHZvaWQgc2V0TWluaW11bUltYWdlU2l6ZSh1bnNpZ25lZCBtaW5pbXVt
KSB7IG1fbWluaW11bUltYWdlU2l6ZSA9IG1pbmltdW07IH0KLQotICAgIGNvbnN0IFN0cmluZyYg
Y2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlRGlyZWN0b3J5OyB9Ci0KLSAg
ICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgYm9vbCBpc0Z1
bGwoKSBjb25zdCB7IHJldHVybiBtX3NpemUgPj0gbV9tYXhpbXVtQ2FjaGVTaXplOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgRGlza0ltYWdlQ2FjaGUoKTsKLSAgICB+RGlza0ltYWdlQ2FjaGUoKSB7IH0K
LQotICAgIGJvb2wgY3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKTsKLSAgICBEaXNrSW1hZ2VDYWNo
ZUlkIG5leHRBdmFpbGFibGVJZCgpOwotCi0gICAgU3RyaW5nIHRlbXBvcmFyeURpcmVjdG9yeSgp
OwotICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlKCk7Ci0KLSAgICB2b2lkIHVwZGF0ZVNpemUodW5z
aWduZWQgZGVsdGEpOwotCi0gICAgYm9vbCBtX2VuYWJsZWQ7Ci0gICAgdW5zaWduZWQgbV9zaXpl
OwotICAgIHVuc2lnbmVkIG1fbWF4aW11bUNhY2hlU2l6ZTsKLSAgICB1bnNpZ25lZCBtX21pbmlt
dW1JbWFnZVNpemU7Ci0gICAgRGlza0ltYWdlQ2FjaGVJZCBtX25leHRBdmFpbGFibGVJZDsKLSAg
ICBTdHJpbmcgbV9jYWNoZURpcmVjdG9yeTsKLQotICAgIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZUNs
aWVudD4gbV9jbGllbnQ7Ci0gICAgSGFzaE1hcDxEaXNrSW1hZ2VDYWNoZUlkLCBSZWZQdHI8RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5Pj4gbV90YWJsZTsKLQotICAgIE11dGV4IG1fbXV0ZXg7Ci19Owot
Ci0vLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBkaXNrIGltYWdlIGNhY2hlLgotRGlz
a0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCi0K
LSNlbmRpZiAvLyBEaXNrSW1hZ2VDYWNoZUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTk4ZGE2Njc1OWEzN2VjNWQxZWQyMGY5OWE4ZmEyZTFmOTVlNGJhYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0Rpc2tJbWFnZUNhY2hlSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJ
T1MuaCIKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCi0K
LSNpbmNsdWRlICJGaWxlU3lzdGVtSU9TLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1
ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRlICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0jaW5j
bHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EaXNrSW1hZ2VD
YWNoZSYgZGlza0ltYWdlQ2FjaGUoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEaXNr
SW1hZ2VDYWNoZT4gY2FjaGU7Ci0gICAgcmV0dXJuIGNhY2hlOwotfQotCi1EaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OkVudHJ5KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEaXNrSW1hZ2VDYWNoZUlkIGlk
KQotICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9pZChpZCkKLSAgICAsIG1fc2l6ZSgw
KQotICAgICwgbV9tYXBwaW5nKG51bGxwdHIpCi17Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3Vy
cmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7Ci0gICAgQVNTRVJUKG1f
YnVmZmVyKTsKLSAgICBtX2J1ZmZlci0+cmVmKCk7Ci19Ci0KLURpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6fkVudHJ5KCkKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIEFT
U0VSVChXZWJUaHJlYWRJc0xvY2tlZCgpKTsKLSAgICBBU1NFUlQoIW1fYnVmZmVyKTsKLSAgICBB
U1NFUlQoIW1fbWFwcGluZyk7Ci19Ci0KLWJvb2wgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQVNTRVJUKG1fYnVmZmVyKTsKLSAg
ICBBU1NFUlQoIW1fbWFwcGluZyk7Ci0KLSAgICBtX3BhdGggPSBwYXRoOwotICAgIG1fc2l6ZSA9
IG1fYnVmZmVyLT5zaXplKCk7Ci0KLSAgICAvLyBPcGVuIHRoZSBmaWxlIGZvciByZWFkaW5nIGFu
ZCB3cml0aW5nLgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBvcGVuKG1fcGF0aC51
dGY4KCkuZGF0YSgpLCBPX0NSRUFUIHwgT19SRFdSIHwgT19UUlVOQywgc3RhdGljX2Nhc3Q8bW9k
ZV90PigwNjAwKSk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoZSBmaWxlLgotICAgIGlm
ICh3cml0ZVRvRmlsZUludGVybmFsKGhhbmRsZSkgPT0gLTEpIHsKLSAgICAgICAgY2xvc2VGaWxl
KGhhbmRsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIC8vIFNlZWsgYmFjayB0byB0aGUgYmVnaW5uaW5nLgotICAgIGlm
IChzZWVrRmlsZShoYW5kbGUsIDAsIFNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgewotICAgICAg
ICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gUGVyZm9ybSBtZW1vcnkgbWFwcGluZyBm
b3IgcmVhZGluZy4KLSAgICAvLyBOT1RFOiBUaGlzIG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhl
IG9wZW4oKSBhYm92ZSwgd2hpY2ggbXVzdCBhbHNvIG9wZW4gZm9yIHJlYWRpbmcuCi0gICAgbV9t
YXBwaW5nID0gbW1hcChudWxscHRyLCBtX3NpemUsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgaGFu
ZGxlLCAwKTsKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICBpZiAobV9tYXBwaW5nID09IE1B
UF9GQUlMRUQpIHsKLSAgICAgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6
IG1hcHBpbmcgZmFpbGVkICglZCk6ICglcykiLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKLSAg
ICAgICAgbV9tYXBwaW5nID0gbnVsbHB0cjsKLSAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZv
aWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXAoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgQVNTRVJUKCFtX21hcHBpbmcpOwotICAgIERpc2tJbWFn
ZUNhY2hlOjpFbnRyeSogdGhpc0VudHJ5ID0gdGhpczsKLQotICAgIGJvb2wgZmlsZU1hcHBlZCA9
IG1hcEludGVybmFsKHBhdGgpOwotICAgIGlmICghZmlsZU1hcHBlZCkgewotICAgICAgICAvLyBO
b3RpZnkgdGhlIGJ1ZmZlciBpbiB0aGUgY2FzZSBvZiBhIGZhaWxlZCBtYXBwaW5nLgotICAgICAg
ICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgICAgIG1fYnVmZmVyLT5mYWlsZWRNZW1vcnlNYXAo
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLT5kZXJlZigpOwotICAgICAgICAgICAgbV9idWZmZXIg
PSAwOwotICAgICAgICAgICAgdGhpc0VudHJ5LT5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE5vdGlmeSB0aGUgYnVmZmVyIGluIHRoZSBjYXNl
IG9mIGEgc3VjY2Vzc2Z1bCBtYXBwaW5nLgotICAgIC8vIFRoaXMgc2hvdWxkIGhhcHBlbiBvbiB0
aGUgV2ViVGhyZWFkIGJlY2F1c2UgdGhpcyBpcyBiZWluZyBydW4KLSAgICAvLyBhc3luY2hyb25v
dXNseSBpbnNpZGUgYSBkaXNwYXRjaCBxdWV1ZS4KLSAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAg
ICAgbV9idWZmZXItPm1hcmtBc01lbW9yeU1hcHBlZCgpOwotICAgICAgICBtX2J1ZmZlci0+ZGVy
ZWYoKTsKLSAgICAgICAgbV9idWZmZXIgPSAwOwotICAgICAgICB0aGlzRW50cnktPmRlcmVmKCk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp1bm1hcCgpCi17Ci0g
ICAgaWYgKCFtX21hcHBpbmcpIHsKLSAgICAgICAgQVNTRVJUKCFtX3NpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG11bm1hcChtX21hcHBpbmcsIG1fc2l6ZSkgPT0gLTEp
Ci0gICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBtdW5tYXAgYSBt
ZW1vcnkgbWFwcGVkIGZpbGUgd2l0aCBpZCAoJWQpIiwgbV9pZCk7Ci0KLSAgICBtX21hcHBpbmcg
PSBudWxscHRyOwotICAgIG1fc2l6ZSA9IDA7Ci19Ci0KLXZvaWQgRGlza0ltYWdlQ2FjaGU6OkVu
dHJ5OjpyZW1vdmVGaWxlKCkKLXsKLSAgICBBU1NFUlQoIW1fbWFwcGluZyk7Ci0gICAgQVNTRVJU
KCFtX3NpemUpOwotCi0gICAgaWYgKCFkZWxldGVGaWxlKG1fcGF0aCkpCi0gICAgICAgIExPR19F
UlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBkZWxldGUgbWVtb3J5IG1hcHBlZCBmaWxl
ICglcykiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgRGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjpjbGVhckRhdGFXaXRob3V0TWFwcGluZygpCi17Ci0gICAgQVNTRVJUKCFtX21hcHBp
bmcpOwotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgbV9idWZmZXItPmRlcmVmKCk7Ci0gICAg
bV9idWZmZXIgPSAwOwotfQotCi1pbnQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmls
ZUludGVybmFsKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0gICAgQVNTRVJUKG1fYnVm
ZmVyKTsKLSAgICBpbnQgdG90YWxCeXRlc1dyaXR0ZW4gPSAwOwotCi0gICAgY29uc3QgY2hhciog
c2VnbWVudCA9IG51bGxwdHI7Ci0gICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOwotICAgIHdoaWxl
ICh1bnNpZ25lZCBsZW5ndGggPSBtX2J1ZmZlci0+Z2V0U29tZURhdGEoc2VnbWVudCwgcG9zaXRp
b24pKSB7Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZVRvRmlsZShoYW5kbGUsIHNl
Z21lbnQsIGxlbmd0aCk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEpCi0gICAgICAg
ICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gYnl0ZXNXcml0
dGVuOwotICAgICAgICBwb3NpdGlvbiArPSBsZW5ndGg7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRv
dGFsQnl0ZXNXcml0dGVuOwotfQotCi0KLURpc2tJbWFnZUNhY2hlOjpEaXNrSW1hZ2VDYWNoZSgp
Ci0gICAgOiBtX2VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX3NpemUoMCkKLSAgICAsIG1fbWF4aW11
bUNhY2hlU2l6ZSgxMDAgKiAxMDI0ICogMTAyNCkKLSAgICAsIG1fbWluaW11bUltYWdlU2l6ZSgx
MDAgKiAxMDI0KQotICAgICwgbV9uZXh0QXZhaWxhYmxlSWQoRGlza0ltYWdlQ2FjaGU6OmludmFs
aWREaXNrQ2FjaGVJZCArIDEpCi17Ci19Ci0KLURpc2tJbWFnZUNhY2hlSWQgRGlza0ltYWdlQ2Fj
aGU6OndyaXRlSXRlbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaXRlbSkKLXsKLSAgICBpZiAo
IWlzRW5hYmxlZCgpIHx8ICFjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgpKQotICAgICAgICByZXR1
cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKLQotICAgIC8vIFdlIGFyZSBh
bHJlYWR5IGZ1bGwsIGNhbm5vdCBhZGQgYW55dGhpbmcgdW50aWwgc29tZXRoaW5nIGlzIHJlbW92
ZWQuCi0gICAgaWYgKGlzRnVsbCgpKSB7Ci0gICAgICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRp
c2tJbWFnZUNhY2hlOiBjb3VsZCBub3QgcHJvY2VzcyBhbiBpdGVtIGJlY2F1c2UgdGhlIGNhY2hl
IHdhcyBmdWxsIGF0ICglZCkuIFRoZSBcIm1heFwiIGJlaW5nICglZCkiLCBtX3NpemUsIG1fbWF4
aW11bUNhY2hlU2l6ZSk7Ci0gICAgICAgIHJldHVybiBEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERp
c2tDYWNoZUlkOwotICAgIH0KLQotICAgIC8vIENyZWF0ZSBhbiBlbnRyeS4KLSAgICBEaXNrSW1h
Z2VDYWNoZUlkIGlkID0gbmV4dEF2YWlsYWJsZUlkKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaXRlbTsKLSAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRy
eSA9IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgaWQpOwotICAg
IG1fdGFibGUuYWRkKGlkLCBlbnRyeSk7Ci0KLSAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmls
ZSBwYXRoLgotICAgIFN0cmluZyBwYXRoID0gdGVtcG9yYXJ5RmlsZSgpOwotICAgIExPRyhEaXNr
SW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBjcmVhdGluZyBlbnRyeSAoJWQpIGF0ICglcyki
LCBpZCwgcGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAocGF0aC5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7Ci0KLSAgICAvLyBU
aGUgbGlmZXRpbWUgb2YgdGhlIEVudHJ5IGlzIGhhbmRsZWQgb24gdGhlIFdlYlRocmVhZC4KLSAg
ICAvLyBCZWZvcmUgd2Ugc2VuZCB0byBhIGRpc3BhdGNoIHF1ZXVlIHdlIG5lZWQgdG8gcmVmIHNv
Ci0gICAgLy8gdGhhdCB3ZSBhcmUgc3VyZSB0aGUgb2JqZWN0IHN0aWxsIGV4aXN0cy4gVGhpcyBj
YWxsCi0gICAgLy8gaXMgYmFsYW5jZWQgaW4gdGhlIFdlYlRocmVhZFJ1biBpbnNpZGUgb2YgRW50
cnk6Om1hcC4KLSAgICAvLyBvciB0aGUgZWFybHkgcmV0dXJuIGluIHRoaXMgZGlzcGF0Y2guCi0g
ICAgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KiBsb2NhbEVudHJ5Rm9yQmxvY2sgPSBlbnRyeS5nZXQo
KTsKLSAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPnJlZigpOwotCi0gICAgLy8gTWFwIHRvIGRpc2sg
YXN5bmNocm9ub3VzbHkuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9x
dWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAgICAgICAgLy8g
VGhlIGNhY2hlIGJlY2FtZSBmdWxsIHNpbmNlIHRoZSB0aW1lIHdlIHdlcmUgYWRkZWQgdG8gdGhl
IHF1ZXVlLiBEb24ndCBtYXAuCi0gICAgICAgIGlmIChkaXNrSW1hZ2VDYWNoZSgpLmlzRnVsbCgp
KSB7Ci0gICAgICAgICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgICAgICAgICBsb2NhbEVu
dHJ5Rm9yQmxvY2stPmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKCk7Ci0gICAgICAgICAgICAgICAg
bG9jYWxFbnRyeUZvckJsb2NrLT5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPm1hcChw
YXRoKTsKLQotICAgICAgICAvLyBVcGRhdGUgdGhlIHNpemUgb24gYSBzdWNjZXNzZnVsIG1hcHBp
bmcuCi0gICAgICAgIGlmIChsb2NhbEVudHJ5Rm9yQmxvY2stPmlzTWFwcGVkKCkpCi0gICAgICAg
ICAgICBkaXNrSW1hZ2VDYWNoZSgpLnVwZGF0ZVNpemUobG9jYWxFbnRyeUZvckJsb2NrLT5zaXpl
KCkpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGlkOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hl
Ojp1cGRhdGVTaXplKHVuc2lnbmVkIGRlbHRhKQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7Ci0gICAgbV9zaXplICs9IGRlbHRhOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpy
ZW1vdmVJdGVtKERpc2tJbWFnZUNhY2hlSWQgaWQpCi17Ci0gICAgTE9HKERpc2tJbWFnZUNhY2hl
LCAiRGlza0ltYWdlQ2FjaGU6IHJlbW92ZUl0ZW0gKCVkKSIsIGlkKTsKLSAgICBSZWZQdHI8RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0KGlkKTsKLSAgICBtX3RhYmxl
LnJlbW92ZShpZCk7Ci0gICAgaWYgKCFlbnRyeS0+aXNNYXBwZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgdXBkYXRlU2l6ZSgtKGVudHJ5LT5zaXplKCkpKTsKLQotICAgIERpc2tJbWFnZUNh
Y2hlOjpFbnRyeSAqbG9jYWxFbnRyeUZvckJsb2NrID0gZW50cnkuZ2V0KCk7Ci0gICAgbG9jYWxF
bnRyeUZvckJsb2NrLT5yZWYoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAg
ICBsb2NhbEVudHJ5Rm9yQmxvY2stPnVubWFwKCk7Ci0gICAgICAgIGxvY2FsRW50cnlGb3JCbG9j
ay0+cmVtb3ZlRmlsZSgpOwotICAgICAgICBXZWJUaHJlYWRSdW4oXnsgbG9jYWxFbnRyeUZvckJs
b2NrLT5kZXJlZigpOyB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCogRGlza0ltYWdlQ2FjaGU6OmRh
dGFGb3JJdGVtKERpc2tJbWFnZUNhY2hlSWQgaWQpCi17Ci0gICAgQVNTRVJUKGlkKTsKLQotICAg
IFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGVudHJ5ID0gbV90YWJsZS5nZXQoaWQpOwot
ICAgIEFTU0VSVChlbnRyeS0+aXNNYXBwZWQoKSk7Ci0gICAgcmV0dXJuIGVudHJ5LT5kYXRhKCk7
Ci19Ci0KLWJvb2wgRGlza0ltYWdlQ2FjaGU6OmNyZWF0ZURpcmVjdG9yeUlmTmVlZGVkKCkKLXsK
LSAgICBpZiAoIW1fY2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgbV9jYWNoZURpcmVjdG9yeSA9IHRlbXBvcmFyeURpcmVjdG9yeSgpOwotICAgIExP
RyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBDcmVhdGVkIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgKCVzKSIsIG1fY2FjaGVEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKG1f
Y2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VD
YWNoZTogY291bGQgbm90IGNyZWF0ZSBjYWNoZSBkaXJlY3RvcnkiKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRp
ZENyZWF0ZURpc2tJbWFnZUNhY2hlRGlyZWN0b3J5KG1fY2FjaGVEaXJlY3RvcnkpOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLURpc2tJbWFnZUNhY2hlSWQgRGlza0ltYWdlQ2FjaGU6Om5leHRB
dmFpbGFibGVJZCgpCi17Ci0gICAgcmV0dXJuIG1fbmV4dEF2YWlsYWJsZUlkKys7Ci19Ci0KLVN0
cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmlu
ZyAqdGVtcERpc2tDYWNoZURpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIkRp
c2tJbWFnZUNhY2hlIik7Ci0gICAgaWYgKCF0ZW1wRGlza0NhY2hlRGlyZWN0b3J5KQotICAgICAg
ICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5
IGRpcmVjdG9yeS4iKTsKLQotICAgIHJldHVybiB0ZW1wRGlza0NhY2hlRGlyZWN0b3J5OwotfQot
Ci1TdHJpbmcgRGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeUZpbGUoKQotewotICAgIE5TU3RyaW5n
ICp0ZW1wRmlsZSA9IGNyZWF0ZVRlbXBvcmFyeUZpbGUobV9jYWNoZURpcmVjdG9yeSwgQCJ0bXAi
KTsKLSAgICBpZiAoIXRlbXBGaWxlKQotICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hl
OiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuIik7Ci0KLSAgICByZXR1cm4gdGVt
cEZpbGU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShE
SVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGlza0ltYWdlQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjI3ZWZlMzc0YjgwNTUyOTkxNTVjMTEwOTQy
YTRkNzkzN2U0NzE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGlza0ltYWdlQ2FjaGUuaApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RGlza0ltYWdlQ2FjaGVfaAorI2RlZmluZSBEaXNrSW1hZ2VDYWNoZV9oCisKKyNpZiBFTkFCTEUo
RElTS19JTUFHRV9DQUNIRSkKKworI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlQ2xpZW50LmgiCisj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K3R5cGVkZWYgdW5zaWduZWQgRGlza0ltYWdlQ2FjaGVJZDsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBHbG9iYWwgZGlzayBpbWFnZSBjYWNoZSBvYmplY3QuCitjbGFzcyBEaXNrSW1hZ2VD
YWNoZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlza0ltYWdlQ2FjaGUpOworcHJpdmF0
ZToKKworICAgIC8vIExpZmV0aW1lIG9mIHRoaXMgRW50cnkgYW5kIHRoZSBTaGFyZWRCdWZmZXIg
aXQgd3JhcHMgYXJlIG1hbmFnZWQgaW4gdGhlIG1haW4gdGhyZWFkLgorICAgIGNsYXNzIEVudHJ5
IDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnk+IHsKKyAgICBwcml2YXRlOgorICAgICAgICBFbnRy
eShTaGFyZWRCdWZmZXIqLCBEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIHB1YmxpYzoKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBjcmVhdGUoU2hhcmVk
QnVmZmVyKiBidWZmZXIsIERpc2tJbWFnZUNhY2hlSWQgaWQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KGJ1ZmZlciwgaWQp
KTsKKyAgICAgICAgfQorCisgICAgICAgIH5FbnRyeSgpOworCisgICAgICAgIHZvaWQgbWFwKCk7
CisgICAgICAgIHZvaWQgdW5tYXAoKTsKKyAgICAgICAgdm9pZCByZW1vdmVGaWxlKCk7CisgICAg
ICAgIHZvaWQgY2xlYXJEYXRhV2l0aG91dE1hcHBpbmcoKTsKKworICAgICAgICBEaXNrSW1hZ2VD
YWNoZUlkIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgICAgICB1bnNpZ25lZCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX21hcHBpbmc7IH0KKyAgICAgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwcGluZyAhPSBudWxscHRyOyB9CisgICAgICAgIHZvaWQgc2V0VGVtcG9yYXJ5Rmls
ZVBhdGgoY29uc3QgU3RyaW5nJik7CisKKyAgICAgICAgc3RhdGljIHZvaWQgbWFwVGhyZWFkU3Rh
cnQodm9pZCopOworICAgICAgICBzdGF0aWMgdm9pZCByZW1vdmVGaWxlVGhyZWFkU3RhcnQodm9p
ZCopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtYXBJbnRlcm5hbCgpOworICAgICAg
ICB2b2lkIGNhbmNlbE1hcCgpOworCisjaWYgT1MoVU5JWCkKKyAgICAgICAgaW50IHdyaXRlVG9G
aWxlSW50ZXJuYWwoaW50IGZkKTsKKyNlbmRpZgorCisgICAgICAgIHZvaWQgZGlkRmFpbE1lbW9y
eU1hcCgpOworICAgICAgICB2b2lkIGRpZE1hcE1lbW9yeSgpOworICAgICAgICB2b2lkIGRpZFJl
bW92ZUZpbGUoKTsKKworICAgICAgICBTaGFyZWRCdWZmZXIqIG1fYnVmZmVyOworICAgICAgICBE
aXNrSW1hZ2VDYWNoZUlkIG1faWQ7CisgICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICAgICAg
dm9pZCogbV9tYXBwaW5nOworICAgICAgICBTdHJpbmcgbV9wYXRoOworICAgIH07CisKK3B1Ymxp
YzoKKyAgICBmcmllbmQgRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7CisgICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPERpc2tJbWFnZUNhY2hlPjsKKyAgICBzdGF0aWMgY29u
c3QgRGlza0ltYWdlQ2FjaGVJZCBpbnZhbGlkRGlza0NhY2hlSWQgPSAwOworCisgICAgLy8gV3Jp
dGUgb3V0IGFuIGl0ZW0uCisgICAgRGlza0ltYWdlQ2FjaGVJZCB3cml0ZUl0ZW0oUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+KTsKKworICAgIC8vIFJlbW92ZSBpdGVtLgorICAgIHZvaWQgcmVtb3Zl
SXRlbShEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIC8vIE1hcHBpbmcgZm9yIGFuIGl0ZW0uCisg
ICAgdm9pZCogZGF0YUZvckl0ZW0oRGlza0ltYWdlQ2FjaGVJZCk7CisKKyAgICAvLyBTZXR1cCBh
IGNsaWVudCBmb3IgY2FsbGJhY2tzLgorICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8RGlz
a0ltYWdlQ2FjaGVDbGllbnQ+IGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAg
Ym9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworICAgIHVu
c2lnbmVkIG1heGltdW1DYWNoZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1DYWNoZVNp
emU7IH0KKyAgICB2b2lkIHNldE1heGltdW1DYWNoZVNpemUodW5zaWduZWQgbWF4aW11bSkgeyBt
X21heGltdW1DYWNoZVNpemUgPSBtYXhpbXVtOyB9CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW1h
Z2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtSW1hZ2VTaXplOyB9CisgICAgdm9pZCBz
ZXRNaW5pbXVtSW1hZ2VTaXplKHVuc2lnbmVkIG1pbmltdW0pIHsgbV9taW5pbXVtSW1hZ2VTaXpl
ID0gbWluaW11bTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVEaXJlY3Rvcnk7IH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIGlzRnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZSA+PSBtX21heGltdW1DYWNoZVNpemU7IH0KKworcHJpdmF0ZToKKyAgICBEaXNrSW1hZ2VD
YWNoZSgpOworICAgIH5EaXNrSW1hZ2VDYWNoZSgpIHsgfQorCisgICAgYm9vbCBjcmVhdGVEaXJl
Y3RvcnlJZk5lZWRlZCgpOworICAgIERpc2tJbWFnZUNhY2hlSWQgbmV4dEF2YWlsYWJsZUlkKCk7
CisKKyAgICBTdHJpbmcgdGVtcG9yYXJ5RGlyZWN0b3J5KCk7CisgICAgU3RyaW5nIHRlbXBvcmFy
eUZpbGUoKTsKKworICAgIHZvaWQgdXBkYXRlU2l6ZSh1bnNpZ25lZCBkZWx0YSk7CisKKyAgICBi
b29sIG1fZW5hYmxlZDsKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgdW5zaWduZWQgbV9tYXhp
bXVtQ2FjaGVTaXplOworICAgIHVuc2lnbmVkIG1fbWluaW11bUltYWdlU2l6ZTsKKyAgICBEaXNr
SW1hZ2VDYWNoZUlkIG1fbmV4dEF2YWlsYWJsZUlkOworICAgIFN0cmluZyBtX2NhY2hlRGlyZWN0
b3J5OworCisgICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlQ2xpZW50PiBtX2NsaWVudDsKKyAgICBI
YXNoTWFwPERpc2tJbWFnZUNhY2hlSWQsIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+PiBt
X3RhYmxlOworCisgICAgTXV0ZXggbV9tdXRleDsKK307CisKKy8vIEZ1bmN0aW9uIHRvIG9idGFp
biB0aGUgZ2xvYmFsIGRpc2sgaW1hZ2UgY2FjaGUuCitEaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdl
Q2FjaGUoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCisKKyNlbmRpZiAvLyBEaXNrSW1hZ2VDYWNoZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTdh
M2EwZGExMjQ4ZWZiY2MwYjhjZmI0MzAzMTc5MWI2NTU1MzQyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGVDbGllbnQuaApAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaXNrSW1hZ2VDYWNoZUNsaWVudF9oCisjZGVm
aW5lIERpc2tJbWFnZUNhY2hlQ2xpZW50X2gKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hF
KQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXNrSW1hZ2VDYWNoZUNs
aWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERpc2tJbWFnZUNhY2hlQ2xpZW50PiB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+RGlza0ltYWdlQ2FjaGVDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRGlza0ltYWdlQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnkpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShESVNLX0lNQUdFX0NBQ0hFKQorCisjZW5kaWYgLy8gRGlza0ltYWdlQ2FjaGVDbGllbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IGZhMDMzZWRjNDI4MDQyY2M0NTJm
ZTZlZDU2NGRlODdjYmU1ZDc1ZDUuLjBmYWQ0NmRlNjQxNzZlODU5ZjRmMzM3NGQzNTdhYzA0YTJj
ODAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE2NCw2ICsxNjQs
OCBAQCBpbmxpbmUgZG91YmxlIGludmFsaWRGaWxlVGltZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKAogaW5saW5lIGJvb2wgaXNWYWxpZEZpbGVUaW1l
KGRvdWJsZSB0aW1lKSB7IHJldHVybiBzdGQ6OmlzZmluaXRlKHRpbWUpOyB9CiAKIC8vIFByZWZp
eCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBm
dWxsIHBhdGguCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cHJlZml4KTsKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgc3ViRGly
ZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByZWZpeCk7CiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUo
Y29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKIHZvaWQg
Y2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAKaW5kZXggNTU4N2FhM2Q2NWUzMTM3NTg3ZjI0NGJmYWE3Mzc2OTY4NjM5
ZWEwOC4uMDI5Y2FiNzZiYmNiNjMzZDAyYWJhNTE4NjgxYzFhOGQ2NjMzZjkyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiAjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FD
SEUpCi0jaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJT1MuaCIKKyNpbmNsdWRlICJEaXNrSW1hZ2VD
YWNoZS5oIgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggMjdjNGFiMDQ1OGVkNzdiNDVl
ZWI2MzBiOWY2ODIxMTMxMWJlYTAxNi4uZTMwNTYzZjVmOGNmM2ZjODY4YWIzYmQ4NDVjYmJkZDRj
OGM1MzQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0
ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3Rr
LmNwcApAQCAtMjY5LDYgKzI2OSwyOSBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJp
ZXM7CiB9CiAKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
cmVmaXgpCit7CisgICAgR093blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIl
cyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKSk7CisgICAgR093blB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxl
bmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0
cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdl
dCgpKSk7CisKKyAgICBpZiAoIWdfZmlsZV9tYWtlX2RpcmVjdG9yeV93aXRoX3BhcmVudHMoZmls
ZS5nZXQoKSwgMCwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tVVRGOCh0ZW1wUGF0aC5nZXQoKSk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyYgcHJlZml4KQorewor
ICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZp
eC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSkpOworICAgIEdPd25QdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUobG9jYXRp
b24udXRmOCgpLmRhdGEoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBHUmVmUHRyPEdG
aWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkp
KTsKKworICAgIEdSZWZQdHI8R0ZpbGVPdXRwdXRTdHJlYW0+IG91dHB1dFN0cmVhbSA9IGdfZmls
ZV9jcmVhdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKKyAgICBpZiAo
IW91dHB1dFN0cmVhbSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKK30KKwogU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsK
ICAgICBHT3duUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVm
aXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFn
ZUNhY2hlUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdl
Q2FjaGVQT1NJWC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEzYTg0MzIyOGZkZmMzNmJjZWQyN2YwY2Y4MTFk
ZDRmZTMzNDBhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwCkBAIC0wLDAgKzEsMzU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKKworI2lmIEVOQUJMRShESVNLX0lNQUdF
X0NBQ0hFKSAmJiBPUyhVTklYKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPGVy
cm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1
ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3Rk
Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0Rpc2tJbWFnZUNhY2hlJiBkaXNrSW1hZ2VDYWNoZSgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPERpc2tJbWFnZUNhY2hlPiBjYWNoZTsKKyAgICByZXR1cm4gY2Fj
aGU7Cit9CisKK0Rpc2tJbWFnZUNhY2hlOjpFbnRyeTo6RW50cnkoU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIERpc2tJbWFnZUNhY2hlSWQgaWQpCisgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgLCBt
X2lkKGlkKQorICAgICwgbV9zaXplKDApCisgICAgLCBtX21hcHBpbmcobnVsbHB0cikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgbV9i
dWZmZXItPnJlZigpOworfQorCitEaXNrSW1hZ2VDYWNoZTo6RW50cnk6On5FbnRyeSgpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICBB
U1NFUlQoIW1fbWFwcGluZyk7Cit9CisKK2Jvb2wgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBJ
bnRlcm5hbCgpCit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBBU1NFUlQoIW1fbWFwcGlu
Zyk7CisKKyAgICBtX3NpemUgPSBtX2J1ZmZlci0+c2l6ZSgpOworCisgICAgLy8gT3BlbiB0aGUg
ZmlsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4KKyAgICBpbnQgZmQgPSBvcGVuKG1fcGF0aC51
dGY4KCkuZGF0YSgpLCBPX0NSRUFUIHwgT19SRFdSIHwgT19UUlVOQywgc3RhdGljX2Nhc3Q8bW9k
ZV90PigwNjAwKSk7CisgICAgaWYgKGZkID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGUgZmlsZS4KKyAgICBpZiAod3JpdGVUb0ZpbGVJ
bnRlcm5hbChmZCkgPT0gLTEpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBkZWxldGVG
aWxlKG1fcGF0aCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBTZWVr
IGJhY2sgdG8gdGhlIGJlZ2lubmluZy4KKyAgICBpZiAobHNlZWsoZmQsIDAsIFNFRUtfU0VUKSA9
PSAtMSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFBlcmZvcm0gbWVtb3J5IG1h
cHBpbmcgZm9yIHJlYWRpbmcuCisgICAgLy8gTk9URTogVGhpcyBtdXN0IG5vdCBjb25mbGljdCB3
aXRoIHRoZSBvcGVuKCkgYWJvdmUsIHdoaWNoIG11c3QgYWxzbyBvcGVuIGZvciByZWFkaW5nLgor
ICAgIG1fbWFwcGluZyA9IG1tYXAobnVsbHB0ciwgbV9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFS
RUQsIGZkLCAwKTsKKyAgICBjbG9zZShmZCk7CisgICAgaWYgKG1fbWFwcGluZyA9PSBNQVBfRkFJ
TEVEKSB7CisgICAgICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBtYXBw
aW5nIGZhaWxlZCAoJWQpOiAoJXMpIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
IG1fbWFwcGluZyA9IG51bGxwdHI7CisgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkRmFpbE1lbW9yeU1hcCgpCit7CisgICAgbV9idWZmZXIt
PmZhaWxlZE1lbW9yeU1hcCgpOworICAgIG1fYnVmZmVyLT5kZXJlZigpOworICAgIG1fYnVmZmVy
ID0gMDsKKyAgICB0aGlzLT5kZXJlZigpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6ZGlkTWFwTWVtb3J5KCkKK3sKKyAgICBtX2J1ZmZlci0+bWFya0FzTWVtb3J5TWFwcGVkKCk7
CisgICAgbV9idWZmZXItPmRlcmVmKCk7CisgICAgbV9idWZmZXIgPSAwOworICAgIHRoaXMtPmRl
cmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXAoKQoreworICAgIEFT
U0VSVCghbV9wYXRoLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBBU1NF
UlQoIW1fbWFwcGluZyk7CisKKyAgICBib29sIGZpbGVNYXBwZWQgPSBtYXBJbnRlcm5hbCgpOwor
ICAgIGlmICghZmlsZU1hcHBlZCkgeworICAgICAgICAvLyBOb3RpZnkgdGhlIGJ1ZmZlciBpbiB0
aGUgY2FzZSBvZiBhIGZhaWxlZCBtYXBwaW5nLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKGJp
bmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkRmFpbE1lbW9yeU1hcCwgdGhpcykpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm90aWZ5IHRoZSBidWZmZXIgaW4gdGhlIGNh
c2Ugb2YgYSBzdWNjZXNzZnVsIG1hcHBpbmcuCisgICAgLy8gVGhpcyBzaG91bGQgaGFwcGVuIG9u
IHRoZSBtYWluIHRocmVhZCBiZWNhdXNlIHRoaXMgaXMgYmVpbmcgcnVuCisgICAgLy8gYXN5bmNo
cm9ub3VzbHkgaW5zaWRlIGEgZGlzcGF0Y2ggcXVldWUuCisgICAgY2FsbE9uTWFpblRocmVhZChi
aW5kKCZEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZE1hcE1lbW9yeSwgdGhpcykpOworfQorCit2
b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6dW5tYXAoKQoreworICAgIGlmICghbV9tYXBwaW5n
KSB7CisgICAgICAgIEFTU0VSVCghbV9zaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChtdW5tYXAobV9tYXBwaW5nLCBtX3NpemUpID09IC0xKQorICAgICAgICBMT0dfRVJS
T1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgbXVubWFwIGEgbWVtb3J5IG1hcHBlZCBmaWxl
IHdpdGggaWQgKCVkKSIsIG1faWQpOworCisgICAgbV9tYXBwaW5nID0gbnVsbHB0cjsKKyAgICBt
X3NpemUgPSAwOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6cmVtb3ZlRmlsZSgp
Cit7CisgICAgQVNTRVJUKCFtX21hcHBpbmcpOworICAgIEFTU0VSVCghbV9zaXplKTsKKworICAg
IGlmICghZGVsZXRlRmlsZShtX3BhdGgpKQorICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNh
Y2hlOiBDb3VsZCBub3QgZGVsZXRlIG1lbW9yeSBtYXBwZWQgZmlsZSAoJXMpIiwgbV9wYXRoLnV0
ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2xlYXJEYXRh
V2l0aG91dE1hcHBpbmcoKQoreworICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKKyAgICBBU1NFUlQo
bV9idWZmZXIpOworICAgIG1fYnVmZmVyLT5kZXJlZigpOworICAgIG1fYnVmZmVyID0gMDsKK30K
KworaW50IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6d3JpdGVUb0ZpbGVJbnRlcm5hbChpbnQgZmQp
Cit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBpbnQgdG90YWxCeXRlc1dyaXR0ZW4gPSAw
OworCisgICAgY29uc3QgY2hhciogc2VnbWVudCA9IG51bGxwdHI7CisgICAgdW5zaWduZWQgcG9z
aXRpb24gPSAwOworICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBtX2J1ZmZlci0+Z2V0U29t
ZURhdGEoc2VnbWVudCwgcG9zaXRpb24pKSB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3
cml0ZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHNlZ21lbnQpLCBsZW5ndGgpOworICAg
ICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisg
ICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgcG9zaXRp
b24gKz0gbGVuZ3RoOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjsKK30K
Kwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNldFRlbXBvcmFyeUZpbGVQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3BhdGggPSBwYXRoOworfQorCit2b2lkIERpc2tJbWFn
ZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKCkKK3sKKyAgICBjbGVhckRhdGFXaXRob3V0TWFwcGlu
ZygpOworICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBU
aHJlYWRTdGFydCh2b2lkKiBlbnRyeVB0cikKK3sKKyAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkq
IGVudHJ5ID0gc3RhdGljX2Nhc3Q8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Kj4oZW50cnlQdHIpOwor
CisgICAgaWYgKGRpc2tJbWFnZUNhY2hlKCkuaXNGdWxsKCkpIHsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChiaW5kKCZEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNhbmNlbE1hcCwgZW50cnkpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVudHJ5LT5tYXAoKTsKKworICAgIC8vIFVw
ZGF0ZSB0aGUgc2l6ZSBvbiBhIHN1Y2Nlc3NmdWwgbWFwcGluZy4KKyAgICBpZiAoZW50cnktPmlz
TWFwcGVkKCkpCisgICAgICAgIGRpc2tJbWFnZUNhY2hlKCkudXBkYXRlU2l6ZShlbnRyeS0+c2l6
ZSgpKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZFJlbW92ZUZpbGUoKQor
eworICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVG
aWxlVGhyZWFkU3RhcnQodm9pZCogZW50cnlQdHIpCit7CisgICAgRGlza0ltYWdlQ2FjaGU6OkVu
dHJ5KiBlbnRyeSA9IHN0YXRpY19jYXN0PERpc2tJbWFnZUNhY2hlOjpFbnRyeSo+KGVudHJ5UHRy
KTsKKworICAgIGVudHJ5LT51bm1hcCgpOworICAgIGVudHJ5LT5yZW1vdmVGaWxlKCk7CisKKyAg
ICAvLyBGSVhNRTogcnVuIGluIG1haW4gdGhyZWFkIHdoZW4gd2UgbW92ZSB0aGUgYWJvdmUgdG8g
aXRzIG93biB0aHJlYWQuCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OmRpZFJlbW92ZUZpbGUsIGVudHJ5KSk7Cit9CisKK0Rpc2tJbWFnZUNhY2hlOjpE
aXNrSW1hZ2VDYWNoZSgpCisgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgLCBtX3NpemUoMCkK
KyAgICAsIG1fbWF4aW11bUNhY2hlU2l6ZSgxMDAgKiAxMDI0ICogMTAyNCkKKyAgICAsIG1fbWlu
aW11bUltYWdlU2l6ZSgxMDAgKiAxMDI0KQorICAgICwgbV9uZXh0QXZhaWxhYmxlSWQoRGlza0lt
YWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCArIDEpCit7Cit9CisKK0Rpc2tJbWFnZUNhY2hl
SWQgRGlza0ltYWdlQ2FjaGU6OndyaXRlSXRlbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaXRl
bSkKK3sKKyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgp
KQorICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKwor
ICAgIC8vIFdlIGFyZSBhbHJlYWR5IGZ1bGwsIGNhbm5vdCBhZGQgYW55dGhpbmcgdW50aWwgc29t
ZXRoaW5nIGlzIHJlbW92ZWQuCisgICAgaWYgKGlzRnVsbCgpKSB7CisgICAgICAgIExPRyhEaXNr
SW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBjb3VsZCBub3QgcHJvY2VzcyBhbiBpdGVtIGJl
Y2F1c2UgdGhlIGNhY2hlIHdhcyBmdWxsIGF0ICglZCkuIFRoZSBcIm1heFwiIGJlaW5nICglZCki
LCBtX3NpemUsIG1fbWF4aW11bUNhY2hlU2l6ZSk7CisgICAgICAgIHJldHVybiBEaXNrSW1hZ2VD
YWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhbiBlbnRy
eS4KKyAgICBEaXNrSW1hZ2VDYWNoZUlkIGlkID0gbmV4dEF2YWlsYWJsZUlkKCk7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaXRlbTsKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2Fj
aGU6OkVudHJ5PiBlbnRyeSA9IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y3JlYXRlKGJ1ZmZlci5n
ZXQoKSwgaWQpOworICAgIG1fdGFibGUuYWRkKGlkLCBlbnRyeSk7CisKKyAgICAvLyBDcmVhdGUg
YSB0ZW1wb3JhcnkgZmlsZSBwYXRoLgorICAgIFN0cmluZyBwYXRoID0gdGVtcG9yYXJ5RmlsZSgp
OworICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBjcmVhdGluZyBlbnRy
eSAoJWQpIGF0ICglcykiLCBpZCwgcGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAocGF0aC5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hl
SWQ7CisKKyAgICBlbnRyeS0+c2V0VGVtcG9yYXJ5RmlsZVBhdGgocGF0aCk7CisKKyAgICAvLyBU
aGUgbGlmZXRpbWUgb2YgdGhlIEVudHJ5IGlzIGhhbmRsZWQgb24gdGhlIG1haW4gdGhyZWFkLiBC
ZWZvcmUgd2Ugc2VuZAorICAgIC8vIHRvIGEgZGlzcGF0Y2ggcXVldWUgd2UgbmVlZCB0byByZWYg
c28gdGhhdCB3ZSBhcmUgc3VyZSB0aGUgb2JqZWN0IHN0aWxsCisgICAgLy8gZXhpc3RzLiBUaGlz
IGNhbGwgaXMgYmFsYW5jZWQgaW4gdGhlIGNhbGxiYWNrcyBkaXNwYXRjaGVkIGZyb20KKyAgICAv
LyBFbnRyeTo6bWFwLiBvciB0aGUgZWFybHkgcmV0dXJuIGluIHRoaXMgZGlzcGF0Y2guCisgICAg
ZW50cnktPnJlZigpOworCisgICAgLy8gTWFwIHRvIGRpc2sgYXN5bmNocm9ub3VzbHkuCisgICAg
Y3JlYXRlVGhyZWFkKERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwVGhyZWFkU3RhcnQsIGVudHJ5
LmdldCgpLCAiV2ViQ29yZTogRGlza0ltYWdlQ2FjaGU6Om1hcCIpOworCisgICAgcmV0dXJuIGlk
OworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXplKHVuc2lnbmVkIGRlbHRhKQor
eworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgbV9zaXplICs9IGRlbHRhOwor
fQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpyZW1vdmVJdGVtKERpc2tJbWFnZUNhY2hlSWQgaWQp
Cit7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IHJlbW92ZUl0ZW0g
KCVkKSIsIGlkKTsKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1f
dGFibGUuZ2V0KGlkKTsKKyAgICBtX3RhYmxlLnJlbW92ZShpZCk7CisgICAgaWYgKCFlbnRyeS0+
aXNNYXBwZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlU2l6ZSgtKGVudHJ5LT5z
aXplKCkpKTsKKworICAgIGVudHJ5LT5yZWYoKTsKKworICAgIGNyZWF0ZVRocmVhZChEaXNrSW1h
Z2VDYWNoZTo6RW50cnk6OnJlbW92ZUZpbGVUaHJlYWRTdGFydCwgZW50cnkuZ2V0KCksICJXZWJD
b3JlOiBEaXNrSW1hZ2VDYWNoZTo6cmVtb3ZlSXRlbSIpOworfQorCit2b2lkKiBEaXNrSW1hZ2VD
YWNoZTo6ZGF0YUZvckl0ZW0oRGlza0ltYWdlQ2FjaGVJZCBpZCkKK3sKKyAgICBBU1NFUlQoaWQp
OworCisgICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBtX3RhYmxlLmdl
dChpZCk7CisgICAgQVNTRVJUKGVudHJ5LT5pc01hcHBlZCgpKTsKKyAgICByZXR1cm4gZW50cnkt
PmRhdGEoKTsKK30KKworYm9vbCBEaXNrSW1hZ2VDYWNoZTo6Y3JlYXRlRGlyZWN0b3J5SWZOZWVk
ZWQoKQoreworICAgIGlmICghbV9jYWNoZURpcmVjdG9yeS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBtX2NhY2hlRGlyZWN0b3J5ID0gdGVtcG9yYXJ5RGlyZWN0b3J5KCk7
CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IENyZWF0ZWQgdGVtcG9y
YXJ5IGRpcmVjdG9yeSAoJXMpIiwgbV9jYWNoZURpcmVjdG9yeS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBpZiAobV9jYWNoZURpcmVjdG9yeS5pc051bGwoKSkgeworICAgICAgICBMT0dfRVJST1IoIkRp
c2tJbWFnZUNhY2hlOiBjb3VsZCBub3QgY3JlYXRlIGNhY2hlIGRpcmVjdG9yeSIpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+ZGlkQ3JlYXRlRGlza0ltYWdlQ2FjaGVEaXJlY3RvcnkobV9jYWNoZURpcmVjdG9yeSk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRGlza0ltYWdlQ2FjaGVJZCBEaXNrSW1hZ2VDYWNo
ZTo6bmV4dEF2YWlsYWJsZUlkKCkKK3sKKyAgICByZXR1cm4gbV9uZXh0QXZhaWxhYmxlSWQrKzsK
K30KKworU3RyaW5nIERpc2tJbWFnZUNhY2hlOjp0ZW1wb3JhcnlEaXJlY3RvcnkoKQoreworICAg
IFN0cmluZyB0ZW1wRGlza0NhY2hlRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KCJEaXNrSW1hZ2VDYWNoZSIpOworICAgIGlmICghdGVtcERpc2tDYWNoZURpcmVjdG9yeSkKKyAg
ICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0ZSBhIHRlbXBv
cmFyeSBkaXJlY3RvcnkuIik7CisKKyAgICByZXR1cm4gdGVtcERpc2tDYWNoZURpcmVjdG9yeTsK
K30KKworU3RyaW5nIERpc2tJbWFnZUNhY2hlOjp0ZW1wb3JhcnlGaWxlKCkKK3sKKyAgICBTdHJp
bmcgdGVtcEZpbGUgPSBjcmVhdGVUZW1wb3JhcnlGaWxlKG1fY2FjaGVEaXJlY3RvcnksICJ0bXAi
KTsKKyAgICBpZiAodGVtcEZpbGUuaXNFbXB0eSgpKQorICAgICAgICBMT0dfRVJST1IoIkRpc2tJ
bWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuIik7CisKKyAgICBy
ZXR1cm4gdGVtcEZpbGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBPUyhVTklYKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggY2Y3ZDc1ZjkyNDU3
YzhmOWU4MjU5NjBkYjBkYWExYjhmZGU3YzgyYi4uNjU3MjJjZGQzYWFhMzVkZjJlNTNmM2EzMDlh
YzNhYWNkMDI2M2YzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwCkBAIC0yOTEsNiArMjkxLDIzIEBAIFZlY3RvcjxTdHJpbmc+IGxp
c3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQykKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7CisgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwor
ICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CisKKyAgICBpZiAoIXRt
cERpcikKKyAgICAgICAgdG1wRGlyID0gIi90bXAiOworCisgICAgaWYgKHNucHJpbnRmKGJ1ZmZl
ciwgUEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkp
ID49IFBBVEhfTUFYKQorICAgICAgICBnb3RvIGVuZDsKKworICAgIGlmIChta2R0ZW1wKGJ1ZmZl
cikpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KGJ1ZmZlcik7Cit9CisKIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgY2hhciBidWZmZXJb
UEFUSF9NQVhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGJiM2RiMDIyMDc3Mzk0NzI4YWI0MDRkYmRlZjA4
ZGUxOTU0ZTQyZTMuLjcwMzM4MzA2MzU1Nzc3MGI3ZmNkOGI0MGZlNDUzNDY5ZWYwNWY2YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKQEAgLTg0LDYgKzg0LDkgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb24KICAg
ICBlbmNvZGVyIDw8IHNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGg7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRVc2VGb250U21vb3RoaW5nOwogICAgIGVuY29kZXIgPDwgaWNvbkRhdGFi
YXNlRW5hYmxlZDsKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBlbmNvZGVyIDw8
IGRpc2tJbWFnZUNhY2hlRW5hYmxlZDsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgdGVybWluYXRp
b25UaW1lb3V0OwogICAgIGVuY29kZXIgPDwgbGFuZ3VhZ2VzOwogICAgIGVuY29kZXIgPDwgdGV4
dENoZWNrZXJTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGEyNGE3ZWVlMTY2NGFjNTMyMTE3ZTNiZWM2MzAz
ZjQ5ZTZmODIwM2UuLmVjOGQwN2VhMDkwMzRhN2U3NGQzOWNmMDE5NzE0ODVmNzQ4MzI0N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtOTcsNiArOTcsMTAgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMgewogCiAgICAgYm9vbCBpY29uRGF0YWJhc2VFbmFibGVkOwogCisjaWYgRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCisgICAgYm9vbCBkaXNrSW1hZ2VDYWNoZUVuYWJsZWQ7CisjZW5kaWYK
KwogICAgIGRvdWJsZSB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBs
YW5ndWFnZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZWQ2
MjZhZGQ3ZTFlYzQ5NDIzNmU3Y2FhYzQ0N2M5OTlhM2MyZDY2Zi4uMjVkNGViMGQ1OTc5YTk1Yjhk
NTM4ODZiNjM4ZWE1MTg5OTBhNmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcApAQCAtNTQ3LDYgKzU0NywxMCBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYkNvbnRleHQ6
OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIAogICAgIHBhcmFtZXRlcnMuaWNvbkRhdGFiYXNl
RW5hYmxlZCA9ICFpY29uRGF0YWJhc2VQYXRoKCkuaXNFbXB0eSgpOwogCisjaWYgRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCisgICAgcGFyYW1ldGVycy5kaXNrSW1hZ2VDYWNoZUVuYWJsZWQgPSB0
cnVlOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCA9IChtX3By
b2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSA/IHNoYXJl
ZFNlY29uZGFyeVByb2Nlc3NTaHV0ZG93blRpbWVvdXQgOiAwOwogCiAgICAgcGFyYW1ldGVycy50
ZXh0Q2hlY2tlclN0YXRlID0gVGV4dENoZWNrZXI6OnN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzNDQ0MzQ3YThiYTI1YzUzM2U5NTI2MDUxNTZi
NmY4YzY3MGYzODVhLi41MGE2MjZmYjUzYThjOTI4MzFjNTJiMWE4YmI3NWExYjZhZTVhOWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwNiw2ICsxMDYs
MTAgQEAKICNpbmNsdWRlICJXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisjaW5jbHVkZSAiRGlza0ltYWdlQ2Fj
aGUuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAj
ZW5kaWYKQEAgLTI5MSw2ICsyOTUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2Vi
UHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWUKICAgICBt
X2ljb25EYXRhYmFzZVByb3h5LT5zZXRFbmFibGVkKHBhcmFtZXRlcnMuaWNvbkRhdGFiYXNlRW5h
YmxlZCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGRpc2tJ
bWFnZUNhY2hlKCkuc2V0RW5hYmxlZChwYXJhbWV0ZXJzLmRpc2tJbWFnZUNhY2hlRW5hYmxlZCk7
CisjZW5kaWYKKwogICAgIGlmICghcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgY2FjaGVTdG9yYWdlKCkuc2V0Q2FjaGVEaXJlY3RvcnkocGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1
cFdlYktpdEZlYXR1cmVzLm00CmluZGV4IGI3YzI4ZmZjN2QyNzQzNGI4OThmYmU0ZGQxZmNmNTli
OWE5MGM2YjYuLmM1OGVhY2ViMzk1M2JhODIzNTUxZWQxOGZlNTJjNjQ4ZmYzNmViNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAorKysgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKQEAgLTEyMCw2ICsxMjAsNyBAQCAk
c3JjZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0dXJlLWRlZmluZXMtZmlsZXMgJENPTkZJR1VS
QUJMRV9GRUFUVVJFX0RFRklORVMgXAogICAgIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQ9MSBcCiAg
ICAgRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTj0wIFwKICAgICBFTkFCTEVfRElSRUNUT1JZX1VQ
TE9BRD0wIFwKKyAgICBFTkFCTEVfRElTS19JTUFHRV9DQUNIRT0wIFwKICAgICBFTkFCTEVfRE9N
NF9FVkVOVFNfQ09OU1RSVUNUT1I9MCBcCiAgICAgRU5BQkxFX0RPV05MT0FEX0FUVFJJQlVURT0w
IFwKICAgICBFTkFCTEVfRklMVEVSUz0xIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZTRhNjExYjgzMzQ3NDM5ZGUzMTM1NmFmZmYzMDkxNzc1
NmNmMzNmLi4yMzRjMTY4OWI0OGNlMWU0NGY0YTU5YTI5YWFhMTA2ZDk5YWY4NDY0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTMtMTEtMTEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBj
b2xsYWJvcmEuY29tPgorCisgICAgICAgIE1ha2UgRGlza0ltYWdlQ2FjaGUgY3Jvc3MtcGxhdGZv
cm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDE2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBhZGQgbmV3IGZlYXR1cmUgZmxhZyBmb3Ig
ZGlzayBpbWFnZSBjYWNoZS4KKwogMjAxMy0xMS0wOCAgTWF0dGhldyBIYW5zb24gIDxtYXR0aGV3
X2hhbnNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkZWQgbXlzZWxmIGFz
IGEgY29udHJpYnV0b3IuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5k
ZXggNzM2YjE3NjRiMzc4ZDhhZGI5M2NmYmYwMmZkZDAzZjA5Yzc1NzdjNi4uZWZhOTFlN2ZkZDVl
YzA4ZDllMTFiMmVhYzJkZmY1NDAyYTY5MWRlNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbQpAQCAtNzUsNiArNzUsNyBAQCBteSAoCiAgICAgJGRldGFpbHNFbGVtZW50
U3VwcG9ydCwKICAgICAkZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0LAogICAgICRkaXJlY3RvcnlV
cGxvYWRTdXBwb3J0LAorICAgICRkaXNrSW1hZ2VDYWNoZSwKICAgICAkZG9tNEV2ZW50c0NvbnN0
cnVjdG9yLAogICAgICRkb3dubG9hZEF0dHJpYnV0ZVN1cHBvcnQsCiAgICAgJGZpbHRlcnNTdXBw
b3J0LApAQCAtMjU1LDYgKzI1Niw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9
PiAiZGlyZWN0b3J5LXVwbG9hZCIsIGRlc2MgPT4gIlRvZ2dsZSBEaXJlY3RvcnkgVXBsb2FkIHN1
cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCIsIGRlZmF1
bHQgPT4gMCwgdmFsdWUgPT4gXCRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0IH0sCiAKKyAgICB7IG9w
dGlvbiA9PiAiZGlzay1pbWFnZS1jYWNoZSIsIGRlc2MgPT4gIlRvZ2dsZSBEaXNrIEltYWdlIENh
Y2hlIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRElTS19JTUFHRV9DQUNIRSIs
IGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRkaXNrSW1hZ2VDYWNoZSB9LAorCiAgICAgeyBvcHRp
b24gPT4gImRvbTQtZXZlbnRzLWNvbnN0cnVjdG9yIiwgZGVzYyA9PiAiRXhwb3NlIERPTTQgRXZl
bnRzIGNvbnN0cnVjdG9ycyIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ET000X0VWRU5UU19D
T05TVFJVQ1RPUiIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlz
RWZsKCkpLCB2YWx1ZSA9PiBcJGRvbTRFdmVudHNDb25zdHJ1Y3RvciB9LAogCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmI5Y2M0MzNmMWJjMTAxYjQwNGYyMTRmOTI3
ZGZiN2E5ZTc0ZDU2Ni4uN2VlMmI4Mzc1ZDhhYzg1MzlmNGIzMWY5OWVlOTdmOWNkZDU3OWMwOSAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDEzLTExLTExICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFi
b3JhLmNvbT4KKworICAgICAgICBNYWtlIERpc2tJbWFnZUNhY2hlIGNyb3NzLXBsYXRmb3JtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9h
dXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNDogbmV3IGZlYXR1cmUgZmxhZyBmb3IgRElT
S19JTUFHRV9DQUNIRS4KKwogMjAxMy0xMS0wNiAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDaGFuZ2UgcmVxdWlyZWQgdmVyc2lvbiBvZiBB
VEsgdG8gMi4xMC4wCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216656</attachid>
            <date>2013-11-12 05:24:52 -0800</date>
            <delta_ts>2013-11-13 11:55:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124167-20131112112440.patch</filename>
            <type>text/plain</type>
            <size>67622</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE4MmM0MWUyZmMxYmQ0
ZjFkZTZiNjA2OWMwZTMzYTk2YTMyYzQ2Mi4uZTA0OTc1NzFiOTg4NGY4NzU3YjgzNGM4ZDE3MmY5
M2E1ZjhiZTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTExLTExICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBNYWtlIERpc2tJbWFnZUNhY2hlIGNyb3NzLXBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaG91bGQgYmUgY292ZXJlZCBieSBleGlz
dGluZyBpbWFnZSB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ciBpcyBleHBlY3RlZAorICAg
ICAgICBmcm9tIHRoZSBvcmlnaW5hbCBJT1MgY29kZSB0aGF0IHdhcyB1cHN0cmVhbWVkLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogYWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiB1c2UgbmV3IGZpbGVzLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6IGFkb3B0IG5ldyBoZWFkZXIgbmFtZS4KKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9EaXNrSW1hZ2VD
YWNoZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VD
YWNoZUlPUy5oLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjppZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6aXNNYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjYWNoZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNr
SW1hZ2VDYWNoZTo6aXNGdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp+
RGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hl
Q2xpZW50SU9TLmguCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZUNsaWVudDo6fkRp
c2tJbWFnZUNhY2hlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDogYWRvcHQgbmV3IGhlYWRlciBuYW1l
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSk6IEdUSysgaW1wbGVtZW50YXRpb24gb2Yg
bmV3IG1ldGhvZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLAorICAgICAgICBjcmVhdGVz
IGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFy
eUZpbGUpOiBkaXR0bywgYnV0IGNyZWF0ZXMgYSBmaWxlLgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OmRpc2tJ
bWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6RW50
cnkpOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6fkVu
dHJ5KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1h
cEludGVybmFsKTogZGl0dG8uIEFsc28gdXNlIGZpbGUgZGVzY3JpcHRvciBkaXJlY3RseSBpbnN0
ZWFkIG9mIFBsYXRmb3JtRmlsZUhhbmRsZQorICAgICAgICBzaW5jZSB0aGlzIGlzIGEgUE9TSVgg
aW1wbGVtZW50YXRpb24sIGFuZCBpdCB3b3VsZCBtYWtlIGxpZmUgaGFyZGVyIHRvIEdUSysgd2hp
Y2ggdXNlcyBoaWdoZXIgbGV2ZWwgb2JqZWN0cworICAgICAgICBhcyBpdHMgUGxhdGZvcm1GaWxl
SGFuZGxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWls
TWVtb3J5TWFwKTogY2xlYW51cCBhZnRlciBmYWlsdXJlLgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRNYXBNZW1vcnkpOiBtYXJrIGJ1ZmZlciBhcyBtYXBwZWQg
YW5kIGNsZWFudXAgb24gc3VjY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6bWFwKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJlYWRpbmcgQVBJ
cyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6OnVubWFwKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2Fj
aGU6OkVudHJ5OjpyZW1vdmVGaWxlKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJl
YWRpbmcgQVBJcyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6RW50cnk6OmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKTogdW5jaGFuZ2VkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmlsZUludGVybmFs
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpz
ZXRUZW1wb3JhcnlGaWxlUGF0aCk6IG5ldyBoZWxwZXIgdXNlZCBieSB0aGUgY29kZSB0aGF0IHVz
ZWQgdG8gYmUgYSBsaWJkaXNwYXRjaAorICAgICAgICBibG9jay4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcFRocmVhZFN0YXJ0KTogZGl0dG8uIFN0YXJ0
cyB0aGUgdGhyZWFkIHRoYXQgbWFwcyB0aGUgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSk6IGRpdHRvLiBDbGVhbnMgdXAgYWZ0ZXIg
ZmlsZSByZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpy
ZW1vdmVGaWxlVGhyZWFkU3RhcnQpOiBkaXR0by4gU3RhcnRzIHRoZSB0aHJlYWQgdGhhdCByZW1v
dmVzIHRoZSBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkRpc2tJbWFn
ZUNhY2hlKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6Ondy
aXRlSXRlbSk6IHBvcnRlZCBhd2F5IGZyb20gbGliZGlzcGF0Y2gvYmxvY2tzIGFuZCBNQUMvSU9T
IHRocmVhZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXpl
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnJlbW92ZUl0
ZW0pOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRl
bSk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjcmVhdGVE
aXJlY3RvcnlJZk5lZWRlZCk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFn
ZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQpOiB1bmNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KTogdXNlIFN0cmluZyBpbnN0ZWFkIG9m
IE5TU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeUZp
bGUpOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogbmV3IG1ldGhv
ZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVj
dG9yeS4KKwogMjAxMy0xMS0xMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtBWF0gQ2xlYW4gdXAgc3RhdGljX2Nhc3Q8PiB0byBjYXN0IGZyb20g
QWNjZXNzaWJpbGl0eU9iamVjdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMWYwNWVmODNmZDc1YmI0NzNiZWNi
ZjFlZGRlMGMzMTViMWYxMWEwLi5jZDk5M2FmMjFlZWRlMTk3OTJjZjZlNjY2ZGY1ZWIzYzc5ZmZj
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMTEtMTEgIEd1c3Rhdm8gTm9y
b25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgorCisgICAgICAgIE1h
a2UgRGlza0ltYWdlQ2FjaGUgY3Jvc3MtcGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUpOiBoYW5kbGUgbmV3IGRpc2sgaW1hZ2UgY3JlYXRpb24gcGFyYW1ldGVyLgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6IGRpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVX
ZWJQcm9jZXNzKTogZGl0dG8uCisKIDIwMTMtMTEtMDkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyIHdoZW4gY29udmVy
dGluZyBhIFN0cmluZyB0byBhIENGVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCA3NzFmZTBjMGVkOTI2NjNlMGU4NmJlZWE0ZmQ4YzU5Yjk2YjcyMjJkLi43MTgzMzQ1M2MyY2M3
YmZkZjI0MWU4Y2M5MjY3NzEzZWU4ZTAwMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTU4ODcsNiArNTg4Nyw3IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBcCkBAIC01OTcyLDYgKzU5NzMsOCBA
QCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGlt
ZUNob29zZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlz
a0ltYWdlQ2FjaGVDbGllbnQuaCBcCiAgICAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwIFwKICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIFwK
ICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCmluZGV4IDEyZDhlMGJhMDdkYzc5ZGYyYTA1YWExNzU2ODNmYmYzNzA5ODVl
MmYuLjM4ODYxMmMzNTc1OWZjZDFhYTcwYWQ1MzUyZTQ2YzY3N2ViZmRhYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0xNjksNiArMTY5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU3luY2hyb25vdXNMb2FkZXJDbGllbnRTb3VwLmNwcAogCisg
ICAgcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAKICAgICBwbGF0Zm9ybS9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCiAgICAgcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVy
UE9TSVguY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwYjdmNjA4YTNjZDAyNjYyYTMzNjQ2NTMxMmJjYTIyNGQ3ODIzZTNm
Li4wNjk4MDczODA3ZWUwNTg1MWYwODc2NDQ1NTgzY2JlZjM5MjIzN2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTEwLDkg
KzM1MTAsNiBAQAogCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgg
Ki87IH07CiAJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFB
NzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcwMEIw
NDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNUM1NjZBQjEyN0Ez
QUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAv
KiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUE1RjlFRjcwMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1h
Z2VDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1RjlFRjZFMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSAqLzsg
fTsKLQkJQTVGOUVGNzExMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUY5RUY2RjEyNjY3
NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNjE0OEE2MjEyRTQxRDNBMDA0NEE3ODQgLyog
RE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhBNjExMkU0MUQzQTAwNDRBNzg0IC8qIERPTUhUTUxL
ZXlnZW5FbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJQTYxNDhBNjcxMkU0MUQ5NDAwNDRBNzg0
IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNjE0OEE2NTEyRTQxRDk0MDA0NEE3ODQgLyogRE9NSFRNTEtleWdl
bkVsZW1lbnQuaCAqLzsgfTsKIAkJQTYxNDhBNjgxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhUTUxL
ZXlnZW5FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTYxNDhBNjYxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50Lm1t
ICovOyB9OwpAQCAtNTgxOSw2ICs1ODE2LDcgQEAKIAkJRUQ1MDFEQzYwQjI0OUYyOTAwQUUxOEQ5
IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi87IH07CiAJ
CUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8q
IENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERUM5ODAyMEFFRDdFMTcw
MDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUVFNzNGNDlGRTM1RDdDRjZGMUM5
N0JBRSAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFNDFGRTYzOTM5Q0I4RjkxMTMzRjVDNiAvKiBEaXNrSW1h
Z2VDYWNoZVBPU0lYLmNwcCAqLzsgfTsKIAkJRjEyMTcxRjUxNkE4Q0VEMjAwMDA1M0NBIC8qIFdl
YlZUVEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjEyMTcxRjMxNkE4QkM2MzAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwICovOyB9
OwogCQlGMTIxNzFGNjE2QThDRjBCMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjEyMTcxRjQxNkE4QkM2MzAw
MDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCAqLzsgfTsKIAkJRjI5M0IyN0U1NkMxMTJGMzczRkZG
MjdFIC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2ZVF1
ZXVlLmNwcCAqLzsgfTsKQEAgLTc3MzEsNiArNzcyOSw3IEBACiAJCTMxRkIxQTYzMTIwQTVEM0Yw
MERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMUZCMUE2NDEyMEE1RDNGMDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25F
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxRkIxQTZCMTIwQTVENjkwMERD
MDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMjE0MTg3M0YxMUE5NEFCMUVCMURCRTAgLyogRGlza0lt
YWdlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2Fj
aGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRTkxMDg5MjA4NjAwMEYw
RTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMzFGRjY3REUxOTdCNTczOTNDNDZBQTcgLyogUmVuZGVyTWF0aE1M
U3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVuZGVyTWF0aE1MU3Bh
Y2UuaDsgcGF0aCA9IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMTAyNjgsMTEgKzEwMjY3LDggQEAKIAkJQTVBQkI3
ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGVwUmFu
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RTExNTE1MUE3MDBC
MDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
ZXBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUM1NjZBQTEyN0EzQUFE
MDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2Eu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gS2V5RXZlbnRDb2NvYS5oOyBwYXRo
ID0gY29jb2EvS2V5RXZlbnRDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEtleUV2ZW50Q29jb2EubW07IHBhdGggPSBjb2Nv
YS9LZXlFdmVudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUY5RUY2
RTEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVGOUVGNkYxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFn
ZUNhY2hlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFnZUNh
Y2hlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE2MTQ4QTYxMTJFNDFEM0Ew
MDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxLZXlnZW5FbGVtZW50SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTYxNDhBNjUxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhU
TUxLZXlnZW5FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhU
TUxLZXlnZW5FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE2MTQ4QTY2
MTJFNDFEOTQwMDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxLZXlnZW5FbGVtZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI1NjUsNiArMTI1NjEsNyBAQAogCQlEQkZDQjBF
QkZGNUNENzdFQkVCMzUzOTUgLyogUmVuZGVyTWF0aE1MU3BhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVuZGVyTWF0aE1MU3BhY2UuY3BwOyBwYXRoID0gcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFDREZFIC8qIFdlYkNvcmVPYmpDRXh0cmFz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDc2M0JCMTA5OTJDMkM5MDA3NDBCOEUg
LyogbGlieG1sMi5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGlieG1sMi5keWxpYjsg
cGF0aCA9IC91c3IvbGliL2xpYnhtbDIuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CisJCURFNDFGRTYzOTM5Q0I4RjkxMTMzRjVDNiAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlUE9T
SVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTQ5QjJGRjE2NUYyRkM2MDAx
MDMzOEQgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNDlCMzAwMTY1RjJGQzYwMDEwMzM4RCAvKiBNZWRpYUNv
bnRyb2xFbGVtZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFDb250cm9sRWxlbWVudFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURF
NDlCMzA3MTY1RjJGRTEwMDEwMzM4RCAvKiBSZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzA2OSw2ICsxMzA2
Niw3IEBACiAJCUZBNjU0QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxUZXh0RWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBNjU0QTZBMTEwOEFCRUQwMDI2
MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXRoTUxUZXh0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
QTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAgLyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQTcwOTRFQjdEOUE3QUU0MTQ0RjNBMDUgLyogRGlza0ltYWdlQ2FjaGVD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUQxMDU5QzFFQjAw
RDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWF0aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkFCRTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDA2NSw2ICsxNDA2Myw4IEBACiAJCTFBMkU2RTU2MENDNTUxRTAwMDRBMjA2MiAvKiBz
cWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTMyMTQx
ODczRjExQTk0QUIxRUIxREJFMCAvKiBEaXNrSW1hZ2VDYWNoZS5oICovLAorCQkJCUZBNzA5NEVC
N0Q5QTdBRTQxNDRGM0EwNSAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudC5oICovLAogCQkJCTFBMkU2
RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRob3JpemVyLmNwcCAqLywKIAkJCQkxQTIy
NDY0MzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuY3BwICovLAogCQkJCTFBMjI0
NjQ0MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5oICovLApAQCAtMTUwODAsNiAr
MTUwODAsNyBAQAogCQk1MTYwMzAwOTBDQzQyNDU0MDBDOEFDMjUgLyogcG9zaXggKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCURFNDFGRTYzOTM5Q0I4Rjkx
MTMzRjVDNiAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCAqLywKIAkJCQk1MTYwMzAwQTBDQzQy
NTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
cG9zaXg7CkBAIC0yMDI2Niw5ICsyMDI2Nyw2IEBACiAJCUNFNzlENjg2MTdGMjIwRUQwMDgxNUMw
MCAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUE1RjlFRjZFMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSAqLywKLQkJ
CQlBNUY5RUY2RjEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCAqLywKLQkJ
CQlBNUM1NjZBQTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTI1NDQ2LDYgKzI1NDQ0LDcgQEAKIAkJCQlGRDMxNjAzRDEyQjAyNjc2MDBDMUEzNTkgLyogQW5h
bHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5MDcwN0U2MTIxOUMwNDMwMEQ5MEU1
MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTJBQTBF
RkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUVFNzNG
NDlGRTM1RDdDRjZGMUM5N0JBRSAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTlBNTI4RTgzMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTEwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlv
bkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTMwRTZFMURBNzAwQkY2MDg4IC8q
IEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNTc3Myw3ICsyNTc3
Miw2IEBACiAJCQkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRDY3QjExNTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rp
b25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBRjE5OTgxNTEzRDEzMTAwOERCMEMzIC8q
IERpcmVjdENvbnZvbHZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTY2MEFDMjE4MjhDODQ2
MDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1RjlFRjcwMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRjJENkMxNDQzNUQy
MTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGU2YmY5
OTZkYThlZmRhOWQ3MzExZDRmYmJiNDQwZTE3NmZjOTVlYjUuLjU5NzE3M2YyZjQ0ZjdjZmRjNDIw
ZDM5OWY4Yjg0NWY3MjY1ZmJiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtNTQsNyArNTQsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoRElT
S19JTUFHRV9DQUNIRSkKLSNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUlPUy5oIgorI2luY2x1ZGUg
IkRpc2tJbWFnZUNhY2hlLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNDY5MDQ4NWMwZjVm
NzJhZmEwZTE4ZjliYjY3ZTA0NmRkYmQ1NTQwZC4uZTk5ZWU3NmM3N2VkYmFiZTUzYTlkNGNiYWI2
MTA2Yzg0OWI2NzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0jaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJ
T1MuaCIKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVm
ZmVyLmgiCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9E
aXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNr
SW1hZ2VDYWNoZUNsaWVudElPUy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTkx
MzYzNWU5ZjlmZjQxMjQ2ZmUxYjExMjAwNTNiNTdiZTliZDFmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1MuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TX2gKLSNkZWZpbmUgRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1NfaAotCi0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpICYm
IFBMQVRGT1JNKElPUykKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRGlz
a0ltYWdlQ2FjaGVDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXNrSW1hZ2VDYWNoZUNsaWVu
dD4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkRpc2tJbWFnZUNhY2hlQ2xpZW50KCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURpc2tJbWFnZUNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5KSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCi0jZW5k
aWYgLy8gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
ZDMxNmI3NjQxM2Y5OTRlNTMzMzJhNGY4Yzg5MzY2YjQzNDExN2M4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
RGlza0ltYWdlQ2FjaGVJT1MuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBEaXNrSW1hZ2VDYWNoZUlPU19oCi0jZGVmaW5lIERpc2tJbWFnZUNh
Y2hlSU9TX2gKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1Mp
Ci0KLSNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oIgotI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdHlwZWRlZiB1bnNpZ25lZCBE
aXNrSW1hZ2VDYWNoZUlkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEdsb2JhbCBkaXNr
IGltYWdlIGNhY2hlIG9iamVjdC4KLWNsYXNzIERpc2tJbWFnZUNhY2hlIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEaXNrSW1hZ2VDYWNoZSk7Ci1wcml2YXRlOgotCi0gICAgLy8gTGlmZXRp
bWUgb2YgdGhpcyBFbnRyeSBhbmQgdGhlIFNoYXJlZEJ1ZmZlciBpdCB3cmFwcyBpcyBtYW5hZ2Vk
IG9uIHRoZSBXZWJUaHJlYWQuCi0gICAgY2xhc3MgRW50cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxF
bnRyeT4gewotICAgIHByaXZhdGU6Ci0gICAgICAgIEVudHJ5KFNoYXJlZEJ1ZmZlciosIERpc2tJ
bWFnZUNhY2hlSWQpOwotCi0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
aXNrSW1hZ2VDYWNoZTo6RW50cnk+IGNyZWF0ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGlza0lt
YWdlQ2FjaGVJZCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEaXNrSW1hZ2VDYWNoZTo6RW50cnkoYnVmZmVyLCBpZCkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgfkVudHJ5KCk7Ci0KLSAgICAgICAgdm9pZCBtYXAoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAg
ICAgICAgdm9pZCB1bm1hcCgpOwotICAgICAgICB2b2lkIHJlbW92ZUZpbGUoKTsKLSAgICAgICAg
dm9pZCBjbGVhckRhdGFXaXRob3V0TWFwcGluZygpOwotCi0gICAgICAgIERpc2tJbWFnZUNhY2hl
SWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0gICAgICAgIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwcGluZzsgfQotICAgICAgICBib29sIGlzTWFwcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tYXBwaW5nICE9IG51bGxwdHI7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgbWFw
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICAgICAgaW50IHdyaXRlVG9GaWxlSW50
ZXJuYWwoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLQotICAgICAgICBTaGFyZWRCdWZmZXIqIG1fYnVm
ZmVyOwotICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIG1faWQ7Ci0gICAgICAgIHVuc2lnbmVkIG1f
c2l6ZTsKLSAgICAgICAgdm9pZCogbV9tYXBwaW5nOwotICAgICAgICBTdHJpbmcgbV9wYXRoOwot
ICAgIH07Ci0KLXB1YmxpYzoKLSAgICBmcmllbmQgRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNh
Y2hlKCk7Ci0gICAgc3RhdGljIGNvbnN0IERpc2tJbWFnZUNhY2hlSWQgaW52YWxpZERpc2tDYWNo
ZUlkID0gMDsKLQotICAgIC8vIFdyaXRlIG91dCBhbiBpdGVtLgotICAgIERpc2tJbWFnZUNhY2hl
SWQgd3JpdGVJdGVtKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci0KLSAgICAvLyBSZW1vdmUg
aXRlbS4KLSAgICB2b2lkIHJlbW92ZUl0ZW0oRGlza0ltYWdlQ2FjaGVJZCk7Ci0KLSAgICAvLyBN
YXBwaW5nIGZvciBhbiBpdGVtLgotICAgIHZvaWQqIGRhdGFGb3JJdGVtKERpc2tJbWFnZUNhY2hl
SWQpOwotCi0gICAgLy8gU2V0dXAgYSBjbGllbnQgZm9yIGNhbGxiYWNrcy4KLSAgICB2b2lkIHNl
dENsaWVudChQYXNzUmVmUHRyPERpc2tJbWFnZUNhY2hlQ2xpZW50PiBjbGllbnQpIHsgbV9jbGll
bnQgPSBjbGllbnQ7IH0KLQotICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9l
bmFibGVkOyB9Ci0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQg
PSBlbmFibGVkOyB9Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtQ2FjaGVTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhpbXVtQ2FjaGVTaXplOyB9Ci0gICAgdm9pZCBzZXRNYXhpbXVtQ2FjaGVTaXpl
KHVuc2lnbmVkIG1heGltdW0pIHsgbV9tYXhpbXVtQ2FjaGVTaXplID0gbWF4aW11bTsgfQotCi0g
ICAgdW5zaWduZWQgbWluaW11bUltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUlt
YWdlU2l6ZTsgfQotICAgIHZvaWQgc2V0TWluaW11bUltYWdlU2l6ZSh1bnNpZ25lZCBtaW5pbXVt
KSB7IG1fbWluaW11bUltYWdlU2l6ZSA9IG1pbmltdW07IH0KLQotICAgIGNvbnN0IFN0cmluZyYg
Y2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlRGlyZWN0b3J5OyB9Ci0KLSAg
ICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgYm9vbCBpc0Z1
bGwoKSBjb25zdCB7IHJldHVybiBtX3NpemUgPj0gbV9tYXhpbXVtQ2FjaGVTaXplOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgRGlza0ltYWdlQ2FjaGUoKTsKLSAgICB+RGlza0ltYWdlQ2FjaGUoKSB7IH0K
LQotICAgIGJvb2wgY3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKTsKLSAgICBEaXNrSW1hZ2VDYWNo
ZUlkIG5leHRBdmFpbGFibGVJZCgpOwotCi0gICAgU3RyaW5nIHRlbXBvcmFyeURpcmVjdG9yeSgp
OwotICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlKCk7Ci0KLSAgICB2b2lkIHVwZGF0ZVNpemUodW5z
aWduZWQgZGVsdGEpOwotCi0gICAgYm9vbCBtX2VuYWJsZWQ7Ci0gICAgdW5zaWduZWQgbV9zaXpl
OwotICAgIHVuc2lnbmVkIG1fbWF4aW11bUNhY2hlU2l6ZTsKLSAgICB1bnNpZ25lZCBtX21pbmlt
dW1JbWFnZVNpemU7Ci0gICAgRGlza0ltYWdlQ2FjaGVJZCBtX25leHRBdmFpbGFibGVJZDsKLSAg
ICBTdHJpbmcgbV9jYWNoZURpcmVjdG9yeTsKLQotICAgIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZUNs
aWVudD4gbV9jbGllbnQ7Ci0gICAgSGFzaE1hcDxEaXNrSW1hZ2VDYWNoZUlkLCBSZWZQdHI8RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5Pj4gbV90YWJsZTsKLQotICAgIE11dGV4IG1fbXV0ZXg7Ci19Owot
Ci0vLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBkaXNrIGltYWdlIGNhY2hlLgotRGlz
a0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCi0K
LSNlbmRpZiAvLyBEaXNrSW1hZ2VDYWNoZUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTk4ZGE2Njc1OWEzN2VjNWQxZWQyMGY5OWE4ZmEyZTFmOTVlNGJhYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0Rpc2tJbWFnZUNhY2hlSU9TLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJ
T1MuaCIKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCi0K
LSNpbmNsdWRlICJGaWxlU3lzdGVtSU9TLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1
ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRlICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0jaW5j
bHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgotI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EaXNrSW1hZ2VD
YWNoZSYgZGlza0ltYWdlQ2FjaGUoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEaXNr
SW1hZ2VDYWNoZT4gY2FjaGU7Ci0gICAgcmV0dXJuIGNhY2hlOwotfQotCi1EaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OkVudHJ5KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEaXNrSW1hZ2VDYWNoZUlkIGlk
KQotICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9pZChpZCkKLSAgICAsIG1fc2l6ZSgw
KQotICAgICwgbV9tYXBwaW5nKG51bGxwdHIpCi17Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3Vy
cmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7Ci0gICAgQVNTRVJUKG1f
YnVmZmVyKTsKLSAgICBtX2J1ZmZlci0+cmVmKCk7Ci19Ci0KLURpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6fkVudHJ5KCkKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIEFT
U0VSVChXZWJUaHJlYWRJc0xvY2tlZCgpKTsKLSAgICBBU1NFUlQoIW1fYnVmZmVyKTsKLSAgICBB
U1NFUlQoIW1fbWFwcGluZyk7Ci19Ci0KLWJvb2wgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQVNTRVJUKG1fYnVmZmVyKTsKLSAg
ICBBU1NFUlQoIW1fbWFwcGluZyk7Ci0KLSAgICBtX3BhdGggPSBwYXRoOwotICAgIG1fc2l6ZSA9
IG1fYnVmZmVyLT5zaXplKCk7Ci0KLSAgICAvLyBPcGVuIHRoZSBmaWxlIGZvciByZWFkaW5nIGFu
ZCB3cml0aW5nLgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBvcGVuKG1fcGF0aC51
dGY4KCkuZGF0YSgpLCBPX0NSRUFUIHwgT19SRFdSIHwgT19UUlVOQywgc3RhdGljX2Nhc3Q8bW9k
ZV90PigwNjAwKSk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoZSBmaWxlLgotICAgIGlm
ICh3cml0ZVRvRmlsZUludGVybmFsKGhhbmRsZSkgPT0gLTEpIHsKLSAgICAgICAgY2xvc2VGaWxl
KGhhbmRsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIC8vIFNlZWsgYmFjayB0byB0aGUgYmVnaW5uaW5nLgotICAgIGlm
IChzZWVrRmlsZShoYW5kbGUsIDAsIFNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgewotICAgICAg
ICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gUGVyZm9ybSBtZW1vcnkgbWFwcGluZyBm
b3IgcmVhZGluZy4KLSAgICAvLyBOT1RFOiBUaGlzIG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhl
IG9wZW4oKSBhYm92ZSwgd2hpY2ggbXVzdCBhbHNvIG9wZW4gZm9yIHJlYWRpbmcuCi0gICAgbV9t
YXBwaW5nID0gbW1hcChudWxscHRyLCBtX3NpemUsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgaGFu
ZGxlLCAwKTsKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICBpZiAobV9tYXBwaW5nID09IE1B
UF9GQUlMRUQpIHsKLSAgICAgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6
IG1hcHBpbmcgZmFpbGVkICglZCk6ICglcykiLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKLSAg
ICAgICAgbV9tYXBwaW5nID0gbnVsbHB0cjsKLSAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZv
aWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXAoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAg
IEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgQVNTRVJUKCFtX21hcHBpbmcpOwotICAgIERpc2tJbWFn
ZUNhY2hlOjpFbnRyeSogdGhpc0VudHJ5ID0gdGhpczsKLQotICAgIGJvb2wgZmlsZU1hcHBlZCA9
IG1hcEludGVybmFsKHBhdGgpOwotICAgIGlmICghZmlsZU1hcHBlZCkgewotICAgICAgICAvLyBO
b3RpZnkgdGhlIGJ1ZmZlciBpbiB0aGUgY2FzZSBvZiBhIGZhaWxlZCBtYXBwaW5nLgotICAgICAg
ICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgICAgIG1fYnVmZmVyLT5mYWlsZWRNZW1vcnlNYXAo
KTsKLSAgICAgICAgICAgIG1fYnVmZmVyLT5kZXJlZigpOwotICAgICAgICAgICAgbV9idWZmZXIg
PSAwOwotICAgICAgICAgICAgdGhpc0VudHJ5LT5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE5vdGlmeSB0aGUgYnVmZmVyIGluIHRoZSBjYXNl
IG9mIGEgc3VjY2Vzc2Z1bCBtYXBwaW5nLgotICAgIC8vIFRoaXMgc2hvdWxkIGhhcHBlbiBvbiB0
aGUgV2ViVGhyZWFkIGJlY2F1c2UgdGhpcyBpcyBiZWluZyBydW4KLSAgICAvLyBhc3luY2hyb25v
dXNseSBpbnNpZGUgYSBkaXNwYXRjaCBxdWV1ZS4KLSAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAg
ICAgbV9idWZmZXItPm1hcmtBc01lbW9yeU1hcHBlZCgpOwotICAgICAgICBtX2J1ZmZlci0+ZGVy
ZWYoKTsKLSAgICAgICAgbV9idWZmZXIgPSAwOwotICAgICAgICB0aGlzRW50cnktPmRlcmVmKCk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp1bm1hcCgpCi17Ci0g
ICAgaWYgKCFtX21hcHBpbmcpIHsKLSAgICAgICAgQVNTRVJUKCFtX3NpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG11bm1hcChtX21hcHBpbmcsIG1fc2l6ZSkgPT0gLTEp
Ci0gICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBtdW5tYXAgYSBt
ZW1vcnkgbWFwcGVkIGZpbGUgd2l0aCBpZCAoJWQpIiwgbV9pZCk7Ci0KLSAgICBtX21hcHBpbmcg
PSBudWxscHRyOwotICAgIG1fc2l6ZSA9IDA7Ci19Ci0KLXZvaWQgRGlza0ltYWdlQ2FjaGU6OkVu
dHJ5OjpyZW1vdmVGaWxlKCkKLXsKLSAgICBBU1NFUlQoIW1fbWFwcGluZyk7Ci0gICAgQVNTRVJU
KCFtX3NpemUpOwotCi0gICAgaWYgKCFkZWxldGVGaWxlKG1fcGF0aCkpCi0gICAgICAgIExPR19F
UlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBkZWxldGUgbWVtb3J5IG1hcHBlZCBmaWxl
ICglcykiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgRGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjpjbGVhckRhdGFXaXRob3V0TWFwcGluZygpCi17Ci0gICAgQVNTRVJUKCFtX21hcHBp
bmcpOwotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgbV9idWZmZXItPmRlcmVmKCk7Ci0gICAg
bV9idWZmZXIgPSAwOwotfQotCi1pbnQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmls
ZUludGVybmFsKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17Ci0gICAgQVNTRVJUKG1fYnVm
ZmVyKTsKLSAgICBpbnQgdG90YWxCeXRlc1dyaXR0ZW4gPSAwOwotCi0gICAgY29uc3QgY2hhciog
c2VnbWVudCA9IG51bGxwdHI7Ci0gICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOwotICAgIHdoaWxl
ICh1bnNpZ25lZCBsZW5ndGggPSBtX2J1ZmZlci0+Z2V0U29tZURhdGEoc2VnbWVudCwgcG9zaXRp
b24pKSB7Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZVRvRmlsZShoYW5kbGUsIHNl
Z21lbnQsIGxlbmd0aCk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEpCi0gICAgICAg
ICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gYnl0ZXNXcml0
dGVuOwotICAgICAgICBwb3NpdGlvbiArPSBsZW5ndGg7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRv
dGFsQnl0ZXNXcml0dGVuOwotfQotCi0KLURpc2tJbWFnZUNhY2hlOjpEaXNrSW1hZ2VDYWNoZSgp
Ci0gICAgOiBtX2VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX3NpemUoMCkKLSAgICAsIG1fbWF4aW11
bUNhY2hlU2l6ZSgxMDAgKiAxMDI0ICogMTAyNCkKLSAgICAsIG1fbWluaW11bUltYWdlU2l6ZSgx
MDAgKiAxMDI0KQotICAgICwgbV9uZXh0QXZhaWxhYmxlSWQoRGlza0ltYWdlQ2FjaGU6OmludmFs
aWREaXNrQ2FjaGVJZCArIDEpCi17Ci19Ci0KLURpc2tJbWFnZUNhY2hlSWQgRGlza0ltYWdlQ2Fj
aGU6OndyaXRlSXRlbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaXRlbSkKLXsKLSAgICBpZiAo
IWlzRW5hYmxlZCgpIHx8ICFjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgpKQotICAgICAgICByZXR1
cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKLQotICAgIC8vIFdlIGFyZSBh
bHJlYWR5IGZ1bGwsIGNhbm5vdCBhZGQgYW55dGhpbmcgdW50aWwgc29tZXRoaW5nIGlzIHJlbW92
ZWQuCi0gICAgaWYgKGlzRnVsbCgpKSB7Ci0gICAgICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRp
c2tJbWFnZUNhY2hlOiBjb3VsZCBub3QgcHJvY2VzcyBhbiBpdGVtIGJlY2F1c2UgdGhlIGNhY2hl
IHdhcyBmdWxsIGF0ICglZCkuIFRoZSBcIm1heFwiIGJlaW5nICglZCkiLCBtX3NpemUsIG1fbWF4
aW11bUNhY2hlU2l6ZSk7Ci0gICAgICAgIHJldHVybiBEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERp
c2tDYWNoZUlkOwotICAgIH0KLQotICAgIC8vIENyZWF0ZSBhbiBlbnRyeS4KLSAgICBEaXNrSW1h
Z2VDYWNoZUlkIGlkID0gbmV4dEF2YWlsYWJsZUlkKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaXRlbTsKLSAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRy
eSA9IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgaWQpOwotICAg
IG1fdGFibGUuYWRkKGlkLCBlbnRyeSk7Ci0KLSAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmls
ZSBwYXRoLgotICAgIFN0cmluZyBwYXRoID0gdGVtcG9yYXJ5RmlsZSgpOwotICAgIExPRyhEaXNr
SW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBjcmVhdGluZyBlbnRyeSAoJWQpIGF0ICglcyki
LCBpZCwgcGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAocGF0aC5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7Ci0KLSAgICAvLyBU
aGUgbGlmZXRpbWUgb2YgdGhlIEVudHJ5IGlzIGhhbmRsZWQgb24gdGhlIFdlYlRocmVhZC4KLSAg
ICAvLyBCZWZvcmUgd2Ugc2VuZCB0byBhIGRpc3BhdGNoIHF1ZXVlIHdlIG5lZWQgdG8gcmVmIHNv
Ci0gICAgLy8gdGhhdCB3ZSBhcmUgc3VyZSB0aGUgb2JqZWN0IHN0aWxsIGV4aXN0cy4gVGhpcyBj
YWxsCi0gICAgLy8gaXMgYmFsYW5jZWQgaW4gdGhlIFdlYlRocmVhZFJ1biBpbnNpZGUgb2YgRW50
cnk6Om1hcC4KLSAgICAvLyBvciB0aGUgZWFybHkgcmV0dXJuIGluIHRoaXMgZGlzcGF0Y2guCi0g
ICAgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KiBsb2NhbEVudHJ5Rm9yQmxvY2sgPSBlbnRyeS5nZXQo
KTsKLSAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPnJlZigpOwotCi0gICAgLy8gTWFwIHRvIGRpc2sg
YXN5bmNocm9ub3VzbHkuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9x
dWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAgICAgICAgLy8g
VGhlIGNhY2hlIGJlY2FtZSBmdWxsIHNpbmNlIHRoZSB0aW1lIHdlIHdlcmUgYWRkZWQgdG8gdGhl
IHF1ZXVlLiBEb24ndCBtYXAuCi0gICAgICAgIGlmIChkaXNrSW1hZ2VDYWNoZSgpLmlzRnVsbCgp
KSB7Ci0gICAgICAgICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgICAgICAgICBsb2NhbEVu
dHJ5Rm9yQmxvY2stPmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKCk7Ci0gICAgICAgICAgICAgICAg
bG9jYWxFbnRyeUZvckJsb2NrLT5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPm1hcChw
YXRoKTsKLQotICAgICAgICAvLyBVcGRhdGUgdGhlIHNpemUgb24gYSBzdWNjZXNzZnVsIG1hcHBp
bmcuCi0gICAgICAgIGlmIChsb2NhbEVudHJ5Rm9yQmxvY2stPmlzTWFwcGVkKCkpCi0gICAgICAg
ICAgICBkaXNrSW1hZ2VDYWNoZSgpLnVwZGF0ZVNpemUobG9jYWxFbnRyeUZvckJsb2NrLT5zaXpl
KCkpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGlkOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hl
Ojp1cGRhdGVTaXplKHVuc2lnbmVkIGRlbHRhKQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7Ci0gICAgbV9zaXplICs9IGRlbHRhOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpy
ZW1vdmVJdGVtKERpc2tJbWFnZUNhY2hlSWQgaWQpCi17Ci0gICAgTE9HKERpc2tJbWFnZUNhY2hl
LCAiRGlza0ltYWdlQ2FjaGU6IHJlbW92ZUl0ZW0gKCVkKSIsIGlkKTsKLSAgICBSZWZQdHI8RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0KGlkKTsKLSAgICBtX3RhYmxl
LnJlbW92ZShpZCk7Ci0gICAgaWYgKCFlbnRyeS0+aXNNYXBwZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgdXBkYXRlU2l6ZSgtKGVudHJ5LT5zaXplKCkpKTsKLQotICAgIERpc2tJbWFnZUNh
Y2hlOjpFbnRyeSAqbG9jYWxFbnRyeUZvckJsb2NrID0gZW50cnkuZ2V0KCk7Ci0gICAgbG9jYWxF
bnRyeUZvckJsb2NrLT5yZWYoKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewotICAgICAg
ICBsb2NhbEVudHJ5Rm9yQmxvY2stPnVubWFwKCk7Ci0gICAgICAgIGxvY2FsRW50cnlGb3JCbG9j
ay0+cmVtb3ZlRmlsZSgpOwotICAgICAgICBXZWJUaHJlYWRSdW4oXnsgbG9jYWxFbnRyeUZvckJs
b2NrLT5kZXJlZigpOyB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCogRGlza0ltYWdlQ2FjaGU6OmRh
dGFGb3JJdGVtKERpc2tJbWFnZUNhY2hlSWQgaWQpCi17Ci0gICAgQVNTRVJUKGlkKTsKLQotICAg
IFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGVudHJ5ID0gbV90YWJsZS5nZXQoaWQpOwot
ICAgIEFTU0VSVChlbnRyeS0+aXNNYXBwZWQoKSk7Ci0gICAgcmV0dXJuIGVudHJ5LT5kYXRhKCk7
Ci19Ci0KLWJvb2wgRGlza0ltYWdlQ2FjaGU6OmNyZWF0ZURpcmVjdG9yeUlmTmVlZGVkKCkKLXsK
LSAgICBpZiAoIW1fY2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgbV9jYWNoZURpcmVjdG9yeSA9IHRlbXBvcmFyeURpcmVjdG9yeSgpOwotICAgIExP
RyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBDcmVhdGVkIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgKCVzKSIsIG1fY2FjaGVEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKG1f
Y2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VD
YWNoZTogY291bGQgbm90IGNyZWF0ZSBjYWNoZSBkaXJlY3RvcnkiKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRp
ZENyZWF0ZURpc2tJbWFnZUNhY2hlRGlyZWN0b3J5KG1fY2FjaGVEaXJlY3RvcnkpOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLURpc2tJbWFnZUNhY2hlSWQgRGlza0ltYWdlQ2FjaGU6Om5leHRB
dmFpbGFibGVJZCgpCi17Ci0gICAgcmV0dXJuIG1fbmV4dEF2YWlsYWJsZUlkKys7Ci19Ci0KLVN0
cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KCkKLXsKLSAgICBOU1N0cmlu
ZyAqdGVtcERpc2tDYWNoZURpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIkRp
c2tJbWFnZUNhY2hlIik7Ci0gICAgaWYgKCF0ZW1wRGlza0NhY2hlRGlyZWN0b3J5KQotICAgICAg
ICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5
IGRpcmVjdG9yeS4iKTsKLQotICAgIHJldHVybiB0ZW1wRGlza0NhY2hlRGlyZWN0b3J5OwotfQot
Ci1TdHJpbmcgRGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeUZpbGUoKQotewotICAgIE5TU3RyaW5n
ICp0ZW1wRmlsZSA9IGNyZWF0ZVRlbXBvcmFyeUZpbGUobV9jYWNoZURpcmVjdG9yeSwgQCJ0bXAi
KTsKLSAgICBpZiAoIXRlbXBGaWxlKQotICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hl
OiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuIik7Ci0KLSAgICByZXR1cm4gdGVt
cEZpbGU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShE
SVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGlza0ltYWdlQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjI3ZWZlMzc0YjgwNTUyOTkxNTVjMTEwOTQy
YTRkNzkzN2U0NzE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGlza0ltYWdlQ2FjaGUuaApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RGlza0ltYWdlQ2FjaGVfaAorI2RlZmluZSBEaXNrSW1hZ2VDYWNoZV9oCisKKyNpZiBFTkFCTEUo
RElTS19JTUFHRV9DQUNIRSkKKworI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlQ2xpZW50LmgiCisj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K3R5cGVkZWYgdW5zaWduZWQgRGlza0ltYWdlQ2FjaGVJZDsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBHbG9iYWwgZGlzayBpbWFnZSBjYWNoZSBvYmplY3QuCitjbGFzcyBEaXNrSW1hZ2VD
YWNoZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlza0ltYWdlQ2FjaGUpOworcHJpdmF0
ZToKKworICAgIC8vIExpZmV0aW1lIG9mIHRoaXMgRW50cnkgYW5kIHRoZSBTaGFyZWRCdWZmZXIg
aXQgd3JhcHMgYXJlIG1hbmFnZWQgaW4gdGhlIG1haW4gdGhyZWFkLgorICAgIGNsYXNzIEVudHJ5
IDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnk+IHsKKyAgICBwcml2YXRlOgorICAgICAgICBFbnRy
eShTaGFyZWRCdWZmZXIqLCBEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIHB1YmxpYzoKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBjcmVhdGUoU2hhcmVk
QnVmZmVyKiBidWZmZXIsIERpc2tJbWFnZUNhY2hlSWQgaWQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KGJ1ZmZlciwgaWQp
KTsKKyAgICAgICAgfQorCisgICAgICAgIH5FbnRyeSgpOworCisgICAgICAgIHZvaWQgbWFwKCk7
CisgICAgICAgIHZvaWQgdW5tYXAoKTsKKyAgICAgICAgdm9pZCByZW1vdmVGaWxlKCk7CisgICAg
ICAgIHZvaWQgY2xlYXJEYXRhV2l0aG91dE1hcHBpbmcoKTsKKworICAgICAgICBEaXNrSW1hZ2VD
YWNoZUlkIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgICAgICB1bnNpZ25lZCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX21hcHBpbmc7IH0KKyAgICAgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwcGluZyAhPSBudWxscHRyOyB9CisgICAgICAgIHZvaWQgc2V0VGVtcG9yYXJ5Rmls
ZVBhdGgoY29uc3QgU3RyaW5nJik7CisKKyAgICAgICAgc3RhdGljIHZvaWQgbWFwVGhyZWFkU3Rh
cnQodm9pZCopOworICAgICAgICBzdGF0aWMgdm9pZCByZW1vdmVGaWxlVGhyZWFkU3RhcnQodm9p
ZCopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtYXBJbnRlcm5hbCgpOworICAgICAg
ICB2b2lkIGNhbmNlbE1hcCgpOworCisjaWYgT1MoVU5JWCkKKyAgICAgICAgaW50IHdyaXRlVG9G
aWxlSW50ZXJuYWwoaW50IGZkKTsKKyNlbmRpZgorCisgICAgICAgIHZvaWQgZGlkRmFpbE1lbW9y
eU1hcCgpOworICAgICAgICB2b2lkIGRpZE1hcE1lbW9yeSgpOworICAgICAgICB2b2lkIGRpZFJl
bW92ZUZpbGUoKTsKKworICAgICAgICBTaGFyZWRCdWZmZXIqIG1fYnVmZmVyOworICAgICAgICBE
aXNrSW1hZ2VDYWNoZUlkIG1faWQ7CisgICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICAgICAg
dm9pZCogbV9tYXBwaW5nOworICAgICAgICBTdHJpbmcgbV9wYXRoOworICAgIH07CisKK3B1Ymxp
YzoKKyAgICBmcmllbmQgRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7CisgICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPERpc2tJbWFnZUNhY2hlPjsKKyAgICBzdGF0aWMgY29u
c3QgRGlza0ltYWdlQ2FjaGVJZCBpbnZhbGlkRGlza0NhY2hlSWQgPSAwOworCisgICAgLy8gV3Jp
dGUgb3V0IGFuIGl0ZW0uCisgICAgRGlza0ltYWdlQ2FjaGVJZCB3cml0ZUl0ZW0oUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+KTsKKworICAgIC8vIFJlbW92ZSBpdGVtLgorICAgIHZvaWQgcmVtb3Zl
SXRlbShEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIC8vIE1hcHBpbmcgZm9yIGFuIGl0ZW0uCisg
ICAgdm9pZCogZGF0YUZvckl0ZW0oRGlza0ltYWdlQ2FjaGVJZCk7CisKKyAgICAvLyBTZXR1cCBh
IGNsaWVudCBmb3IgY2FsbGJhY2tzLgorICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8RGlz
a0ltYWdlQ2FjaGVDbGllbnQ+IGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAg
Ym9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworICAgIHVu
c2lnbmVkIG1heGltdW1DYWNoZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1DYWNoZVNp
emU7IH0KKyAgICB2b2lkIHNldE1heGltdW1DYWNoZVNpemUodW5zaWduZWQgbWF4aW11bSkgeyBt
X21heGltdW1DYWNoZVNpemUgPSBtYXhpbXVtOyB9CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW1h
Z2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtSW1hZ2VTaXplOyB9CisgICAgdm9pZCBz
ZXRNaW5pbXVtSW1hZ2VTaXplKHVuc2lnbmVkIG1pbmltdW0pIHsgbV9taW5pbXVtSW1hZ2VTaXpl
ID0gbWluaW11bTsgfQorCisgICAgY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVEaXJlY3Rvcnk7IH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIGlzRnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZSA+PSBtX21heGltdW1DYWNoZVNpemU7IH0KKworcHJpdmF0ZToKKyAgICBEaXNrSW1hZ2VD
YWNoZSgpOworICAgIH5EaXNrSW1hZ2VDYWNoZSgpIHsgfQorCisgICAgYm9vbCBjcmVhdGVEaXJl
Y3RvcnlJZk5lZWRlZCgpOworICAgIERpc2tJbWFnZUNhY2hlSWQgbmV4dEF2YWlsYWJsZUlkKCk7
CisKKyAgICBTdHJpbmcgdGVtcG9yYXJ5RGlyZWN0b3J5KCk7CisgICAgU3RyaW5nIHRlbXBvcmFy
eUZpbGUoKTsKKworICAgIHZvaWQgdXBkYXRlU2l6ZSh1bnNpZ25lZCBkZWx0YSk7CisKKyAgICBi
b29sIG1fZW5hYmxlZDsKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgdW5zaWduZWQgbV9tYXhp
bXVtQ2FjaGVTaXplOworICAgIHVuc2lnbmVkIG1fbWluaW11bUltYWdlU2l6ZTsKKyAgICBEaXNr
SW1hZ2VDYWNoZUlkIG1fbmV4dEF2YWlsYWJsZUlkOworICAgIFN0cmluZyBtX2NhY2hlRGlyZWN0
b3J5OworCisgICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlQ2xpZW50PiBtX2NsaWVudDsKKyAgICBI
YXNoTWFwPERpc2tJbWFnZUNhY2hlSWQsIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+PiBt
X3RhYmxlOworCisgICAgTXV0ZXggbV9tdXRleDsKK307CisKKy8vIEZ1bmN0aW9uIHRvIG9idGFp
biB0aGUgZ2xvYmFsIGRpc2sgaW1hZ2UgY2FjaGUuCitEaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdl
Q2FjaGUoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCisKKyNlbmRpZiAvLyBEaXNrSW1hZ2VDYWNoZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTdh
M2EwZGExMjQ4ZWZiY2MwYjhjZmI0MzAzMTc5MWI2NTU1MzQyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGVDbGllbnQuaApAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaXNrSW1hZ2VDYWNoZUNsaWVudF9oCisjZGVm
aW5lIERpc2tJbWFnZUNhY2hlQ2xpZW50X2gKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hF
KQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXNrSW1hZ2VDYWNoZUNs
aWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERpc2tJbWFnZUNhY2hlQ2xpZW50PiB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+RGlza0ltYWdlQ2FjaGVDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRGlza0ltYWdlQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnkpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShESVNLX0lNQUdFX0NBQ0hFKQorCisjZW5kaWYgLy8gRGlza0ltYWdlQ2FjaGVDbGllbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IGZhMDMzZWRjNDI4MDQyY2M0NTJm
ZTZlZDU2NGRlODdjYmU1ZDc1ZDUuLjU4MjM3N2FmY2RlN2EyNDI1NzJmN2VlYTNkMjA5MjQ4NmRl
N2Y5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE2NCw2ICsxNjQs
OCBAQCBpbmxpbmUgZG91YmxlIGludmFsaWRGaWxlVGltZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKAogaW5saW5lIGJvb2wgaXNWYWxpZEZpbGVUaW1l
KGRvdWJsZSB0aW1lKSB7IHJldHVybiBzdGQ6OmlzZmluaXRlKHRpbWUpOyB9CiAKIC8vIFByZWZp
eCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBm
dWxsIHBhdGguCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cHJlZml4KTsKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgc3ViRGly
ZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByZWZpeCk7CiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUo
Y29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKIHZvaWQg
Y2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwpAQCAtMTk4LDYgKzIwMCw3IEBAIFN0cmlu
ZyBmaWxlbmFtZVRvU3RyaW5nKGNvbnN0IGNoYXIqKTsKIFN0cmluZyBmaWxlbmFtZUZvckRpc3Bs
YXkoY29uc3QgU3RyaW5nJik7CiBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgpOwog
Q1N0cmluZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCk7CitTdHJpbmcgY3JlYXRlVXNlckNhY2hlRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiB1aW50NjRfdCBn
ZXRWb2x1bWVGcmVlU2l6ZUZvclBhdGgoY29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNTU4N2FhM2Q2NWUzMTM3NTg3ZjI0NGJmYWE3Mzc2
OTY4NjM5ZWEwOC4uMDI5Y2FiNzZiYmNiNjMzZDAyYWJhNTE4NjgxYzFhOGQ2NjMzZjkyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiAjaWYgRU5BQkxFKERJU0tfSU1B
R0VfQ0FDSEUpCi0jaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJT1MuaCIKKyNpbmNsdWRlICJEaXNr
SW1hZ2VDYWNoZS5oIgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggMjdjNGFiMDQ1OGVk
NzdiNDVlZWI2MzBiOWY2ODIxMTMxMWJlYTAxNi4uMmE2MzQ2NjU0ZTZhZWFjYTU2YjdiODFmOWI3
MTBkNjQwMWQ2YjRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Zp
bGVTeXN0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lz
dGVtR3RrLmNwcApAQCAtMjY5LDYgKzI2OSw0MSBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgcmV0dXJu
IGVudHJpZXM7CiB9CiAKK1N0cmluZyBjcmVhdGVVc2VyQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIEdPd25QdHI8Z2NoYXI+IHBhdGgoZ19idWlsZF9maWxlbmFtZShn
X2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBO
VUxMKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl9wYXRoKHBhdGguZ2V0KCkpKTsKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisKKyAgICBp
ZiAoIWdfZmlsZV9tYWtlX2RpcmVjdG9yeV93aXRoX3BhcmVudHMoZmlsZS5nZXQoKSwgMCwgJmVy
cm9yLm91dFB0cigpKSAmJiBlcnJvci0+Y29kZSAhPSBHX0lPX0VSUk9SX0VYSVNUUykKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aC5n
ZXQoKSk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwcmVmaXgpCit7CisgICAgR093blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRm
KCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7CisgICAgR093blB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9m
aWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1Jl
ZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRo
LmdldCgpKSk7CisKKyAgICBpZiAoIWdfZmlsZV9tYWtlX2RpcmVjdG9yeV93aXRoX3BhcmVudHMo
ZmlsZS5nZXQoKSwgMCwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOCh0ZW1wUGF0aC5nZXQoKSk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyYgcHJlZml4KQor
eworICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHBy
ZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSkpOworICAgIEdPd25QdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUobG9j
YXRpb24udXRmOCgpLmRhdGEoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBHUmVmUHRy
PEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0
KCkpKTsKKworICAgIEdSZWZQdHI8R0ZpbGVPdXRwdXRTdHJlYW0+IG91dHB1dFN0cmVhbSA9IGdf
ZmlsZV9jcmVhdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKKyAgICBp
ZiAoIW91dHB1dFN0cmVhbSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKK30KKwogU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkK
IHsKICAgICBHT3duUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBw
cmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Rpc2tJ
bWFnZUNhY2hlUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0lt
YWdlQ2FjaGVQT1NJWC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwNTMwYzk3NGQ3ZTRlZjVlYzUxZmVlYWJm
YzNkMzYxNjk2ZThmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwCkBAIC0wLDAgKzEsMzc2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKKworI2lmIEVOQUJMRShESVNLX0lN
QUdFX0NBQ0hFKSAmJiBPUyhVTklYKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
PGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5p
c3RkLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0Rpc2tJbWFnZUNhY2hlJiBkaXNrSW1hZ2VDYWNoZSgpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPERpc2tJbWFnZUNhY2hlPiBjYWNoZTsKKyAgICByZXR1cm4g
Y2FjaGU7Cit9CisKK0Rpc2tJbWFnZUNhY2hlOjpFbnRyeTo6RW50cnkoU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIERpc2tJbWFnZUNhY2hlSWQgaWQpCisgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAg
LCBtX2lkKGlkKQorICAgICwgbV9zaXplKDApCisgICAgLCBtX21hcHBpbmcobnVsbHB0cikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAg
bV9idWZmZXItPnJlZigpOworfQorCitEaXNrSW1hZ2VDYWNoZTo6RW50cnk6On5FbnRyeSgpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAg
ICBBU1NFUlQoIW1fbWFwcGluZyk7Cit9CisKK2Jvb2wgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpt
YXBJbnRlcm5hbCgpCit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBBU1NFUlQoIW1fbWFw
cGluZyk7CisKKyAgICBtX3NpemUgPSBtX2J1ZmZlci0+c2l6ZSgpOworCisgICAgLy8gT3BlbiB0
aGUgZmlsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4KKyAgICBpbnQgZmQgPSBvcGVuKG1fcGF0
aC51dGY4KCkuZGF0YSgpLCBPX0NSRUFUIHwgT19SRFdSIHwgT19UUlVOQywgc3RhdGljX2Nhc3Q8
bW9kZV90PigwNjAwKSk7CisgICAgaWYgKGZkID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGUgZmlsZS4KKyAgICBpZiAod3JpdGVUb0Zp
bGVJbnRlcm5hbChmZCkgPT0gLTEpIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBkZWxl
dGVGaWxlKG1fcGF0aCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBT
ZWVrIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4KKyAgICBpZiAobHNlZWsoZmQsIDAsIFNFRUtfU0VU
KSA9PSAtMSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRo
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFBlcmZvcm0gbWVtb3J5
IG1hcHBpbmcgZm9yIHJlYWRpbmcuCisgICAgLy8gTk9URTogVGhpcyBtdXN0IG5vdCBjb25mbGlj
dCB3aXRoIHRoZSBvcGVuKCkgYWJvdmUsIHdoaWNoIG11c3QgYWxzbyBvcGVuIGZvciByZWFkaW5n
LgorICAgIG1fbWFwcGluZyA9IG1tYXAobnVsbHB0ciwgbV9zaXplLCBQUk9UX1JFQUQsIE1BUF9T
SEFSRUQsIGZkLCAwKTsKKyAgICBjbG9zZShmZCk7CisgICAgaWYgKG1fbWFwcGluZyA9PSBNQVBf
RkFJTEVEKSB7CisgICAgICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBt
YXBwaW5nIGZhaWxlZCAoJWQpOiAoJXMpIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisgICAg
ICAgIG1fbWFwcGluZyA9IG51bGxwdHI7CisgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkRmFpbE1lbW9yeU1hcCgpCit7CisgICAgbV9idWZm
ZXItPmZhaWxlZE1lbW9yeU1hcCgpOworICAgIG1fYnVmZmVyLT5kZXJlZigpOworICAgIG1fYnVm
ZmVyID0gMDsKKyAgICB0aGlzLT5kZXJlZigpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpF
bnRyeTo6ZGlkTWFwTWVtb3J5KCkKK3sKKyAgICBtX2J1ZmZlci0+bWFya0FzTWVtb3J5TWFwcGVk
KCk7CisgICAgbV9idWZmZXItPmRlcmVmKCk7CisgICAgbV9idWZmZXIgPSAwOworICAgIHRoaXMt
PmRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXAoKQoreworICAg
IEFTU0VSVCghbV9wYXRoLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBB
U1NFUlQoIW1fbWFwcGluZyk7CisKKyAgICBib29sIGZpbGVNYXBwZWQgPSBtYXBJbnRlcm5hbCgp
OworICAgIGlmICghZmlsZU1hcHBlZCkgeworICAgICAgICAvLyBOb3RpZnkgdGhlIGJ1ZmZlciBp
biB0aGUgY2FzZSBvZiBhIGZhaWxlZCBtYXBwaW5nLgorICAgICAgICBjYWxsT25NYWluVGhyZWFk
KGJpbmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkRmFpbE1lbW9yeU1hcCwgdGhpcykpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm90aWZ5IHRoZSBidWZmZXIgaW4gdGhl
IGNhc2Ugb2YgYSBzdWNjZXNzZnVsIG1hcHBpbmcuCisgICAgLy8gVGhpcyBzaG91bGQgaGFwcGVu
IG9uIHRoZSBtYWluIHRocmVhZCBiZWNhdXNlIHRoaXMgaXMgYmVpbmcgcnVuCisgICAgLy8gYXN5
bmNocm9ub3VzbHkgaW5zaWRlIGEgZGlzcGF0Y2ggcXVldWUuCisgICAgY2FsbE9uTWFpblRocmVh
ZChiaW5kKCZEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZE1hcE1lbW9yeSwgdGhpcykpOworfQor
Cit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6dW5tYXAoKQoreworICAgIGlmICghbV9tYXBw
aW5nKSB7CisgICAgICAgIEFTU0VSVCghbV9zaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtdW5tYXAobV9tYXBwaW5nLCBtX3NpemUpID09IC0xKQorICAgICAgICBMT0df
RVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgbXVubWFwIGEgbWVtb3J5IG1hcHBlZCBm
aWxlIHdpdGggaWQgKCVkKSIsIG1faWQpOworCisgICAgbV9tYXBwaW5nID0gbnVsbHB0cjsKKyAg
ICBtX3NpemUgPSAwOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6cmVtb3ZlRmls
ZSgpCit7CisgICAgQVNTRVJUKCFtX21hcHBpbmcpOworICAgIEFTU0VSVCghbV9zaXplKTsKKwor
ICAgIGlmICghZGVsZXRlRmlsZShtX3BhdGgpKQorICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFn
ZUNhY2hlOiBDb3VsZCBub3QgZGVsZXRlIG1lbW9yeSBtYXBwZWQgZmlsZSAoJXMpIiwgbV9wYXRo
LnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2xlYXJE
YXRhV2l0aG91dE1hcHBpbmcoKQoreworICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKKyAgICBBU1NF
UlQobV9idWZmZXIpOworICAgIG1fYnVmZmVyLT5kZXJlZigpOworICAgIG1fYnVmZmVyID0gMDsK
K30KKworaW50IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6d3JpdGVUb0ZpbGVJbnRlcm5hbChpbnQg
ZmQpCit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBpbnQgdG90YWxCeXRlc1dyaXR0ZW4g
PSAwOworCisgICAgY29uc3QgY2hhciogc2VnbWVudCA9IG51bGxwdHI7CisgICAgdW5zaWduZWQg
cG9zaXRpb24gPSAwOworICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBtX2J1ZmZlci0+Z2V0
U29tZURhdGEoc2VnbWVudCwgcG9zaXRpb24pKSB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4g
PSB3cml0ZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHNlZ21lbnQpLCBsZW5ndGgpOwor
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOwor
CisgICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgcG9z
aXRpb24gKz0gbGVuZ3RoOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjsK
K30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNldFRlbXBvcmFyeUZpbGVQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3BhdGggPSBwYXRoOworfQorCit2b2lkIERpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKCkKK3sKKyAgICBjbGVhckRhdGFXaXRob3V0TWFw
cGluZygpOworICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpt
YXBUaHJlYWRTdGFydCh2b2lkKiBlbnRyeVB0cikKK3sKKyAgICBEaXNrSW1hZ2VDYWNoZTo6RW50
cnkqIGVudHJ5ID0gc3RhdGljX2Nhc3Q8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Kj4oZW50cnlQdHIp
OworCisgICAgaWYgKGRpc2tJbWFnZUNhY2hlKCkuaXNGdWxsKCkpIHsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChiaW5kKCZEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNhbmNlbE1hcCwgZW50cnkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVudHJ5LT5tYXAoKTsKKworICAgIC8v
IFVwZGF0ZSB0aGUgc2l6ZSBvbiBhIHN1Y2Nlc3NmdWwgbWFwcGluZy4KKyAgICBpZiAoZW50cnkt
PmlzTWFwcGVkKCkpCisgICAgICAgIGRpc2tJbWFnZUNhY2hlKCkudXBkYXRlU2l6ZShlbnRyeS0+
c2l6ZSgpKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZFJlbW92ZUZpbGUo
KQoreworICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1v
dmVGaWxlVGhyZWFkU3RhcnQodm9pZCogZW50cnlQdHIpCit7CisgICAgRGlza0ltYWdlQ2FjaGU6
OkVudHJ5KiBlbnRyeSA9IHN0YXRpY19jYXN0PERpc2tJbWFnZUNhY2hlOjpFbnRyeSo+KGVudHJ5
UHRyKTsKKworICAgIGVudHJ5LT51bm1hcCgpOworICAgIGVudHJ5LT5yZW1vdmVGaWxlKCk7CisK
KyAgICAvLyBGSVhNRTogcnVuIGluIG1haW4gdGhyZWFkIHdoZW4gd2UgbW92ZSB0aGUgYWJvdmUg
dG8gaXRzIG93biB0aHJlYWQuCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZEaXNrSW1hZ2VD
YWNoZTo6RW50cnk6OmRpZFJlbW92ZUZpbGUsIGVudHJ5KSk7Cit9CisKK0Rpc2tJbWFnZUNhY2hl
OjpEaXNrSW1hZ2VDYWNoZSgpCisgICAgOiBtX2VuYWJsZWQoZmFsc2UpCisgICAgLCBtX3NpemUo
MCkKKyAgICAsIG1fbWF4aW11bUNhY2hlU2l6ZSgxMDAgKiAxMDI0ICogMTAyNCkKKyAgICAsIG1f
bWluaW11bUltYWdlU2l6ZSgxMDAgKiAxMDI0KQorICAgICwgbV9uZXh0QXZhaWxhYmxlSWQoRGlz
a0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCArIDEpCit7Cit9CisKK0Rpc2tJbWFnZUNh
Y2hlSWQgRGlza0ltYWdlQ2FjaGU6OndyaXRlSXRlbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aXRlbSkKK3sKKyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFjcmVhdGVEaXJlY3RvcnlJZk5lZWRl
ZCgpKQorICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsK
KworICAgIC8vIFdlIGFyZSBhbHJlYWR5IGZ1bGwsIGNhbm5vdCBhZGQgYW55dGhpbmcgdW50aWwg
c29tZXRoaW5nIGlzIHJlbW92ZWQuCisgICAgaWYgKGlzRnVsbCgpKSB7CisgICAgICAgIExPRyhE
aXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBjb3VsZCBub3QgcHJvY2VzcyBhbiBpdGVt
IGJlY2F1c2UgdGhlIGNhY2hlIHdhcyBmdWxsIGF0ICglZCkuIFRoZSBcIm1heFwiIGJlaW5nICgl
ZCkiLCBtX3NpemUsIG1fbWF4aW11bUNhY2hlU2l6ZSk7CisgICAgICAgIHJldHVybiBEaXNrSW1h
Z2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhbiBl
bnRyeS4KKyAgICBEaXNrSW1hZ2VDYWNoZUlkIGlkID0gbmV4dEF2YWlsYWJsZUlkKCk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaXRlbTsKKyAgICBSZWZQdHI8RGlza0ltYWdl
Q2FjaGU6OkVudHJ5PiBlbnRyeSA9IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y3JlYXRlKGJ1ZmZl
ci5nZXQoKSwgaWQpOworICAgIG1fdGFibGUuYWRkKGlkLCBlbnRyeSk7CisKKyAgICAvLyBDcmVh
dGUgYSB0ZW1wb3JhcnkgZmlsZSBwYXRoLgorICAgIFN0cmluZyBwYXRoID0gdGVtcG9yYXJ5Rmls
ZSgpOworICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBjcmVhdGluZyBl
bnRyeSAoJWQpIGF0ICglcykiLCBpZCwgcGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAocGF0
aC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0Nh
Y2hlSWQ7CisKKyAgICBlbnRyeS0+c2V0VGVtcG9yYXJ5RmlsZVBhdGgocGF0aCk7CisKKyAgICAv
LyBUaGUgbGlmZXRpbWUgb2YgdGhlIEVudHJ5IGlzIGhhbmRsZWQgb24gdGhlIG1haW4gdGhyZWFk
LiBCZWZvcmUgd2Ugc2VuZAorICAgIC8vIHRvIGEgZGlzcGF0Y2ggcXVldWUgd2UgbmVlZCB0byBy
ZWYgc28gdGhhdCB3ZSBhcmUgc3VyZSB0aGUgb2JqZWN0IHN0aWxsCisgICAgLy8gZXhpc3RzLiBU
aGlzIGNhbGwgaXMgYmFsYW5jZWQgaW4gdGhlIGNhbGxiYWNrcyBkaXNwYXRjaGVkIGZyb20KKyAg
ICAvLyBFbnRyeTo6bWFwLiBvciB0aGUgZWFybHkgcmV0dXJuIGluIHRoaXMgZGlzcGF0Y2guCisg
ICAgZW50cnktPnJlZigpOworCisgICAgLy8gTWFwIHRvIGRpc2sgYXN5bmNocm9ub3VzbHkuCisg
ICAgY3JlYXRlVGhyZWFkKERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwVGhyZWFkU3RhcnQsIGVu
dHJ5LmdldCgpLCAiV2ViQ29yZTogRGlza0ltYWdlQ2FjaGU6Om1hcCIpOworCisgICAgcmV0dXJu
IGlkOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXplKHVuc2lnbmVkIGRlbHRh
KQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgbV9zaXplICs9IGRlbHRh
OworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpyZW1vdmVJdGVtKERpc2tJbWFnZUNhY2hlSWQg
aWQpCit7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IHJlbW92ZUl0
ZW0gKCVkKSIsIGlkKTsKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9
IG1fdGFibGUuZ2V0KGlkKTsKKyAgICBtX3RhYmxlLnJlbW92ZShpZCk7CisgICAgaWYgKCFlbnRy
eS0+aXNNYXBwZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlU2l6ZSgtKGVudHJ5
LT5zaXplKCkpKTsKKworICAgIGVudHJ5LT5yZWYoKTsKKworICAgIGNyZWF0ZVRocmVhZChEaXNr
SW1hZ2VDYWNoZTo6RW50cnk6OnJlbW92ZUZpbGVUaHJlYWRTdGFydCwgZW50cnkuZ2V0KCksICJX
ZWJDb3JlOiBEaXNrSW1hZ2VDYWNoZTo6cmVtb3ZlSXRlbSIpOworfQorCit2b2lkKiBEaXNrSW1h
Z2VDYWNoZTo6ZGF0YUZvckl0ZW0oRGlza0ltYWdlQ2FjaGVJZCBpZCkKK3sKKyAgICBBU1NFUlQo
aWQpOworCisgICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBtX3RhYmxl
LmdldChpZCk7CisgICAgQVNTRVJUKGVudHJ5LT5pc01hcHBlZCgpKTsKKyAgICByZXR1cm4gZW50
cnktPmRhdGEoKTsKK30KKworYm9vbCBEaXNrSW1hZ2VDYWNoZTo6Y3JlYXRlRGlyZWN0b3J5SWZO
ZWVkZWQoKQoreworICAgIGlmICghbV9jYWNoZURpcmVjdG9yeS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBtX2NhY2hlRGlyZWN0b3J5ID0gdGVtcG9yYXJ5RGlyZWN0b3J5
KCk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IENyZWF0ZWQgdGVt
cG9yYXJ5IGRpcmVjdG9yeSAoJXMpIiwgbV9jYWNoZURpcmVjdG9yeS51dGY4KCkuZGF0YSgpKTsK
KyAgICBpZiAobV9jYWNoZURpcmVjdG9yeS5pc051bGwoKSkgeworICAgICAgICBMT0dfRVJST1Io
IkRpc2tJbWFnZUNhY2hlOiBjb3VsZCBub3QgY3JlYXRlIGNhY2hlIGRpcmVjdG9yeSIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+ZGlkQ3JlYXRlRGlza0ltYWdlQ2FjaGVEaXJlY3RvcnkobV9jYWNoZURpcmVjdG9y
eSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRGlza0ltYWdlQ2FjaGVJZCBEaXNrSW1hZ2VD
YWNoZTo6bmV4dEF2YWlsYWJsZUlkKCkKK3sKKyAgICByZXR1cm4gbV9uZXh0QXZhaWxhYmxlSWQr
KzsKK30KKworI2lmIFBMQVRGT1JNKEdUSykKKy8vIEZvciBHVEsrIHdlIHVzZSBhIHdlbGwta25v
d24gbmFtZSBpbnNpZGUgdGhlIHVzZXIncyBYREcgY2FjaGUgZGlyZWN0b3J5LCBzbyB0aGF0IHdl
IGNhbgorLy8gYmV0dGVyIG1hbmFnZSBpdHMgY2xlYW51cC4KK1N0cmluZyBEaXNrSW1hZ2VDYWNo
ZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KCkKK3sKKyAgICBTdHJpbmcgcGF0aCA9IGNyZWF0ZVVzZXJD
YWNoZURpcmVjdG9yeSgiZGlzay1pbWFnZS1jYWNoZSIpOworICAgIGlmIChwYXRoLmlzRW1wdHko
KSkKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0ZSBj
YWNoZSBkaXJlY3RvcnkuIik7CisKKyAgICAvLyBDbGVhbnVwIHRoZSBkaXJlY3RvcnkuCisgICAg
VmVjdG9yPFN0cmluZz4gaXRlbXMgPSBsaXN0RGlyZWN0b3J5KHBhdGgsICJ0bXAqIik7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykKKyAgICAgICAgZGVsZXRl
RmlsZShpdGVtc1tpXSk7CisKKyAgICByZXR1cm4gcGF0aDsKK30KKyNlbHNlCitTdHJpbmcgRGlz
a0ltYWdlQ2FjaGU6OnRlbXBvcmFyeURpcmVjdG9yeSgpCit7CisgICAgU3RyaW5nIHRlbXBEaXNr
Q2FjaGVEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoIkRpc2tJbWFnZUNhY2hl
Iik7CisgICAgaWYgKHRlbXBEaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBM
T0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRp
cmVjdG9yeS4iKTsKKworICAgIHJldHVybiB0ZW1wRGlza0NhY2hlRGlyZWN0b3J5OworfQorI2Vu
ZGlmCisKK1N0cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RmlsZSgpCit7CisgICAgU3Ry
aW5nIHRlbXBGaWxlID0gY3JlYXRlVGVtcG9yYXJ5RmlsZShtX2NhY2hlRGlyZWN0b3J5LCAidG1w
Iik7CisgICAgaWYgKHRlbXBGaWxlLmlzRW1wdHkoKSkKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNr
SW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLiIpOworCisgICAg
cmV0dXJuIHRlbXBGaWxlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGNmN2Q3NWY5MjQ1
N2M4ZjllODI1OTYwZGIwZGFhMWI4ZmRlN2M4MmIuLjdkZTM2MzUwZjUzNzcwMDQ4NWU5MjMxMWUz
ZjcyYzFiMGY0ZjQ1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjkxLDYgKzI5MSwyMyBAQCBWZWN0b3I8U3RyaW5nPiBs
aXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAj
ZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcHJlZml4KQoreworICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsK
KyAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBnZXRlbnYoIlRNUERJUiIpOworCisgICAgaWYgKCF0
bXBEaXIpCisgICAgICAgIHRtcERpciA9ICIvdG1wIjsKKworICAgIGlmIChzbnByaW50ZihidWZm
ZXIsIFBBVEhfTUFYLCAiJXMvJXNYWFhYWFgiLCB0bXBEaXIsIHByZWZpeC51dGY4KCkuZGF0YSgp
KSA+PSBQQVRIX01BWCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKG1rZHRl
bXAoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoYnVmZmVyKTsKK30KKwogU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBjaGFy
IGJ1ZmZlcltQQVRIX01BWF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYmIzZGIwMjIwNzczOTQ3MjhhYjQw
NGRiZGVmMDhkZTE5NTRlNDJlMy4uMzE3YmEwMmI5ODBhYTY1OTJiYWZhMzcwMzE5MWM3OGJiYjcx
NzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtODQsNiArODQsOSBAQCB2b2lkIFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIp
IGNvbgogICAgIGVuY29kZXIgPDwgc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aDsK
ICAgICBlbmNvZGVyIDw8IHNob3VsZFVzZUZvbnRTbW9vdGhpbmc7CiAgICAgZW5jb2RlciA8PCBp
Y29uRGF0YWJhc2VFbmFibGVkOworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGVu
Y29kZXIgPDwgZGlza0ltYWdlQ2FjaGVFbmFibGVkOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCB0
ZXJtaW5hdGlvblRpbWVvdXQ7CiAgICAgZW5jb2RlciA8PCBsYW5ndWFnZXM7CiAgICAgZW5jb2Rl
ciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwpAQCAtMTg0LDYgKzE4NywxMCBAQCBib29sIFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFdlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmRpc2tJbWFnZUNhY2hlRW5hYmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50ZXJtaW5hdGlvblRp
bWVvdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmxhbmd1YWdlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBhMjRhN2VlZTE2NjRhYzUzMjExN2Uz
YmVjNjMwM2Y0OWU2ZjgyMDNlLi5lYzhkMDdlYTA5MDM0YTdlNzRkMzljZjAxOTcxNDg1Zjc0ODMy
NDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKQEAgLTk3LDYgKzk3LDEwIEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKIAogICAgIGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZDsKIAorI2lmIEVO
QUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGJvb2wgZGlza0ltYWdlQ2FjaGVFbmFibGVkOwor
I2VuZGlmCisKICAgICBkb3VibGUgdGVybWluYXRpb25UaW1lb3V0OwogCiAgICAgVmVjdG9yPFN0
cmluZz4gbGFuZ3VhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmlu
ZGV4IGVkNjI2YWRkN2UxZWM0OTQyMzZlN2NhYWM0NDdjOTk5YTNjMmQ2NmYuLjI1ZDRlYjBkNTk3
OWE5NWI4ZDUzODg2YjYzOGVhNTE4OTkwYTZkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKQEAgLTU0Nyw2ICs1NDcsMTAgQEAgV2ViUHJvY2Vzc1Byb3h5KiBXZWJD
b250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICAKICAgICBwYXJhbWV0ZXJzLmljb25E
YXRhYmFzZUVuYWJsZWQgPSAhaWNvbkRhdGFiYXNlUGF0aCgpLmlzRW1wdHkoKTsKIAorI2lmIEVO
QUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIHBhcmFtZXRlcnMuZGlza0ltYWdlQ2FjaGVFbmFi
bGVkID0gdHJ1ZTsKKyNlbmRpZgorCiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQg
PSAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2Vzcykg
PyBzaGFyZWRTZWNvbmRhcnlQcm9jZXNzU2h1dGRvd25UaW1lb3V0IDogMDsKIAogICAgIHBhcmFt
ZXRlcnMudGV4dENoZWNrZXJTdGF0ZSA9IFRleHRDaGVja2VyOjpzdGF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMzQ0NDM0N2E4YmEyNWM1MzNlOTUy
NjA1MTU2YjZmOGM2NzBmMzg1YS4uNTBhNjI2ZmI1M2E4YzkyODMxYzUyYjFhOGJiNzVhMWI2YWU1
YTlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDYs
NiArMTA2LDEwIEBACiAjaW5jbHVkZSAiV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorI2luY2x1ZGUgIkRpc2tJ
bWFnZUNhY2hlLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5oIgogI2VuZGlmCkBAIC0yOTEsNiArMjk1LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
CiAgICAgbV9pY29uRGF0YWJhc2VQcm94eS0+c2V0RW5hYmxlZChwYXJhbWV0ZXJzLmljb25EYXRh
YmFzZUVuYWJsZWQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAg
ICBkaXNrSW1hZ2VDYWNoZSgpLnNldEVuYWJsZWQocGFyYW1ldGVycy5kaXNrSW1hZ2VDYWNoZUVu
YWJsZWQpOworI2VuZGlmCisKICAgICBpZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnNldENhY2hlRGlyZWN0
b3J5KHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBiL1NvdXJjZS9hdXRvdG9v
bHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCBiN2MyOGZmYzdkMjc0MzRiODk4ZmJlNGRk
MWZjZjU5YjlhOTBjNmI2Li5jNThlYWNlYjM5NTNiYTgyMzU1MWVkMThmZTUyYzY0OGZmMzZlYjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysr
IGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CkBAIC0xMjAsNiArMTIw
LDcgQEAgJHNyY2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1kZWZpbmVzLWZpbGVzICRD
T05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIFwKICAgICBFTkFCTEVfREVUQUlMU19FTEVNRU5U
PTEgXAogICAgIEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT049MCBcCiAgICAgRU5BQkxFX0RJUkVD
VE9SWV9VUExPQUQ9MCBcCisgICAgRU5BQkxFX0RJU0tfSU1BR0VfQ0FDSEU9MCBcCiAgICAgRU5B
QkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPTAgXAogICAgIEVOQUJMRV9ET1dOTE9BRF9BVFRS
SUJVVEU9MCBcCiAgICAgRU5BQkxFX0ZJTFRFUlM9MSBcCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWU0YTYxMWI4MzM0NzQzOWRlMzEzNTZhZmZm
MzA5MTc3NTZjZjMzZi4uMjM0YzE2ODliNDhjZTFlNDRmNGE1OWEyOWFhYTEwNmQ5OWFmODQ2NCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEzLTExLTExICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5v
cm9uaGFAY29sbGFib3JhLmNvbT4KKworICAgICAgICBNYWtlIERpc2tJbWFnZUNhY2hlIGNyb3Nz
LXBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbTogYWRkIG5ldyBmZWF0dXJlIGZs
YWcgZm9yIGRpc2sgaW1hZ2UgY2FjaGUuCisKIDIwMTMtMTEtMDggIE1hdHRoZXcgSGFuc29uICA8
bWF0dGhld19oYW5zb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZGVkIG15
c2VsZiBhcyBhIGNvbnRyaWJ1dG9yLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtCmluZGV4IDczNmIxNzY0YjM3OGQ4YWRiOTNjZmJmMDJmZGQwM2YwOWM3NTc3YzYuLmVmYTkx
ZTdmZGQ1ZWMwOGQ5ZTExYjJlYWMyZGZmNTQwMmE2OTFkZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTc1LDYgKzc1LDcgQEAgbXkgKAogICAgICRkZXRhaWxz
RWxlbWVudFN1cHBvcnQsCiAgICAgJGRldmljZU9yaWVudGF0aW9uU3VwcG9ydCwKICAgICAkZGly
ZWN0b3J5VXBsb2FkU3VwcG9ydCwKKyAgICAkZGlza0ltYWdlQ2FjaGUsCiAgICAgJGRvbTRFdmVu
dHNDb25zdHJ1Y3RvciwKICAgICAkZG93bmxvYWRBdHRyaWJ1dGVTdXBwb3J0LAogICAgICRmaWx0
ZXJzU3VwcG9ydCwKQEAgLTI1NSw2ICsyNTYsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBv
cHRpb24gPT4gImRpcmVjdG9yeS11cGxvYWQiLCBkZXNjID0+ICJUb2dnbGUgRGlyZWN0b3J5IFVw
bG9hZCBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQi
LCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCB9LAogCisg
ICAgeyBvcHRpb24gPT4gImRpc2staW1hZ2UtY2FjaGUiLCBkZXNjID0+ICJUb2dnbGUgRGlzayBJ
bWFnZSBDYWNoZSBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0RJU0tfSU1BR0Vf
Q0FDSEUiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZGlza0ltYWdlQ2FjaGUgfSwKKwogICAg
IHsgb3B0aW9uID0+ICJkb200LWV2ZW50cy1jb25zdHJ1Y3RvciIsIGRlc2MgPT4gIkV4cG9zZSBE
T000IEV2ZW50cyBjb25zdHJ1Y3RvcnMiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1IiLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGso
KSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRkb200RXZlbnRzQ29uc3RydWN0b3IgfSwKIApkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZiOWNjNDMzZjFiYzEwMWI0MDRm
MjE0ZjkyN2RmYjdhOWU3NGQ1NjYuLjdlZTJiODM3NWQ4YWM4NTM5ZjRiMzFmOTllZTk3ZjljZGQ1
NzljMDkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMy0xMS0xMSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3Jvbmhh
QGNvbGxhYm9yYS5jb20+CisKKyAgICAgICAgTWFrZSBEaXNrSW1hZ2VDYWNoZSBjcm9zcy1wbGF0
Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
MTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
b3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQ6IG5ldyBmZWF0dXJlIGZsYWcg
Zm9yIERJU0tfSU1BR0VfQ0FDSEUuCisKIDIwMTMtMTEtMDYgIEtyenlzenRvZiBDemVjaCAgPGsu
Y3plY2hAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gQ2hhbmdlIHJlcXVpcmVkIHZlcnNp
b24gb2YgQVRLIHRvIDIuMTAuMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216830</attachid>
            <date>2013-11-13 11:55:30 -0800</date>
            <delta_ts>2013-11-14 03:52:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124167-20131113175528.patch</filename>
            <type>text/plain</type>
            <size>65105</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE4MmM0MWUyZmMxYmQ0
ZjFkZTZiNjA2OWMwZTMzYTk2YTMyYzQ2Mi4uZTA0OTc1NzFiOTg4NGY4NzU3YjgzNGM4ZDE3MmY5
M2E1ZjhiZTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTExLTExICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBNYWtlIERpc2tJbWFnZUNhY2hlIGNyb3NzLXBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaG91bGQgYmUgY292ZXJlZCBieSBleGlz
dGluZyBpbWFnZSB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ciBpcyBleHBlY3RlZAorICAg
ICAgICBmcm9tIHRoZSBvcmlnaW5hbCBJT1MgY29kZSB0aGF0IHdhcyB1cHN0cmVhbWVkLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogYWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiB1c2UgbmV3IGZpbGVzLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6IGFkb3B0IG5ldyBoZWFkZXIgbmFtZS4KKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9EaXNrSW1hZ2VD
YWNoZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VD
YWNoZUlPUy5oLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjppZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6aXNNYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjYWNoZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNr
SW1hZ2VDYWNoZTo6aXNGdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp+
RGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hl
Q2xpZW50SU9TLmguCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZUNsaWVudDo6fkRp
c2tJbWFnZUNhY2hlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDogYWRvcHQgbmV3IGhlYWRlciBuYW1l
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSk6IEdUSysgaW1wbGVtZW50YXRpb24gb2Yg
bmV3IG1ldGhvZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLAorICAgICAgICBjcmVhdGVz
IGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFy
eUZpbGUpOiBkaXR0bywgYnV0IGNyZWF0ZXMgYSBmaWxlLgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OmRpc2tJ
bWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6RW50
cnkpOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6fkVu
dHJ5KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1h
cEludGVybmFsKTogZGl0dG8uIEFsc28gdXNlIGZpbGUgZGVzY3JpcHRvciBkaXJlY3RseSBpbnN0
ZWFkIG9mIFBsYXRmb3JtRmlsZUhhbmRsZQorICAgICAgICBzaW5jZSB0aGlzIGlzIGEgUE9TSVgg
aW1wbGVtZW50YXRpb24sIGFuZCBpdCB3b3VsZCBtYWtlIGxpZmUgaGFyZGVyIHRvIEdUSysgd2hp
Y2ggdXNlcyBoaWdoZXIgbGV2ZWwgb2JqZWN0cworICAgICAgICBhcyBpdHMgUGxhdGZvcm1GaWxl
SGFuZGxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWls
TWVtb3J5TWFwKTogY2xlYW51cCBhZnRlciBmYWlsdXJlLgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRNYXBNZW1vcnkpOiBtYXJrIGJ1ZmZlciBhcyBtYXBwZWQg
YW5kIGNsZWFudXAgb24gc3VjY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6bWFwKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJlYWRpbmcgQVBJ
cyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6OnVubWFwKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2Fj
aGU6OkVudHJ5OjpyZW1vdmVGaWxlKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJl
YWRpbmcgQVBJcyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6RW50cnk6OmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKTogdW5jaGFuZ2VkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmlsZUludGVybmFs
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpz
ZXRUZW1wb3JhcnlGaWxlUGF0aCk6IG5ldyBoZWxwZXIgdXNlZCBieSB0aGUgY29kZSB0aGF0IHVz
ZWQgdG8gYmUgYSBsaWJkaXNwYXRjaAorICAgICAgICBibG9jay4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcFRocmVhZFN0YXJ0KTogZGl0dG8uIFN0YXJ0
cyB0aGUgdGhyZWFkIHRoYXQgbWFwcyB0aGUgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSk6IGRpdHRvLiBDbGVhbnMgdXAgYWZ0ZXIg
ZmlsZSByZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpy
ZW1vdmVGaWxlVGhyZWFkU3RhcnQpOiBkaXR0by4gU3RhcnRzIHRoZSB0aHJlYWQgdGhhdCByZW1v
dmVzIHRoZSBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkRpc2tJbWFn
ZUNhY2hlKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6Ondy
aXRlSXRlbSk6IHBvcnRlZCBhd2F5IGZyb20gbGliZGlzcGF0Y2gvYmxvY2tzIGFuZCBNQUMvSU9T
IHRocmVhZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXpl
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnJlbW92ZUl0
ZW0pOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRl
bSk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjcmVhdGVE
aXJlY3RvcnlJZk5lZWRlZCk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFn
ZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQpOiB1bmNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KTogdXNlIFN0cmluZyBpbnN0ZWFkIG9m
IE5TU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeUZp
bGUpOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogbmV3IG1ldGhv
ZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVj
dG9yeS4KKwogMjAxMy0xMS0xMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtBWF0gQ2xlYW4gdXAgc3RhdGljX2Nhc3Q8PiB0byBjYXN0IGZyb20g
QWNjZXNzaWJpbGl0eU9iamVjdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEw
NTQ3NTFjYTM5NDFjYzZhODllMGIzZDI2Li40NWJjMTcyYzE1MTEzZTZmNmI5MjJlMjA5M2JjNzMx
MDA0MjZjMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMTEg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgor
CisgICAgICAgIE1ha2UgRGlza0ltYWdlQ2FjaGUgY3Jvc3MtcGxhdGZvcm0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDE2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDogdXNlIHRoZSBuZXcgbmFtZSBmb3IgdGhlIGltYWdl
IGNhY2hlIGNsaWVudAorICAgICAgICBoZWFkZXIgKERpc2tJbWFnZUNhY2hlQ2xpZW50LmgpLgor
CiAyMDEzLTExLTA3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIGEgUExBVEZPUk0oSU9TKSBmcm9tIFdlYktpdCBQcml2YXRlIEhlYWRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDIxZjA1ZWY4M2ZkNzViYjQ3M2JlY2JmMWVkZGUwYzMxNWIxZjExYTAuLmNk
OTkzYWYyMWVlZGUxOTc5MmNmNmU2NjZkZjVlYjNjNzlmZmM2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxMy0xMS0xMSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5u
b3JvbmhhQGNvbGxhYm9yYS5jb20+CisKKyAgICAgICAgTWFrZSBEaXNrSW1hZ2VDYWNoZSBjcm9z
cy1wbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI0MTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IGhhbmRsZSBuZXcg
ZGlzayBpbWFnZSBjcmVhdGlvbiBwYXJhbWV0ZXIuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHA6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9j
ZXNzKTogZGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBkaXR0by4KKwog
MjAxMy0xMS0wOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBjcmVhdGVDRlVSTEZyb21CdWZmZXIgd2hlbiBjb252ZXJ0aW5nIGEgU3RyaW5nIHRvIGEgQ0ZV
UkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDc3MWZlMGMwZWQ5MjY2M2UwZTg2
YmVlYTRmZDhjNTliOTZiNzIyMmQuLjcxODMzNDUzYzJjYzdiZmRmMjQxZThjYzkyNjc3MTNlZThl
MDAwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTg4Nyw2ICs1ODg3LDcg
QEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm90ZWN0aW9uU3BhY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm94eVNlcnZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlT
ZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQ
T1NJWC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hl
Y2tlckVuY2hhbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1Rl
eHRDaGVja2VyRW5jaGFudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlk
aUNvbnRleHQuY3BwIFwKQEAgLTU5NzIsNiArNTk3Myw4IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlckNsaWVudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGVjaW1hbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNo
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oIFwK
ICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXAogICAgIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggXAogICAgIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMTJk
OGUwYmEwN2RjNzlkZjJhMDVhYTE3NTY4M2ZiZjM3MDk4NWUyZi4uMzg4NjEyYzM1NzU5ZmNkMWFh
NzBhZDUzNTJlNDZjNjc3ZWJmZGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE2
OSw2ICsxNjksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9T
eW5jaHJvbm91c0xvYWRlckNsaWVudFNvdXAuY3BwCiAKKyAgICBwbGF0Zm9ybS9wb3NpeC9EaXNr
SW1hZ2VDYWNoZVBPU0lYLmNwcAogICAgIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBiN2Y2
MDhhM2NkMDI2NjJhMzM2NDY1MzEyYmNhMjI0ZDc4MjNlM2YuLjZjOWUxMGFlZTUyM2Q3OTQ5MzNj
ZjY4ODkyNWZlN2Y0MDM1NjY4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MTAsOSArMzUxMCw5IEBACiAJCUE1QUJCNzg3
MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYx
OTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVBRkIzNEYxMTUx
NTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdl
LmNwcCAqLzsgfTsKIAkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEUxMTUx
NTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUE1QzU2NkFCMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1h
Z2VDYWNoZUNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QTVGOUVGNzAxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVGNkUxMjY2NzUwRDAw
RkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovOyB9OwotCQlBNUY5RUY3MTEyNjY3NTBE
MDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1h
Z2VDYWNoZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUZBNzA5NEVCN0Q5QTdBRTQxNDRGM0EwNSAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE3MDk0RUI3
RDlBN0FFNDE0NEYzQTA1IC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRUU3M0Y0OUZFMzVEN0NGNkYxQzk3
QkFFIC8qIERpc2tJbWFnZUNhY2hlUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREU0MUZFNjM5MzlDQjhGOTExMzNGNUM2IC8qIERpc2tJbWFn
ZUNhY2hlUE9TSVguY3BwICovOyB9OworCQkzMjE0MTg3M0YxMUE5NEFCMUVCMURCRTAgLyogRGlz
a0ltYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMyMTQxODczRjExQTk0QUIxRUIxREJFMCAvKiBEaXNrSW1hZ2VDYWNoZS5oICovOyB9Owog
CQlBNjE0OEE2MjEyRTQxRDNBMDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhB
NjExMkU0MUQzQTAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50SW50ZXJuYWwuaCAqLzsg
fTsKIAkJQTYxNDhBNjcxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNjE0OEE2NTEy
RTQxRDk0MDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnQuaCAqLzsgfTsKIAkJQTYxNDhB
NjgxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhBNjYxMkU0MUQ5NDAwNDRB
Nzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50Lm1tICovOyB9OwpAQCAtMTAyNjgsMTEgKzEwMjY4
LDExIEBACiAJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzREMTE1MTUx
QTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3RlcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVB
RkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdGVwUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBNzA5NEVCN0Q5QTdBRTQxNDRGM0EwNSAv
KiBEaXNrSW1hZ2VDYWNoZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEaXNrSW1hZ2VDYWNoZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBLZXlFdmVudENvY29hLmg7IHBhdGggPSBjb2NvYS9LZXlFdmVu
dENvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NEQwMTE0ODVGRjEw
MDY2RjJBQiAvKiBLZXlFdmVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gS2V5RXZlbnRDb2NvYS5tbTsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1RjlFRjZFMTI2Njc1MEQwMEZDQ0Y1
MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBNUY5RUY2RjEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREU0MUZFNjM5MzlDQjhGOTExMzNGNUM2IC8qIERpc2tJ
bWFnZUNhY2hlUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGlza0ltYWdlQ2FjaGVQT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMy
MTQxODczRjExQTk0QUIxRUIxREJFMCAvKiBEaXNrSW1hZ2VDYWNoZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNjE0OEE2MTEyRTQxRDNBMDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1l
bnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MS2V5
Z2VuRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE2MTQ4
QTY1MTJFNDFEOTQwMDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNjE0OEE2NjEyRTQxRDk0MDA0NEE3ODQgLyogRE9NSFRNTEtl
eWdlbkVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
T01IVE1MS2V5Z2VuRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1
MDgwLDYgKzE1MDgwLDcgQEAKIAkJNTE2MDMwMDkwQ0M0MjQ1NDAwQzhBQzI1IC8qIHBvc2l4ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlERTQxRkU2Mzkz
OUNCOEY5MTEzM0Y1QzYgLyogRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAgKi8sCiAJCQkJNTE2MDMw
MEEwQ0M0MjUxMjAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IHBvc2l4OwpAQCAtMTk4NDMsNyArMTk4NDQsNiBAQAogCQkJCUE4RDJCMjUyMTI4N0E1
NjAwMEFGNEREQSAvKiBjYWNoZSAqLywKIAkJCQk3RUU2ODQ3MzEyRDI2RTU1MDBFNzk0MTUgLyog
Y2YgKi8sCiAJCQkJNTEyNkU2QjYwQTJFM0FFRjAwNUMyOUZBIC8qIGljb24gKi8sCi0JCQkJQ0U3
OUQ2ODYxN0YyMjBFRDAwODE1QzAwIC8qIGlvcyAqLywKIAkJCQk5M0ExRUFBMjBBNTYzNEQ4MDA2
OTYwQTAgLyogbWFjICovLAogCQkJCUUxNDI0QzkxMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVK
YXIuY3BwICovLAogCQkJCUUxNDI0QzkyMTY0QjUyQzgwMEYzMkQ0MCAvKiBDb29raWVKYXIuaCAq
LywKQEAgLTIwMDE4LDYgKzIwMDE4LDggQEAKIAkJCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0Mg
LyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQk0NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyog
RGVjaW1hbC5jcHAgKi8sCiAJCQkJNDVGRUE1Q0UxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwu
aCAqLywKKwkJCQkzMjE0MTg3M0YxMUE5NEFCMUVCMURCRTAgLyogRGlza0ltYWdlQ2FjaGUuaCAq
LywKKwkJCQlGQTcwOTRFQjdEOUE3QUU0MTQ0RjNBMDUgLyogRGlza0ltYWdlQ2FjaGVDbGllbnQu
aCAqLywKIAkJCQlBNzk1NDY0MjBCNUM0Q0I0MDA3QjQzOEYgLyogRHJhZ0RhdGEuY3BwICovLAog
CQkJCUE3QjZFNjlEMEIyOTFBOTYwMEQwNTI5RiAvKiBEcmFnRGF0YS5oICovLAogCQkJCUE3Q0ZC
M0NGMEI3RUQxMEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuY3BwICovLApAQCAtMjAyNjMsMTYgKzIw
MjY1LDYgQEAKIAkJCXBhdGggPSBtZWRpYXNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07Ci0JCUNFNzlENjg2MTdGMjIwRUQwMDgxNUMwMCAvKiBpb3MgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUE1RjlFRjZFMTI2Njc1MEQwMEZD
Q0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSAqLywKLQkJCQlBNUY5RUY2RjEyNjY3NTBEMDBG
Q0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCAqLywKLQkJCQlBNUM1NjZBQTEyN0EzQUFEMDBF
OEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0g
aW9zOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJREY5QUZENkYxM0ZDMzFC
MDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMjIzMTUsOCArMjIzMDcsOCBAQAogCQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUzNzA2
OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTYwMjNGMDE1MzJD
NDBDMDBENTBGRjQgLyogRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBRjE5OTkx
NTEzRDEzMTAwOERCMEMzIC8qIERpcmVjdENvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QTVGOUVGNzExMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBNUM1NjZBQjEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGll
bnRJT1MuaCBpbiBIZWFkZXJzICovLAorCQkJCTMyMTQxODczRjExQTk0QUIxRUIxREJFMCAvKiBE
aXNrSW1hZ2VDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkE3MDk0RUI3RDlBN0FFNDE0NEYz
QTA1IC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2
OTE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1RDhDNERDMDE0MjgyMjJDMDAyNkNFNzIgLyogRGlzcGxheVNsZWVwRGlzYWJsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5j
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTc3NCw3ICsyNTc2Niw3IEBACiAJCQkJMzEyRDY3QjEx
NTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRB
RjE5OTgxNTEzRDEzMTAwOERCMEMzIC8qIERpcmVjdENvbnZvbHZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTY2MEFDMjE4MjhDODQ2MDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb25MZXZlbERCLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1RjlFRjcwMTI2Njc1MEQwMEZD
Q0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUVFNzNGNDlG
RTM1RDdDRjZGMUM5N0JBRSAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5RkM3QTUwMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRjJENkMxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1RDhDNERCRjE0Mjgy
MjJDMDAyNkNFNzIgLyogRGlzcGxheVNsZWVwRGlzYWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBlNmJmOTk2
ZGE4ZWZkYTlkNzMxMWQ0ZmJiYjQ0MGUxNzZmYzk1ZWI1Li41OTcxNzNmMmY0NGY3Y2ZkYzQyMGQz
OTlmOGI4NDVmNzI2NWZiYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKERJU0tf
SU1BR0VfQ0FDSEUpCi0jaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJT1MuaCIKKyNpbmNsdWRlICJE
aXNrSW1hZ2VDYWNoZS5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDQ2OTA0ODVjMGY1Zjcy
YWZhMGUxOGY5YmI2N2UwNDZkZGJkNTU0MGQuLmU5OWVlNzZjNzdlZGJhYmU1M2E5ZDRjYmFiNjEw
NmM4NDliNjczZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
I2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlSU9T
LmgiCisjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZl
ci5oIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlza0lt
YWdlQ2FjaGVDbGllbnRJT1MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU5MTM2
MzVlOWY5ZmY0MTI0NmZlMWIxMTIwMDUzYjU3YmU5YmQxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJ
bWFnZUNhY2hlQ2xpZW50SU9TLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPU19oCi0jZGVmaW5lIERpc2tJ
bWFnZUNhY2hlQ2xpZW50SU9TX2gKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQ
TEFURk9STShJT1MpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpc2tJ
bWFnZUNhY2hlQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RGlza0ltYWdlQ2FjaGVDbGllbnQ+
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EaXNrSW1hZ2VDYWNoZUNsaWVudCgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEaXNrSW1hZ2VDYWNoZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElPUykKLQotI2VuZGlm
IC8vIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvRGlza0ltYWdlQ2FjaGVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvRGlza0ltYWdlQ2FjaGVJT1MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQz
MTZiNzY0MTNmOTk0ZTUzMzMyYTRmOGM4OTM2NmI0MzQxMTdjOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rp
c2tJbWFnZUNhY2hlSU9TLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgRGlza0ltYWdlQ2FjaGVJT1NfaAotI2RlZmluZSBEaXNrSW1hZ2VDYWNo
ZUlPU19oCi0KLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQot
Ci0jaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCIKLSNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXR5cGVkZWYgdW5zaWduZWQgRGlz
a0ltYWdlQ2FjaGVJZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBHbG9iYWwgZGlzayBp
bWFnZSBjYWNoZSBvYmplY3QuCi1jbGFzcyBEaXNrSW1hZ2VDYWNoZSB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRGlza0ltYWdlQ2FjaGUpOwotcHJpdmF0ZToKLQotICAgIC8vIExpZmV0aW1l
IG9mIHRoaXMgRW50cnkgYW5kIHRoZSBTaGFyZWRCdWZmZXIgaXQgd3JhcHMgaXMgbWFuYWdlZCBv
biB0aGUgV2ViVGhyZWFkLgotICAgIGNsYXNzIEVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RW50
cnk+IHsKLSAgICBwcml2YXRlOgotICAgICAgICBFbnRyeShTaGFyZWRCdWZmZXIqLCBEaXNrSW1h
Z2VDYWNoZUlkKTsKLQotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5PiBjcmVhdGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJbWFn
ZUNhY2hlSWQgaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RGlza0ltYWdlQ2FjaGU6OkVudHJ5KGJ1ZmZlciwgaWQpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IH5FbnRyeSgpOwotCi0gICAgICAgIHZvaWQgbWFwKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAg
ICAgIHZvaWQgdW5tYXAoKTsKLSAgICAgICAgdm9pZCByZW1vdmVGaWxlKCk7Ci0gICAgICAgIHZv
aWQgY2xlYXJEYXRhV2l0aG91dE1hcHBpbmcoKTsKLQotICAgICAgICBEaXNrSW1hZ2VDYWNoZUlk
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX21hcHBpbmc7IH0KLSAgICAgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwcGluZyAhPSBudWxscHRyOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBib29sIG1hcElu
dGVybmFsKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgICAgIGludCB3cml0ZVRvRmlsZUludGVy
bmFsKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0KLSAgICAgICAgU2hhcmVkQnVmZmVyKiBtX2J1ZmZl
cjsKLSAgICAgICAgRGlza0ltYWdlQ2FjaGVJZCBtX2lkOwotICAgICAgICB1bnNpZ25lZCBtX3Np
emU7Ci0gICAgICAgIHZvaWQqIG1fbWFwcGluZzsKLSAgICAgICAgU3RyaW5nIG1fcGF0aDsKLSAg
ICB9OwotCi1wdWJsaWM6Ci0gICAgZnJpZW5kIERpc2tJbWFnZUNhY2hlJiBkaXNrSW1hZ2VDYWNo
ZSgpOwotICAgIHN0YXRpYyBjb25zdCBEaXNrSW1hZ2VDYWNoZUlkIGludmFsaWREaXNrQ2FjaGVJ
ZCA9IDA7Ci0KLSAgICAvLyBXcml0ZSBvdXQgYW4gaXRlbS4KLSAgICBEaXNrSW1hZ2VDYWNoZUlk
IHdyaXRlSXRlbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOwotCi0gICAgLy8gUmVtb3ZlIGl0
ZW0uCi0gICAgdm9pZCByZW1vdmVJdGVtKERpc2tJbWFnZUNhY2hlSWQpOwotCi0gICAgLy8gTWFw
cGluZyBmb3IgYW4gaXRlbS4KLSAgICB2b2lkKiBkYXRhRm9ySXRlbShEaXNrSW1hZ2VDYWNoZUlk
KTsKLQotICAgIC8vIFNldHVwIGEgY2xpZW50IGZvciBjYWxsYmFja3MuCi0gICAgdm9pZCBzZXRD
bGllbnQoUGFzc1JlZlB0cjxEaXNrSW1hZ2VDYWNoZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50
ID0gY2xpZW50OyB9Ci0KLSAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlZDsgfQotICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0g
ZW5hYmxlZDsgfQotCi0gICAgdW5zaWduZWQgbWF4aW11bUNhY2hlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWF4aW11bUNhY2hlU2l6ZTsgfQotICAgIHZvaWQgc2V0TWF4aW11bUNhY2hlU2l6ZSh1
bnNpZ25lZCBtYXhpbXVtKSB7IG1fbWF4aW11bUNhY2hlU2l6ZSA9IG1heGltdW07IH0KLQotICAg
IHVuc2lnbmVkIG1pbmltdW1JbWFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1JbWFn
ZVNpemU7IH0KLSAgICB2b2lkIHNldE1pbmltdW1JbWFnZVNpemUodW5zaWduZWQgbWluaW11bSkg
eyBtX21pbmltdW1JbWFnZVNpemUgPSBtaW5pbXVtOyB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGNh
Y2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZURpcmVjdG9yeTsgfQotCi0gICAg
dW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIGJvb2wgaXNGdWxs
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplID49IG1fbWF4aW11bUNhY2hlU2l6ZTsgfQotCi1wcml2
YXRlOgotICAgIERpc2tJbWFnZUNhY2hlKCk7Ci0gICAgfkRpc2tJbWFnZUNhY2hlKCkgeyB9Ci0K
LSAgICBib29sIGNyZWF0ZURpcmVjdG9yeUlmTmVlZGVkKCk7Ci0gICAgRGlza0ltYWdlQ2FjaGVJ
ZCBuZXh0QXZhaWxhYmxlSWQoKTsKLQotICAgIFN0cmluZyB0ZW1wb3JhcnlEaXJlY3RvcnkoKTsK
LSAgICBTdHJpbmcgdGVtcG9yYXJ5RmlsZSgpOwotCi0gICAgdm9pZCB1cGRhdGVTaXplKHVuc2ln
bmVkIGRlbHRhKTsKLQotICAgIGJvb2wgbV9lbmFibGVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZTsK
LSAgICB1bnNpZ25lZCBtX21heGltdW1DYWNoZVNpemU7Ci0gICAgdW5zaWduZWQgbV9taW5pbXVt
SW1hZ2VTaXplOwotICAgIERpc2tJbWFnZUNhY2hlSWQgbV9uZXh0QXZhaWxhYmxlSWQ7Ci0gICAg
U3RyaW5nIG1fY2FjaGVEaXJlY3Rvcnk7Ci0KLSAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGVDbGll
bnQ+IG1fY2xpZW50OwotICAgIEhhc2hNYXA8RGlza0ltYWdlQ2FjaGVJZCwgUmVmUHRyPERpc2tJ
bWFnZUNhY2hlOjpFbnRyeT4+IG1fdGFibGU7Ci0KLSAgICBNdXRleCBtX211dGV4OwotfTsKLQot
Ly8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgZGlzayBpbWFnZSBjYWNoZS4KLURpc2tJ
bWFnZUNhY2hlJiBkaXNrSW1hZ2VDYWNoZSgpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCi0j
ZW5kaWYgLy8gRGlza0ltYWdlQ2FjaGVJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvRGlza0ltYWdlQ2FjaGVJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5
OGRhNjY3NTlhMzdlYzVkMWVkMjBmOTlhOGZhMmUxZjk1ZTRiYWEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9E
aXNrSW1hZ2VDYWNoZUlPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlSU9T
LmgiCi0KLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCi0j
aW5jbHVkZSAiRmlsZVN5c3RlbUlPUy5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJXZWJDb3JlVGhyZWFkLmgiCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgotI2luY2x1
ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGlza0ltYWdlQ2Fj
aGUmIGRpc2tJbWFnZUNhY2hlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGlza0lt
YWdlQ2FjaGU+IGNhY2hlOwotICAgIHJldHVybiBjYWNoZTsKLX0KLQotRGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjpFbnRyeShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGlza0ltYWdlQ2FjaGVJZCBpZCkK
LSAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKLSAgICAsIG1faWQoaWQpCi0gICAgLCBtX3NpemUoMCkK
LSAgICAsIG1fbWFwcGluZyhudWxscHRyKQotewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJl
bnQoKSk7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzTG9ja2VkKCkpOwotICAgIEFTU0VSVChtX2J1
ZmZlcik7Ci0gICAgbV9idWZmZXItPnJlZigpOwotfQotCi1EaXNrSW1hZ2VDYWNoZTo6RW50cnk6
On5FbnRyeSgpCi17Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NF
UlQoV2ViVGhyZWFkSXNMb2NrZWQoKSk7Ci0gICAgQVNTRVJUKCFtX2J1ZmZlcik7Ci0gICAgQVNT
RVJUKCFtX21hcHBpbmcpOwotfQotCi1ib29sIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwSW50
ZXJuYWwoY29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAg
QVNTRVJUKCFtX21hcHBpbmcpOwotCi0gICAgbV9wYXRoID0gcGF0aDsKLSAgICBtX3NpemUgPSBt
X2J1ZmZlci0+c2l6ZSgpOwotCi0gICAgLy8gT3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZyBhbmQg
d3JpdGluZy4KLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3BlbihtX3BhdGgudXRm
OCgpLmRhdGEoKSwgT19DUkVBVCB8IE9fUkRXUiB8IE9fVFJVTkMsIHN0YXRpY19jYXN0PG1vZGVf
dD4oMDYwMCkpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGUgZmlsZS4KLSAgICBpZiAo
d3JpdGVUb0ZpbGVJbnRlcm5hbChoYW5kbGUpID09IC0xKSB7Ci0gICAgICAgIGNsb3NlRmlsZSho
YW5kbGUpOwotICAgICAgICBkZWxldGVGaWxlKG1fcGF0aCk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICAvLyBTZWVrIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4KLSAgICBpZiAo
c2Vla0ZpbGUoaGFuZGxlLCAwLCBTZWVrRnJvbUJlZ2lubmluZykgPT0gLTEpIHsKLSAgICAgICAg
Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFBlcmZvcm0gbWVtb3J5IG1hcHBpbmcgZm9y
IHJlYWRpbmcuCi0gICAgLy8gTk9URTogVGhpcyBtdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZSBv
cGVuKCkgYWJvdmUsIHdoaWNoIG11c3QgYWxzbyBvcGVuIGZvciByZWFkaW5nLgotICAgIG1fbWFw
cGluZyA9IG1tYXAobnVsbHB0ciwgbV9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGhhbmRs
ZSwgMCk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgaWYgKG1fbWFwcGluZyA9PSBNQVBf
RkFJTEVEKSB7Ci0gICAgICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBt
YXBwaW5nIGZhaWxlZCAoJWQpOiAoJXMpIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7Ci0gICAg
ICAgIG1fbWFwcGluZyA9IG51bGxwdHI7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lk
IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBB
U1NFUlQobV9idWZmZXIpOwotICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKLSAgICBEaXNrSW1hZ2VD
YWNoZTo6RW50cnkqIHRoaXNFbnRyeSA9IHRoaXM7Ci0KLSAgICBib29sIGZpbGVNYXBwZWQgPSBt
YXBJbnRlcm5hbChwYXRoKTsKLSAgICBpZiAoIWZpbGVNYXBwZWQpIHsKLSAgICAgICAgLy8gTm90
aWZ5IHRoZSBidWZmZXIgaW4gdGhlIGNhc2Ugb2YgYSBmYWlsZWQgbWFwcGluZy4KLSAgICAgICAg
V2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBtX2J1ZmZlci0+ZmFpbGVkTWVtb3J5TWFwKCk7
Ci0gICAgICAgICAgICBtX2J1ZmZlci0+ZGVyZWYoKTsKLSAgICAgICAgICAgIG1fYnVmZmVyID0g
MDsKLSAgICAgICAgICAgIHRoaXNFbnRyeS0+ZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBOb3RpZnkgdGhlIGJ1ZmZlciBpbiB0aGUgY2FzZSBv
ZiBhIHN1Y2Nlc3NmdWwgbWFwcGluZy4KLSAgICAvLyBUaGlzIHNob3VsZCBoYXBwZW4gb24gdGhl
IFdlYlRocmVhZCBiZWNhdXNlIHRoaXMgaXMgYmVpbmcgcnVuCi0gICAgLy8gYXN5bmNocm9ub3Vz
bHkgaW5zaWRlIGEgZGlzcGF0Y2ggcXVldWUuCi0gICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAg
IG1fYnVmZmVyLT5tYXJrQXNNZW1vcnlNYXBwZWQoKTsKLSAgICAgICAgbV9idWZmZXItPmRlcmVm
KCk7Ci0gICAgICAgIG1fYnVmZmVyID0gMDsKLSAgICAgICAgdGhpc0VudHJ5LT5kZXJlZigpOwot
ICAgIH0pOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6dW5tYXAoKQotewotICAg
IGlmICghbV9tYXBwaW5nKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zaXplKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChtdW5tYXAobV9tYXBwaW5nLCBtX3NpemUpID09IC0xKQot
ICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgbXVubWFwIGEgbWVt
b3J5IG1hcHBlZCBmaWxlIHdpdGggaWQgKCVkKSIsIG1faWQpOwotCi0gICAgbV9tYXBwaW5nID0g
bnVsbHB0cjsKLSAgICBtX3NpemUgPSAwOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6cmVtb3ZlRmlsZSgpCi17Ci0gICAgQVNTRVJUKCFtX21hcHBpbmcpOwotICAgIEFTU0VSVCgh
bV9zaXplKTsKLQotICAgIGlmICghZGVsZXRlRmlsZShtX3BhdGgpKQotICAgICAgICBMT0dfRVJS
T1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgZGVsZXRlIG1lbW9yeSBtYXBwZWQgZmlsZSAo
JXMpIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpF
bnRyeTo6Y2xlYXJEYXRhV2l0aG91dE1hcHBpbmcoKQotewotICAgIEFTU0VSVCghbV9tYXBwaW5n
KTsKLSAgICBBU1NFUlQobV9idWZmZXIpOwotICAgIG1fYnVmZmVyLT5kZXJlZigpOwotICAgIG1f
YnVmZmVyID0gMDsKLX0KLQotaW50IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6d3JpdGVUb0ZpbGVJ
bnRlcm5hbChQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQotewotICAgIEFTU0VSVChtX2J1ZmZl
cik7Ci0gICAgaW50IHRvdGFsQnl0ZXNXcml0dGVuID0gMDsKLQotICAgIGNvbnN0IGNoYXIqIHNl
Z21lbnQgPSBudWxscHRyOwotICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKLSAgICB3aGlsZSAo
dW5zaWduZWQgbGVuZ3RoID0gbV9idWZmZXItPmdldFNvbWVEYXRhKHNlZ21lbnQsIHBvc2l0aW9u
KSkgewotICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBzZWdt
ZW50LCBsZW5ndGgpOwotICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKQotICAgICAgICAg
ICAgcmV0dXJuIC0xOwotCi0gICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRl
bjsKLSAgICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwotICAgIH0KLQotICAgIHJldHVybiB0b3Rh
bEJ5dGVzV3JpdHRlbjsKLX0KLQotCi1EaXNrSW1hZ2VDYWNoZTo6RGlza0ltYWdlQ2FjaGUoKQot
ICAgIDogbV9lbmFibGVkKGZhbHNlKQotICAgICwgbV9zaXplKDApCi0gICAgLCBtX21heGltdW1D
YWNoZVNpemUoMTAwICogMTAyNCAqIDEwMjQpCi0gICAgLCBtX21pbmltdW1JbWFnZVNpemUoMTAw
ICogMTAyNCkKLSAgICAsIG1fbmV4dEF2YWlsYWJsZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlk
RGlza0NhY2hlSWQgKyAxKQotewotfQotCi1EaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFnZUNhY2hl
Ojp3cml0ZUl0ZW0oUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGl0ZW0pCi17Ci0gICAgaWYgKCFp
c0VuYWJsZWQoKSB8fCAhY3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKSkKLSAgICAgICAgcmV0dXJu
IERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7Ci0KLSAgICAvLyBXZSBhcmUgYWxy
ZWFkeSBmdWxsLCBjYW5ub3QgYWRkIGFueXRoaW5nIHVudGlsIHNvbWV0aGluZyBpcyByZW1vdmVk
LgotICAgIGlmIChpc0Z1bGwoKSkgewotICAgICAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNr
SW1hZ2VDYWNoZTogY291bGQgbm90IHByb2Nlc3MgYW4gaXRlbSBiZWNhdXNlIHRoZSBjYWNoZSB3
YXMgZnVsbCBhdCAoJWQpLiBUaGUgXCJtYXhcIiBiZWluZyAoJWQpIiwgbV9zaXplLCBtX21heGlt
dW1DYWNoZVNpemUpOwotICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNr
Q2FjaGVJZDsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGUgYW4gZW50cnkuCi0gICAgRGlza0ltYWdl
Q2FjaGVJZCBpZCA9IG5leHRBdmFpbGFibGVJZCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGl0ZW07Ci0gICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4gZW50cnkg
PSBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNyZWF0ZShidWZmZXIuZ2V0KCksIGlkKTsKLSAgICBt
X3RhYmxlLmFkZChpZCwgZW50cnkpOwotCi0gICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUg
cGF0aC4KLSAgICBTdHJpbmcgcGF0aCA9IHRlbXBvcmFyeUZpbGUoKTsKLSAgICBMT0coRGlza0lt
YWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogY3JlYXRpbmcgZW50cnkgKCVkKSBhdCAoJXMpIiwg
aWQsIHBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKHBhdGguaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiBEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOwotCi0gICAgLy8gVGhl
IGxpZmV0aW1lIG9mIHRoZSBFbnRyeSBpcyBoYW5kbGVkIG9uIHRoZSBXZWJUaHJlYWQuCi0gICAg
Ly8gQmVmb3JlIHdlIHNlbmQgdG8gYSBkaXNwYXRjaCBxdWV1ZSB3ZSBuZWVkIHRvIHJlZiBzbwot
ICAgIC8vIHRoYXQgd2UgYXJlIHN1cmUgdGhlIG9iamVjdCBzdGlsbCBleGlzdHMuIFRoaXMgY2Fs
bAotICAgIC8vIGlzIGJhbGFuY2VkIGluIHRoZSBXZWJUaHJlYWRSdW4gaW5zaWRlIG9mIEVudHJ5
OjptYXAuCi0gICAgLy8gb3IgdGhlIGVhcmx5IHJldHVybiBpbiB0aGlzIGRpc3BhdGNoLgotICAg
IERpc2tJbWFnZUNhY2hlOjpFbnRyeSogbG9jYWxFbnRyeUZvckJsb2NrID0gZW50cnkuZ2V0KCk7
Ci0gICAgbG9jYWxFbnRyeUZvckJsb2NrLT5yZWYoKTsKLQotICAgIC8vIE1hcCB0byBkaXNrIGFz
eW5jaHJvbm91c2x5LgotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVl
dWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAgICAgIC8vIFRo
ZSBjYWNoZSBiZWNhbWUgZnVsbCBzaW5jZSB0aGUgdGltZSB3ZSB3ZXJlIGFkZGVkIHRvIHRoZSBx
dWV1ZS4gRG9uJ3QgbWFwLgotICAgICAgICBpZiAoZGlza0ltYWdlQ2FjaGUoKS5pc0Z1bGwoKSkg
ewotICAgICAgICAgICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICAgICAgbG9jYWxFbnRy
eUZvckJsb2NrLT5jbGVhckRhdGFXaXRob3V0TWFwcGluZygpOwotICAgICAgICAgICAgICAgIGxv
Y2FsRW50cnlGb3JCbG9jay0+ZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9jYWxFbnRyeUZvckJsb2NrLT5tYXAocGF0
aCk7Ci0KLSAgICAgICAgLy8gVXBkYXRlIHRoZSBzaXplIG9uIGEgc3VjY2Vzc2Z1bCBtYXBwaW5n
LgotICAgICAgICBpZiAobG9jYWxFbnRyeUZvckJsb2NrLT5pc01hcHBlZCgpKQotICAgICAgICAg
ICAgZGlza0ltYWdlQ2FjaGUoKS51cGRhdGVTaXplKGxvY2FsRW50cnlGb3JCbG9jay0+c2l6ZSgp
KTsKLSAgICB9KTsKLQotICAgIHJldHVybiBpZDsKLX0KLQotdm9pZCBEaXNrSW1hZ2VDYWNoZTo6
dXBkYXRlU2l6ZSh1bnNpZ25lZCBkZWx0YSkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0
ZXgpOwotICAgIG1fc2l6ZSArPSBkZWx0YTsKLX0KLQotdm9pZCBEaXNrSW1hZ2VDYWNoZTo6cmVt
b3ZlSXRlbShEaXNrSW1hZ2VDYWNoZUlkIGlkKQotewotICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwg
IkRpc2tJbWFnZUNhY2hlOiByZW1vdmVJdGVtICglZCkiLCBpZCk7Ci0gICAgUmVmUHRyPERpc2tJ
bWFnZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBtX3RhYmxlLmdldChpZCk7Ci0gICAgbV90YWJsZS5y
ZW1vdmUoaWQpOwotICAgIGlmICghZW50cnktPmlzTWFwcGVkKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHVwZGF0ZVNpemUoLShlbnRyeS0+c2l6ZSgpKSk7Ci0KLSAgICBEaXNrSW1hZ2VDYWNo
ZTo6RW50cnkgKmxvY2FsRW50cnlGb3JCbG9jayA9IGVudHJ5LmdldCgpOwotICAgIGxvY2FsRW50
cnlGb3JCbG9jay0+cmVmKCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2Jh
bF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAgICAgICAg
bG9jYWxFbnRyeUZvckJsb2NrLT51bm1hcCgpOwotICAgICAgICBsb2NhbEVudHJ5Rm9yQmxvY2st
PnJlbW92ZUZpbGUoKTsKLSAgICAgICAgV2ViVGhyZWFkUnVuKF57IGxvY2FsRW50cnlGb3JCbG9j
ay0+ZGVyZWYoKTsgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQqIERpc2tJbWFnZUNhY2hlOjpkYXRh
Rm9ySXRlbShEaXNrSW1hZ2VDYWNoZUlkIGlkKQotewotICAgIEFTU0VSVChpZCk7Ci0KLSAgICBS
ZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0KGlkKTsKLSAg
ICBBU1NFUlQoZW50cnktPmlzTWFwcGVkKCkpOwotICAgIHJldHVybiBlbnRyeS0+ZGF0YSgpOwot
fQotCi1ib29sIERpc2tJbWFnZUNhY2hlOjpjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgpCi17Ci0g
ICAgaWYgKCFtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIG1fY2FjaGVEaXJlY3RvcnkgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKTsKLSAgICBMT0co
RGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogQ3JlYXRlZCB0ZW1wb3JhcnkgZGlyZWN0
b3J5ICglcykiLCBtX2NhY2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChtX2Nh
Y2hlRGlyZWN0b3J5LmlzTnVsbCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2Fj
aGU6IGNvdWxkIG5vdCBjcmVhdGUgY2FjaGUgZGlyZWN0b3J5Iik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRD
cmVhdGVEaXNrSW1hZ2VDYWNoZURpcmVjdG9yeShtX2NhY2hlRGlyZWN0b3J5KTsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1EaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFnZUNhY2hlOjpuZXh0QXZh
aWxhYmxlSWQoKQotewotICAgIHJldHVybiBtX25leHRBdmFpbGFibGVJZCsrOwotfQotCi1TdHJp
bmcgRGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcg
KnRlbXBEaXNrQ2FjaGVEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJEaXNr
SW1hZ2VDYWNoZSIpOwotICAgIGlmICghdGVtcERpc2tDYWNoZURpcmVjdG9yeSkKLSAgICAgICAg
TE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBk
aXJlY3RvcnkuIik7Ci0KLSAgICByZXR1cm4gdGVtcERpc2tDYWNoZURpcmVjdG9yeTsKLX0KLQot
U3RyaW5nIERpc2tJbWFnZUNhY2hlOjp0ZW1wb3JhcnlGaWxlKCkKLXsKLSAgICBOU1N0cmluZyAq
dGVtcEZpbGUgPSBjcmVhdGVUZW1wb3JhcnlGaWxlKG1fY2FjaGVEaXJlY3RvcnksIEAidG1wIik7
Ci0gICAgaWYgKCF0ZW1wRmlsZSkKLSAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTog
Q291bGQgbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLiIpOwotCi0gICAgcmV0dXJuIHRlbXBG
aWxlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRElT
S19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rp
c2tJbWFnZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjExZGE2ZDk1MjY1MGUwNGJiY2JiZThkZjA4MWRi
MjdlMjFkMjU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rp
c2tJbWFnZUNhY2hlLmgKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IENvbGxhYm9yYSBMdGQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGlza0ltYWdlQ2FjaGVfaAorI2Rl
ZmluZSBEaXNrSW1hZ2VDYWNoZV9oCisKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKwor
I2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlQ2xpZW50LmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgdW5zaWduZWQgRGlz
a0ltYWdlQ2FjaGVJZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBHbG9iYWwgZGlzayBp
bWFnZSBjYWNoZSBvYmplY3QuCitjbGFzcyBEaXNrSW1hZ2VDYWNoZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRGlza0ltYWdlQ2FjaGUpOworcHJpdmF0ZToKKworICAgIC8vIExpZmV0aW1l
IG9mIHRoaXMgRW50cnkgYW5kIHRoZSBTaGFyZWRCdWZmZXIgaXQgd3JhcHMgYXJlIG1hbmFnZWQg
aW4gdGhlIG1haW4gdGhyZWFkLgorICAgIGNsYXNzIEVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8
RW50cnk+IHsKKyAgICBwcml2YXRlOgorICAgICAgICBFbnRyeShTaGFyZWRCdWZmZXIqLCBEaXNr
SW1hZ2VDYWNoZUlkKTsKKworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBjcmVhdGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJ
bWFnZUNhY2hlSWQgaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KGJ1ZmZlciwgaWQpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIH5FbnRyeSgpOworCisgICAgICAgIHZvaWQgbWFwKCk7CisgICAgICAgIHZvaWQgdW5tYXAo
KTsKKyAgICAgICAgdm9pZCByZW1vdmVGaWxlKCk7CisgICAgICAgIHZvaWQgY2xlYXJEYXRhV2l0
aG91dE1hcHBpbmcoKTsKKworICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQorICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CisgICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX21hcHBpbmc7IH0K
KyAgICAgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGluZyAhPSBudWxs
cHRyOyB9CisgICAgICAgIHZvaWQgc2V0VGVtcG9yYXJ5RmlsZVBhdGgoY29uc3QgU3RyaW5nJik7
CisKKyAgICAgICAgc3RhdGljIHZvaWQgbWFwVGhyZWFkU3RhcnQodm9pZCopOworICAgICAgICBz
dGF0aWMgdm9pZCByZW1vdmVGaWxlVGhyZWFkU3RhcnQodm9pZCopOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCBtYXBJbnRlcm5hbCgpOworICAgICAgICB2b2lkIGNhbmNlbE1hcCgpOwor
CisjaWYgT1MoVU5JWCkKKyAgICAgICAgaW50IHdyaXRlVG9GaWxlSW50ZXJuYWwoaW50IGZkKTsK
KyNlbmRpZgorCisgICAgICAgIHZvaWQgZGlkRmFpbE1lbW9yeU1hcCgpOworICAgICAgICB2b2lk
IGRpZE1hcE1lbW9yeSgpOworICAgICAgICB2b2lkIGRpZFJlbW92ZUZpbGUoKTsKKworICAgICAg
ICBTaGFyZWRCdWZmZXIqIG1fYnVmZmVyOworICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIG1faWQ7
CisgICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICAgICAgdm9pZCogbV9tYXBwaW5nOworICAg
ICAgICBTdHJpbmcgbV9wYXRoOworICAgIH07CisKK3B1YmxpYzoKKyAgICBmcmllbmQgRGlza0lt
YWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPERpc2tJbWFnZUNhY2hlPjsKKyAgICBzdGF0aWMgY29uc3QgRGlza0ltYWdlQ2FjaGVJZCBp
bnZhbGlkRGlza0NhY2hlSWQgPSAwOworCisgICAgLy8gV3JpdGUgb3V0IGFuIGl0ZW0uCisgICAg
RGlza0ltYWdlQ2FjaGVJZCB3cml0ZUl0ZW0oUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKwor
ICAgIC8vIFJlbW92ZSBpdGVtLgorICAgIHZvaWQgcmVtb3ZlSXRlbShEaXNrSW1hZ2VDYWNoZUlk
KTsKKworICAgIC8vIE1hcHBpbmcgZm9yIGFuIGl0ZW0uCisgICAgdm9pZCogZGF0YUZvckl0ZW0o
RGlza0ltYWdlQ2FjaGVJZCk7CisKKyAgICAvLyBTZXR1cCBhIGNsaWVudCBmb3IgY2FsbGJhY2tz
LgorICAgIHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGVDbGllbnQ+IGNs
aWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworICAgIHVuc2lnbmVkIG1heGltdW1DYWNoZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1DYWNoZVNpemU7IH0KKyAgICB2b2lkIHNldE1h
eGltdW1DYWNoZVNpemUodW5zaWduZWQgbWF4aW11bSkgeyBtX21heGltdW1DYWNoZVNpemUgPSBt
YXhpbXVtOyB9CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW1hZ2VTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9taW5pbXVtSW1hZ2VTaXplOyB9CisgICAgdm9pZCBzZXRNaW5pbXVtSW1hZ2VTaXplKHVu
c2lnbmVkIG1pbmltdW0pIHsgbV9taW5pbXVtSW1hZ2VTaXplID0gbWluaW11bTsgfQorCisgICAg
Y29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVEaXJl
Y3Rvcnk7IH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
KyAgICBib29sIGlzRnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZSA+PSBtX21heGltdW1DYWNo
ZVNpemU7IH0KKworcHJpdmF0ZToKKyAgICBEaXNrSW1hZ2VDYWNoZSgpOworICAgIH5EaXNrSW1h
Z2VDYWNoZSgpIHsgfQorCisgICAgYm9vbCBjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgpOworICAg
IERpc2tJbWFnZUNhY2hlSWQgbmV4dEF2YWlsYWJsZUlkKCk7CisKKyAgICBTdHJpbmcgdGVtcG9y
YXJ5RGlyZWN0b3J5KCk7CisgICAgU3RyaW5nIHRlbXBvcmFyeUZpbGUoKTsKKworICAgIHZvaWQg
dXBkYXRlU2l6ZSh1bnNpZ25lZCBkZWx0YSk7CisKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICB1
bnNpZ25lZCBtX3NpemU7CisgICAgdW5zaWduZWQgbV9tYXhpbXVtQ2FjaGVTaXplOworICAgIHVu
c2lnbmVkIG1fbWluaW11bUltYWdlU2l6ZTsKKyAgICBEaXNrSW1hZ2VDYWNoZUlkIG1fbmV4dEF2
YWlsYWJsZUlkOworICAgIFN0cmluZyBtX2NhY2hlRGlyZWN0b3J5OworCisgICAgUmVmUHRyPERp
c2tJbWFnZUNhY2hlQ2xpZW50PiBtX2NsaWVudDsKKyAgICBIYXNoTWFwPERpc2tJbWFnZUNhY2hl
SWQsIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+PiBtX3RhYmxlOworCisgICAgTXV0ZXgg
bV9tdXRleDsKK307CisKKy8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgZ2xvYmFsIGRpc2sgaW1h
Z2UgY2FjaGUuCitEaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdlQ2FjaGUoKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisKKyNl
bmRpZiAvLyBEaXNrSW1hZ2VDYWNoZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlz
a0ltYWdlQ2FjaGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTdhM2EwZGExMjQ4ZWZiY2MwYjhjZmI0
MzAzMTc5MWI2NTU1MzQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGlza0ltYWdlQ2FjaGVDbGllbnQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBEaXNrSW1hZ2VDYWNoZUNsaWVudF9oCisjZGVmaW5lIERpc2tJbWFnZUNhY2hlQ2xp
ZW50X2gKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBEaXNrSW1hZ2VDYWNoZUNsaWVudCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPERpc2tJbWFnZUNhY2hlQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RGlza0lt
YWdlQ2FjaGVDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGlza0ltYWdl
Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpID0gMDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQor
CisjZW5kaWYgLy8gRGlza0ltYWdlQ2FjaGVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5oCmluZGV4IGZhMDMzZWRjNDI4MDQyY2M0NTJmZTZlZDU2NGRlODdjYmU1ZDc1ZDUu
LjU4MjM3N2FmY2RlN2EyNDI1NzJmN2VlYTNkMjA5MjQ4NmRlN2Y5MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE2NCw2ICsxNjQsOCBAQCBpbmxpbmUgZG91YmxlIGlu
dmFsaWRGaWxlVGltZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVp
ZXRfTmFOKAogaW5saW5lIGJvb2wgaXNWYWxpZEZpbGVUaW1lKGRvdWJsZSB0aW1lKSB7IHJldHVy
biBzdGQ6OmlzZmluaXRlKHRpbWUpOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFt
ZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCitTdHJpbmcgY3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcHJlZml4KTsKK1N0cmluZyBjcmVh
dGVUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgc3ViRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcm
IHByZWZpeCk7CiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSYpOwpAQCAtMTk4LDYgKzIwMCw3IEBAIFN0cmluZyBmaWxlbmFtZVRvU3RyaW5nKGNv
bnN0IGNoYXIqKTsKIFN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3QgU3RyaW5nJik7CiBD
U3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgpOwogQ1N0cmluZyBzaGFyZWRSZXNvdXJj
ZXNQYXRoKCk7CitTdHJpbmcgY3JlYXRlVXNlckNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
OwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiB1aW50NjRfdCBnZXRWb2x1bWVGcmVlU2l6ZUZvclBh
dGgoY29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
aW5kZXggNTU4N2FhM2Q2NWUzMTM3NTg3ZjI0NGJmYWE3Mzc2OTY4NjM5ZWEwOC4uMDI5Y2FiNzZi
YmNiNjMzZDAyYWJhNTE4NjgxYzFhOGQ2NjMzZjkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvVW5pY29kZS5oPgogCiAjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0jaW5jbHVkZSAi
RGlza0ltYWdlQ2FjaGVJT1MuaCIKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgogI2VuZGlm
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggMjdjNGFiMDQ1OGVkNzdiNDVlZWI2MzBiOWY2ODIxMTMx
MWJlYTAxNi4uMmE2MzQ2NjU0ZTZhZWFjYTU2YjdiODFmOWI3MTBkNjQwMWQ2YjRlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApAQCAtMjY5LDYg
KzI2OSw0MSBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKK1N0cmlu
ZyBjcmVhdGVVc2VyQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEdP
d25QdHI8Z2NoYXI+IHBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2Rpcigp
LCAid2Via2l0Z3RrIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxH
RmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBhdGguZ2V0KCkpKTsK
KyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisKKyAgICBpZiAoIWdfZmlsZV9tYWtlX2RpcmVj
dG9yeV93aXRoX3BhcmVudHMoZmlsZS5nZXQoKSwgMCwgJmVycm9yLm91dFB0cigpKSAmJiBlcnJv
ci0+Y29kZSAhPSBHX0lPX0VSUk9SX0VYSVNUUykKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aC5nZXQoKSk7Cit9CisKK1N0cmluZyBj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7CisgICAgR093
blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0Zjgo
KS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgR093blB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGly
KCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFk
b3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CisKKyAgICBpZiAo
IWdfZmlsZV9tYWtlX2RpcmVjdG9yeV93aXRoX3BhcmVudHMoZmlsZS5nZXQoKSwgMCwgMCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1w
UGF0aC5nZXQoKSk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmlu
ZyYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyYgcHJlZml4KQoreworICAgIEdPd25QdHI8Z2NoYXI+
IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdPd25QdHI8
Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUobG9jYXRpb24udXRmOCgpLmRhdGEoKSwg
ZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkpKTsKKworICAgIEdSZWZQdHI8
R0ZpbGVPdXRwdXRTdHJlYW0+IG91dHB1dFN0cmVhbSA9IGdfZmlsZV9jcmVhdGUoZmlsZS5nZXQo
KSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKKyAgICBpZiAoIW91dHB1dFN0cmVhbSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQ
YXRoLmdldCgpKTsKK30KKwogU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBHT3duUHRyPGdjaGFy
PiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWUxZDAwNTFlY2U1MmFlYmQwOGI4N2FmYTYzMjRkZjk1YzgxMjY4YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hl
UE9TSVguY3BwCkBAIC0wLDAgKzEsMzcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBDb2xs
YWJvcmEgTHRkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlz
a0ltYWdlQ2FjaGUuaCIKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBPUyhVTklY
KQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8
ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cisj
aW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rpc2tJ
bWFnZUNhY2hlJiBkaXNrSW1hZ2VDYWNoZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PERpc2tJbWFnZUNhY2hlPiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK0Rpc2tJbWFn
ZUNhY2hlOjpFbnRyeTo6RW50cnkoU2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJbWFnZUNhY2hl
SWQgaWQpCisgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9z
aXplKDApCisgICAgLCBtX21hcHBpbmcobnVsbHB0cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgbV9idWZmZXItPnJlZigpOworfQor
CitEaXNrSW1hZ2VDYWNoZTo6RW50cnk6On5FbnRyeSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7
Cit9CisKK2Jvb2wgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBJbnRlcm5hbCgpCit7CisgICAg
QVNTRVJUKG1fYnVmZmVyKTsKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7CisKKyAgICBtX3NpemUg
PSBtX2J1ZmZlci0+c2l6ZSgpOworCisgICAgLy8gT3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZyBh
bmQgd3JpdGluZy4KKyAgICBpbnQgZmQgPSBvcGVuKG1fcGF0aC51dGY4KCkuZGF0YSgpLCBPX0NS
RUFUIHwgT19SRFdSIHwgT19UUlVOQywgc3RhdGljX2Nhc3Q8bW9kZV90PigwNjAwKSk7CisgICAg
aWYgKGZkID09IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXcml0ZSB0aGUg
ZGF0YSB0byB0aGUgZmlsZS4KKyAgICBpZiAod3JpdGVUb0ZpbGVJbnRlcm5hbChmZCkgPT0gLTEp
IHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBkZWxldGVGaWxlKG1fcGF0aCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBTZWVrIGJhY2sgdG8gdGhlIGJlZ2lu
bmluZy4KKyAgICBpZiAobHNlZWsoZmQsIDAsIFNFRUtfU0VUKSA9PSAtMSkgeworICAgICAgICBj
bG9zZShmZCk7CisgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIC8vIFBlcmZvcm0gbWVtb3J5IG1hcHBpbmcgZm9yIHJlYWRpbmcu
CisgICAgLy8gTk9URTogVGhpcyBtdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZSBvcGVuKCkgYWJv
dmUsIHdoaWNoIG11c3QgYWxzbyBvcGVuIGZvciByZWFkaW5nLgorICAgIG1fbWFwcGluZyA9IG1t
YXAobnVsbHB0ciwgbV9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGZkLCAwKTsKKyAgICBj
bG9zZShmZCk7CisgICAgaWYgKG1fbWFwcGluZyA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgIExP
RyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBtYXBwaW5nIGZhaWxlZCAoJWQpOiAo
JXMpIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIG1fbWFwcGluZyA9IG51bGxw
dHI7CisgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6ZGlkRmFpbE1lbW9yeU1hcCgpCit7CisgICAgbV9idWZmZXItPmZhaWxlZE1lbW9yeU1hcCgp
OworICAgIG1fYnVmZmVyLT5kZXJlZigpOworICAgIG1fYnVmZmVyID0gMDsKKyAgICB0aGlzLT5k
ZXJlZigpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkTWFwTWVtb3J5KCkK
K3sKKyAgICBtX2J1ZmZlci0+bWFya0FzTWVtb3J5TWFwcGVkKCk7CisgICAgbV9idWZmZXItPmRl
cmVmKCk7CisgICAgbV9idWZmZXIgPSAwOworICAgIHRoaXMtPmRlcmVmKCk7Cit9CisKK3ZvaWQg
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXAoKQoreworICAgIEFTU0VSVCghbV9wYXRoLmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7CisK
KyAgICBib29sIGZpbGVNYXBwZWQgPSBtYXBJbnRlcm5hbCgpOworICAgIGlmICghZmlsZU1hcHBl
ZCkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6ZGlkRmFpbE1lbW9yeU1hcCwgdGhpcykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZE1hcE1l
bW9yeSwgdGhpcykpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6dW5tYXAoKQor
eworICAgIGlmICghbV9tYXBwaW5nKSB7CisgICAgICAgIEFTU0VSVCghbV9zaXplKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtdW5tYXAobV9tYXBwaW5nLCBtX3NpemUpID09
IC0xKQorICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgbXVubWFw
IGEgbWVtb3J5IG1hcHBlZCBmaWxlIHdpdGggaWQgKCVkKSIsIG1faWQpOworCisgICAgbV9tYXBw
aW5nID0gbnVsbHB0cjsKKyAgICBtX3NpemUgPSAwOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6cmVtb3ZlRmlsZSgpCit7CisgICAgQVNTRVJUKCFtX21hcHBpbmcpOworICAgIEFT
U0VSVCghbV9zaXplKTsKKworICAgIGlmICghZGVsZXRlRmlsZShtX3BhdGgpKQorICAgICAgICBM
T0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgZGVsZXRlIG1lbW9yeSBtYXBwZWQg
ZmlsZSAoJXMpIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOworfQorCit2b2lkIERpc2tJbWFnZUNh
Y2hlOjpFbnRyeTo6Y2xlYXJEYXRhV2l0aG91dE1hcHBpbmcoKQoreworICAgIEFTU0VSVCghbV9t
YXBwaW5nKTsKKyAgICBBU1NFUlQobV9idWZmZXIpOworICAgIG1fYnVmZmVyLT5kZXJlZigpOwor
ICAgIG1fYnVmZmVyID0gMDsKK30KKworaW50IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6d3JpdGVU
b0ZpbGVJbnRlcm5hbChpbnQgZmQpCit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBpbnQg
dG90YWxCeXRlc1dyaXR0ZW4gPSAwOworCisgICAgY29uc3QgY2hhciogc2VnbWVudCA9IG51bGxw
dHI7CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOworICAgIHdoaWxlICh1bnNpZ25lZCBsZW5n
dGggPSBtX2J1ZmZlci0+Z2V0U29tZURhdGEoc2VnbWVudCwgcG9zaXRpb24pKSB7CisgICAgICAg
IGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHNl
Z21lbnQpLCBsZW5ndGgpOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKQorICAgICAg
ICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3Jp
dHRlbjsKKyAgICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOworICAgIH0KKworICAgIHJldHVybiB0
b3RhbEJ5dGVzV3JpdHRlbjsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNldFRl
bXBvcmFyeUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3BhdGggPSBwYXRo
OworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKCkKK3sKKyAgICBj
bGVhckRhdGFXaXRob3V0TWFwcGluZygpOworICAgIHRoaXMtPmRlcmVmKCk7Cit9CisKK3ZvaWQg
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBUaHJlYWRTdGFydCh2b2lkKiBlbnRyeVB0cikKK3sK
KyAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkqIGVudHJ5ID0gc3RhdGljX2Nhc3Q8RGlza0ltYWdl
Q2FjaGU6OkVudHJ5Kj4oZW50cnlQdHIpOworCisgICAgaWYgKGRpc2tJbWFnZUNhY2hlKCkuaXNG
dWxsKCkpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6OmNhbmNlbE1hcCwgZW50cnkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGVudHJ5LT5tYXAoKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgc2l6ZSBvbiBhIHN1Y2Nlc3NmdWwg
bWFwcGluZy4KKyAgICBpZiAoZW50cnktPmlzTWFwcGVkKCkpCisgICAgICAgIGRpc2tJbWFnZUNh
Y2hlKCkudXBkYXRlU2l6ZShlbnRyeS0+c2l6ZSgpKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OmRpZFJlbW92ZUZpbGUoKQoreworICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgRGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVGaWxlVGhyZWFkU3RhcnQodm9pZCogZW50cnlQdHIp
Cit7CisgICAgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KiBlbnRyeSA9IHN0YXRpY19jYXN0PERpc2tJ
bWFnZUNhY2hlOjpFbnRyeSo+KGVudHJ5UHRyKTsKKworICAgIGVudHJ5LT51bm1hcCgpOworICAg
IGVudHJ5LT5yZW1vdmVGaWxlKCk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSwgZW50cnkpKTsKK30KKworRGlza0ltYWdl
Q2FjaGU6OkRpc2tJbWFnZUNhY2hlKCkKKyAgICA6IG1fZW5hYmxlZChmYWxzZSkKKyAgICAsIG1f
c2l6ZSgwKQorICAgICwgbV9tYXhpbXVtQ2FjaGVTaXplKDEwMCAqIDEwMjQgKiAxMDI0KQorICAg
ICwgbV9taW5pbXVtSW1hZ2VTaXplKDEwMCAqIDEwMjQpCisgICAgLCBtX25leHRBdmFpbGFibGVJ
ZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkICsgMSkKK3sKK30KKworRGlza0lt
YWdlQ2FjaGVJZCBEaXNrSW1hZ2VDYWNoZTo6d3JpdGVJdGVtKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpdGVtKQoreworICAgIGlmICghaXNFbmFibGVkKCkgfHwgIWNyZWF0ZURpcmVjdG9yeUlm
TmVlZGVkKCkpCisgICAgICAgIHJldHVybiBEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNo
ZUlkOworCisgICAgLy8gV2UgYXJlIGFscmVhZHkgZnVsbCwgY2Fubm90IGFkZCBhbnl0aGluZyB1
bnRpbCBzb21ldGhpbmcgaXMgcmVtb3ZlZC4KKyAgICBpZiAoaXNGdWxsKCkpIHsKKyAgICAgICAg
TE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IGNvdWxkIG5vdCBwcm9jZXNzIGFu
IGl0ZW0gYmVjYXVzZSB0aGUgY2FjaGUgd2FzIGZ1bGwgYXQgKCVkKS4gVGhlIFwibWF4XCIgYmVp
bmcgKCVkKSIsIG1fc2l6ZSwgbV9tYXhpbXVtQ2FjaGVTaXplKTsKKyAgICAgICAgcmV0dXJuIERp
c2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7CisgICAgfQorCisgICAgLy8gQ3JlYXRl
IGFuIGVudHJ5LgorICAgIERpc2tJbWFnZUNhY2hlSWQgaWQgPSBuZXh0QXZhaWxhYmxlSWQoKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpdGVtOworICAgIFJlZlB0cjxEaXNr
SW1hZ2VDYWNoZTo6RW50cnk+IGVudHJ5ID0gRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVhdGUo
YnVmZmVyLmdldCgpLCBpZCk7CisgICAgbV90YWJsZS5hZGQoaWQsIGVudHJ5KTsKKworICAgIC8v
IENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIHBhdGguCisgICAgU3RyaW5nIHBhdGggPSB0ZW1wb3Jh
cnlGaWxlKCk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IGNyZWF0
aW5nIGVudHJ5ICglZCkgYXQgKCVzKSIsIGlkLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgIGlm
IChwYXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWRE
aXNrQ2FjaGVJZDsKKworICAgIGVudHJ5LT5zZXRUZW1wb3JhcnlGaWxlUGF0aChwYXRoKTsKKwor
ICAgIC8vIFRoZSBsaWZldGltZSBvZiB0aGUgRW50cnkgaXMgaGFuZGxlZCBvbiB0aGUgbWFpbiB0
aHJlYWQuIEJlZm9yZSB3ZSBzdGFydCBhIHRocmVhZCB3ZSBuZWVkIHRvCisgICAgLy8gcmVmIHNv
IHRoYXQgd2UgYXJlIHN1cmUgdGhlIG9iamVjdCBzdGlsbCBleGlzdHMuIFRoaXMgY2FsbCBpcyBi
YWxhbmNlZCBpbiB0aGUgY2FsbGJhY2tzCisgICAgLy8gY2FsbGVkIGZyb20gRW50cnk6Om1hcC4K
KyAgICBlbnRyeS0+cmVmKCk7CisKKyAgICAvLyBNYXAgdG8gZGlzayBhc3luY2hyb25vdXNseS4K
KyAgICBjcmVhdGVUaHJlYWQoRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBUaHJlYWRTdGFydCwg
ZW50cnkuZ2V0KCksICJXZWJDb3JlOiBEaXNrSW1hZ2VDYWNoZTo6bWFwIik7CisKKyAgICByZXR1
cm4gaWQ7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OnVwZGF0ZVNpemUodW5zaWduZWQgZGVs
dGEpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICBtX3NpemUgKz0gZGVs
dGE7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OnJlbW92ZUl0ZW0oRGlza0ltYWdlQ2FjaGVJ
ZCBpZCkKK3sKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogcmVtb3Zl
SXRlbSAoJWQpIiwgaWQpOworICAgIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGVudHJ5
ID0gbV90YWJsZS5nZXQoaWQpOworICAgIG1fdGFibGUucmVtb3ZlKGlkKTsKKyAgICBpZiAoIWVu
dHJ5LT5pc01hcHBlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVTaXplKC0oZW50
cnktPnNpemUoKSkpOworCisgICAgZW50cnktPnJlZigpOworCisgICAgY3JlYXRlVGhyZWFkKERp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6cmVtb3ZlRmlsZVRocmVhZFN0YXJ0LCBlbnRyeS5nZXQoKSwg
IldlYkNvcmU6IERpc2tJbWFnZUNhY2hlOjpyZW1vdmVJdGVtIik7Cit9CisKK3ZvaWQqIERpc2tJ
bWFnZUNhY2hlOjpkYXRhRm9ySXRlbShEaXNrSW1hZ2VDYWNoZUlkIGlkKQoreworICAgIEFTU0VS
VChpZCk7CisKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFi
bGUuZ2V0KGlkKTsKKyAgICBBU1NFUlQoZW50cnktPmlzTWFwcGVkKCkpOworICAgIHJldHVybiBl
bnRyeS0+ZGF0YSgpOworfQorCitib29sIERpc2tJbWFnZUNhY2hlOjpjcmVhdGVEaXJlY3RvcnlJ
Zk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIG1fY2FjaGVEaXJlY3RvcnkgPSB0ZW1wb3JhcnlEaXJlY3Rv
cnkoKTsKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogQ3JlYXRlZCB0
ZW1wb3JhcnkgZGlyZWN0b3J5ICglcykiLCBtX2NhY2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkp
OworICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKSB7CisgICAgICAgIExPR19FUlJP
UigiRGlza0ltYWdlQ2FjaGU6IGNvdWxkIG5vdCBjcmVhdGUgY2FjaGUgZGlyZWN0b3J5Iik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT5kaWRDcmVhdGVEaXNrSW1hZ2VDYWNoZURpcmVjdG9yeShtX2NhY2hlRGlyZWN0
b3J5KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitEaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFn
ZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQoKQoreworICAgIHJldHVybiBtX25leHRBdmFpbGFibGVJ
ZCsrOworfQorCisjaWYgUExBVEZPUk0oR1RLKQorLy8gRm9yIEdUSysgd2UgdXNlIGEgd2VsbC1r
bm93biBuYW1lIGluc2lkZSB0aGUgdXNlcidzIFhERyBjYWNoZSBkaXJlY3RvcnksIHNvIHRoYXQg
d2UgY2FuCisvLyBiZXR0ZXIgbWFuYWdlIGl0cyBjbGVhbnVwLgorU3RyaW5nIERpc2tJbWFnZUNh
Y2hlOjp0ZW1wb3JhcnlEaXJlY3RvcnkoKQoreworICAgIFN0cmluZyBwYXRoID0gY3JlYXRlVXNl
ckNhY2hlRGlyZWN0b3J5KCJkaXNrLWltYWdlLWNhY2hlIik7CisgICAgaWYgKHBhdGguaXNFbXB0
eSgpKQorICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRl
IGNhY2hlIGRpcmVjdG9yeS4iKTsKKworICAgIC8vIENsZWFudXAgdGhlIGRpcmVjdG9yeS4KKyAg
ICBWZWN0b3I8U3RyaW5nPiBpdGVtcyA9IGxpc3REaXJlY3RvcnkocGF0aCwgInRtcCoiKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgaSsrKQorICAgICAgICBkZWxl
dGVGaWxlKGl0ZW1zW2ldKTsKKworICAgIHJldHVybiBwYXRoOworfQorI2Vsc2UKK1N0cmluZyBE
aXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KCkKK3sKKyAgICBTdHJpbmcgdGVtcERp
c2tDYWNoZURpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgiRGlza0ltYWdlQ2Fj
aGUiKTsKKyAgICBpZiAodGVtcERpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAg
IExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBjcmVhdGUgYSB0ZW1wb3Jhcnkg
ZGlyZWN0b3J5LiIpOworCisgICAgcmV0dXJuIHRlbXBEaXNrQ2FjaGVEaXJlY3Rvcnk7Cit9Cisj
ZW5kaWYKKworU3RyaW5nIERpc2tJbWFnZUNhY2hlOjp0ZW1wb3JhcnlGaWxlKCkKK3sKKyAgICBT
dHJpbmcgdGVtcEZpbGUgPSBjcmVhdGVUZW1wb3JhcnlGaWxlKG1fY2FjaGVEaXJlY3RvcnksICJ0
bXAiKTsKKyAgICBpZiAodGVtcEZpbGUuaXNFbXB0eSgpKQorICAgICAgICBMT0dfRVJST1IoIkRp
c2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuIik7CisKKyAg
ICByZXR1cm4gdGVtcEZpbGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBPUyhVTklYKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggY2Y3ZDc1Zjky
NDU3YzhmOWU4MjU5NjBkYjBkYWExYjhmZGU3YzgyYi4uN2RlMzYzNTBmNTM3NzAwNDg1ZTkyMzEx
ZTNmNzJjMWIwZjRmNDVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0yOTEsNiArMjkxLDIzIEBAIFZlY3RvcjxTdHJpbmc+
IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikK
ICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQykKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7CisgICAgY2hhciBidWZmZXJbUEFUSF9NQVhd
OworICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CisKKyAgICBpZiAo
IXRtcERpcikKKyAgICAgICAgdG1wRGlyID0gIi90bXAiOworCisgICAgaWYgKHNucHJpbnRmKGJ1
ZmZlciwgUEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRh
KCkpID49IFBBVEhfTUFYKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAobWtk
dGVtcChidWZmZXIpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXIpOworfQorCiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogewogICAgIGNo
YXIgYnVmZmVyW1BBVEhfTUFYXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oCmluZGV4IGU5MzU5
NTQ4Yjk4MzFkMGFjMzE3NmYyN2JkOGUwZTJjZTYwYzcyODIuLjE5ZjE1OWYyMDgwOTBkMzQ5YWMz
NzVmNzBhOGQ2MGVhNTcyOGI0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaApAQCAtMjUs
NyArMjUsNyBAQAogCiAjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElP
UykKIAotI2ltcG9ydCA8V2ViQ29yZS9EaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oPgogCiBjbGFzcyBXZWJEaXNrSW1hZ2VD
YWNoZUNsaWVudCBGSU5BTCA6IHB1YmxpYyBXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZUNsaWVudCB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYmIzZGIwMjIwNzczOTQ3MjhhYjQwNGRiZGVmMDhk
ZTE5NTRlNDJlMy4uMzE3YmEwMmI5ODBhYTY1OTJiYWZhMzcwMzE5MWM3OGJiYjcxNzUzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcApAQCAtODQsNiArODQsOSBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbgogICAg
IGVuY29kZXIgPDwgc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aDsKICAgICBlbmNv
ZGVyIDw8IHNob3VsZFVzZUZvbnRTbW9vdGhpbmc7CiAgICAgZW5jb2RlciA8PCBpY29uRGF0YWJh
c2VFbmFibGVkOworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGVuY29kZXIgPDwg
ZGlza0ltYWdlQ2FjaGVFbmFibGVkOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCB0ZXJtaW5hdGlv
blRpbWVvdXQ7CiAgICAgZW5jb2RlciA8PCBsYW5ndWFnZXM7CiAgICAgZW5jb2RlciA8PCB0ZXh0
Q2hlY2tlclN0YXRlOwpAQCAtMTg0LDYgKzE4NywxMCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdl
YgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgRU5B
QkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LmRpc2tJbWFnZUNhY2hlRW5hYmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
Lmxhbmd1YWdlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBhMjRhN2VlZTE2NjRhYzUzMjExN2UzYmVjNjMwM2Y0
OWU2ZjgyMDNlLi5lYzhkMDdlYTA5MDM0YTdlNzRkMzljZjAxOTcxNDg1Zjc0ODMyNDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKQEAgLTk3LDYgKzk3LDEwIEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKIAogICAgIGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZDsKIAorI2lmIEVOQUJMRShESVNL
X0lNQUdFX0NBQ0hFKQorICAgIGJvb2wgZGlza0ltYWdlQ2FjaGVFbmFibGVkOworI2VuZGlmCisK
ICAgICBkb3VibGUgdGVybWluYXRpb25UaW1lb3V0OwogCiAgICAgVmVjdG9yPFN0cmluZz4gbGFu
Z3VhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGVkNjI2
YWRkN2UxZWM0OTQyMzZlN2NhYWM0NDdjOTk5YTNjMmQ2NmYuLjI1ZDRlYjBkNTk3OWE5NWI4ZDUz
ODg2YjYzOGVhNTE4OTkwYTZkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAKQEAgLTU0Nyw2ICs1NDcsMTAgQEAgV2ViUHJvY2Vzc1Byb3h5KiBXZWJDb250ZXh0Ojpj
cmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICAKICAgICBwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVu
YWJsZWQgPSAhaWNvbkRhdGFiYXNlUGF0aCgpLmlzRW1wdHkoKTsKIAorI2lmIEVOQUJMRShESVNL
X0lNQUdFX0NBQ0hFKQorICAgIHBhcmFtZXRlcnMuZGlza0ltYWdlQ2FjaGVFbmFibGVkID0gdHJ1
ZTsKKyNlbmRpZgorCiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSAobV9wcm9j
ZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgPyBzaGFyZWRT
ZWNvbmRhcnlQcm9jZXNzU2h1dGRvd25UaW1lb3V0IDogMDsKIAogICAgIHBhcmFtZXRlcnMudGV4
dENoZWNrZXJTdGF0ZSA9IFRleHRDaGVja2VyOjpzdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMzQ0NDM0N2E4YmEyNWM1MzNlOTUyNjA1MTU2YjZm
OGM2NzBmMzg1YS4uNTBhNjI2ZmI1M2E4YzkyODMxYzUyYjFhOGJiNzVhMWI2YWU1YTlmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDYsNiArMTA2LDEw
IEBACiAjaW5jbHVkZSAiV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hl
LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZ
X05PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIgogI2Vu
ZGlmCkBAIC0yOTEsNiArMjk1LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgbV9p
Y29uRGF0YWJhc2VQcm94eS0+c2V0RW5hYmxlZChwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJs
ZWQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBkaXNrSW1h
Z2VDYWNoZSgpLnNldEVuYWJsZWQocGFyYW1ldGVycy5kaXNrSW1hZ2VDYWNoZUVuYWJsZWQpOwor
I2VuZGlmCisKICAgICBpZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpCiAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnNldENhY2hlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9h
dXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBX
ZWJLaXRGZWF0dXJlcy5tNAppbmRleCBiN2MyOGZmYzdkMjc0MzRiODk4ZmJlNGRkMWZjZjU5Yjlh
OTBjNmI2Li5jNThlYWNlYjM5NTNiYTgyMzU1MWVkMThmZTUyYzY0OGZmMzZlYjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKKysrIGIvU291cmNl
L2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CkBAIC0xMjAsNiArMTIwLDcgQEAgJHNy
Y2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1kZWZpbmVzLWZpbGVzICRDT05GSUdVUkFC
TEVfRkVBVFVSRV9ERUZJTkVTIFwKICAgICBFTkFCTEVfREVUQUlMU19FTEVNRU5UPTEgXAogICAg
IEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT049MCBcCiAgICAgRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQ9MCBcCisgICAgRU5BQkxFX0RJU0tfSU1BR0VfQ0FDSEU9MCBcCiAgICAgRU5BQkxFX0RPTTRf
RVZFTlRTX0NPTlNUUlVDVE9SPTAgXAogICAgIEVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEU9MCBc
CiAgICAgRU5BQkxFX0ZJTFRFUlM9MSBcCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggOWU0YTYxMWI4MzM0NzQzOWRlMzEzNTZhZmZmMzA5MTc3NTZj
ZjMzZi4uMjM0YzE2ODliNDhjZTFlNDRmNGE1OWEyOWFhYTEwNmQ5OWFmODQ2NCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTExLTExICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29s
bGFib3JhLmNvbT4KKworICAgICAgICBNYWtlIERpc2tJbWFnZUNhY2hlIGNyb3NzLXBsYXRmb3Jt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbTogYWRkIG5ldyBmZWF0dXJlIGZsYWcgZm9yIGRp
c2sgaW1hZ2UgY2FjaGUuCisKIDIwMTMtMTEtMDggIE1hdHRoZXcgSGFuc29uICA8bWF0dGhld19o
YW5zb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZGVkIG15c2VsZiBhcyBh
IGNvbnRyaWJ1dG9yLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4
IDczNmIxNzY0YjM3OGQ4YWRiOTNjZmJmMDJmZGQwM2YwOWM3NTc3YzYuLmVmYTkxZTdmZGQ1ZWMw
OGQ5ZTExYjJlYWMyZGZmNTQwMmE2OTFkZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KQEAgLTc1LDYgKzc1LDcgQEAgbXkgKAogICAgICRkZXRhaWxzRWxlbWVudFN1
cHBvcnQsCiAgICAgJGRldmljZU9yaWVudGF0aW9uU3VwcG9ydCwKICAgICAkZGlyZWN0b3J5VXBs
b2FkU3VwcG9ydCwKKyAgICAkZGlza0ltYWdlQ2FjaGUsCiAgICAgJGRvbTRFdmVudHNDb25zdHJ1
Y3RvciwKICAgICAkZG93bmxvYWRBdHRyaWJ1dGVTdXBwb3J0LAogICAgICRmaWx0ZXJzU3VwcG9y
dCwKQEAgLTI1NSw2ICsyNTYsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4g
ImRpcmVjdG9yeS11cGxvYWQiLCBkZXNjID0+ICJUb2dnbGUgRGlyZWN0b3J5IFVwbG9hZCBzdXBw
b3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQiLCBkZWZhdWx0
ID0+IDAsIHZhbHVlID0+IFwkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCB9LAogCisgICAgeyBvcHRp
b24gPT4gImRpc2staW1hZ2UtY2FjaGUiLCBkZXNjID0+ICJUb2dnbGUgRGlzayBJbWFnZSBDYWNo
ZSBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0RJU0tfSU1BR0VfQ0FDSEUiLCBk
ZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZGlza0ltYWdlQ2FjaGUgfSwKKwogICAgIHsgb3B0aW9u
ID0+ICJkb200LWV2ZW50cy1jb25zdHJ1Y3RvciIsIGRlc2MgPT4gIkV4cG9zZSBET000IEV2ZW50
cyBjb25zdHJ1Y3RvcnMiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRE9NNF9FVkVOVFNfQ09O
U1RSVUNUT1IiLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8fCBpc0Vm
bCgpKSwgdmFsdWUgPT4gXCRkb200RXZlbnRzQ29uc3RydWN0b3IgfSwKIApkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZiOWNjNDMzZjFiYzEwMWI0MDRmMjE0ZjkyN2Rm
YjdhOWU3NGQ1NjYuLjdlZTJiODM3NWQ4YWM4NTM5ZjRiMzFmOTllZTk3ZjljZGQ1NzljMDkgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
My0xMS0xMSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9y
YS5jb20+CisKKyAgICAgICAgTWFrZSBEaXNrSW1hZ2VDYWNoZSBjcm9zcy1wbGF0Zm9ybQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MTY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0
b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQ6IG5ldyBmZWF0dXJlIGZsYWcgZm9yIERJU0tf
SU1BR0VfQ0FDSEUuCisKIDIwMTMtMTEtMDYgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gQ2hhbmdlIHJlcXVpcmVkIHZlcnNpb24gb2YgQVRL
IHRvIDIuMTAuMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216914</attachid>
            <date>2013-11-14 03:52:44 -0800</date>
            <delta_ts>2014-01-13 12:19:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124167-20131114095242.patch</filename>
            <type>text/plain</type>
            <size>69913</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE4MmM0MWUyZmMxYmQ0
ZjFkZTZiNjA2OWMwZTMzYTk2YTMyYzQ2Mi4uZTA0OTc1NzFiOTg4NGY4NzU3YjgzNGM4ZDE3MmY5
M2E1ZjhiZTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTExLTExICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBNYWtlIERpc2tJbWFnZUNhY2hlIGNyb3NzLXBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaG91bGQgYmUgY292ZXJlZCBieSBleGlz
dGluZyBpbWFnZSB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ciBpcyBleHBlY3RlZAorICAg
ICAgICBmcm9tIHRoZSBvcmlnaW5hbCBJT1MgY29kZSB0aGF0IHdhcyB1cHN0cmVhbWVkLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogYWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiB1c2UgbmV3IGZpbGVzLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6IGFkb3B0IG5ldyBoZWFkZXIgbmFtZS4KKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9EaXNrSW1hZ2VD
YWNoZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VD
YWNoZUlPUy5oLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjppZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6aXNNYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjYWNoZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNr
SW1hZ2VDYWNoZTo6aXNGdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp+
RGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hl
Q2xpZW50SU9TLmguCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZUNsaWVudDo6fkRp
c2tJbWFnZUNhY2hlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDogYWRvcHQgbmV3IGhlYWRlciBuYW1l
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSk6IEdUSysgaW1wbGVtZW50YXRpb24gb2Yg
bmV3IG1ldGhvZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLAorICAgICAgICBjcmVhdGVz
IGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFy
eUZpbGUpOiBkaXR0bywgYnV0IGNyZWF0ZXMgYSBmaWxlLgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OmRpc2tJ
bWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6RW50
cnkpOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6fkVu
dHJ5KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1h
cEludGVybmFsKTogZGl0dG8uIEFsc28gdXNlIGZpbGUgZGVzY3JpcHRvciBkaXJlY3RseSBpbnN0
ZWFkIG9mIFBsYXRmb3JtRmlsZUhhbmRsZQorICAgICAgICBzaW5jZSB0aGlzIGlzIGEgUE9TSVgg
aW1wbGVtZW50YXRpb24sIGFuZCBpdCB3b3VsZCBtYWtlIGxpZmUgaGFyZGVyIHRvIEdUSysgd2hp
Y2ggdXNlcyBoaWdoZXIgbGV2ZWwgb2JqZWN0cworICAgICAgICBhcyBpdHMgUGxhdGZvcm1GaWxl
SGFuZGxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWls
TWVtb3J5TWFwKTogY2xlYW51cCBhZnRlciBmYWlsdXJlLgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRNYXBNZW1vcnkpOiBtYXJrIGJ1ZmZlciBhcyBtYXBwZWQg
YW5kIGNsZWFudXAgb24gc3VjY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6bWFwKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJlYWRpbmcgQVBJ
cyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6OnVubWFwKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2Fj
aGU6OkVudHJ5OjpyZW1vdmVGaWxlKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJl
YWRpbmcgQVBJcyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6RW50cnk6OmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKTogdW5jaGFuZ2VkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmlsZUludGVybmFs
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpz
ZXRUZW1wb3JhcnlGaWxlUGF0aCk6IG5ldyBoZWxwZXIgdXNlZCBieSB0aGUgY29kZSB0aGF0IHVz
ZWQgdG8gYmUgYSBsaWJkaXNwYXRjaAorICAgICAgICBibG9jay4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcFRocmVhZFN0YXJ0KTogZGl0dG8uIFN0YXJ0
cyB0aGUgdGhyZWFkIHRoYXQgbWFwcyB0aGUgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSk6IGRpdHRvLiBDbGVhbnMgdXAgYWZ0ZXIg
ZmlsZSByZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpy
ZW1vdmVGaWxlVGhyZWFkU3RhcnQpOiBkaXR0by4gU3RhcnRzIHRoZSB0aHJlYWQgdGhhdCByZW1v
dmVzIHRoZSBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkRpc2tJbWFn
ZUNhY2hlKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6Ondy
aXRlSXRlbSk6IHBvcnRlZCBhd2F5IGZyb20gbGliZGlzcGF0Y2gvYmxvY2tzIGFuZCBNQUMvSU9T
IHRocmVhZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXpl
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnJlbW92ZUl0
ZW0pOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRl
bSk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjcmVhdGVE
aXJlY3RvcnlJZk5lZWRlZCk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFn
ZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQpOiB1bmNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KTogdXNlIFN0cmluZyBpbnN0ZWFkIG9m
IE5TU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeUZp
bGUpOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogbmV3IG1ldGhv
ZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVj
dG9yeS4KKwogMjAxMy0xMS0xMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtBWF0gQ2xlYW4gdXAgc3RhdGljX2Nhc3Q8PiB0byBjYXN0IGZyb20g
QWNjZXNzaWJpbGl0eU9iamVjdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEw
NTQ3NTFjYTM5NDFjYzZhODllMGIzZDI2Li40NWJjMTcyYzE1MTEzZTZmNmI5MjJlMjA5M2JjNzMx
MDA0MjZjMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMTEg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgor
CisgICAgICAgIE1ha2UgRGlza0ltYWdlQ2FjaGUgY3Jvc3MtcGxhdGZvcm0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDE2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDogdXNlIHRoZSBuZXcgbmFtZSBmb3IgdGhlIGltYWdl
IGNhY2hlIGNsaWVudAorICAgICAgICBoZWFkZXIgKERpc2tJbWFnZUNhY2hlQ2xpZW50LmgpLgor
CiAyMDEzLTExLTA3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIGEgUExBVEZPUk0oSU9TKSBmcm9tIFdlYktpdCBQcml2YXRlIEhlYWRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDIxZjA1ZWY4M2ZkNzViYjQ3M2JlY2JmMWVkZGUwYzMxNWIxZjExYTAuLmNk
OTkzYWYyMWVlZGUxOTc5MmNmNmU2NjZkZjVlYjNjNzlmZmM2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxMy0xMS0xMSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5u
b3JvbmhhQGNvbGxhYm9yYS5jb20+CisKKyAgICAgICAgTWFrZSBEaXNrSW1hZ2VDYWNoZSBjcm9z
cy1wbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI0MTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IGhhbmRsZSBuZXcg
ZGlzayBpbWFnZSBjcmVhdGlvbiBwYXJhbWV0ZXIuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHA6IGRpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9j
ZXNzKTogZGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBkaXR0by4KKwog
MjAxMy0xMS0wOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBjcmVhdGVDRlVSTEZyb21CdWZmZXIgd2hlbiBjb252ZXJ0aW5nIGEgU3RyaW5nIHRvIGEgQ0ZV
UkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDc3MWZlMGMwZWQ5MjY2M2UwZTg2
YmVlYTRmZDhjNTliOTZiNzIyMmQuLjcxODMzNDUzYzJjYzdiZmRmMjQxZThjYzkyNjc3MTNlZThl
MDAwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTg4Nyw2ICs1ODg3LDcg
QEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm90ZWN0aW9uU3BhY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm94eVNlcnZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlT
ZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQ
T1NJWC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hl
Y2tlckVuY2hhbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1Rl
eHRDaGVja2VyRW5jaGFudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlk
aUNvbnRleHQuY3BwIFwKQEAgLTU5NzIsNiArNTk3Myw4IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlckNsaWVudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGVjaW1hbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNo
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oIFwK
ICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXAogICAgIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggXAogICAgIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNZXRhZGF0YS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMTJk
OGUwYmEwN2RjNzlkZjJhMDVhYTE3NTY4M2ZiZjM3MDk4NWUyZi4uMzg4NjEyYzM1NzU5ZmNkMWFh
NzBhZDUzNTJlNDZjNjc3ZWJmZGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE2
OSw2ICsxNjksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9T
eW5jaHJvbm91c0xvYWRlckNsaWVudFNvdXAuY3BwCiAKKyAgICBwbGF0Zm9ybS9wb3NpeC9EaXNr
SW1hZ2VDYWNoZVBPU0lYLmNwcAogICAgIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBiN2Y2
MDhhM2NkMDI2NjJhMzM2NDY1MzEyYmNhMjI0ZDc4MjNlM2YuLjE3YTczYWQ1NWJkN2ZhMThlYTU2
MmIwZDQxNDFiNGMwZmM2NTM0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MTAsOSArMzUxMCw3IEBACiAJCUE1QUJCNzg3
MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYx
OTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVBRkIzNEYxMTUx
NTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdl
LmNwcCAqLzsgfTsKIAkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEUxMTUx
NTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUE1QzU2NkFCMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1h
Z2VDYWNoZUNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50
SU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QTVGOUVGNzAxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVGNkUxMjY2NzUwRDAw
RkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovOyB9OwotCQlBNUY5RUY3MTEyNjY3NTBE
MDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1h
Z2VDYWNoZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUZBNzA5NEVCN0Q5QTdBRTQxNDRGM0EwNSAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE3MDk0RUI3
RDlBN0FFNDE0NEYzQTA1IC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTYxNDhBNjIxMkU0MUQzQTAwNDRB
Nzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE2MTQ4QTYxMTJFNDFEM0EwMDQ0QTc4NCAvKiBE
T01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmggKi87IH07CiAJCUE2MTQ4QTY3MTJFNDFEOTQw
MDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhBNjUxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhU
TUxLZXlnZW5FbGVtZW50LmggKi87IH07CiAJCUE2MTQ4QTY4MTJFNDFEOTQwMDQ0QTc4NCAvKiBE
T01IVE1MS2V5Z2VuRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE2MTQ4QTY2MTJFNDFEOTQwMDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxl
bWVudC5tbSAqLzsgfTsKQEAgLTU4MTksNiArNTgxNyw3IEBACiAJCUVENTAxREM2MEIyNDlGMjkw
MEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICov
OyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZGMEM3QTQzMDYwMDk1
NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREVDOTgwMjBB
RUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OworCQlFRTczRjQ5RkUzNUQ3
Q0Y2RjFDOTdCQUUgLyogRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTQxRkU2MzkzOUNCOEY5MTEzM0Y1QzYgLyog
RGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAgKi87IH07CiAJCUYxMjE3MUY1MTZBOENFRDIwMDAwNTND
QSAvKiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEYxMjE3MUYzMTZBOEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNw
cCAqLzsgfTsKIAkJRjEyMTcxRjYxNkE4Q0YwQjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYxMjE3MUY0MTZB
OEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggKi87IH07CiAJCUYyOTNCMjdFNTZDMTEy
RjM3M0ZGRjI3RSAvKiBETlNSZXNvbHZlUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jl
c29sdmVRdWV1ZS5jcHAgKi87IH07CkBAIC03NzMxLDYgKzc3MzAsNyBAQAogCQkzMUZCMUE2MzEy
MEE1RDNGMDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFGQjFBNjQxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNl
TW90aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXZpY2VN
b3Rpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUZCMUE2QjEyMEE1
RDY5MDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzIxNDE4NzNGMTFBOTRBQjFFQjFEQkUwIC8q
IERpc2tJbWFnZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJ
bWFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIw
ODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxRkY2N0RFMTk3QjU3MzkzQzQ2QUE3IC8qIFJlbmRl
ck1hdGhNTFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbmRlck1h
dGhNTFNwYWNlLmg7IHBhdGggPSByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmg7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTEwMjY4LDExICsxMDI2OCw4IEBACiAJ
CUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzREMTE1MTUxQTcwMEIwNDVD
QiAvKiBTdGVwUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RlcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEUxMTUx
NTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdGVwUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVDNTY2QUEx
MjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVu
dENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEtleUV2ZW50Q29jb2Eu
aDsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBLZXlFdmVudENvY29hLm1tOyBwYXRo
ID0gY29jb2EvS2V5RXZlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTVGOUVGNkUxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVJT1MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBE
aXNrSW1hZ2VDYWNoZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNr
SW1hZ2VDYWNoZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNjE0OEE2MTEy
RTQxRDNBMDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE2MTQ4QTY1MTJFNDFEOTQwMDQ0QTc4NCAv
KiBET01IVE1MS2V5Z2VuRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01IVE1MS2V5Z2VuRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NjE0OEE2NjEyRTQxRDk0MDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNTY1LDYgKzEyNTYyLDcgQEAKIAkJ
REJGQ0IwRUJGRjVDRDc3RUJFQjM1Mzk1IC8qIFJlbmRlck1hdGhNTFNwYWNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbmRlck1hdGhNTFNwYWNlLmNwcDsgcGF0
aCA9IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCUREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2Jq
Q0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU9iakNF
eHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ3NjNCQjEwOTkyQzJDOTAw
NzQwQjhFIC8qIGxpYnhtbDIuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnhtbDIu
ZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJ4bWwyLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNv
bHV0ZT4iOyB9OworCQlERTQxRkU2MzkzOUNCOEY5MTEzM0Y1QzYgLyogRGlza0ltYWdlQ2FjaGVQ
T1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNrSW1hZ2VD
YWNoZVBPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREU0OUIyRkYxNjVG
MkZDNjAwMTAzMzhEIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTQ5QjMwMDE2NUYyRkM2MDAxMDMzOEQgLyog
TWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlERTQ5QjMwNzE2NUYyRkUxMDAxMDMzOEQgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwNjks
NiArMTMwNjcsNyBAQAogCQlGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MVGV4
dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2QTExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWF0aE1MVGV4dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE3MDk0RUI3RDlBN0FFNDE0NEYzQTA1IC8qIERpc2tJbWFn
ZUNhY2hlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFn
ZUNhY2hlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVEMTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGQUJFNzJFRTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTUwODAsNiArMTUwNzksNyBAQAogCQk1MTYwMzAwOTBDQzQyNDU0MDBDOEFD
MjUgLyogcG9zaXggKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCURFNDFGRTYzOTM5Q0I4RjkxMTMzRjVDNiAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCAq
LywKIAkJCQk1MTYwMzAwQTBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gcG9zaXg7CkBAIC0xOTg0Myw3ICsxOTg0Myw2IEBACiAJCQkJ
QThEMkIyNTIxMjg3QTU2MDAwQUY0RERBIC8qIGNhY2hlICovLAogCQkJCTdFRTY4NDczMTJEMjZF
NTUwMEU3OTQxNSAvKiBjZiAqLywKIAkJCQk1MTI2RTZCNjBBMkUzQUVGMDA1QzI5RkEgLyogaWNv
biAqLywKLQkJCQlDRTc5RDY4NjE3RjIyMEVEMDA4MTVDMDAgLyogaW9zICovLAogCQkJCTkzQTFF
QUEyMEE1NjM0RDgwMDY5NjBBMCAvKiBtYWMgKi8sCiAJCQkJRTE0MjRDOTExNjRCNTJDODAwRjMy
RDQwIC8qIENvb2tpZUphci5jcHAgKi8sCiAJCQkJRTE0MjRDOTIxNjRCNTJDODAwRjMyRDQwIC8q
IENvb2tpZUphci5oICovLApAQCAtMjAwMTgsNiArMjAwMTcsOCBAQAogCQkJCUE1NzMyQjA5MTM2
QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovLAogCQkJCTQ1RkVBNUNEMTU2RERF
OEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNwcCAqLywKIAkJCQk0NUZFQTVDRTE1NkRERThDMDA2NTQx
MDEgLyogRGVjaW1hbC5oICovLAorCQkJCTMyMTQxODczRjExQTk0QUIxRUIxREJFMCAvKiBEaXNr
SW1hZ2VDYWNoZS5oICovLAorCQkJCUZBNzA5NEVCN0Q5QTdBRTQxNDRGM0EwNSAvKiBEaXNrSW1h
Z2VDYWNoZUNsaWVudC5oICovLAogCQkJCUE3OTU0NjQyMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFn
RGF0YS5jcHAgKi8sCiAJCQkJQTdCNkU2OUQwQjI5MUE5NjAwRDA1MjlGIC8qIERyYWdEYXRhLmgg
Ki8sCiAJCQkJQTdDRkIzQ0YwQjdFRDEwQTAwNzBDMzJEIC8qIERyYWdJbWFnZS5jcHAgKi8sCkBA
IC0yMDI2MywxNiArMjAyNjQsNiBAQAogCQkJcGF0aCA9IG1lZGlhc291cmNlOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQ0U3OUQ2ODYxN0YyMjBFRDAwODE1QzAwIC8qIGlv
cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTVGOUVG
NkUxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovLAotCQkJCUE1RjlF
RjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5oICovLAotCQkJCUE1QzU2
NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovLAotCQkJ
KTsKLQkJCXBhdGggPSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlE
RjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjMxNSw4ICsyMjMwNiw2IEBACiAJCQkJQ0VDQURGQzkx
NTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGREFGMTk5OTE1MTNEMTMxMDA4REIwQzMgLyogRGlyZWN0Q29udm9sdmVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlBNUY5RUY3MTEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJ
T1MuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1QzU2NkFCMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNr
SW1hZ2VDYWNoZUNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRjJENjkxNDQzNUQw
NTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUQ4QzREQzAxNDI4MjIyQzAwMjZDRTcyIC8qIERpc3BsYXlTbGVlcERpc2FibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjU0NDYsNiArMjU0MzUsNyBAQAogCQkJCUZEMzE2MDNEMTJCMDI2NzYw
MEMxQTM1OSAvKiBBbmFseXNlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDkwNzA3RTYx
MjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQ5RTkxMkFBMEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRUU3M0Y0OUZFMzVEN0NGNkYxQzk3QkFFIC8qIERpc2tJbWFnZUNhY2hlUE9TSVgu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUE1MjhFODMxN0Q3RjUyRjAwQUE5NTE4IC8qIEZsb2F0
aW5nT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3MDBCRjYw
ODggLyogQW5pbWF0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExMzBFNkUx
REE3MDBCRjYwODggLyogQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI1Nzc0LDcgKzI1NzY0LDYgQEAKIAkJCQkzMTJENjdCMTE1MzU2OTFGMDA1NjNEMEQgLyogRGlj
dGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREFGMTk5ODE1MTNEMTMxMDA4REIwQzMg
LyogRGlyZWN0Q29udm9sdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjYwQUMyMTgyOEM4
NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQTVGOUVGNzAxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hl
SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlGQzdBNTAxNDQ0QUY1RjAwQTVEODY0IC8qIERp
c3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUFGMkQ2QzE0NDM1
RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVEOEM0REJGMTQyODIyMkMwMDI2Q0U3MiAvKiBEaXNwbGF5U2xlZXBEaXNhYmxlci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCmluZGV4IGU2YmY5OTZkYThlZmRhOWQ3MzExZDRmYmJiNDQwZTE3NmZjOTVlYjUuLjU5
NzE3M2YyZjQ0ZjdjZmRjNDIwZDM5OWY4Yjg0NWY3MjY1ZmJiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNTQsNyArNTQsNyBAQAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSNpbmNsdWRlICJEaXNrSW1hZ2VDYWNo
ZUlPUy5oIgorI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
aW5kZXggNDY5MDQ4NWMwZjVmNzJhZmEwZTE4ZjliYjY3ZTA0NmRkYmQ1NTQwZC4uZTk5ZWU3NmM3
N2VkYmFiZTUzYTlkNGNiYWI2MTA2Yzg0OWI2NzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0jaW5jbHVk
ZSAiRGlza0ltYWdlQ2FjaGVJT1MuaCIKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZTkxMzYzNWU5ZjlmZjQxMjQ2ZmUxYjExMjAwNTNiNTdiZTliZDFmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpc2tJbWFnZUNhY2hlQ2xpZW50
SU9TX2gKLSNkZWZpbmUgRGlza0ltYWdlQ2FjaGVDbGllbnRJT1NfaAotCi0jaWYgRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElPUykKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgRGlza0ltYWdlQ2FjaGVDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxE
aXNrSW1hZ2VDYWNoZUNsaWVudD4gewotcHVibGljOgotICAgIHZpcnR1YWwgfkRpc2tJbWFnZUNh
Y2hlQ2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURpc2tJbWFnZUNhY2hl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSA9IDA7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExB
VEZPUk0oSU9TKQotCi0jZW5kaWYgLy8gRGlza0ltYWdlQ2FjaGVDbGllbnRJT1NfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1ZDMxNmI3NjQxM2Y5OTRlNTMzMzJhNGY4Yzg5MzY2YjQzNDExN2M4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvRGlza0ltYWdlQ2FjaGVJT1MuaAorKysgL2Rldi9udWxsCkBAIC0x
LDE0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEaXNrSW1hZ2VDYWNoZUlPU19oCi0j
ZGVmaW5lIERpc2tJbWFnZUNhY2hlSU9TX2gKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hF
KSAmJiBQTEFURk9STShJT1MpCi0KLSNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5o
IgotI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
dHlwZWRlZiB1bnNpZ25lZCBEaXNrSW1hZ2VDYWNoZUlkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLS8vIEdsb2JhbCBkaXNrIGltYWdlIGNhY2hlIG9iamVjdC4KLWNsYXNzIERpc2tJbWFnZUNh
Y2hlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNrSW1hZ2VDYWNoZSk7Ci1wcml2YXRl
OgotCi0gICAgLy8gTGlmZXRpbWUgb2YgdGhpcyBFbnRyeSBhbmQgdGhlIFNoYXJlZEJ1ZmZlciBp
dCB3cmFwcyBpcyBtYW5hZ2VkIG9uIHRoZSBXZWJUaHJlYWQuCi0gICAgY2xhc3MgRW50cnkgOiBw
dWJsaWMgUmVmQ291bnRlZDxFbnRyeT4gewotICAgIHByaXZhdGU6Ci0gICAgICAgIEVudHJ5KFNo
YXJlZEJ1ZmZlciosIERpc2tJbWFnZUNhY2hlSWQpOwotCi0gICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGNyZWF0ZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgRGlza0ltYWdlQ2FjaGVJZCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBEaXNrSW1hZ2VDYWNoZTo6RW50cnkoYnVmZmVyLCBpZCkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgfkVudHJ5KCk7Ci0KLSAgICAgICAgdm9pZCBtYXAoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKLSAgICAgICAgdm9pZCB1bm1hcCgpOwotICAgICAgICB2b2lkIHJlbW92
ZUZpbGUoKTsKLSAgICAgICAgdm9pZCBjbGVhckRhdGFXaXRob3V0TWFwcGluZygpOwotCi0gICAg
ICAgIERpc2tJbWFnZUNhY2hlSWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0gICAgICAg
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICAgICAgdm9pZCog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGluZzsgfQotICAgICAgICBib29sIGlzTWFwcGVk
KCkgY29uc3QgeyByZXR1cm4gbV9tYXBwaW5nICE9IG51bGxwdHI7IH0KLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIGJvb2wgbWFwSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICAgICAg
aW50IHdyaXRlVG9GaWxlSW50ZXJuYWwoUGxhdGZvcm1GaWxlSGFuZGxlKTsKLQotICAgICAgICBT
aGFyZWRCdWZmZXIqIG1fYnVmZmVyOwotICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIG1faWQ7Ci0g
ICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICAgICAgdm9pZCogbV9tYXBwaW5nOwotICAgICAg
ICBTdHJpbmcgbV9wYXRoOwotICAgIH07Ci0KLXB1YmxpYzoKLSAgICBmcmllbmQgRGlza0ltYWdl
Q2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7Ci0gICAgc3RhdGljIGNvbnN0IERpc2tJbWFnZUNhY2hl
SWQgaW52YWxpZERpc2tDYWNoZUlkID0gMDsKLQotICAgIC8vIFdyaXRlIG91dCBhbiBpdGVtLgot
ICAgIERpc2tJbWFnZUNhY2hlSWQgd3JpdGVJdGVtKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7
Ci0KLSAgICAvLyBSZW1vdmUgaXRlbS4KLSAgICB2b2lkIHJlbW92ZUl0ZW0oRGlza0ltYWdlQ2Fj
aGVJZCk7Ci0KLSAgICAvLyBNYXBwaW5nIGZvciBhbiBpdGVtLgotICAgIHZvaWQqIGRhdGFGb3JJ
dGVtKERpc2tJbWFnZUNhY2hlSWQpOwotCi0gICAgLy8gU2V0dXAgYSBjbGllbnQgZm9yIGNhbGxi
YWNrcy4KLSAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPERpc2tJbWFnZUNhY2hlQ2xpZW50
PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLQotICAgIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtQ2Fj
aGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtQ2FjaGVTaXplOyB9Ci0gICAgdm9pZCBz
ZXRNYXhpbXVtQ2FjaGVTaXplKHVuc2lnbmVkIG1heGltdW0pIHsgbV9tYXhpbXVtQ2FjaGVTaXpl
ID0gbWF4aW11bTsgfQotCi0gICAgdW5zaWduZWQgbWluaW11bUltYWdlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWluaW11bUltYWdlU2l6ZTsgfQotICAgIHZvaWQgc2V0TWluaW11bUltYWdlU2l6
ZSh1bnNpZ25lZCBtaW5pbXVtKSB7IG1fbWluaW11bUltYWdlU2l6ZSA9IG1pbmltdW07IH0KLQot
ICAgIGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
RGlyZWN0b3J5OyB9Ci0KLSAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9Ci0gICAgYm9vbCBpc0Z1bGwoKSBjb25zdCB7IHJldHVybiBtX3NpemUgPj0gbV9tYXhpbXVt
Q2FjaGVTaXplOyB9Ci0KLXByaXZhdGU6Ci0gICAgRGlza0ltYWdlQ2FjaGUoKTsKLSAgICB+RGlz
a0ltYWdlQ2FjaGUoKSB7IH0KLQotICAgIGJvb2wgY3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKTsK
LSAgICBEaXNrSW1hZ2VDYWNoZUlkIG5leHRBdmFpbGFibGVJZCgpOwotCi0gICAgU3RyaW5nIHRl
bXBvcmFyeURpcmVjdG9yeSgpOwotICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlKCk7Ci0KLSAgICB2
b2lkIHVwZGF0ZVNpemUodW5zaWduZWQgZGVsdGEpOwotCi0gICAgYm9vbCBtX2VuYWJsZWQ7Ci0g
ICAgdW5zaWduZWQgbV9zaXplOwotICAgIHVuc2lnbmVkIG1fbWF4aW11bUNhY2hlU2l6ZTsKLSAg
ICB1bnNpZ25lZCBtX21pbmltdW1JbWFnZVNpemU7Ci0gICAgRGlza0ltYWdlQ2FjaGVJZCBtX25l
eHRBdmFpbGFibGVJZDsKLSAgICBTdHJpbmcgbV9jYWNoZURpcmVjdG9yeTsKLQotICAgIFJlZlB0
cjxEaXNrSW1hZ2VDYWNoZUNsaWVudD4gbV9jbGllbnQ7Ci0gICAgSGFzaE1hcDxEaXNrSW1hZ2VD
YWNoZUlkLCBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Pj4gbV90YWJsZTsKLQotICAgIE11
dGV4IG1fbXV0ZXg7Ci19OwotCi0vLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBkaXNr
IGltYWdlIGNhY2hlLgotRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAm
JiBQTEFURk9STShJT1MpCi0KLSNlbmRpZiAvLyBEaXNrSW1hZ2VDYWNoZUlPU19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hlSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTk4ZGE2Njc1OWEzN2VjNWQxZWQyMGY5OWE4ZmEyZTFmOTVlNGJh
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hlSU9TLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsMzI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRGlza0ltYWdlQ2FjaGVJT1MuaCIKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAm
JiBQTEFURk9STShJT1MpCi0KLSNpbmNsdWRlICJGaWxlU3lzdGVtSU9TLmgiCi0jaW5jbHVkZSAi
TG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRlICJXZWJDb3Jl
VGhyZWFkUnVuLmgiCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgot
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1EaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdlQ2FjaGUoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxEaXNrSW1hZ2VDYWNoZT4gY2FjaGU7Ci0gICAgcmV0dXJuIGNhY2hlOwot
fQotCi1EaXNrSW1hZ2VDYWNoZTo6RW50cnk6OkVudHJ5KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBE
aXNrSW1hZ2VDYWNoZUlkIGlkKQotICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9pZChp
ZCkKLSAgICAsIG1fc2l6ZSgwKQotICAgICwgbV9tYXBwaW5nKG51bGxwdHIpCi17Ci0gICAgQVNT
RVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2NrZWQo
KSk7Ci0gICAgQVNTRVJUKG1fYnVmZmVyKTsKLSAgICBtX2J1ZmZlci0+cmVmKCk7Ci19Ci0KLURp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6fkVudHJ5KCkKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXND
dXJyZW50KCkpOwotICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZCgpKTsKLSAgICBBU1NFUlQo
IW1fYnVmZmVyKTsKLSAgICBBU1NFUlQoIW1fbWFwcGluZyk7Ci19Ci0KLWJvb2wgRGlza0ltYWdl
Q2FjaGU6OkVudHJ5OjptYXBJbnRlcm5hbChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgQVNT
RVJUKG1fYnVmZmVyKTsKLSAgICBBU1NFUlQoIW1fbWFwcGluZyk7Ci0KLSAgICBtX3BhdGggPSBw
YXRoOwotICAgIG1fc2l6ZSA9IG1fYnVmZmVyLT5zaXplKCk7Ci0KLSAgICAvLyBPcGVuIHRoZSBm
aWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUgPSBvcGVuKG1fcGF0aC51dGY4KCkuZGF0YSgpLCBPX0NSRUFUIHwgT19SRFdSIHwgT19UUlVO
Qywgc3RhdGljX2Nhc3Q8bW9kZV90PigwNjAwKSk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhh
bmRsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRv
IHRoZSBmaWxlLgotICAgIGlmICh3cml0ZVRvRmlsZUludGVybmFsKGhhbmRsZSkgPT0gLTEpIHsK
LSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFNlZWsgYmFjayB0byB0aGUg
YmVnaW5uaW5nLgotICAgIGlmIChzZWVrRmlsZShoYW5kbGUsIDAsIFNlZWtGcm9tQmVnaW5uaW5n
KSA9PSAtMSkgewotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgZGVsZXRlRmls
ZShtX3BhdGgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gUGVyZm9y
bSBtZW1vcnkgbWFwcGluZyBmb3IgcmVhZGluZy4KLSAgICAvLyBOT1RFOiBUaGlzIG11c3Qgbm90
IGNvbmZsaWN0IHdpdGggdGhlIG9wZW4oKSBhYm92ZSwgd2hpY2ggbXVzdCBhbHNvIG9wZW4gZm9y
IHJlYWRpbmcuCi0gICAgbV9tYXBwaW5nID0gbW1hcChudWxscHRyLCBtX3NpemUsIFBST1RfUkVB
RCwgTUFQX1NIQVJFRCwgaGFuZGxlLCAwKTsKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICBp
ZiAobV9tYXBwaW5nID09IE1BUF9GQUlMRUQpIHsKLSAgICAgICAgTE9HKERpc2tJbWFnZUNhY2hl
LCAiRGlza0ltYWdlQ2FjaGU6IG1hcHBpbmcgZmFpbGVkICglZCk6ICglcykiLCBlcnJubywgc3Ry
ZXJyb3IoZXJybm8pKTsKLSAgICAgICAgbV9tYXBwaW5nID0gbnVsbHB0cjsKLSAgICAgICAgZGVs
ZXRlRmlsZShtX3BhdGgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXAoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgQVNTRVJUKCFtX21hcHBp
bmcpOwotICAgIERpc2tJbWFnZUNhY2hlOjpFbnRyeSogdGhpc0VudHJ5ID0gdGhpczsKLQotICAg
IGJvb2wgZmlsZU1hcHBlZCA9IG1hcEludGVybmFsKHBhdGgpOwotICAgIGlmICghZmlsZU1hcHBl
ZCkgewotICAgICAgICAvLyBOb3RpZnkgdGhlIGJ1ZmZlciBpbiB0aGUgY2FzZSBvZiBhIGZhaWxl
ZCBtYXBwaW5nLgotICAgICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgICAgIG1fYnVmZmVy
LT5mYWlsZWRNZW1vcnlNYXAoKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLT5kZXJlZigpOwotICAg
ICAgICAgICAgbV9idWZmZXIgPSAwOwotICAgICAgICAgICAgdGhpc0VudHJ5LT5kZXJlZigpOwot
ICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE5vdGlmeSB0aGUg
YnVmZmVyIGluIHRoZSBjYXNlIG9mIGEgc3VjY2Vzc2Z1bCBtYXBwaW5nLgotICAgIC8vIFRoaXMg
c2hvdWxkIGhhcHBlbiBvbiB0aGUgV2ViVGhyZWFkIGJlY2F1c2UgdGhpcyBpcyBiZWluZyBydW4K
LSAgICAvLyBhc3luY2hyb25vdXNseSBpbnNpZGUgYSBkaXNwYXRjaCBxdWV1ZS4KLSAgICBXZWJU
aHJlYWRSdW4oXnsKLSAgICAgICAgbV9idWZmZXItPm1hcmtBc01lbW9yeU1hcHBlZCgpOwotICAg
ICAgICBtX2J1ZmZlci0+ZGVyZWYoKTsKLSAgICAgICAgbV9idWZmZXIgPSAwOwotICAgICAgICB0
aGlzRW50cnktPmRlcmVmKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRGlza0ltYWdlQ2FjaGU6OkVu
dHJ5Ojp1bm1hcCgpCi17Ci0gICAgaWYgKCFtX21hcHBpbmcpIHsKLSAgICAgICAgQVNTRVJUKCFt
X3NpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG11bm1hcChtX21hcHBp
bmcsIG1fc2l6ZSkgPT0gLTEpCi0gICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENv
dWxkIG5vdCBtdW5tYXAgYSBtZW1vcnkgbWFwcGVkIGZpbGUgd2l0aCBpZCAoJWQpIiwgbV9pZCk7
Ci0KLSAgICBtX21hcHBpbmcgPSBudWxscHRyOwotICAgIG1fc2l6ZSA9IDA7Ci19Ci0KLXZvaWQg
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVGaWxlKCkKLXsKLSAgICBBU1NFUlQoIW1fbWFw
cGluZyk7Ci0gICAgQVNTRVJUKCFtX3NpemUpOwotCi0gICAgaWYgKCFkZWxldGVGaWxlKG1fcGF0
aCkpCi0gICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBkZWxldGUg
bWVtb3J5IG1hcHBlZCBmaWxlICglcykiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZv
aWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjbGVhckRhdGFXaXRob3V0TWFwcGluZygpCi17Ci0g
ICAgQVNTRVJUKCFtX21hcHBpbmcpOwotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgbV9idWZm
ZXItPmRlcmVmKCk7Ci0gICAgbV9idWZmZXIgPSAwOwotfQotCi1pbnQgRGlza0ltYWdlQ2FjaGU6
OkVudHJ5Ojp3cml0ZVRvRmlsZUludGVybmFsKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCi17
Ci0gICAgQVNTRVJUKG1fYnVmZmVyKTsKLSAgICBpbnQgdG90YWxCeXRlc1dyaXR0ZW4gPSAwOwot
Ci0gICAgY29uc3QgY2hhciogc2VnbWVudCA9IG51bGxwdHI7Ci0gICAgdW5zaWduZWQgcG9zaXRp
b24gPSAwOwotICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBtX2J1ZmZlci0+Z2V0U29tZURh
dGEoc2VnbWVudCwgcG9zaXRpb24pKSB7Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0
ZVRvRmlsZShoYW5kbGUsIHNlZ21lbnQsIGxlbmd0aCk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0
ZW4gPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgdG90YWxCeXRlc1dy
aXR0ZW4gKz0gYnl0ZXNXcml0dGVuOwotICAgICAgICBwb3NpdGlvbiArPSBsZW5ndGg7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRvdGFsQnl0ZXNXcml0dGVuOwotfQotCi0KLURpc2tJbWFnZUNhY2hl
OjpEaXNrSW1hZ2VDYWNoZSgpCi0gICAgOiBtX2VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX3NpemUo
MCkKLSAgICAsIG1fbWF4aW11bUNhY2hlU2l6ZSgxMDAgKiAxMDI0ICogMTAyNCkKLSAgICAsIG1f
bWluaW11bUltYWdlU2l6ZSgxMDAgKiAxMDI0KQotICAgICwgbV9uZXh0QXZhaWxhYmxlSWQoRGlz
a0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCArIDEpCi17Ci19Ci0KLURpc2tJbWFnZUNh
Y2hlSWQgRGlza0ltYWdlQ2FjaGU6OndyaXRlSXRlbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aXRlbSkKLXsKLSAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFjcmVhdGVEaXJlY3RvcnlJZk5lZWRl
ZCgpKQotICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsK
LQotICAgIC8vIFdlIGFyZSBhbHJlYWR5IGZ1bGwsIGNhbm5vdCBhZGQgYW55dGhpbmcgdW50aWwg
c29tZXRoaW5nIGlzIHJlbW92ZWQuCi0gICAgaWYgKGlzRnVsbCgpKSB7Ci0gICAgICAgIExPRyhE
aXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBjb3VsZCBub3QgcHJvY2VzcyBhbiBpdGVt
IGJlY2F1c2UgdGhlIGNhY2hlIHdhcyBmdWxsIGF0ICglZCkuIFRoZSBcIm1heFwiIGJlaW5nICgl
ZCkiLCBtX3NpemUsIG1fbWF4aW11bUNhY2hlU2l6ZSk7Ci0gICAgICAgIHJldHVybiBEaXNrSW1h
Z2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOwotICAgIH0KLQotICAgIC8vIENyZWF0ZSBhbiBl
bnRyeS4KLSAgICBEaXNrSW1hZ2VDYWNoZUlkIGlkID0gbmV4dEF2YWlsYWJsZUlkKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaXRlbTsKLSAgICBSZWZQdHI8RGlza0ltYWdl
Q2FjaGU6OkVudHJ5PiBlbnRyeSA9IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y3JlYXRlKGJ1ZmZl
ci5nZXQoKSwgaWQpOwotICAgIG1fdGFibGUuYWRkKGlkLCBlbnRyeSk7Ci0KLSAgICAvLyBDcmVh
dGUgYSB0ZW1wb3JhcnkgZmlsZSBwYXRoLgotICAgIFN0cmluZyBwYXRoID0gdGVtcG9yYXJ5Rmls
ZSgpOwotICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBjcmVhdGluZyBl
bnRyeSAoJWQpIGF0ICglcykiLCBpZCwgcGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAocGF0
aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0Nh
Y2hlSWQ7Ci0KLSAgICAvLyBUaGUgbGlmZXRpbWUgb2YgdGhlIEVudHJ5IGlzIGhhbmRsZWQgb24g
dGhlIFdlYlRocmVhZC4KLSAgICAvLyBCZWZvcmUgd2Ugc2VuZCB0byBhIGRpc3BhdGNoIHF1ZXVl
IHdlIG5lZWQgdG8gcmVmIHNvCi0gICAgLy8gdGhhdCB3ZSBhcmUgc3VyZSB0aGUgb2JqZWN0IHN0
aWxsIGV4aXN0cy4gVGhpcyBjYWxsCi0gICAgLy8gaXMgYmFsYW5jZWQgaW4gdGhlIFdlYlRocmVh
ZFJ1biBpbnNpZGUgb2YgRW50cnk6Om1hcC4KLSAgICAvLyBvciB0aGUgZWFybHkgcmV0dXJuIGlu
IHRoaXMgZGlzcGF0Y2guCi0gICAgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KiBsb2NhbEVudHJ5Rm9y
QmxvY2sgPSBlbnRyeS5nZXQoKTsKLSAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPnJlZigpOwotCi0g
ICAgLy8gTWFwIHRvIGRpc2sgYXN5bmNocm9ub3VzbHkuCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAw
KSwgXnsKLSAgICAgICAgLy8gVGhlIGNhY2hlIGJlY2FtZSBmdWxsIHNpbmNlIHRoZSB0aW1lIHdl
IHdlcmUgYWRkZWQgdG8gdGhlIHF1ZXVlLiBEb24ndCBtYXAuCi0gICAgICAgIGlmIChkaXNrSW1h
Z2VDYWNoZSgpLmlzRnVsbCgpKSB7Ci0gICAgICAgICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAg
ICAgICAgICAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKCk7
Ci0gICAgICAgICAgICAgICAgbG9jYWxFbnRyeUZvckJsb2NrLT5kZXJlZigpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbEVu
dHJ5Rm9yQmxvY2stPm1hcChwYXRoKTsKLQotICAgICAgICAvLyBVcGRhdGUgdGhlIHNpemUgb24g
YSBzdWNjZXNzZnVsIG1hcHBpbmcuCi0gICAgICAgIGlmIChsb2NhbEVudHJ5Rm9yQmxvY2stPmlz
TWFwcGVkKCkpCi0gICAgICAgICAgICBkaXNrSW1hZ2VDYWNoZSgpLnVwZGF0ZVNpemUobG9jYWxF
bnRyeUZvckJsb2NrLT5zaXplKCkpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIGlkOwotfQotCi12
b2lkIERpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXplKHVuc2lnbmVkIGRlbHRhKQotewotICAgIE11
dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgbV9zaXplICs9IGRlbHRhOwotfQotCi12b2lk
IERpc2tJbWFnZUNhY2hlOjpyZW1vdmVJdGVtKERpc2tJbWFnZUNhY2hlSWQgaWQpCi17Ci0gICAg
TE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IHJlbW92ZUl0ZW0gKCVkKSIsIGlk
KTsKLSAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0
KGlkKTsKLSAgICBtX3RhYmxlLnJlbW92ZShpZCk7Ci0gICAgaWYgKCFlbnRyeS0+aXNNYXBwZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBkYXRlU2l6ZSgtKGVudHJ5LT5zaXplKCkpKTsK
LQotICAgIERpc2tJbWFnZUNhY2hlOjpFbnRyeSAqbG9jYWxFbnRyeUZvckJsb2NrID0gZW50cnku
Z2V0KCk7Ci0gICAgbG9jYWxFbnRyeUZvckJsb2NrLT5yZWYoKTsKLSAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApLCBeewotICAgICAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPnVubWFwKCk7Ci0gICAgICAg
IGxvY2FsRW50cnlGb3JCbG9jay0+cmVtb3ZlRmlsZSgpOwotICAgICAgICBXZWJUaHJlYWRSdW4o
XnsgbG9jYWxFbnRyeUZvckJsb2NrLT5kZXJlZigpOyB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCog
RGlza0ltYWdlQ2FjaGU6OmRhdGFGb3JJdGVtKERpc2tJbWFnZUNhY2hlSWQgaWQpCi17Ci0gICAg
QVNTRVJUKGlkKTsKLQotICAgIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGVudHJ5ID0g
bV90YWJsZS5nZXQoaWQpOwotICAgIEFTU0VSVChlbnRyeS0+aXNNYXBwZWQoKSk7Ci0gICAgcmV0
dXJuIGVudHJ5LT5kYXRhKCk7Ci19Ci0KLWJvb2wgRGlza0ltYWdlQ2FjaGU6OmNyZWF0ZURpcmVj
dG9yeUlmTmVlZGVkKCkKLXsKLSAgICBpZiAoIW1fY2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgbV9jYWNoZURpcmVjdG9yeSA9IHRlbXBvcmFyeURp
cmVjdG9yeSgpOwotICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBDcmVh
dGVkIHRlbXBvcmFyeSBkaXJlY3RvcnkgKCVzKSIsIG1fY2FjaGVEaXJlY3RvcnkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgaWYgKG1fY2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpIHsKLSAgICAgICAgTE9H
X0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogY291bGQgbm90IGNyZWF0ZSBjYWNoZSBkaXJlY3Rvcnki
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChtX2NsaWVudCkKLSAg
ICAgICAgbV9jbGllbnQtPmRpZENyZWF0ZURpc2tJbWFnZUNhY2hlRGlyZWN0b3J5KG1fY2FjaGVE
aXJlY3RvcnkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLURpc2tJbWFnZUNhY2hlSWQgRGlz
a0ltYWdlQ2FjaGU6Om5leHRBdmFpbGFibGVJZCgpCi17Ci0gICAgcmV0dXJuIG1fbmV4dEF2YWls
YWJsZUlkKys7Ci19Ci0KLVN0cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5
KCkKLXsKLSAgICBOU1N0cmluZyAqdGVtcERpc2tDYWNoZURpcmVjdG9yeSA9IGNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAIkRpc2tJbWFnZUNhY2hlIik7Ci0gICAgaWYgKCF0ZW1wRGlza0NhY2hl
RGlyZWN0b3J5KQotICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3Qg
Y3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4iKTsKLQotICAgIHJldHVybiB0ZW1wRGlza0Nh
Y2hlRGlyZWN0b3J5OwotfQotCi1TdHJpbmcgRGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeUZpbGUo
KQotewotICAgIE5TU3RyaW5nICp0ZW1wRmlsZSA9IGNyZWF0ZVRlbXBvcmFyeUZpbGUobV9jYWNo
ZURpcmVjdG9yeSwgQCJ0bXAiKTsKLSAgICBpZiAoIXRlbXBGaWxlKQotICAgICAgICBMT0dfRVJS
T1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuIik7
Ci0KLSAgICByZXR1cm4gdGVtcEZpbGU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTFkYTZkOTUy
NjUwZTA0YmJjYmJlOGRmMDgxZGIyN2UyMWQyNTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaApAQCAtMCwwICsxLDE2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBE
aXNrSW1hZ2VDYWNoZV9oCisjZGVmaW5lIERpc2tJbWFnZUNhY2hlX2gKKworI2lmIEVOQUJMRShE
SVNLX0lNQUdFX0NBQ0hFKQorCisjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVDbGllbnQuaCIKKyNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
dHlwZWRlZiB1bnNpZ25lZCBEaXNrSW1hZ2VDYWNoZUlkOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKy8vIEdsb2JhbCBkaXNrIGltYWdlIGNhY2hlIG9iamVjdC4KK2NsYXNzIERpc2tJbWFnZUNh
Y2hlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNrSW1hZ2VDYWNoZSk7Citwcml2YXRl
OgorCisgICAgLy8gTGlmZXRpbWUgb2YgdGhpcyBFbnRyeSBhbmQgdGhlIFNoYXJlZEJ1ZmZlciBp
dCB3cmFwcyBhcmUgbWFuYWdlZCBpbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgY2xhc3MgRW50cnkg
OiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeT4geworICAgIHByaXZhdGU6CisgICAgICAgIEVudHJ5
KFNoYXJlZEJ1ZmZlciosIERpc2tJbWFnZUNhY2hlSWQpOworCisgICAgcHVibGljOgorICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGNyZWF0ZShTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgRGlza0ltYWdlQ2FjaGVJZCBpZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXNrSW1hZ2VDYWNoZTo6RW50cnkoYnVmZmVyLCBpZCkp
OworICAgICAgICB9CisKKyAgICAgICAgfkVudHJ5KCk7CisKKyAgICAgICAgdm9pZCBtYXAoKTsK
KyAgICAgICAgdm9pZCB1bm1hcCgpOworICAgICAgICB2b2lkIHJlbW92ZUZpbGUoKTsKKyAgICAg
ICAgdm9pZCBjbGVhckRhdGFXaXRob3V0TWFwcGluZygpOworCisgICAgICAgIERpc2tJbWFnZUNh
Y2hlSWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgICAgIHVuc2lnbmVkIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwcGluZzsgfQorICAgICAgICBib29sIGlzTWFwcGVkKCkgY29uc3QgeyByZXR1
cm4gbV9tYXBwaW5nICE9IG51bGxwdHI7IH0KKyAgICAgICAgdm9pZCBzZXRUZW1wb3JhcnlGaWxl
UGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgICAgICBzdGF0aWMgdm9pZCBtYXBUaHJlYWRTdGFy
dCh2b2lkKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZUZpbGVUaHJlYWRTdGFydCh2b2lk
Kik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1hcEludGVybmFsKCk7CisgICAgICAg
IHZvaWQgY2FuY2VsTWFwKCk7CisKKyNpZiBPUyhVTklYKQorICAgICAgICBpbnQgd3JpdGVUb0Zp
bGVJbnRlcm5hbChpbnQgZmQpOworI2VuZGlmCisKKyAgICAgICAgdm9pZCBkaWRGYWlsTWVtb3J5
TWFwKCk7CisgICAgICAgIHZvaWQgZGlkTWFwTWVtb3J5KCk7CisgICAgICAgIHZvaWQgZGlkUmVt
b3ZlRmlsZSgpOworCisgICAgICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7CisgICAgICAgIERp
c2tJbWFnZUNhY2hlSWQgbV9pZDsKKyAgICAgICAgdW5zaWduZWQgbV9zaXplOworICAgICAgICB2
b2lkKiBtX21hcHBpbmc7CisgICAgICAgIFN0cmluZyBtX3BhdGg7CisgICAgfTsKKworcHVibGlj
OgorICAgIGZyaWVuZCBEaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdlQ2FjaGUoKTsKKyAgICBmcmll
bmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RGlza0ltYWdlQ2FjaGU+OworICAgIHN0YXRpYyBjb25z
dCBEaXNrSW1hZ2VDYWNoZUlkIGludmFsaWREaXNrQ2FjaGVJZCA9IDA7CisKKyAgICAvLyBXcml0
ZSBvdXQgYW4gaXRlbS4KKyAgICBEaXNrSW1hZ2VDYWNoZUlkIHdyaXRlSXRlbShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pOworCisgICAgLy8gUmVtb3ZlIGl0ZW0uCisgICAgdm9pZCByZW1vdmVJ
dGVtKERpc2tJbWFnZUNhY2hlSWQpOworCisgICAgLy8gTWFwcGluZyBmb3IgYW4gaXRlbS4KKyAg
ICB2b2lkKiBkYXRhRm9ySXRlbShEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIC8vIFNldHVwIGEg
Y2xpZW50IGZvciBjYWxsYmFja3MuCisgICAgdm9pZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxEaXNr
SW1hZ2VDYWNoZUNsaWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKKyAgICBi
b29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0
RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQorCisgICAgdW5z
aWduZWQgbWF4aW11bUNhY2hlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bUNhY2hlU2l6
ZTsgfQorICAgIHZvaWQgc2V0TWF4aW11bUNhY2hlU2l6ZSh1bnNpZ25lZCBtYXhpbXVtKSB7IG1f
bWF4aW11bUNhY2hlU2l6ZSA9IG1heGltdW07IH0KKworICAgIHVuc2lnbmVkIG1pbmltdW1JbWFn
ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1JbWFnZVNpemU7IH0KKyAgICB2b2lkIHNl
dE1pbmltdW1JbWFnZVNpemUodW5zaWduZWQgbWluaW11bSkgeyBtX21pbmltdW1JbWFnZVNpemUg
PSBtaW5pbXVtOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZURpcmVjdG9yeTsgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNGdWxsKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplID49IG1fbWF4aW11bUNhY2hlU2l6ZTsgfQorCitwcml2YXRlOgorICAgIERpc2tJbWFnZUNh
Y2hlKCk7CisgICAgfkRpc2tJbWFnZUNhY2hlKCkgeyB9CisKKyAgICBib29sIGNyZWF0ZURpcmVj
dG9yeUlmTmVlZGVkKCk7CisgICAgRGlza0ltYWdlQ2FjaGVJZCBuZXh0QXZhaWxhYmxlSWQoKTsK
KworICAgIFN0cmluZyB0ZW1wb3JhcnlEaXJlY3RvcnkoKTsKKyAgICBTdHJpbmcgdGVtcG9yYXJ5
RmlsZSgpOworCisgICAgdm9pZCB1cGRhdGVTaXplKHVuc2lnbmVkIGRlbHRhKTsKKworICAgIGJv
b2wgbV9lbmFibGVkOworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICB1bnNpZ25lZCBtX21heGlt
dW1DYWNoZVNpemU7CisgICAgdW5zaWduZWQgbV9taW5pbXVtSW1hZ2VTaXplOworICAgIERpc2tJ
bWFnZUNhY2hlSWQgbV9uZXh0QXZhaWxhYmxlSWQ7CisgICAgU3RyaW5nIG1fY2FjaGVEaXJlY3Rv
cnk7CisKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGVDbGllbnQ+IG1fY2xpZW50OworICAgIEhh
c2hNYXA8RGlza0ltYWdlQ2FjaGVJZCwgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4+IG1f
dGFibGU7CisKKyAgICBNdXRleCBtX211dGV4OworfTsKKworLy8gRnVuY3Rpb24gdG8gb2J0YWlu
IHRoZSBnbG9iYWwgZGlzayBpbWFnZSBjYWNoZS4KK0Rpc2tJbWFnZUNhY2hlJiBkaXNrSW1hZ2VD
YWNoZSgpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRElT
S19JTUFHRV9DQUNIRSkKKworI2VuZGlmIC8vIERpc2tJbWFnZUNhY2hlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhN2Ez
YTBkYTEyNDhlZmJjYzBiOGNmYjQzMDMxNzkxYjY1NTUzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oCkBAIC0wLDAgKzEs
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERpc2tJbWFnZUNhY2hlQ2xpZW50X2gKKyNkZWZp
bmUgRGlza0ltYWdlQ2FjaGVDbGllbnRfaAorCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUp
CisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERpc2tJbWFnZUNhY2hlQ2xp
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RGlza0ltYWdlQ2FjaGVDbGllbnQ+IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5EaXNrSW1hZ2VDYWNoZUNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVEaXNrSW1hZ2VDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpCisKKyNlbmRpZiAvLyBEaXNrSW1hZ2VDYWNoZUNsaWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggZmEwMzNlZGM0MjgwNDJjYzQ1MmZl
NmVkNTY0ZGU4N2NiZTVkNzVkNS4uNTgyMzc3YWZjZGU3YTI0MjU3MmY3ZWVhM2QyMDkyNDg2ZGU3
ZjkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTY0LDYgKzE2NCw4
IEBAIGlubGluZSBkb3VibGUgaW52YWxpZEZpbGVUaW1lKCkgeyByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oCiBpbmxpbmUgYm9vbCBpc1ZhbGlkRmlsZVRpbWUo
ZG91YmxlIHRpbWUpIHsgcmV0dXJuIHN0ZDo6aXNmaW5pdGUodGltZSk7IH0KIAogLy8gUHJlZml4
IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1
bGwgcGF0aC4KK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
cmVmaXgpOworU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBzdWJEaXJl
Y3RvcnksIGNvbnN0IFN0cmluZyYgcHJlZml4KTsKIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CiBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwogdm9pZCBj
bG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7CkBAIC0xOTgsNiArMjAwLDcgQEAgU3RyaW5n
IGZpbGVuYW1lVG9TdHJpbmcoY29uc3QgY2hhciopOwogU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxh
eShjb25zdCBTdHJpbmcmKTsKIENTdHJpbmcgYXBwbGljYXRpb25EaXJlY3RvcnlQYXRoKCk7CiBD
U3RyaW5nIHNoYXJlZFJlc291cmNlc1BhdGgoKTsKK1N0cmluZyBjcmVhdGVVc2VyQ2FjaGVEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKIHVpbnQ2NF90IGdl
dFZvbHVtZUZyZWVTaXplRm9yUGF0aChjb25zdCBjaGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1NTg3YWEzZDY1ZTMxMzc1ODdmMjQ0YmZhYTczNzY5
Njg2MzllYTA4Li4wMjljYWI3NmJiY2I2MzNkMDJhYmE1MTg2ODFjMWE4ZDY2MzNmOTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKICNpZiBFTkFCTEUoRElTS19JTUFH
RV9DQUNIRSkKLSNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUlPUy5oIgorI2luY2x1ZGUgIkRpc2tJ
bWFnZUNhY2hlLmgiCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAppbmRleCAyN2M0YWIwNDU4ZWQ3
N2I0NWVlYjYzMGI5ZjY4MjExMzExYmVhMDE2Li4yYTYzNDY2NTRlNmFlYWNhNTZiN2I4MWY5Yjcx
MGQ2NDAxZDZiNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmls
ZVN5c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0
ZW1HdGsuY3BwCkBAIC0yNjksNiArMjY5LDQxIEBAIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKICAgICByZXR1cm4g
ZW50cmllczsKIH0KIAorU3RyaW5nIGNyZWF0ZVVzZXJDYWNoZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIG5hbWUpCit7CisgICAgR093blB0cjxnY2hhcj4gcGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdf
Z2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCBuYW1lLnV0ZjgoKS5kYXRhKCksIE5V
TEwpKTsKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3BhdGgocGF0aC5nZXQoKSkpOworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKworICAgIGlm
ICghZ19maWxlX21ha2VfZGlyZWN0b3J5X3dpdGhfcGFyZW50cyhmaWxlLmdldCgpLCAwLCAmZXJy
b3Iub3V0UHRyKCkpICYmIGVycm9yLT5jb2RlICE9IEdfSU9fRVJST1JfRVhJU1RTKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoLmdl
dCgpKTsKK30KKworU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHByZWZpeCkKK3sKKyAgICBHT3duUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYo
IiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHT3duUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3RtcF9kaXIoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBHUmVm
UHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGgu
Z2V0KCkpKTsKKworICAgIGlmICghZ19maWxlX21ha2VfZGlyZWN0b3J5X3dpdGhfcGFyZW50cyhm
aWxlLmdldCgpLCAwLCAwKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKK30KKworU3RyaW5nIGNyZWF0ZVRlbXBv
cmFyeUZpbGUoY29uc3QgU3RyaW5nJiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7
CisgICAgR093blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJl
Zml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKSk7CisgICAgR093blB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShsb2Nh
dGlvbi51dGY4KCkuZGF0YSgpLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgIEdSZWZQdHI8
R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQo
KSkpOworCisgICAgR1JlZlB0cjxHRmlsZU91dHB1dFN0cmVhbT4gb3V0cHV0U3RyZWFtID0gZ19m
aWxlX2NyZWF0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOworICAgIGlm
ICghb3V0cHV0U3RyZWFtKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOworfQorCiBTdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQog
ewogICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHBy
ZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0lt
YWdlQ2FjaGVQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9EaXNrSW1h
Z2VDYWNoZVBPU0lYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTFkMDA1MWVjZTUyYWViZDA4Yjg3YWZhNjMy
NGRmOTVjODEyNjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAKQEAgLTAsMCArMSwzNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgorCisjaWYgRU5BQkxFKERJU0tfSU1B
R0VfQ0FDSEUpICYmIE9TKFVOSVgpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8
ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5j
bHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGlza0ltYWdlQ2FjaGU+IGNhY2hlOworICAgIHJldHVybiBj
YWNoZTsKK30KKworRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpFbnRyeShTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgRGlza0ltYWdlQ2FjaGVJZCBpZCkKKyAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICAs
IG1faWQoaWQpCisgICAgLCBtX3NpemUoMCkKKyAgICAsIG1fbWFwcGluZyhudWxscHRyKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBt
X2J1ZmZlci0+cmVmKCk7Cit9CisKK0Rpc2tJbWFnZUNhY2hlOjpFbnRyeTo6fkVudHJ5KCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghbV9idWZmZXIpOworICAg
IEFTU0VSVCghbV9tYXBwaW5nKTsKK30KKworYm9vbCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1h
cEludGVybmFsKCkKK3sKKyAgICBBU1NFUlQobV9idWZmZXIpOworICAgIEFTU0VSVCghbV9tYXBw
aW5nKTsKKworICAgIG1fc2l6ZSA9IG1fYnVmZmVyLT5zaXplKCk7CisKKyAgICAvLyBPcGVuIHRo
ZSBmaWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLgorICAgIGludCBmZCA9IG9wZW4obV9wYXRo
LnV0ZjgoKS5kYXRhKCksIE9fQ1JFQVQgfCBPX1JEV1IgfCBPX1RSVU5DLCBzdGF0aWNfY2FzdDxt
b2RlX3Q+KDA2MDApKTsKKyAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoZSBmaWxlLgorICAgIGlmICh3cml0ZVRvRmls
ZUludGVybmFsKGZkKSA9PSAtMSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIGRlbGV0
ZUZpbGUobV9wYXRoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFNl
ZWsgYmFjayB0byB0aGUgYmVnaW5uaW5nLgorICAgIGlmIChsc2VlayhmZCwgMCwgU0VFS19TRVQp
ID09IC0xKSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gUGVyZm9ybSBtZW1vcnkg
bWFwcGluZyBmb3IgcmVhZGluZy4KKyAgICAvLyBOT1RFOiBUaGlzIG11c3Qgbm90IGNvbmZsaWN0
IHdpdGggdGhlIG9wZW4oKSBhYm92ZSwgd2hpY2ggbXVzdCBhbHNvIG9wZW4gZm9yIHJlYWRpbmcu
CisgICAgbV9tYXBwaW5nID0gbW1hcChudWxscHRyLCBtX3NpemUsIFBST1RfUkVBRCwgTUFQX1NI
QVJFRCwgZmQsIDApOworICAgIGNsb3NlKGZkKTsKKyAgICBpZiAobV9tYXBwaW5nID09IE1BUF9G
QUlMRUQpIHsKKyAgICAgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IG1h
cHBpbmcgZmFpbGVkICglZCk6ICglcykiLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAg
ICAgbV9tYXBwaW5nID0gbnVsbHB0cjsKKyAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWlsTWVtb3J5TWFwKCkKK3sKKyAgICBtX2J1ZmZl
ci0+ZmFpbGVkTWVtb3J5TWFwKCk7CisgICAgbV9idWZmZXItPmRlcmVmKCk7CisgICAgbV9idWZm
ZXIgPSAwOworICAgIHRoaXMtPmRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVu
dHJ5OjpkaWRNYXBNZW1vcnkoKQoreworICAgIG1fYnVmZmVyLT5tYXJrQXNNZW1vcnlNYXBwZWQo
KTsKKyAgICBtX2J1ZmZlci0+ZGVyZWYoKTsKKyAgICBtX2J1ZmZlciA9IDA7CisgICAgdGhpcy0+
ZGVyZWYoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcCgpCit7CisgICAg
QVNTRVJUKCFtX3BhdGguaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9idWZmZXIpOworICAgIEFT
U0VSVCghbV9tYXBwaW5nKTsKKworICAgIGJvb2wgZmlsZU1hcHBlZCA9IG1hcEludGVybmFsKCk7
CisgICAgaWYgKCFmaWxlTWFwcGVkKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZCgm
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWlsTWVtb3J5TWFwLCB0aGlzKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkRpc2tJbWFnZUNh
Y2hlOjpFbnRyeTo6ZGlkTWFwTWVtb3J5LCB0aGlzKSk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2Fj
aGU6OkVudHJ5Ojp1bm1hcCgpCit7CisgICAgaWYgKCFtX21hcHBpbmcpIHsKKyAgICAgICAgQVNT
RVJUKCFtX3NpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG11bm1hcCht
X21hcHBpbmcsIG1fc2l6ZSkgPT0gLTEpCisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2Fj
aGU6IENvdWxkIG5vdCBtdW5tYXAgYSBtZW1vcnkgbWFwcGVkIGZpbGUgd2l0aCBpZCAoJWQpIiwg
bV9pZCk7CisKKyAgICBtX21hcHBpbmcgPSBudWxscHRyOworICAgIG1fc2l6ZSA9IDA7Cit9CisK
K3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVGaWxlKCkKK3sKKyAgICBBU1NFUlQo
IW1fbWFwcGluZyk7CisgICAgQVNTRVJUKCFtX3NpemUpOworCisgICAgaWYgKCFkZWxldGVGaWxl
KG1fcGF0aCkpCisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBk
ZWxldGUgbWVtb3J5IG1hcHBlZCBmaWxlICglcykiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7Cit9
CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjbGVhckRhdGFXaXRob3V0TWFwcGluZygp
Cit7CisgICAgQVNTRVJUKCFtX21hcHBpbmcpOworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAg
bV9idWZmZXItPmRlcmVmKCk7CisgICAgbV9idWZmZXIgPSAwOworfQorCitpbnQgRGlza0ltYWdl
Q2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmlsZUludGVybmFsKGludCBmZCkKK3sKKyAgICBBU1NFUlQo
bV9idWZmZXIpOworICAgIGludCB0b3RhbEJ5dGVzV3JpdHRlbiA9IDA7CisKKyAgICBjb25zdCBj
aGFyKiBzZWdtZW50ID0gbnVsbHB0cjsKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CisgICAg
d2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fYnVmZmVyLT5nZXRTb21lRGF0YShzZWdtZW50LCBw
b3NpdGlvbikpIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGZkLCBzdGF0aWNf
Y2FzdDxjb25zdCB2b2lkKj4oc2VnbWVudCksIGxlbmd0aCk7CisgICAgICAgIGlmIChieXRlc1dy
aXR0ZW4gPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgdG90YWxCeXRl
c1dyaXR0ZW4gKz0gYnl0ZXNXcml0dGVuOworICAgICAgICBwb3NpdGlvbiArPSBsZW5ndGg7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRvdGFsQnl0ZXNXcml0dGVuOworfQorCit2b2lkIERpc2tJbWFn
ZUNhY2hlOjpFbnRyeTo6c2V0VGVtcG9yYXJ5RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIG1fcGF0aCA9IHBhdGg7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpj
YW5jZWxNYXAoKQoreworICAgIGNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKCk7CisgICAgdGhpcy0+
ZGVyZWYoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcFRocmVhZFN0YXJ0
KHZvaWQqIGVudHJ5UHRyKQoreworICAgIERpc2tJbWFnZUNhY2hlOjpFbnRyeSogZW50cnkgPSBz
dGF0aWNfY2FzdDxEaXNrSW1hZ2VDYWNoZTo6RW50cnkqPihlbnRyeVB0cik7CisKKyAgICBpZiAo
ZGlza0ltYWdlQ2FjaGUoKS5pc0Z1bGwoKSkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKGJp
bmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwLCBlbnRyeSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZW50cnktPm1hcCgpOworCisgICAgLy8gVXBkYXRlIHRoZSBz
aXplIG9uIGEgc3VjY2Vzc2Z1bCBtYXBwaW5nLgorICAgIGlmIChlbnRyeS0+aXNNYXBwZWQoKSkK
KyAgICAgICAgZGlza0ltYWdlQ2FjaGUoKS51cGRhdGVTaXplKGVudHJ5LT5zaXplKCkpOworfQor
Cit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSgpCit7CisgICAgZGVy
ZWYoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnJlbW92ZUZpbGVUaHJlYWRT
dGFydCh2b2lkKiBlbnRyeVB0cikKK3sKKyAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkqIGVudHJ5
ID0gc3RhdGljX2Nhc3Q8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Kj4oZW50cnlQdHIpOworCisgICAg
ZW50cnktPnVubWFwKCk7CisgICAgZW50cnktPnJlbW92ZUZpbGUoKTsKKworICAgIGNhbGxPbk1h
aW5UaHJlYWQoYmluZCgmRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRSZW1vdmVGaWxlLCBlbnRy
eSkpOworfQorCitEaXNrSW1hZ2VDYWNoZTo6RGlza0ltYWdlQ2FjaGUoKQorICAgIDogbV9lbmFi
bGVkKGZhbHNlKQorICAgICwgbV9zaXplKDApCisgICAgLCBtX21heGltdW1DYWNoZVNpemUoMTAw
ICogMTAyNCAqIDEwMjQpCisgICAgLCBtX21pbmltdW1JbWFnZVNpemUoMTAwICogMTAyNCkKKyAg
ICAsIG1fbmV4dEF2YWlsYWJsZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQg
KyAxKQoreworfQorCitEaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFnZUNhY2hlOjp3cml0ZUl0ZW0o
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGl0ZW0pCit7CisgICAgaWYgKCFpc0VuYWJsZWQoKSB8
fCAhY3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNh
Y2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7CisKKyAgICAvLyBXZSBhcmUgYWxyZWFkeSBmdWxsLCBj
YW5ub3QgYWRkIGFueXRoaW5nIHVudGlsIHNvbWV0aGluZyBpcyByZW1vdmVkLgorICAgIGlmIChp
c0Z1bGwoKSkgeworICAgICAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTog
Y291bGQgbm90IHByb2Nlc3MgYW4gaXRlbSBiZWNhdXNlIHRoZSBjYWNoZSB3YXMgZnVsbCBhdCAo
JWQpLiBUaGUgXCJtYXhcIiBiZWluZyAoJWQpIiwgbV9zaXplLCBtX21heGltdW1DYWNoZVNpemUp
OworICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKyAg
ICB9CisKKyAgICAvLyBDcmVhdGUgYW4gZW50cnkuCisgICAgRGlza0ltYWdlQ2FjaGVJZCBpZCA9
IG5leHRBdmFpbGFibGVJZCgpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGl0
ZW07CisgICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBEaXNrSW1hZ2VD
YWNoZTo6RW50cnk6OmNyZWF0ZShidWZmZXIuZ2V0KCksIGlkKTsKKyAgICBtX3RhYmxlLmFkZChp
ZCwgZW50cnkpOworCisgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgcGF0aC4KKyAgICBT
dHJpbmcgcGF0aCA9IHRlbXBvcmFyeUZpbGUoKTsKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJE
aXNrSW1hZ2VDYWNoZTogY3JlYXRpbmcgZW50cnkgKCVkKSBhdCAoJXMpIiwgaWQsIHBhdGgudXRm
OCgpLmRhdGEoKSk7CisgICAgaWYgKHBhdGguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBEaXNr
SW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOworCisgICAgZW50cnktPnNldFRlbXBvcmFy
eUZpbGVQYXRoKHBhdGgpOworCisgICAgLy8gVGhlIGxpZmV0aW1lIG9mIHRoZSBFbnRyeSBpcyBo
YW5kbGVkIG9uIHRoZSBtYWluIHRocmVhZC4gQmVmb3JlIHdlIHN0YXJ0IGEgdGhyZWFkIHdlIG5l
ZWQgdG8KKyAgICAvLyByZWYgc28gdGhhdCB3ZSBhcmUgc3VyZSB0aGUgb2JqZWN0IHN0aWxsIGV4
aXN0cy4gVGhpcyBjYWxsIGlzIGJhbGFuY2VkIGluIHRoZSBjYWxsYmFja3MKKyAgICAvLyBjYWxs
ZWQgZnJvbSBFbnRyeTo6bWFwLgorICAgIGVudHJ5LT5yZWYoKTsKKworICAgIC8vIE1hcCB0byBk
aXNrIGFzeW5jaHJvbm91c2x5LgorICAgIGNyZWF0ZVRocmVhZChEaXNrSW1hZ2VDYWNoZTo6RW50
cnk6Om1hcFRocmVhZFN0YXJ0LCBlbnRyeS5nZXQoKSwgIldlYkNvcmU6IERpc2tJbWFnZUNhY2hl
OjptYXAiKTsKKworICAgIHJldHVybiBpZDsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6dXBk
YXRlU2l6ZSh1bnNpZ25lZCBkZWx0YSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgp
OworICAgIG1fc2l6ZSArPSBkZWx0YTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6cmVtb3Zl
SXRlbShEaXNrSW1hZ2VDYWNoZUlkIGlkKQoreworICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRp
c2tJbWFnZUNhY2hlOiByZW1vdmVJdGVtICglZCkiLCBpZCk7CisgICAgUmVmUHRyPERpc2tJbWFn
ZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBtX3RhYmxlLmdldChpZCk7CisgICAgbV90YWJsZS5yZW1v
dmUoaWQpOworICAgIGlmICghZW50cnktPmlzTWFwcGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVwZGF0ZVNpemUoLShlbnRyeS0+c2l6ZSgpKSk7CisKKyAgICBlbnRyeS0+cmVmKCk7CisK
KyAgICBjcmVhdGVUaHJlYWQoRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVGaWxlVGhyZWFk
U3RhcnQsIGVudHJ5LmdldCgpLCAiV2ViQ29yZTogRGlza0ltYWdlQ2FjaGU6OnJlbW92ZUl0ZW0i
KTsKK30KKwordm9pZCogRGlza0ltYWdlQ2FjaGU6OmRhdGFGb3JJdGVtKERpc2tJbWFnZUNhY2hl
SWQgaWQpCit7CisgICAgQVNTRVJUKGlkKTsKKworICAgIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6
RW50cnk+IGVudHJ5ID0gbV90YWJsZS5nZXQoaWQpOworICAgIEFTU0VSVChlbnRyeS0+aXNNYXBw
ZWQoKSk7CisgICAgcmV0dXJuIGVudHJ5LT5kYXRhKCk7Cit9CisKK2Jvb2wgRGlza0ltYWdlQ2Fj
aGU6OmNyZWF0ZURpcmVjdG9yeUlmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fY2FjaGVEaXJlY3Rv
cnkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgbV9jYWNoZURpcmVjdG9y
eSA9IHRlbXBvcmFyeURpcmVjdG9yeSgpOworICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJ
bWFnZUNhY2hlOiBDcmVhdGVkIHRlbXBvcmFyeSBkaXJlY3RvcnkgKCVzKSIsIG1fY2FjaGVEaXJl
Y3RvcnkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1fY2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkp
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogY291bGQgbm90IGNyZWF0ZSBj
YWNoZSBkaXJlY3RvcnkiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZENyZWF0ZURpc2tJbWFnZUNhY2hlRGly
ZWN0b3J5KG1fY2FjaGVEaXJlY3RvcnkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0Rpc2tJ
bWFnZUNhY2hlSWQgRGlza0ltYWdlQ2FjaGU6Om5leHRBdmFpbGFibGVJZCgpCit7CisgICAgcmV0
dXJuIG1fbmV4dEF2YWlsYWJsZUlkKys7Cit9CisKKyNpZiBQTEFURk9STShHVEspCisvLyBGb3Ig
R1RLKyB3ZSB1c2UgYSB3ZWxsLWtub3duIG5hbWUgaW5zaWRlIHRoZSB1c2VyJ3MgWERHIGNhY2hl
IGRpcmVjdG9yeSwgc28gdGhhdCB3ZSBjYW4KKy8vIGJldHRlciBtYW5hZ2UgaXRzIGNsZWFudXAu
CitTdHJpbmcgRGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeURpcmVjdG9yeSgpCit7CisgICAgU3Ry
aW5nIHBhdGggPSBjcmVhdGVVc2VyQ2FjaGVEaXJlY3RvcnkoImRpc2staW1hZ2UtY2FjaGUiKTsK
KyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2Fj
aGU6IENvdWxkIG5vdCBjcmVhdGUgY2FjaGUgZGlyZWN0b3J5LiIpOworCisgICAgLy8gQ2xlYW51
cCB0aGUgZGlyZWN0b3J5LgorICAgIFZlY3RvcjxTdHJpbmc+IGl0ZW1zID0gbGlzdERpcmVjdG9y
eShwYXRoLCAidG1wKiIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgp
OyBpKyspCisgICAgICAgIGRlbGV0ZUZpbGUoaXRlbXNbaV0pOworCisgICAgcmV0dXJuIHBhdGg7
Cit9CisjZWxzZQorU3RyaW5nIERpc2tJbWFnZUNhY2hlOjp0ZW1wb3JhcnlEaXJlY3RvcnkoKQor
eworICAgIFN0cmluZyB0ZW1wRGlza0NhY2hlRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KCJEaXNrSW1hZ2VDYWNoZSIpOworICAgIGlmICh0ZW1wRGlza0NhY2hlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90
IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuIik7CisKKyAgICByZXR1cm4gdGVtcERpc2tD
YWNoZURpcmVjdG9yeTsKK30KKyNlbmRpZgorCitTdHJpbmcgRGlza0ltYWdlQ2FjaGU6OnRlbXBv
cmFyeUZpbGUoKQoreworICAgIFN0cmluZyB0ZW1wRmlsZSA9IGNyZWF0ZVRlbXBvcmFyeUZpbGUo
bV9jYWNoZURpcmVjdG9yeSwgInRtcCIpOworICAgIGlmICh0ZW1wRmlsZS5pc0VtcHR5KCkpCisg
ICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBjcmVhdGUgYSB0ZW1w
b3JhcnkgZmlsZS4iKTsKKworICAgIHJldHVybiB0ZW1wRmlsZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpICYmIE9TKFVO
SVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcAppbmRleCBjZjdkNzVmOTI0NTdjOGY5ZTgyNTk2MGRiMGRhYTFiOGZkZTdjODJiLi43ZGUz
NjM1MGY1Mzc3MDA0ODVlOTIzMTFlM2Y3MmMxYjBmNGY0NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI5MSw2ICsyOTEs
MjMgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgZmlsdGVyKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oTUFDKQorU3RyaW5n
IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHByZWZpeCkKK3sKKyAgICBj
aGFyIGJ1ZmZlcltQQVRIX01BWF07CisgICAgY29uc3QgY2hhciogdG1wRGlyID0gZ2V0ZW52KCJU
TVBESVIiKTsKKworICAgIGlmICghdG1wRGlyKQorICAgICAgICB0bXBEaXIgPSAiL3RtcCI7CisK
KyAgICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01BWCwgIiVzLyVzWFhYWFhYIiwgdG1wRGly
LCBwcmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9NQVgpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIGlmIChta2R0ZW1wKGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7Cit9CisKIFN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCiB7CiAgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkRpc2tJbWFnZUNhY2hlQ2xp
ZW50SU9TLmgKaW5kZXggZTkzNTk1NDhiOTgzMWQwYWMzMTc2ZjI3YmQ4ZTBlMmNlNjBjNzI4Mi4u
MTlmMTU5ZjIwODA5MGQzNDlhYzM3NWY3MGE4ZDYwZWE1NzI4YjRlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJEaXNrSW1hZ2VDYWNo
ZUNsaWVudElPUy5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBFTkFCTEUoRElTS19JTUFHRV9D
QUNIRSkgJiYgUExBVEZPUk0oSU9TKQogCi0jaW1wb3J0IDxXZWJDb3JlL0Rpc2tJbWFnZUNhY2hl
Q2xpZW50SU9TLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rpc2tJbWFnZUNhY2hlQ2xpZW50Lmg+CiAK
IGNsYXNzIFdlYkRpc2tJbWFnZUNhY2hlQ2xpZW50IEZJTkFMIDogcHVibGljIFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBiYjNkYjAyMjA3
NzM5NDcyOGFiNDA0ZGJkZWYwOGRlMTk1NGU0MmUzLi4zMTdiYTAyYjk4MGFhNjU5MmJhZmEzNzAz
MTkxYzc4YmJiNzE3NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04NCw2ICs4NCw5IEBAIHZvaWQgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rl
ciYgZW5jb2RlcikgY29uCiAgICAgZW5jb2RlciA8PCBzaG91bGRBbHdheXNVc2VDb21wbGV4VGV4
dENvZGVQYXRoOwogICAgIGVuY29kZXIgPDwgc2hvdWxkVXNlRm9udFNtb290aGluZzsKICAgICBl
bmNvZGVyIDw8IGljb25EYXRhYmFzZUVuYWJsZWQ7CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FD
SEUpCisgICAgZW5jb2RlciA8PCBkaXNrSW1hZ2VDYWNoZUVuYWJsZWQ7CisjZW5kaWYKICAgICBl
bmNvZGVyIDw8IHRlcm1pbmF0aW9uVGltZW91dDsKICAgICBlbmNvZGVyIDw8IGxhbmd1YWdlczsK
ICAgICBlbmNvZGVyIDw8IHRleHRDaGVja2VyU3RhdGU7CkBAIC0xODQsNiArMTg3LDEwIEBAIGJv
b2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgV2ViCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaWNvbkRhdGFiYXNlRW5hYmxlZCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGlza0ltYWdlQ2FjaGVFbmFibGVkKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRl
cm1pbmF0aW9uVGltZW91dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGEyNGE3ZWVlMTY2
NGFjNTMyMTE3ZTNiZWM2MzAzZjQ5ZTZmODIwM2UuLmVjOGQwN2VhMDkwMzRhN2U3NGQzOWNmMDE5
NzE0ODVmNzQ4MzI0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtOTcsNiArOTcsMTAgQEAgc3RydWN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBpY29uRGF0YWJhc2VFbmFibGVk
OwogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgYm9vbCBkaXNrSW1hZ2VDYWNo
ZUVuYWJsZWQ7CisjZW5kaWYKKwogICAgIGRvdWJsZSB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAKaW5kZXggZWQ2MjZhZGQ3ZTFlYzQ5NDIzNmU3Y2FhYzQ0N2M5OTlhM2MyZDY2Zi4u
MjVkNGViMGQ1OTc5YTk1YjhkNTM4ODZiNjM4ZWE1MTg5OTBhNmQ1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtNTQ3LDYgKzU0NywxMCBAQCBXZWJQcm9jZXNz
UHJveHkqIFdlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIAogICAgIHBhcmFt
ZXRlcnMuaWNvbkRhdGFiYXNlRW5hYmxlZCA9ICFpY29uRGF0YWJhc2VQYXRoKCkuaXNFbXB0eSgp
OwogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgcGFyYW1ldGVycy5kaXNrSW1h
Z2VDYWNoZUVuYWJsZWQgPSB0cnVlOworI2VuZGlmCisKICAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0
aW9uVGltZW91dCA9IChtX3Byb2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzKSA/IHNoYXJlZFNlY29uZGFyeVByb2Nlc3NTaHV0ZG93blRpbWVvdXQgOiAwOwog
CiAgICAgcGFyYW1ldGVycy50ZXh0Q2hlY2tlclN0YXRlID0gVGV4dENoZWNrZXI6OnN0YXRlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzNDQ0MzQ3YThi
YTI1YzUzM2U5NTI2MDUxNTZiNmY4YzY3MGYzODVhLi41MGE2MjZmYjUzYThjOTI4MzFjNTJiMWE4
YmI3NWExYjZhZTVhOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTEwNiw2ICsxMDYsMTAgQEAKICNpbmNsdWRlICJXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisjaW5j
bHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmgiCiAjZW5kaWYKQEAgLTI5MSw2ICsyOTUsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWUKICAgICBtX2ljb25EYXRhYmFzZVByb3h5LT5zZXRFbmFibGVkKHBhcmFtZXRl
cnMuaWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESVNLX0lNQUdF
X0NBQ0hFKQorICAgIGRpc2tJbWFnZUNhY2hlKCkuc2V0RW5hYmxlZChwYXJhbWV0ZXJzLmRpc2tJ
bWFnZUNhY2hlRW5hYmxlZCk7CisjZW5kaWYKKwogICAgIGlmICghcGFyYW1ldGVycy5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgY2FjaGVTdG9yYWdlKCkuc2V0
Q2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00IGIvU291
cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CmluZGV4IGI3YzI4ZmZjN2QyNzQz
NGI4OThmYmU0ZGQxZmNmNTliOWE5MGM2YjYuLmM1OGVhY2ViMzk1M2JhODIzNTUxZWQxOGZlNTJj
NjQ4ZmYzNmViNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0
dXJlcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKQEAg
LTEyMCw2ICsxMjAsNyBAQCAkc3JjZGlyL1Rvb2xzL2d0ay9nZW5lcmF0ZS1mZWF0dXJlLWRlZmlu
ZXMtZmlsZXMgJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMgXAogICAgIEVOQUJMRV9ERVRB
SUxTX0VMRU1FTlQ9MSBcCiAgICAgRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTj0wIFwKICAgICBF
TkFCTEVfRElSRUNUT1JZX1VQTE9BRD0wIFwKKyAgICBFTkFCTEVfRElTS19JTUFHRV9DQUNIRT0w
IFwKICAgICBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I9MCBcCiAgICAgRU5BQkxFX0RP
V05MT0FEX0FUVFJJQlVURT0wIFwKICAgICBFTkFCTEVfRklMVEVSUz0xIFwKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZTRhNjExYjgzMzQ3NDM5
ZGUzMTM1NmFmZmYzMDkxNzc1NmNmMzNmLi4yMzRjMTY4OWI0OGNlMWU0NGY0YTU5YTI5YWFhMTA2
ZDk5YWY4NDY0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAg
PGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgorCisgICAgICAgIE1ha2UgRGlza0ltYWdl
Q2FjaGUgY3Jvc3MtcGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBhZGQgbmV3
IGZlYXR1cmUgZmxhZyBmb3IgZGlzayBpbWFnZSBjYWNoZS4KKwogMjAxMy0xMS0wOCAgTWF0dGhl
dyBIYW5zb24gIDxtYXR0aGV3X2hhbnNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gQWRkZWQgbXlzZWxmIGFzIGEgY29udHJpYnV0b3IuCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
RmVhdHVyZUxpc3QucG0KaW5kZXggNzM2YjE3NjRiMzc4ZDhhZGI5M2NmYmYwMmZkZDAzZjA5Yzc1
NzdjNi4uZWZhOTFlN2ZkZDVlYzA4ZDllMTFiMmVhYzJkZmY1NDAyYTY5MWRlNCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtNzUsNiArNzUsNyBAQCBteSAoCiAg
ICAgJGRldGFpbHNFbGVtZW50U3VwcG9ydCwKICAgICAkZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0
LAogICAgICRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0LAorICAgICRkaXNrSW1hZ2VDYWNoZSwKICAg
ICAkZG9tNEV2ZW50c0NvbnN0cnVjdG9yLAogICAgICRkb3dubG9hZEF0dHJpYnV0ZVN1cHBvcnQs
CiAgICAgJGZpbHRlcnNTdXBwb3J0LApAQCAtMjU1LDYgKzI1Niw5IEBAIG15IEBmZWF0dXJlcyA9
ICgKICAgICB7IG9wdGlvbiA9PiAiZGlyZWN0b3J5LXVwbG9hZCIsIGRlc2MgPT4gIlRvZ2dsZSBE
aXJlY3RvcnkgVXBsb2FkIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRElSRUNU
T1JZX1VQTE9BRCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRkaXJlY3RvcnlVcGxvYWRTdXBw
b3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAiZGlzay1pbWFnZS1jYWNoZSIsIGRlc2MgPT4gIlRv
Z2dsZSBEaXNrIEltYWdlIENhY2hlIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
RElTS19JTUFHRV9DQUNIRSIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRkaXNrSW1hZ2VDYWNo
ZSB9LAorCiAgICAgeyBvcHRpb24gPT4gImRvbTQtZXZlbnRzLWNvbnN0cnVjdG9yIiwgZGVzYyA9
PiAiRXhwb3NlIERPTTQgRXZlbnRzIGNvbnN0cnVjdG9ycyIsCiAgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUiIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQo
KSB8fCBpc0d0aygpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGRvbTRFdmVudHNDb25zdHJ1Y3Rv
ciB9LAogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmI5Y2M0MzNm
MWJjMTAxYjQwNGYyMTRmOTI3ZGZiN2E5ZTc0ZDU2Ni4uN2VlMmI4Mzc1ZDhhYzg1MzlmNGIzMWY5
OWVlOTdmOWNkZDU3OWMwOSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDEzLTExLTExICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0
YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAgICAgICBNYWtlIERpc2tJbWFnZUNhY2hl
IGNyb3NzLXBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjQxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNDogbmV3IGZl
YXR1cmUgZmxhZyBmb3IgRElTS19JTUFHRV9DQUNIRS4KKwogMjAxMy0xMS0wNiAgS3J6eXN6dG9m
IEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDaGFuZ2UgcmVx
dWlyZWQgdmVyc2lvbiBvZiBBVEsgdG8gMi4xMC4wCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221072</attachid>
            <date>2014-01-13 12:19:08 -0800</date>
            <delta_ts>2015-08-14 11:02:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124167-20140113181906.patch</filename>
            <type>text/plain</type>
            <size>66994</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM3YmQwOGRkZDU1ODcy
NWE1NWViNjFiMzVjNGIxNWZkMjRjM2Y3ZC4uNDhiNjg4NDFhZjI2NzExODQ0MDdmMjRhODVhYjI0
MmIyNzc4NTY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTExLTExICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBNYWtlIERpc2tJbWFnZUNhY2hlIGNyb3NzLXBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaG91bGQgYmUgY292ZXJlZCBieSBleGlz
dGluZyBpbWFnZSB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ciBpcyBleHBlY3RlZAorICAg
ICAgICBmcm9tIHRoZSBvcmlnaW5hbCBJT1MgY29kZSB0aGF0IHdhcyB1cHN0cmVhbWVkLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogYWRkIG5ldyBmaWxlcy4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiB1c2UgbmV3IGZpbGVzLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6IGFkb3B0IG5ldyBoZWFkZXIgbmFtZS4KKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9EaXNrSW1hZ2VD
YWNoZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VD
YWNoZUlPUy5oLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjppZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6aXNNYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
aXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNYXhpbXVtQ2FjaGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNaW5pbXVtSW1hZ2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjYWNoZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNr
SW1hZ2VDYWNoZTo6aXNGdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp+
RGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hl
Q2xpZW50SU9TLmguCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZUNsaWVudDo6fkRp
c2tJbWFnZUNhY2hlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDogYWRvcHQgbmV3IGhlYWRlciBuYW1l
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSk6IEdUSysgaW1wbGVtZW50YXRpb24gb2Yg
bmV3IG1ldGhvZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLAorICAgICAgICBjcmVhdGVz
IGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFy
eUZpbGUpOiBkaXR0bywgYnV0IGNyZWF0ZXMgYSBmaWxlLgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OmRpc2tJ
bWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6RW50
cnkpOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6fkVu
dHJ5KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1h
cEludGVybmFsKTogZGl0dG8uIEFsc28gdXNlIGZpbGUgZGVzY3JpcHRvciBkaXJlY3RseSBpbnN0
ZWFkIG9mIFBsYXRmb3JtRmlsZUhhbmRsZQorICAgICAgICBzaW5jZSB0aGlzIGlzIGEgUE9TSVgg
aW1wbGVtZW50YXRpb24sIGFuZCBpdCB3b3VsZCBtYWtlIGxpZmUgaGFyZGVyIHRvIEdUSysgd2hp
Y2ggdXNlcyBoaWdoZXIgbGV2ZWwgb2JqZWN0cworICAgICAgICBhcyBpdHMgUGxhdGZvcm1GaWxl
SGFuZGxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWls
TWVtb3J5TWFwKTogY2xlYW51cCBhZnRlciBmYWlsdXJlLgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRNYXBNZW1vcnkpOiBtYXJrIGJ1ZmZlciBhcyBtYXBwZWQg
YW5kIGNsZWFudXAgb24gc3VjY2Vzcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6bWFwKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJlYWRpbmcgQVBJ
cyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6OnVubWFwKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2Fj
aGU6OkVudHJ5OjpyZW1vdmVGaWxlKTogcG9ydGVkIGZyb20gTUFDL0lPUy1zcGVjaWZpYyB0aHJl
YWRpbmcgQVBJcyB0byBXZWJDb3JlIHRocmVhZHMuCisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6RW50cnk6OmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKTogdW5jaGFuZ2VkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmlsZUludGVybmFs
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpz
ZXRUZW1wb3JhcnlGaWxlUGF0aCk6IG5ldyBoZWxwZXIgdXNlZCBieSB0aGUgY29kZSB0aGF0IHVz
ZWQgdG8gYmUgYSBsaWJkaXNwYXRjaAorICAgICAgICBibG9jay4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcFRocmVhZFN0YXJ0KTogZGl0dG8uIFN0YXJ0
cyB0aGUgdGhyZWFkIHRoYXQgbWFwcyB0aGUgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSk6IGRpdHRvLiBDbGVhbnMgdXAgYWZ0ZXIg
ZmlsZSByZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpy
ZW1vdmVGaWxlVGhyZWFkU3RhcnQpOiBkaXR0by4gU3RhcnRzIHRoZSB0aHJlYWQgdGhhdCByZW1v
dmVzIHRoZSBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkRpc2tJbWFn
ZUNhY2hlKTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6Ondy
aXRlSXRlbSk6IHBvcnRlZCBhd2F5IGZyb20gbGliZGlzcGF0Y2gvYmxvY2tzIGFuZCBNQUMvSU9T
IHRocmVhZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXpl
KTogdW5jaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnJlbW92ZUl0
ZW0pOiBwb3J0ZWQgZnJvbSBNQUMvSU9TLXNwZWNpZmljIHRocmVhZGluZyBBUElzIHRvIFdlYkNv
cmUgdGhyZWFkcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRl
bSk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjcmVhdGVE
aXJlY3RvcnlJZk5lZWRlZCk6IHVuY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFn
ZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQpOiB1bmNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KTogdXNlIFN0cmluZyBpbnN0ZWFkIG9m
IE5TU3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeUZp
bGUpOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogbmV3IG1ldGhv
ZCB1c2VkIGJ5IHRoZSBkaXNrIGltYWdlIGNhY2hlLCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVj
dG9yeS4KKwogMjAxNC0wMS0xMyAgVGlib3IgTWVzemFyb3MgIDx0bWVzemFyb3MudS1zemVnZWRA
cGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNjE3MTUpOiBVc2Ug
b2YgdW5pbml0aWFsaXplZCB2YWx1ZSAkRU5WeyJQTEFURk9STV9OQU1FIn0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZwppbmRleCBiN2U3NDYzMTNiYmY2MmI0MWZkZWI5ZWViZjEyNWE1NWVmNzk5MDBlLi4xYjNiOWQ2
NTU2YTI2YjllMWUzNmQ0MjdlZjg1NDc1YzA2NzlkM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTMtMTEtMTEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8u
bm9yb25oYUBjb2xsYWJvcmEuY29tPgorCisgICAgICAgIE1ha2UgRGlza0ltYWdlQ2FjaGUgY3Jv
c3MtcGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaDogdXNlIHRo
ZSBuZXcgbmFtZSBmb3IgdGhlIGltYWdlIGNhY2hlIGNsaWVudAorICAgICAgICBoZWFkZXIgKERp
c2tJbWFnZUNhY2hlQ2xpZW50LmgpLgorCiAyMDE0LTAxLTEyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdHlwZSBjaGVja2luZyB0byBpc0VxdWFsIG1ldGhv
ZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGI4ZTNiODIyN2MxNmJhZjA1NjIz
ODM0NjVkNDU1YzdlMDVhYTY3OGQuLjY5MGMzMzIxNTAyNDZhNTYyZjEyNjVkNTc4MjcyNjA5NTM1
MTEwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTk3NSw2ICs1OTc1LDcg
QEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIFwKQEAgLTYw
NjcsNiArNjA2OCw4IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RhdGVUaW1lQ2hvb3NlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EZWNpbWFsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9v
c2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNTBlNzJkMGE3NzdiNzMyMDE5Y2U3YzgzNDNiYzVhMGQ1
Y2E2ZTg3ZC4uZjYzMTJhOWE4ODRkZjNlNmMyNjUyNjQ1YTkwNmFhNDMzZTEwZTc2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE2OSw2ICsxNjksNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9TeW5jaHJvbm91c0xvYWRlckNsaWVudFNvdXAuY3Bw
CiAKKyAgICBwbGF0Zm9ybS9wb3NpeC9EaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcAogICAgIHBsYXRm
b3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKICAgICBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRC
dWZmZXJQT1NJWC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDFlN2I4Mjc5OTE4MWY5N2FjOWRhYWQ4ODljMjU5ZGMzNjRm
OGQ5ODMuLjQyMWRjOTk0ZTk0YTA5NTlmMWJiOTNlZTIwN2Y5ZTI3ZGNmNDMzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2
ODQsMTIgKzM2ODQsMTAgQEAKIAkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVBQkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9v
bElDVS5oICovOyB9OwogCQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzRE
MTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovOyB9OwogCQlBNUFGQjM1MDExNTE1
MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTVDNTY2
QUIxMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUM1NjZBQTEyN0EzQUFEMDBF
OEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNURFQkRBMzE2RkI5MDg3MDA4MzZGRTAgLyog
V2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFQkQ5RjE2RkI5MDg3MDA4MzZGRTAg
LyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgKi87IH07CiAJCUE1
REVCREE0MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5oICovOyB9OwogCQlBNUY2RTE2QjEzMkVENDZFMDA4RURBRTMgLyogQXV0b2NhcGl0
YWxpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVGNkUxNkMxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFsaXplLmNwcCAqLzsgfTsKLQkJ
QTVGOUVGNzAxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVGNkUxMjY2NzUwRDAw
RkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovOyB9OwotCQlBNUY5RUY3MTEyNjY3NTBE
MDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1h
Z2VDYWNoZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUZBNzA5NEVCN0Q5QTdBRTQxNDRGM0EwNSAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE3MDk0RUI3
RDlBN0FFNDE0NEYzQTA1IC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTYxNDhBNjIxMkU0MUQzQTAwNDRB
Nzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE2MTQ4QTYxMTJFNDFEM0EwMDQ0QTc4NCAvKiBE
T01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmggKi87IH07CiAJCUE2MTQ4QTY3MTJFNDFEOTQw
MDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhBNjUxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhU
TUxLZXlnZW5FbGVtZW50LmggKi87IH07CiAJCUE2MTQ4QTY4MTJFNDFEOTQwMDQ0QTc4NCAvKiBE
T01IVE1MS2V5Z2VuRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE2MTQ4QTY2MTJFNDFEOTQwMDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxl
bWVudC5tbSAqLzsgfTsKQEAgLTYwNjEsNiArNjA1OSw3IEBACiAJCUVENTAxREM2MEIyNDlGMjkw
MEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICov
OyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZGMEM3QTQzMDYwMDk1
NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUVERUM5ODAzMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREVDOTgwMjBB
RUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovOyB9OworCQlFRTczRjQ5RkUzNUQ3
Q0Y2RjFDOTdCQUUgLyogRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTQxRkU2MzkzOUNCOEY5MTEzM0Y1QzYgLyog
RGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAgKi87IH07CiAJCUYxMjE3MUY1MTZBOENFRDIwMDAwNTND
QSAvKiBXZWJWVFRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEYxMjE3MUYzMTZBOEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNw
cCAqLzsgfTsKIAkJRjEyMTcxRjYxNkE4Q0YwQjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYxMjE3MUY0MTZB
OEJDNjMwMDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmggKi87IH07CiAJCUYyOTNCMjdFNTZDMTEy
RjM3M0ZGRjI3RSAvKiBETlNSZXNvbHZlUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jl
c29sdmVRdWV1ZS5jcHAgKi87IH07CkBAIC04MDc3LDYgKzgwNzYsNyBAQAogCQkzMUZCMUE2MzEy
MEE1RDNGMDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFGQjFBNjQxMjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNl
TW90aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXZpY2VN
b3Rpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUZCMUE2QjEyMEE1
RDY5MDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzIxNDE4NzNGMTFBOTRBQjFFQjFEQkUwIC8q
IERpc2tJbWFnZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJ
bWFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIw
ODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxRkY2N0RFMTk3QjU3MzkzQzQ2QUE3IC8qIFJlbmRl
ck1hdGhNTFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbmRlck1h
dGhNTFNwYWNlLmg7IHBhdGggPSByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmg7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTEwNzAxLDE1ICsxMDcwMSwxMiBAQAog
CQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RDExNTE1MUE3MDBCMDQ1
Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzRFMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QzU2NkFB
MTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZl
bnRDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBLZXlFdmVudENvY29h
Lmg7IHBhdGggPSBjb2NvYS9LZXlFdmVudENvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gS2V5RXZlbnRDb2NvYS5tbTsgcGF0
aCA9IGNvY29hL0tleUV2ZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNURFQkRBMDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1REVCREExMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTVGNkUxNkMxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFsaXplLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9jYXBpdGFsaXplLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVGOUVGNkUxMjY2NzUwRDAwRkNDRjUyIC8q
IERpc2tJbWFnZUNhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRGlza0ltYWdlQ2FjaGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUlPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNjE0OEE2MTEyRTQxRDNBMDA0NEE3ODQgLyogRE9NSFRNTEtl
eWdlbkVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE2MTQ4QTY1MTJFNDFEOTQwMDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNjE0OEE2NjEyRTQxRDk0MDA0NEE3ODQgLyog
RE9NSFRNTEtleWdlbkVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzMDMyLDYgKzEzMDI5LDcgQEAKIAkJREJGQ0IwRUJGRjVDRDc3RUJFQjM1Mzk1IC8q
IFJlbmRlck1hdGhNTFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFJlbmRlck1hdGhNTFNwYWNlLmNwcDsgcGF0aCA9IHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUREMDVGRTBC
MEI4QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU9iakNFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREQ3NjNCQjEwOTkyQzJDOTAwNzQwQjhFIC8qIGxpYnhtbDIuZHlsaWIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnhtbDIuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJ4
bWwyLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQlERTQxRkU2MzkzOUNC
OEY5MTEzM0Y1QzYgLyogRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREU0OUIyRkYxNjVGMkZDNjAwMTAzMzhEIC8qIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlERTQ5QjMwMDE2NUYyRkM2MDAxMDMzOEQgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERTQ5QjMwNzE2NUYyRkUxMDAxMDMz
OEQgLyogUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM1NzAsNiArMTM1NjgsNyBAQAogCQlGQTY1NEE2OTEx
MDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MVGV4dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MVGV4dEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1
QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBETlNSZXNvbHZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE3MDk0
RUI3RDlBN0FFNDE0NEYzQTA1IC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVEMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQUJFNzJFRTEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkVG
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2OTMsNiArMTU2OTIs
NyBAQAogCQk1MTYwMzAwOTBDQzQyNDU0MDBDOEFDMjUgLyogcG9zaXggKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCURFNDFGRTYzOTM5Q0I4RjkxMTMzRjVD
NiAvKiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCAqLywKIAkJCQk1MTYwMzAwQTBDQzQyNTEyMDBD
OEFDMjUgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcG9zaXg7
CkBAIC0yMDY2NCw3ICsyMDY2NCw2IEBACiAJCQkJQThEMkIyNTIxMjg3QTU2MDAwQUY0RERBIC8q
IGNhY2hlICovLAogCQkJCTdFRTY4NDczMTJEMjZFNTUwMEU3OTQxNSAvKiBjZiAqLywKIAkJCQk1
MTI2RTZCNjBBMkUzQUVGMDA1QzI5RkEgLyogaWNvbiAqLywKLQkJCQlDRTc5RDY4NjE3RjIyMEVE
MDA4MTVDMDAgLyogaW9zICovLAogCQkJCTkzQTFFQUEyMEE1NjM0RDgwMDY5NjBBMCAvKiBtYWMg
Ki8sCiAJCQkJRTE0MjRDOTExNjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5jcHAgKi8sCiAJ
CQkJRTE0MjRDOTIxNjRCNTJDODAwRjMyRDQwIC8qIENvb2tpZUphci5oICovLApAQCAtMjA4Mzks
NiArMjA4MzgsOCBAQAogCQkJCUE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9u
ZW50cy5oICovLAogCQkJCTQ1RkVBNUNEMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNwcCAq
LywKIAkJCQk0NUZFQTVDRTE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5oICovLAorCQkJCTMy
MTQxODczRjExQTk0QUIxRUIxREJFMCAvKiBEaXNrSW1hZ2VDYWNoZS5oICovLAorCQkJCUZBNzA5
NEVCN0Q5QTdBRTQxNDRGM0EwNSAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudC5oICovLAogCQkJCUE3
OTU0NjQyMEI1QzRDQjQwMDdCNDM4RiAvKiBEcmFnRGF0YS5jcHAgKi8sCiAJCQkJQTdCNkU2OUQw
QjI5MUE5NjAwRDA1MjlGIC8qIERyYWdEYXRhLmggKi8sCiAJCQkJQTdDRkIzQ0YwQjdFRDEwQTAw
NzBDMzJEIC8qIERyYWdJbWFnZS5jcHAgKi8sCkBAIC0yMTExNywxNiArMjExMTgsNiBAQAogCQkJ
cGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUNFNzlENjg2
MTdGMjIwRUQwMDgxNUMwMCAvKiBpb3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNo
aWxkcmVuID0gKAotCQkJCUE1RjlFRjZFMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNo
ZUlPUy5tbSAqLywKLQkJCQlBNUY5RUY2RjEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2Fj
aGVJT1MuaCAqLywKLQkJCQlBNUM1NjZBQTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2Fj
aGVDbGllbnRJT1MuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gaW9zOwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjMyNTUsOCArMjMy
NDYsNiBAQAogCQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTYwMjNGMDE1MzJDNDBDMDBENTBGRjQgLyogRGljdGlv
bmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBRjE5OTkxNTEzRDEzMTAwOERCMEMzIC8qIERp
cmVjdENvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTVGOUVGNzExMjY2NzUwRDAwRkND
RjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUM1NjZBQjEy
N0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5QUYyRDY5MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVEOEM0REMwMTQyODIyMkMwMDI2Q0U3MiAvKiBEaXNwbGF5
U2xlZXBEaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOTExMkIwMjZGNzAwQzFB
MzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NDkxLDYgKzI2NDgwLDcgQEAK
IAkJCQlGRDMxNjAzRDEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5MDcwN0U2MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTJBQTBFRkFDOTA2MDA5RDBDQUYgLyogQW5p
bWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUVFNzNGNDlGRTM1RDdDRjZGMUM5N0JBRSAv
KiBEaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBNTI4RTgzMTdE
N0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzE2RkUxMTEwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE2RkUxMTMwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjg0Miw3ICsyNjgzMiw2IEBACiAJCQkJMzEyRDY3QjEx
NTM1NjkxRjAwNTYzRDBEIC8qIERpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRB
RjE5OTgxNTEzRDEzMTAwOERCMEMzIC8qIERpcmVjdENvbnZvbHZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTY2MEFDMjE4MjhDODQ2MDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb25MZXZlbERCLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1RjlFRjcwMTI2Njc1MEQwMEZD
Q0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5RkM3QTUw
MTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDlBRjJENkMxNDQzNUQyMTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1RDhDNERCRjE0MjgyMjJDMDAyNkNFNzIgLyog
RGlzcGxheVNsZWVwRGlzYWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA1NTI1ZmIxZjM0ZWE2MjYyNTE0NmMx
MTU5ZmU3MTcwNmYzMWIxOWUwLi4wYWNmZTFiOGZmNjk5YjNhNThmYTViZjcxZTBiZmMwNmMxZDE0
MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0j
aW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJT1MuaCIKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5o
IgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDY1MjQyMmNmNjQ3ODJiYTU2MjNkNmJlYTM4Y2Y0
MGJhMTViY2NmYzguLmU1YjBkNzc1MDEyYjY2ODBmNzE3ZWIyYTNmN2ViZDYzYmRmMjVmY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDcsNyAr
NDcsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShESVNL
X0lNQUdFX0NBQ0hFKQotI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlSU9TLmgiCisjaW5jbHVkZSAi
RGlza0ltYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlza0ltYWdlQ2FjaGVDbGll
bnRJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlza0ltYWdlQ2FjaGVDbGllbnRJ
T1MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU5MTM2MzVlOWY5ZmY0MTI0NmZl
MWIxMTIwMDUzYjU3YmU5YmQxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hlQ2xpZW50
SU9TLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPU19oCi0jZGVmaW5lIERpc2tJbWFnZUNhY2hlQ2xpZW50
SU9TX2gKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCi0K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpc2tJbWFnZUNhY2hlQ2xpZW50
IDogcHVibGljIFJlZkNvdW50ZWQ8RGlza0ltYWdlQ2FjaGVDbGllbnQ+IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5EaXNrSW1hZ2VDYWNoZUNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVEaXNrSW1hZ2VDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkg
PSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElPUykKLQotI2VuZGlmIC8vIERpc2tJbWFnZUNh
Y2hlQ2xpZW50SU9TX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlz
a0ltYWdlQ2FjaGVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlza0ltYWdlQ2Fj
aGVJT1MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU5NDc2NDA0M2M4ZDEwNzEx
OTEzYmIwOTA3Nzg0NmI4ZGFlOTZlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hlSU9T
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
RGlza0ltYWdlQ2FjaGVJT1NfaAotI2RlZmluZSBEaXNrSW1hZ2VDYWNoZUlPU19oCi0KLSNpZiBF
TkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCi0jaW5jbHVkZSAiRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1MuaCIKLSNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLXR5cGVkZWYgdW5zaWduZWQgRGlza0ltYWdlQ2FjaGVJZDsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBHbG9iYWwgZGlzayBpbWFnZSBjYWNoZSBvYmpl
Y3QuCi1jbGFzcyBEaXNrSW1hZ2VDYWNoZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlz
a0ltYWdlQ2FjaGUpOwotcHJpdmF0ZToKLQotICAgIC8vIExpZmV0aW1lIG9mIHRoaXMgRW50cnkg
YW5kIHRoZSBTaGFyZWRCdWZmZXIgaXQgd3JhcHMgaXMgbWFuYWdlZCBvbiB0aGUgV2ViVGhyZWFk
LgotICAgIGNsYXNzIEVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnk+IHsKLSAgICBwcml2
YXRlOgotICAgICAgICBFbnRyeShTaGFyZWRCdWZmZXIqLCBEaXNrSW1hZ2VDYWNoZUlkKTsKLQot
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVu
dHJ5PiBjcmVhdGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJbWFnZUNhY2hlSWQgaWQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlza0ltYWdlQ2FjaGU6
OkVudHJ5KGJ1ZmZlciwgaWQpKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5FbnRyeSgpOwotCi0g
ICAgICAgIHZvaWQgbWFwKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgICAgIHZvaWQgdW5tYXAo
KTsKLSAgICAgICAgdm9pZCByZW1vdmVGaWxlKCk7Ci0gICAgICAgIHZvaWQgY2xlYXJEYXRhV2l0
aG91dE1hcHBpbmcoKTsKLQotICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9Ci0gICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX21hcHBpbmc7IH0K
LSAgICAgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGluZyAhPSBudWxs
cHRyOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBib29sIG1hcEludGVybmFsKGNvbnN0IFN0
cmluZyYgcGF0aCk7Ci0gICAgICAgIGludCB3cml0ZVRvRmlsZUludGVybmFsKFBsYXRmb3JtRmls
ZUhhbmRsZSk7Ci0KLSAgICAgICAgU2hhcmVkQnVmZmVyKiBtX2J1ZmZlcjsKLSAgICAgICAgRGlz
a0ltYWdlQ2FjaGVJZCBtX2lkOwotICAgICAgICB1bnNpZ25lZCBtX3NpemU7Ci0gICAgICAgIHZv
aWQqIG1fbWFwcGluZzsKLSAgICAgICAgU3RyaW5nIG1fcGF0aDsKLSAgICB9OwotCi1wdWJsaWM6
Ci0gICAgRGlza0ltYWdlQ2FjaGUoKTsKLSAgICBmcmllbmQgRGlza0ltYWdlQ2FjaGUmIGRpc2tJ
bWFnZUNhY2hlKCk7Ci0gICAgc3RhdGljIGNvbnN0IERpc2tJbWFnZUNhY2hlSWQgaW52YWxpZERp
c2tDYWNoZUlkID0gMDsKLQotICAgIC8vIFdyaXRlIG91dCBhbiBpdGVtLgotICAgIERpc2tJbWFn
ZUNhY2hlSWQgd3JpdGVJdGVtKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci0KLSAgICAvLyBS
ZW1vdmUgaXRlbS4KLSAgICB2b2lkIHJlbW92ZUl0ZW0oRGlza0ltYWdlQ2FjaGVJZCk7Ci0KLSAg
ICAvLyBNYXBwaW5nIGZvciBhbiBpdGVtLgotICAgIHZvaWQqIGRhdGFGb3JJdGVtKERpc2tJbWFn
ZUNhY2hlSWQpOwotCi0gICAgLy8gU2V0dXAgYSBjbGllbnQgZm9yIGNhbGxiYWNrcy4KLSAgICB2
b2lkIHNldENsaWVudChQYXNzUmVmUHRyPERpc2tJbWFnZUNhY2hlQ2xpZW50PiBjbGllbnQpIHsg
bV9jbGllbnQgPSBjbGllbnQ7IH0KLQotICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9lbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2Vu
YWJsZWQgPSBlbmFibGVkOyB9Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVtQ2FjaGVTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9tYXhpbXVtQ2FjaGVTaXplOyB9Ci0gICAgdm9pZCBzZXRNYXhpbXVtQ2Fj
aGVTaXplKHVuc2lnbmVkIG1heGltdW0pIHsgbV9tYXhpbXVtQ2FjaGVTaXplID0gbWF4aW11bTsg
fQotCi0gICAgdW5zaWduZWQgbWluaW11bUltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWlu
aW11bUltYWdlU2l6ZTsgfQotICAgIHZvaWQgc2V0TWluaW11bUltYWdlU2l6ZSh1bnNpZ25lZCBt
aW5pbXVtKSB7IG1fbWluaW11bUltYWdlU2l6ZSA9IG1pbmltdW07IH0KLQotICAgIGNvbnN0IFN0
cmluZyYgY2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlRGlyZWN0b3J5OyB9
Ci0KLSAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgYm9v
bCBpc0Z1bGwoKSBjb25zdCB7IHJldHVybiBtX3NpemUgPj0gbV9tYXhpbXVtQ2FjaGVTaXplOyB9
Ci0KLXByaXZhdGU6Ci0gICAgfkRpc2tJbWFnZUNhY2hlKCkgeyB9Ci0KLSAgICBib29sIGNyZWF0
ZURpcmVjdG9yeUlmTmVlZGVkKCk7Ci0gICAgRGlza0ltYWdlQ2FjaGVJZCBuZXh0QXZhaWxhYmxl
SWQoKTsKLQotICAgIFN0cmluZyB0ZW1wb3JhcnlEaXJlY3RvcnkoKTsKLSAgICBTdHJpbmcgdGVt
cG9yYXJ5RmlsZSgpOwotCi0gICAgdm9pZCB1cGRhdGVTaXplKHVuc2lnbmVkIGRlbHRhKTsKLQot
ICAgIGJvb2wgbV9lbmFibGVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICB1bnNpZ25lZCBt
X21heGltdW1DYWNoZVNpemU7Ci0gICAgdW5zaWduZWQgbV9taW5pbXVtSW1hZ2VTaXplOwotICAg
IERpc2tJbWFnZUNhY2hlSWQgbV9uZXh0QXZhaWxhYmxlSWQ7Ci0gICAgU3RyaW5nIG1fY2FjaGVE
aXJlY3Rvcnk7Ci0KLSAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGVDbGllbnQ+IG1fY2xpZW50Owot
ICAgIEhhc2hNYXA8RGlza0ltYWdlQ2FjaGVJZCwgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRy
eT4+IG1fdGFibGU7Ci0KLSAgICBNdXRleCBtX211dGV4OwotfTsKLQotLy8gRnVuY3Rpb24gdG8g
b2J0YWluIHRoZSBnbG9iYWwgZGlzayBpbWFnZSBjYWNoZS4KLURpc2tJbWFnZUNhY2hlJiBkaXNr
SW1hZ2VDYWNoZSgpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCi0jZW5kaWYgLy8gRGlza0lt
YWdlQ2FjaGVJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNr
SW1hZ2VDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvRGlza0ltYWdlQ2Fj
aGVJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5OGRhNjY3NTlhMzdlYzVk
MWVkMjBmOTlhOGZhMmUxZjk1ZTRiYWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlP
Uy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlSU9TLmgiCi0KLSNpZiBFTkFC
TEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbUlPUy5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJXZWJDb3JlVGhyZWFk
LmgiCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgotI2luY2x1ZGUgPGVycm5vLmg+Ci0j
aW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNh
Y2hlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGlza0ltYWdlQ2FjaGU+IGNhY2hl
OwotICAgIHJldHVybiBjYWNoZTsKLX0KLQotRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpFbnRyeShT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGlza0ltYWdlQ2FjaGVJZCBpZCkKLSAgICA6IG1fYnVmZmVy
KGJ1ZmZlcikKLSAgICAsIG1faWQoaWQpCi0gICAgLCBtX3NpemUoMCkKLSAgICAsIG1fbWFwcGlu
ZyhudWxscHRyKQotewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgQVNT
RVJUKFdlYlRocmVhZElzTG9ja2VkKCkpOwotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgbV9i
dWZmZXItPnJlZigpOwotfQotCi1EaXNrSW1hZ2VDYWNoZTo6RW50cnk6On5FbnRyeSgpCi17Ci0g
ICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNM
b2NrZWQoKSk7Ci0gICAgQVNTRVJUKCFtX2J1ZmZlcik7Ci0gICAgQVNTRVJUKCFtX21hcHBpbmcp
OwotfQotCi1ib29sIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwSW50ZXJuYWwoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgQVNTRVJUKCFtX21hcHBp
bmcpOwotCi0gICAgbV9wYXRoID0gcGF0aDsKLSAgICBtX3NpemUgPSBtX2J1ZmZlci0+c2l6ZSgp
OwotCi0gICAgLy8gT3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4KLSAgICBQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3BlbihtX3BhdGgudXRmOCgpLmRhdGEoKSwgT19D
UkVBVCB8IE9fUkRXUiB8IE9fVFJVTkMsIHN0YXRpY19jYXN0PG1vZGVfdD4oMDYwMCkpOwotICAg
IGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGUgZmlsZS4KLSAgICBpZiAod3JpdGVUb0ZpbGVJbnRl
cm5hbChoYW5kbGUpID09IC0xKSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgICAg
ICBkZWxldGVGaWxlKG1fcGF0aCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICAvLyBTZWVrIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4KLSAgICBpZiAoc2Vla0ZpbGUoaGFuZGxl
LCAwLCBTZWVrRnJvbUJlZ2lubmluZykgPT0gLTEpIHsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRs
ZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIC8vIFBlcmZvcm0gbWVtb3J5IG1hcHBpbmcgZm9yIHJlYWRpbmcuCi0gICAg
Ly8gTk9URTogVGhpcyBtdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZSBvcGVuKCkgYWJvdmUsIHdo
aWNoIG11c3QgYWxzbyBvcGVuIGZvciByZWFkaW5nLgotICAgIG1fbWFwcGluZyA9IG1tYXAobnVs
bHB0ciwgbV9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGhhbmRsZSwgMCk7Ci0gICAgY2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgaWYgKG1fbWFwcGluZyA9PSBNQVBfRkFJTEVEKSB7Ci0gICAg
ICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBtYXBwaW5nIGZhaWxlZCAo
JWQpOiAoJXMpIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIG1fbWFwcGluZyA9
IG51bGxwdHI7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6bWFwKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBBU1NFUlQobV9idWZmZXIp
OwotICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKLSAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkqIHRo
aXNFbnRyeSA9IHRoaXM7Ci0KLSAgICBib29sIGZpbGVNYXBwZWQgPSBtYXBJbnRlcm5hbChwYXRo
KTsKLSAgICBpZiAoIWZpbGVNYXBwZWQpIHsKLSAgICAgICAgLy8gTm90aWZ5IHRoZSBidWZmZXIg
aW4gdGhlIGNhc2Ugb2YgYSBmYWlsZWQgbWFwcGluZy4KLSAgICAgICAgV2ViVGhyZWFkUnVuKF57
Ci0gICAgICAgICAgICBtX2J1ZmZlci0+ZmFpbGVkTWVtb3J5TWFwKCk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci0+ZGVyZWYoKTsKLSAgICAgICAgICAgIG1fYnVmZmVyID0gMDsKLSAgICAgICAgICAg
IHRoaXNFbnRyeS0+ZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBOb3RpZnkgdGhlIGJ1ZmZlciBpbiB0aGUgY2FzZSBvZiBhIHN1Y2Nlc3NmdWwg
bWFwcGluZy4KLSAgICAvLyBUaGlzIHNob3VsZCBoYXBwZW4gb24gdGhlIFdlYlRocmVhZCBiZWNh
dXNlIHRoaXMgaXMgYmVpbmcgcnVuCi0gICAgLy8gYXN5bmNocm9ub3VzbHkgaW5zaWRlIGEgZGlz
cGF0Y2ggcXVldWUuCi0gICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIG1fYnVmZmVyLT5tYXJr
QXNNZW1vcnlNYXBwZWQoKTsKLSAgICAgICAgbV9idWZmZXItPmRlcmVmKCk7Ci0gICAgICAgIG1f
YnVmZmVyID0gMDsKLSAgICAgICAgdGhpc0VudHJ5LT5kZXJlZigpOwotICAgIH0pOwotfQotCi12
b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6dW5tYXAoKQotewotICAgIGlmICghbV9tYXBwaW5n
KSB7Ci0gICAgICAgIEFTU0VSVCghbV9zaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChtdW5tYXAobV9tYXBwaW5nLCBtX3NpemUpID09IC0xKQotICAgICAgICBMT0dfRVJS
T1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgbXVubWFwIGEgbWVtb3J5IG1hcHBlZCBmaWxl
IHdpdGggaWQgKCVkKSIsIG1faWQpOwotCi0gICAgbV9tYXBwaW5nID0gbnVsbHB0cjsKLSAgICBt
X3NpemUgPSAwOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6cmVtb3ZlRmlsZSgp
Ci17Ci0gICAgQVNTRVJUKCFtX21hcHBpbmcpOwotICAgIEFTU0VSVCghbV9zaXplKTsKLQotICAg
IGlmICghZGVsZXRlRmlsZShtX3BhdGgpKQotICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNh
Y2hlOiBDb3VsZCBub3QgZGVsZXRlIG1lbW9yeSBtYXBwZWQgZmlsZSAoJXMpIiwgbV9wYXRoLnV0
ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2xlYXJEYXRh
V2l0aG91dE1hcHBpbmcoKQotewotICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKLSAgICBBU1NFUlQo
bV9idWZmZXIpOwotICAgIG1fYnVmZmVyLT5kZXJlZigpOwotICAgIG1fYnVmZmVyID0gMDsKLX0K
LQotaW50IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6d3JpdGVUb0ZpbGVJbnRlcm5hbChQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlKQotewotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgaW50IHRv
dGFsQnl0ZXNXcml0dGVuID0gMDsKLQotICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQgPSBudWxscHRy
OwotICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKLSAgICB3aGlsZSAodW5zaWduZWQgbGVuZ3Ro
ID0gbV9idWZmZXItPmdldFNvbWVEYXRhKHNlZ21lbnQsIHBvc2l0aW9uKSkgewotICAgICAgICBp
bnQgYnl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBzZWdtZW50LCBsZW5ndGgpOwot
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIC0xOwot
Ci0gICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgcG9z
aXRpb24gKz0gbGVuZ3RoOwotICAgIH0KLQotICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjsK
LX0KLQotCi1EaXNrSW1hZ2VDYWNoZTo6RGlza0ltYWdlQ2FjaGUoKQotICAgIDogbV9lbmFibGVk
KGZhbHNlKQotICAgICwgbV9zaXplKDApCi0gICAgLCBtX21heGltdW1DYWNoZVNpemUoMTAwICog
MTAyNCAqIDEwMjQpCi0gICAgLCBtX21pbmltdW1JbWFnZVNpemUoMTAwICogMTAyNCkKLSAgICAs
IG1fbmV4dEF2YWlsYWJsZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQgKyAx
KQotewotfQotCi1EaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFnZUNhY2hlOjp3cml0ZUl0ZW0oUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGl0ZW0pCi17Ci0gICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAh
Y3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKSkKLSAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNhY2hl
OjppbnZhbGlkRGlza0NhY2hlSWQ7Ci0KLSAgICAvLyBXZSBhcmUgYWxyZWFkeSBmdWxsLCBjYW5u
b3QgYWRkIGFueXRoaW5nIHVudGlsIHNvbWV0aGluZyBpcyByZW1vdmVkLgotICAgIGlmIChpc0Z1
bGwoKSkgewotICAgICAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogY291
bGQgbm90IHByb2Nlc3MgYW4gaXRlbSBiZWNhdXNlIHRoZSBjYWNoZSB3YXMgZnVsbCBhdCAoJWQp
LiBUaGUgXCJtYXhcIiBiZWluZyAoJWQpIiwgbV9zaXplLCBtX21heGltdW1DYWNoZVNpemUpOwot
ICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKLSAgICB9
Ci0KLSAgICAvLyBDcmVhdGUgYW4gZW50cnkuCi0gICAgRGlza0ltYWdlQ2FjaGVJZCBpZCA9IG5l
eHRBdmFpbGFibGVJZCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGl0ZW07
Ci0gICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OmNyZWF0ZShidWZmZXIuZ2V0KCksIGlkKTsKLSAgICBtX3RhYmxlLmFkZChpZCwg
ZW50cnkpOwotCi0gICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgcGF0aC4KLSAgICBTdHJp
bmcgcGF0aCA9IHRlbXBvcmFyeUZpbGUoKTsKLSAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNr
SW1hZ2VDYWNoZTogY3JlYXRpbmcgZW50cnkgKCVkKSBhdCAoJXMpIiwgaWQsIHBhdGgudXRmOCgp
LmRhdGEoKSk7Ci0gICAgaWYgKHBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBEaXNrSW1h
Z2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOwotCi0gICAgLy8gVGhlIGxpZmV0aW1lIG9mIHRo
ZSBFbnRyeSBpcyBoYW5kbGVkIG9uIHRoZSBXZWJUaHJlYWQuCi0gICAgLy8gQmVmb3JlIHdlIHNl
bmQgdG8gYSBkaXNwYXRjaCBxdWV1ZSB3ZSBuZWVkIHRvIHJlZiBzbwotICAgIC8vIHRoYXQgd2Ug
YXJlIHN1cmUgdGhlIG9iamVjdCBzdGlsbCBleGlzdHMuIFRoaXMgY2FsbAotICAgIC8vIGlzIGJh
bGFuY2VkIGluIHRoZSBXZWJUaHJlYWRSdW4gaW5zaWRlIG9mIEVudHJ5OjptYXAuCi0gICAgLy8g
b3IgdGhlIGVhcmx5IHJldHVybiBpbiB0aGlzIGRpc3BhdGNoLgotICAgIERpc2tJbWFnZUNhY2hl
OjpFbnRyeSogbG9jYWxFbnRyeUZvckJsb2NrID0gZW50cnkuZ2V0KCk7Ci0gICAgbG9jYWxFbnRy
eUZvckJsb2NrLT5yZWYoKTsKLQotICAgIC8vIE1hcCB0byBkaXNrIGFzeW5jaHJvbm91c2x5Lgot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVF
VUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAgICAgIC8vIFRoZSBjYWNoZSBiZWNhbWUg
ZnVsbCBzaW5jZSB0aGUgdGltZSB3ZSB3ZXJlIGFkZGVkIHRvIHRoZSBxdWV1ZS4gRG9uJ3QgbWFw
LgotICAgICAgICBpZiAoZGlza0ltYWdlQ2FjaGUoKS5pc0Z1bGwoKSkgewotICAgICAgICAgICAg
V2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICAgICAgbG9jYWxFbnRyeUZvckJsb2NrLT5jbGVh
ckRhdGFXaXRob3V0TWFwcGluZygpOwotICAgICAgICAgICAgICAgIGxvY2FsRW50cnlGb3JCbG9j
ay0+ZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgbG9jYWxFbnRyeUZvckJsb2NrLT5tYXAocGF0aCk7Ci0KLSAgICAgICAg
Ly8gVXBkYXRlIHRoZSBzaXplIG9uIGEgc3VjY2Vzc2Z1bCBtYXBwaW5nLgotICAgICAgICBpZiAo
bG9jYWxFbnRyeUZvckJsb2NrLT5pc01hcHBlZCgpKQotICAgICAgICAgICAgZGlza0ltYWdlQ2Fj
aGUoKS51cGRhdGVTaXplKGxvY2FsRW50cnlGb3JCbG9jay0+c2l6ZSgpKTsKLSAgICB9KTsKLQot
ICAgIHJldHVybiBpZDsKLX0KLQotdm9pZCBEaXNrSW1hZ2VDYWNoZTo6dXBkYXRlU2l6ZSh1bnNp
Z25lZCBkZWx0YSkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIG1fc2l6
ZSArPSBkZWx0YTsKLX0KLQotdm9pZCBEaXNrSW1hZ2VDYWNoZTo6cmVtb3ZlSXRlbShEaXNrSW1h
Z2VDYWNoZUlkIGlkKQotewotICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hl
OiByZW1vdmVJdGVtICglZCkiLCBpZCk7Ci0gICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRy
eT4gZW50cnkgPSBtX3RhYmxlLmdldChpZCk7Ci0gICAgbV90YWJsZS5yZW1vdmUoaWQpOwotICAg
IGlmICghZW50cnktPmlzTWFwcGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVNp
emUoLShlbnRyeS0+c2l6ZSgpKSk7Ci0KLSAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkgKmxvY2Fs
RW50cnlGb3JCbG9jayA9IGVudHJ5LmdldCgpOwotICAgIGxvY2FsRW50cnlGb3JCbG9jay0+cmVm
KCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAgICAgICAgbG9jYWxFbnRyeUZvckJs
b2NrLT51bm1hcCgpOwotICAgICAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPnJlbW92ZUZpbGUoKTsK
LSAgICAgICAgV2ViVGhyZWFkUnVuKF57IGxvY2FsRW50cnlGb3JCbG9jay0+ZGVyZWYoKTsgfSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQqIERpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRlbShEaXNrSW1h
Z2VDYWNoZUlkIGlkKQotewotICAgIEFTU0VSVChpZCk7Ci0KLSAgICBSZWZQdHI8RGlza0ltYWdl
Q2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0KGlkKTsKLSAgICBBU1NFUlQoZW50cnkt
PmlzTWFwcGVkKCkpOwotICAgIHJldHVybiBlbnRyeS0+ZGF0YSgpOwotfQotCi1ib29sIERpc2tJ
bWFnZUNhY2hlOjpjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgpCi17Ci0gICAgaWYgKCFtX2NhY2hl
RGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIG1fY2FjaGVE
aXJlY3RvcnkgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKTsKLSAgICBMT0coRGlza0ltYWdlQ2FjaGUs
ICJEaXNrSW1hZ2VDYWNoZTogQ3JlYXRlZCB0ZW1wb3JhcnkgZGlyZWN0b3J5ICglcykiLCBtX2Nh
Y2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5Lmlz
TnVsbCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IGNvdWxkIG5vdCBj
cmVhdGUgY2FjaGUgZGlyZWN0b3J5Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRDcmVhdGVEaXNrSW1hZ2VD
YWNoZURpcmVjdG9yeShtX2NhY2hlRGlyZWN0b3J5KTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1EaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFnZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQoKQotewot
ICAgIHJldHVybiBtX25leHRBdmFpbGFibGVJZCsrOwotfQotCi1TdHJpbmcgRGlza0ltYWdlQ2Fj
aGU6OnRlbXBvcmFyeURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKnRlbXBEaXNrQ2FjaGVE
aXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJEaXNrSW1hZ2VDYWNoZSIpOwot
ICAgIGlmICghdGVtcERpc2tDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgTE9HX0VSUk9SKCJEaXNr
SW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuIik7Ci0K
LSAgICByZXR1cm4gdGVtcERpc2tDYWNoZURpcmVjdG9yeTsKLX0KLQotU3RyaW5nIERpc2tJbWFn
ZUNhY2hlOjp0ZW1wb3JhcnlGaWxlKCkKLXsKLSAgICBOU1N0cmluZyAqdGVtcEZpbGUgPSBjcmVh
dGVUZW1wb3JhcnlGaWxlKG1fY2FjaGVEaXJlY3RvcnksIEAidG1wIik7Ci0gICAgaWYgKCF0ZW1w
RmlsZSkKLSAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0
ZSBhIHRlbXBvcmFyeSBmaWxlLiIpOwotCi0gICAgcmV0dXJuIHRlbXBGaWxlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkg
JiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlz
a0ltYWdlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDM0NmU3NTY4ZjBkMDJjM2E5ODQxYjFhODNlZmVhODcxNWYxOTBkNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlLmgK
QEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRGlza0ltYWdlQ2FjaGVfaAorI2RlZmluZSBEaXNrSW1hZ2VD
YWNoZV9oCisKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKworI2luY2x1ZGUgIkRpc2tJ
bWFnZUNhY2hlQ2xpZW50LmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgdW5zaWduZWQgRGlza0ltYWdlQ2FjaGVJZDsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBHbG9iYWwgZGlzayBpbWFnZSBjYWNoZSBvYmpl
Y3QuCitjbGFzcyBEaXNrSW1hZ2VDYWNoZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlz
a0ltYWdlQ2FjaGUpOworcHJpdmF0ZToKKworICAgIC8vIExpZmV0aW1lIG9mIHRoaXMgRW50cnkg
YW5kIHRoZSBTaGFyZWRCdWZmZXIgaXQgd3JhcHMgYXJlIG1hbmFnZWQgaW4gdGhlIG1haW4gdGhy
ZWFkLgorICAgIGNsYXNzIEVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnk+IHsKKyAgICBw
cml2YXRlOgorICAgICAgICBFbnRyeShTaGFyZWRCdWZmZXIqLCBEaXNrSW1hZ2VDYWNoZUlkKTsK
KworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGU6
OkVudHJ5PiBjcmVhdGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJbWFnZUNhY2hlSWQgaWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlza0ltYWdlQ2Fj
aGU6OkVudHJ5KGJ1ZmZlciwgaWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIH5FbnRyeSgpOwor
CisgICAgICAgIHZvaWQgbWFwKCk7CisgICAgICAgIHZvaWQgdW5tYXAoKTsKKyAgICAgICAgdm9p
ZCByZW1vdmVGaWxlKCk7CisgICAgICAgIHZvaWQgY2xlYXJEYXRhV2l0aG91dE1hcHBpbmcoKTsK
KworICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQor
ICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgICAg
IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX21hcHBpbmc7IH0KKyAgICAgICAgYm9vbCBp
c01hcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGluZyAhPSBudWxscHRyOyB9CisgICAgICAg
IHZvaWQgc2V0VGVtcG9yYXJ5RmlsZVBhdGgoY29uc3QgU3RyaW5nJik7CisKKyAgICAgICAgc3Rh
dGljIHZvaWQgbWFwVGhyZWFkU3RhcnQodm9pZCopOworICAgICAgICBzdGF0aWMgdm9pZCByZW1v
dmVGaWxlVGhyZWFkU3RhcnQodm9pZCopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBt
YXBJbnRlcm5hbCgpOworICAgICAgICB2b2lkIGNhbmNlbE1hcCgpOworCisjaWYgT1MoVU5JWCkK
KyAgICAgICAgaW50IHdyaXRlVG9GaWxlSW50ZXJuYWwoaW50IGZkKTsKKyNlbmRpZgorCisgICAg
ICAgIHZvaWQgZGlkRmFpbE1lbW9yeU1hcCgpOworICAgICAgICB2b2lkIGRpZE1hcE1lbW9yeSgp
OworICAgICAgICB2b2lkIGRpZFJlbW92ZUZpbGUoKTsKKworICAgICAgICBTaGFyZWRCdWZmZXIq
IG1fYnVmZmVyOworICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIG1faWQ7CisgICAgICAgIHVuc2ln
bmVkIG1fc2l6ZTsKKyAgICAgICAgdm9pZCogbV9tYXBwaW5nOworICAgICAgICBTdHJpbmcgbV9w
YXRoOworICAgIH07CisKK3B1YmxpYzoKKyAgICBEaXNrSW1hZ2VDYWNoZSgpOworICAgIGZyaWVu
ZCBEaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdlQ2FjaGUoKTsKKyAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8RGlza0ltYWdlQ2FjaGU+OworICAgIHN0YXRpYyBjb25zdCBEaXNrSW1hZ2VD
YWNoZUlkIGludmFsaWREaXNrQ2FjaGVJZCA9IDA7CisKKyAgICAvLyBXcml0ZSBvdXQgYW4gaXRl
bS4KKyAgICBEaXNrSW1hZ2VDYWNoZUlkIHdyaXRlSXRlbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pOworCisgICAgLy8gUmVtb3ZlIGl0ZW0uCisgICAgdm9pZCByZW1vdmVJdGVtKERpc2tJbWFn
ZUNhY2hlSWQpOworCisgICAgLy8gTWFwcGluZyBmb3IgYW4gaXRlbS4KKyAgICB2b2lkKiBkYXRh
Rm9ySXRlbShEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIC8vIFNldHVwIGEgY2xpZW50IGZvciBj
YWxsYmFja3MuCisgICAgdm9pZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxEaXNrSW1hZ2VDYWNoZUNs
aWVudD4gY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKKyAgICBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5hYmxlZChib29s
IGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQorCisgICAgdW5zaWduZWQgbWF4aW11
bUNhY2hlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bUNhY2hlU2l6ZTsgfQorICAgIHZv
aWQgc2V0TWF4aW11bUNhY2hlU2l6ZSh1bnNpZ25lZCBtYXhpbXVtKSB7IG1fbWF4aW11bUNhY2hl
U2l6ZSA9IG1heGltdW07IH0KKworICAgIHVuc2lnbmVkIG1pbmltdW1JbWFnZVNpemUoKSBjb25z
dCB7IHJldHVybiBtX21pbmltdW1JbWFnZVNpemU7IH0KKyAgICB2b2lkIHNldE1pbmltdW1JbWFn
ZVNpemUodW5zaWduZWQgbWluaW11bSkgeyBtX21pbmltdW1JbWFnZVNpemUgPSBtaW5pbXVtOyB9
CisKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9pZCBzZXRDYWNoZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgpOworI2VuZGlmCisgICAgY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVEaXJlY3Rvcnk7IH0KKworICAgIHVuc2lnbmVkIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIGlzRnVsbCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZSA+PSBtX21heGltdW1DYWNoZVNpemU7IH0KKworcHJpdmF0ZToKKyAgICB+RGlz
a0ltYWdlQ2FjaGUoKSB7IH0KKworICAgIGJvb2wgY3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKTsK
KyAgICBEaXNrSW1hZ2VDYWNoZUlkIG5leHRBdmFpbGFibGVJZCgpOworCisgICAgU3RyaW5nIHRl
bXBvcmFyeURpcmVjdG9yeSgpOworICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlKCk7CisKKyAgICB2
b2lkIHVwZGF0ZVNpemUodW5zaWduZWQgZGVsdGEpOworCisgICAgYm9vbCBtX2VuYWJsZWQ7Cisg
ICAgdW5zaWduZWQgbV9zaXplOworICAgIHVuc2lnbmVkIG1fbWF4aW11bUNhY2hlU2l6ZTsKKyAg
ICB1bnNpZ25lZCBtX21pbmltdW1JbWFnZVNpemU7CisgICAgRGlza0ltYWdlQ2FjaGVJZCBtX25l
eHRBdmFpbGFibGVJZDsKKyAgICBTdHJpbmcgbV9jYWNoZURpcmVjdG9yeTsKKworICAgIFJlZlB0
cjxEaXNrSW1hZ2VDYWNoZUNsaWVudD4gbV9jbGllbnQ7CisgICAgSGFzaE1hcDxEaXNrSW1hZ2VD
YWNoZUlkLCBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Pj4gbV90YWJsZTsKKworICAgIE11
dGV4IG1fbXV0ZXg7Cit9OworCisvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBkaXNr
IGltYWdlIGNhY2hlLgorRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQor
CisjZW5kaWYgLy8gRGlza0ltYWdlQ2FjaGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGlza0ltYWdlQ2FjaGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Rpc2tJbWFnZUNhY2hlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE3YTNhMGRhMTI0OGVmYmNjMGI4
Y2ZiNDMwMzE3OTFiNjU1NTM0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgRGlza0ltYWdlQ2FjaGVDbGllbnRfaAorI2RlZmluZSBEaXNrSW1hZ2VDYWNo
ZUNsaWVudF9oCisKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKworI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGlza0ltYWdlQ2FjaGVDbGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxEaXNrSW1hZ2VDYWNoZUNsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfkRp
c2tJbWFnZUNhY2hlQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURpc2tJ
bWFnZUNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSA9IDA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNI
RSkKKworI2VuZGlmIC8vIERpc2tJbWFnZUNhY2hlQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTeXN0ZW0uaAppbmRleCAzNGZlMGE0MzBmN2U2YTMzM2MyM2ZlMzAzNWNkOTllMTExZjk2
YWFmLi5hNDUzNTMyNjFjZTg1NDUxNGYxZWM2YzAxY2NhMjlhNmVhZjg2MjgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xNjYsNiArMTY2LDggQEAgaW5saW5lIGRvdWJs
ZSBpbnZhbGlkRmlsZVRpbWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigKIGlubGluZSBib29sIGlzVmFsaWRGaWxlVGltZShkb3VibGUgdGltZSkgeyBy
ZXR1cm4gc3RkOjppc2Zpbml0ZSh0aW1lKTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmls
ZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgorU3RyaW5n
IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHByZWZpeCk7CitTdHJpbmcg
Y3JlYXRlVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHN1YkRpcmVjdG9yeSwgY29uc3QgU3Ry
aW5nJiBwcmVmaXgpOwogU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJl
Zml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CiB2b2lkIGNsb3NlRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmlu
ZGV4IGNjOWI0ZmY4NTYyMjgwNDk2M2ZmMjQwOWJkY2VlNWQ2MzliZjAzMDkuLjNmYjhlZjgzNDJk
MDQ3OTc0YmFlMjY1NjM5ZDM0NTI1YWZjYzgzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L1VuaWNvZGUuaD4KIAogI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotI2luY2x1ZGUgIkRp
c2tJbWFnZUNhY2hlSU9TLmgiCisjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmls
ZVN5c3RlbUd0ay5jcHAKaW5kZXggMjdjNGFiMDQ1OGVkNzdiNDVlZWI2MzBiOWY2ODIxMTMxMWJl
YTAxNi4uZTMwNTYzZjVmOGNmM2ZjODY4YWIzYmQ4NDVjYmJkZDRjOGM1MzQ3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApAQCAtMjY5LDYgKzI2
OSwyOSBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKK1N0cmluZyBj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7CisgICAgR093
blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0Zjgo
KS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgR093blB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGly
KCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFk
b3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CisKKyAgICBpZiAo
IWdfZmlsZV9tYWtlX2RpcmVjdG9yeV93aXRoX3BhcmVudHMoZmlsZS5nZXQoKSwgMCwgMCkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1w
UGF0aC5nZXQoKSk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmlu
ZyYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyYgcHJlZml4KQoreworICAgIEdPd25QdHI8Z2NoYXI+
IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdPd25QdHI8
Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUobG9jYXRpb24udXRmOCgpLmRhdGEoKSwg
ZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkpKTsKKworICAgIEdSZWZQdHI8
R0ZpbGVPdXRwdXRTdHJlYW0+IG91dHB1dFN0cmVhbSA9IGdfZmlsZV9jcmVhdGUoZmlsZS5nZXQo
KSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKKyAgICBpZiAoIW91dHB1dFN0cmVhbSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQ
YXRoLmdldCgpKTsKK30KKwogU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
cHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBHT3duUHRyPGdjaGFy
PiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwg
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDk3MDY2ODlkYmY1OWIxMTk5YTVlZGZkY2JmYzg0NWE4MmJjZGZlNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hl
UE9TSVguY3BwCkBAIC0wLDAgKzEsMzU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBDb2xs
YWJvcmEgTHRkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlz
a0ltYWdlQ2FjaGUuaCIKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBPUyhVTklY
KQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8
ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cisj
aW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rpc2tJ
bWFnZUNhY2hlJiBkaXNrSW1hZ2VDYWNoZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PERpc2tJbWFnZUNhY2hlPiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK0Rpc2tJbWFn
ZUNhY2hlOjpFbnRyeTo6RW50cnkoU2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJbWFnZUNhY2hl
SWQgaWQpCisgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9z
aXplKDApCisgICAgLCBtX21hcHBpbmcobnVsbHB0cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgbV9idWZmZXItPnJlZigpOworICAg
IExPRyhEaXNrSW1hZ2VDYWNoZSwgIk5ldyBCVUZGRVIgRW50cnk6IGlkPSV1IiwgbV9pZCk7Cit9
CisKK0Rpc2tJbWFnZUNhY2hlOjpFbnRyeTo6fkVudHJ5KCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVCghbV9idWZmZXIpOworICAgIEFTU0VSVCghbV9tYXBwaW5n
KTsKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEZXN0cm95aW5nIEVudHJ5OiBpZD0ldSIsIG1f
aWQpOworfQorCitib29sIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwSW50ZXJuYWwoKQorewor
ICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgQVNTRVJUKCFtX21hcHBpbmcpOworCisgICAgbV9z
aXplID0gbV9idWZmZXItPnNpemUoKTsKKworICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIk1hcHBp
bmcgRW50cnk6IGlkPSV1IiwgbV9pZCk7CisKKyAgICAvLyBPcGVuIHRoZSBmaWxlIGZvciByZWFk
aW5nIGFuZCB3cml0aW5nLgorICAgIGludCBmZCA9IG9wZW4obV9wYXRoLnV0ZjgoKS5kYXRhKCks
IE9fQ1JFQVQgfCBPX1JEV1IgfCBPX1RSVU5DLCBzdGF0aWNfY2FzdDxtb2RlX3Q+KDA2MDApKTsK
KyAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFdyaXRl
IHRoZSBkYXRhIHRvIHRoZSBmaWxlLgorICAgIGlmICh3cml0ZVRvRmlsZUludGVybmFsKGZkKSA9
PSAtMSkgeworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFNlZWsgYmFjayB0byB0aGUg
YmVnaW5uaW5nLgorICAgIGlmIChsc2VlayhmZCwgMCwgU0VFS19TRVQpID09IC0xKSB7CisgICAg
ICAgIGNsb3NlKGZkKTsKKyAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gUGVyZm9ybSBtZW1vcnkgbWFwcGluZyBmb3IgcmVh
ZGluZy4KKyAgICAvLyBOT1RFOiBUaGlzIG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlIG9wZW4o
KSBhYm92ZSwgd2hpY2ggbXVzdCBhbHNvIG9wZW4gZm9yIHJlYWRpbmcuCisgICAgbV9tYXBwaW5n
ID0gbW1hcChudWxscHRyLCBtX3NpemUsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgZmQsIDApOwor
ICAgIGNsb3NlKGZkKTsKKyAgICBpZiAobV9tYXBwaW5nID09IE1BUF9GQUlMRUQpIHsKKyAgICAg
ICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IG1hcHBpbmcgZmFpbGVkICgl
ZCk6ICglcykiLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgbV9tYXBwaW5nID0g
bnVsbHB0cjsKKyAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjpkaWRGYWlsTWVtb3J5TWFwKCkKK3sKKyAgICBtX2J1ZmZlci0+ZmFpbGVkTWVtb3J5
TWFwKCk7CisgICAgbV9idWZmZXItPmRlcmVmKCk7CisgICAgbV9idWZmZXIgPSAwOworICAgIHRo
aXMtPmRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRNYXBNZW1v
cnkoKQoreworICAgIG1fYnVmZmVyLT5tYXJrQXNNZW1vcnlNYXBwZWQoKTsKKyAgICBtX2J1ZmZl
ci0+ZGVyZWYoKTsKKyAgICBtX2J1ZmZlciA9IDA7CisgICAgdGhpcy0+ZGVyZWYoKTsKK30KKwor
dm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcCgpCit7CisgICAgQVNTRVJUKCFtX3BhdGgu
aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9idWZmZXIpOworICAgIEFTU0VSVCghbV9tYXBwaW5n
KTsKKworICAgIGJvb2wgZmlsZU1hcHBlZCA9IG1hcEludGVybmFsKCk7CisgICAgaWYgKCFmaWxl
TWFwcGVkKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZCgmRGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjpkaWRGYWlsTWVtb3J5TWFwLCB0aGlzKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlk
TWFwTWVtb3J5LCB0aGlzKSk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp1bm1h
cCgpCit7CisgICAgaWYgKCFtX21hcHBpbmcpIHsKKyAgICAgICAgQVNTRVJUKCFtX3NpemUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiVW5NYXBw
aW5nIEVudHJ5OiBpZD0ldSIsIG1faWQpOworCisgICAgaWYgKG11bm1hcChtX21hcHBpbmcsIG1f
c2l6ZSkgPT0gLTEpCisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5v
dCBtdW5tYXAgYSBtZW1vcnkgbWFwcGVkIGZpbGUgd2l0aCBpZCAoJWQpIiwgbV9pZCk7CisKKyAg
ICBtX21hcHBpbmcgPSBudWxscHRyOworICAgIG1fc2l6ZSA9IDA7Cit9CisKK3ZvaWQgRGlza0lt
YWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVGaWxlKCkKK3sKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7
CisgICAgQVNTRVJUKCFtX3NpemUpOworCisgICAgaWYgKCFkZWxldGVGaWxlKG1fcGF0aCkpCisg
ICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBkZWxldGUgbWVtb3J5
IG1hcHBlZCBmaWxlICglcykiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgRGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpjbGVhckRhdGFXaXRob3V0TWFwcGluZygpCit7CisgICAgQVNT
RVJUKCFtX21hcHBpbmcpOworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgbV9idWZmZXItPmRl
cmVmKCk7CisgICAgbV9idWZmZXIgPSAwOworICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkNsZWFy
IGRhdGEgd2l0aG91dCBtYXBwaW5nIGZvciBFbnRyeTogaWQ9JXUiLCBtX2lkKTsKK30KKworaW50
IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6d3JpdGVUb0ZpbGVJbnRlcm5hbChpbnQgZmQpCit7Cisg
ICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBpbnQgdG90YWxCeXRlc1dyaXR0ZW4gPSAwOworCisg
ICAgY29uc3QgY2hhciogc2VnbWVudCA9IG51bGxwdHI7CisgICAgdW5zaWduZWQgcG9zaXRpb24g
PSAwOworICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBtX2J1ZmZlci0+Z2V0U29tZURhdGEo
c2VnbWVudCwgcG9zaXRpb24pKSB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShm
ZCwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHNlZ21lbnQpLCBsZW5ndGgpOworICAgICAgICBp
ZiAoYnl0ZXNXcml0dGVuID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAg
IHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgcG9zaXRpb24gKz0g
bGVuZ3RoOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjsKK30KKwordm9p
ZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNldFRlbXBvcmFyeUZpbGVQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBtX3BhdGggPSBwYXRoOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6Y2FuY2VsTWFwKCkKK3sKKyAgICBjbGVhckRhdGFXaXRob3V0TWFwcGluZygpOwor
ICAgIHRoaXMtPmRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBU
aHJlYWRTdGFydCh2b2lkKiBlbnRyeVB0cikKK3sKKyAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkq
IGVudHJ5ID0gc3RhdGljX2Nhc3Q8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Kj4oZW50cnlQdHIpOwor
CisgICAgaWYgKGRpc2tJbWFnZUNhY2hlKCkuaXNGdWxsKCkpIHsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChiaW5kKCZEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNhbmNlbE1hcCwgZW50cnkpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVudHJ5LT5tYXAoKTsKKworICAgIC8vIFVw
ZGF0ZSB0aGUgc2l6ZSBvbiBhIHN1Y2Nlc3NmdWwgbWFwcGluZy4KKyAgICBpZiAoZW50cnktPmlz
TWFwcGVkKCkpCisgICAgICAgIGRpc2tJbWFnZUNhY2hlKCkudXBkYXRlU2l6ZShlbnRyeS0+c2l6
ZSgpKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZFJlbW92ZUZpbGUoKQor
eworICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVG
aWxlVGhyZWFkU3RhcnQodm9pZCogZW50cnlQdHIpCit7CisgICAgRGlza0ltYWdlQ2FjaGU6OkVu
dHJ5KiBlbnRyeSA9IHN0YXRpY19jYXN0PERpc2tJbWFnZUNhY2hlOjpFbnRyeSo+KGVudHJ5UHRy
KTsKKworICAgIGVudHJ5LT51bm1hcCgpOworICAgIGVudHJ5LT5yZW1vdmVGaWxlKCk7CisKKyAg
ICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3Zl
RmlsZSwgZW50cnkpKTsKK30KKworRGlza0ltYWdlQ2FjaGU6OkRpc2tJbWFnZUNhY2hlKCkKKyAg
ICA6IG1fZW5hYmxlZChmYWxzZSkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9tYXhpbXVtQ2Fj
aGVTaXplKDEwMCAqIDEwMjQgKiAxMDI0KQorICAgICwgbV9taW5pbXVtSW1hZ2VTaXplKDEwMCAq
IDEwMjQpCisgICAgLCBtX25leHRBdmFpbGFibGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERp
c2tDYWNoZUlkICsgMSkKK3sKK30KKworRGlza0ltYWdlQ2FjaGVJZCBEaXNrSW1hZ2VDYWNoZTo6
d3JpdGVJdGVtKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBpdGVtKQoreworICAgIGlmICghaXNF
bmFibGVkKCkgfHwgIWNyZWF0ZURpcmVjdG9yeUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybiBE
aXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOworCisgICAgLy8gV2UgYXJlIGFscmVh
ZHkgZnVsbCwgY2Fubm90IGFkZCBhbnl0aGluZyB1bnRpbCBzb21ldGhpbmcgaXMgcmVtb3ZlZC4K
KyAgICBpZiAoaXNGdWxsKCkpIHsKKyAgICAgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0lt
YWdlQ2FjaGU6IGNvdWxkIG5vdCBwcm9jZXNzIGFuIGl0ZW0gYmVjYXVzZSB0aGUgY2FjaGUgd2Fz
IGZ1bGwgYXQgKCVkKS4gVGhlIFwibWF4XCIgYmVpbmcgKCVkKSIsIG1fc2l6ZSwgbV9tYXhpbXVt
Q2FjaGVTaXplKTsKKyAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0Nh
Y2hlSWQ7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGFuIGVudHJ5LgorICAgIERpc2tJbWFnZUNh
Y2hlSWQgaWQgPSBuZXh0QXZhaWxhYmxlSWQoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBpdGVtOworICAgIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGVudHJ5ID0g
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVhdGUoYnVmZmVyLmdldCgpLCBpZCk7CisgICAgbV90
YWJsZS5hZGQoaWQsIGVudHJ5KTsKKworICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIHBh
dGguCisgICAgU3RyaW5nIHBhdGggPSB0ZW1wb3JhcnlGaWxlKCk7CisgICAgTE9HKERpc2tJbWFn
ZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IGNyZWF0aW5nIGVudHJ5ICglZCkgYXQgKCVzKSIsIGlk
LCBwYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKworICAgIGVudHJ5LT5z
ZXRUZW1wb3JhcnlGaWxlUGF0aChwYXRoKTsKKworICAgIC8vIFRoZSBsaWZldGltZSBvZiB0aGUg
RW50cnkgaXMgaGFuZGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuIEJlZm9yZSB3ZSBzdGFydCBhIHRo
cmVhZCB3ZSBuZWVkIHRvCisgICAgLy8gcmVmIHNvIHRoYXQgd2UgYXJlIHN1cmUgdGhlIG9iamVj
dCBzdGlsbCBleGlzdHMuIFRoaXMgY2FsbCBpcyBiYWxhbmNlZCBpbiB0aGUgY2FsbGJhY2tzCisg
ICAgLy8gY2FsbGVkIGZyb20gRW50cnk6Om1hcC4KKyAgICBlbnRyeS0+cmVmKCk7CisKKyAgICAv
LyBNYXAgdG8gZGlzayBhc3luY2hyb25vdXNseS4KKyAgICBjcmVhdGVUaHJlYWQoRGlza0ltYWdl
Q2FjaGU6OkVudHJ5OjptYXBUaHJlYWRTdGFydCwgZW50cnkuZ2V0KCksICJXZWJDb3JlOiBEaXNr
SW1hZ2VDYWNoZTo6bWFwIik7CisKKyAgICByZXR1cm4gaWQ7Cit9CisKK3ZvaWQgRGlza0ltYWdl
Q2FjaGU6OnVwZGF0ZVNpemUodW5zaWduZWQgZGVsdGEpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9j
ayhtX211dGV4KTsKKyAgICBtX3NpemUgKz0gZGVsdGE7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2Fj
aGU6OnJlbW92ZUl0ZW0oRGlza0ltYWdlQ2FjaGVJZCBpZCkKK3sKKyAgICBMT0coRGlza0ltYWdl
Q2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogcmVtb3ZlSXRlbSAoJWQpIiwgaWQpOworICAgIFJlZlB0
cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGVudHJ5ID0gbV90YWJsZS5nZXQoaWQpOworICAgIG1f
dGFibGUucmVtb3ZlKGlkKTsKKyAgICBpZiAoIWVudHJ5LT5pc01hcHBlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1cGRhdGVTaXplKC0oZW50cnktPnNpemUoKSkpOworCisgICAgZW50cnkt
PnJlZigpOworCisgICAgY3JlYXRlVGhyZWFkKERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6cmVtb3Zl
RmlsZVRocmVhZFN0YXJ0LCBlbnRyeS5nZXQoKSwgIldlYkNvcmU6IERpc2tJbWFnZUNhY2hlOjpy
ZW1vdmVJdGVtIik7Cit9CisKK3ZvaWQqIERpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRlbShEaXNr
SW1hZ2VDYWNoZUlkIGlkKQoreworICAgIEFTU0VSVChpZCAmJiBpZCAhPSBEaXNrSW1hZ2VDYWNo
ZTo6aW52YWxpZERpc2tDYWNoZUlkKTsKKworICAgIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50
cnk+IGVudHJ5ID0gbV90YWJsZS5nZXQoaWQpOworICAgIEFTU0VSVChlbnRyeS0+aXNNYXBwZWQo
KSk7CisgICAgcmV0dXJuIGVudHJ5LT5kYXRhKCk7Cit9CisKK2Jvb2wgRGlza0ltYWdlQ2FjaGU6
OmNyZWF0ZURpcmVjdG9yeUlmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fY2FjaGVEaXJlY3Rvcnku
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgbV9jYWNoZURpcmVjdG9yeSA9
IHRlbXBvcmFyeURpcmVjdG9yeSgpOworICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFn
ZUNhY2hlOiBDcmVhdGVkIHRlbXBvcmFyeSBkaXJlY3RvcnkgKCVzKSIsIG1fY2FjaGVEaXJlY3Rv
cnkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1fY2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogY291bGQgbm90IGNyZWF0ZSBjYWNo
ZSBkaXJlY3RvcnkiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZENyZWF0ZURpc2tJbWFnZUNhY2hlRGlyZWN0
b3J5KG1fY2FjaGVEaXJlY3RvcnkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0Rpc2tJbWFn
ZUNhY2hlSWQgRGlza0ltYWdlQ2FjaGU6Om5leHRBdmFpbGFibGVJZCgpCit7CisgICAgcmV0dXJu
IG1fbmV4dEF2YWlsYWJsZUlkKys7Cit9CisKK1N0cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9y
YXJ5RGlyZWN0b3J5KCkKK3sKKyAgICBTdHJpbmcgdGVtcERpc2tDYWNoZURpcmVjdG9yeSA9IGNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgiRGlza0ltYWdlQ2FjaGUiKTsKKyAgICBpZiAodGVtcERp
c2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdl
Q2FjaGU6IENvdWxkIG5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIpOworCisgICAg
cmV0dXJuIHRlbXBEaXNrQ2FjaGVEaXJlY3Rvcnk7Cit9CisKK1N0cmluZyBEaXNrSW1hZ2VDYWNo
ZTo6dGVtcG9yYXJ5RmlsZSgpCit7CisgICAgU3RyaW5nIHRlbXBGaWxlID0gY3JlYXRlVGVtcG9y
YXJ5RmlsZShtX2NhY2hlRGlyZWN0b3J5LCAidG1wIik7CisgICAgaWYgKHRlbXBGaWxlLmlzRW1w
dHkoKSkKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0
ZSBhIHRlbXBvcmFyeSBmaWxlLiIpOworCisgICAgcmV0dXJuIHRlbXBGaWxlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkg
JiYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwCmluZGV4IGNmN2Q3NWY5MjQ1N2M4ZjllODI1OTYwZGIwZGFhMWI4ZmRlN2M4
MmIuLjdkZTM2MzUwZjUzNzcwMDQ4NWU5MjMxMWUzZjcyYzFiMGY0ZjQ1ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjkx
LDYgKzI5MSwyMyBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMp
CitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcHJlZml4KQor
eworICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKKyAgICBjb25zdCBjaGFyKiB0bXBEaXIgPSBn
ZXRlbnYoIlRNUERJUiIpOworCisgICAgaWYgKCF0bXBEaXIpCisgICAgICAgIHRtcERpciA9ICIv
dG1wIjsKKworICAgIGlmIChzbnByaW50ZihidWZmZXIsIFBBVEhfTUFYLCAiJXMvJXNYWFhYWFgi
LCB0bXBEaXIsIHByZWZpeC51dGY4KCkuZGF0YSgpKSA+PSBQQVRIX01BWCkKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCisgICAgaWYgKG1rZHRlbXAoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKK30KKwog
U3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAppbmRleCBm
YjU1NzM4MjY1ZDM5YmQyNjVlOGNjNDVlOTE2NjQyYjY0NTI0NGQ2Li4zMzJjOTVhMjcxODczYjM1
ZDQ2ZTc1NjkyYTMyN2Q4NDkyZmMyYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAorI2luY2x1ZGUgIkRpc2tJ
bWFnZUNhY2hlLmgiCiAjaW5jbHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCiAjaW5jbHVkZSA8bGli
c291cC9zb3VwLmg+CiAKQEAgLTI2LDYgKzI3LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1ZmZlcikKICAgICA6
IG1fc2l6ZSgwKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICwgbV9pc01lbW9y
eU1hcHBlZChmYWxzZSkKKyAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6
aW52YWxpZERpc2tDYWNoZUlkKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjayhu
dWxscHRyKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEobnVsbHB0cikK
KyNlbmRpZgogewogICAgIEFTU0VSVChzb3VwQnVmZmVyKTsKICAgICBtX3NvdXBCdWZmZXIuc2V0
KHNvdXBCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmgKaW5kZXggZTkzNTk1NDhiOTgz
MWQwYWMzMTc2ZjI3YmQ4ZTBlMmNlNjBjNzI4Mi4uMTlmMTU5ZjIwODA5MGQzNDlhYzM3NWY3MGE4
ZDYwZWE1NzI4YjRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQogCi0j
aW1wb3J0IDxXZWJDb3JlL0Rpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0Rpc2tJbWFnZUNhY2hlQ2xpZW50Lmg+CiAKIGNsYXNzIFdlYkRpc2tJbWFnZUNhY2hlQ2xp
ZW50IEZJTkFMIDogcHVibGljIFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlQ2xpZW50IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNCBi
L1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAppbmRleCA5MDY3YzFmYWI4
Mjg1ZjMxNDkzM2E2Y2Y4NWUwNTQ5NDlmMGM1OGNhLi5lNzFlZTMzYWVmOWM2MTIxNTI4NjE3MDZk
NDgyYmMyYjU3MzA1MDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0
RmVhdHVyZXMubTQKKysrIGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00
CkBAIC0xMTksNiArMTE5LDcgQEAgJHNyY2Rpci9Ub29scy9ndGsvZ2VuZXJhdGUtZmVhdHVyZS1k
ZWZpbmVzLWZpbGVzICRDT05GSUdVUkFCTEVfRkVBVFVSRV9ERUZJTkVTIFwKICAgICBFTkFCTEVf
REVUQUlMU19FTEVNRU5UPTEgXAogICAgIEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT049MCBcCiAg
ICAgRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQ9MCBcCisgICAgRU5BQkxFX0RJU0tfSU1BR0VfQ0FD
SEU9MCBcCiAgICAgRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SPTAgXAogICAgIEVOQUJM
RV9ET1dOTE9BRF9BVFRSSUJVVEU9MCBcCiAgICAgRU5BQkxFX0ZJTFRFUlM9MSBcCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmM4MDZkYzZiOWRj
YzAzNTgwNDg0ZTJkYTdkMGZiM2VlNDNiZDU0Zi4uNjBlYTFhMDYwMWU5YTBiYzE5ZmRlZGIzMmFk
MDc1NWJjOGY0YjZiYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTExLTExICBHdXN0YXZvIE5vcm9uaGEgU2ls
dmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAgICAgICBNYWtlIERpc2tJ
bWFnZUNhY2hlIGNyb3NzLXBsYXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjQxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbTogYWRk
IG5ldyBmZWF0dXJlIGZsYWcgZm9yIGRpc2sgaW1hZ2UgY2FjaGUuCisKIDIwMTQtMDEtMTMgIEFk
cmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBBZGQgY2FzdCBpbiBjYWxsIHRvIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIgaW4gTWluaUJy
b3dzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCAzNmQ2OTcw
NDIxY2Q5MTkzNDk2M2UwNTUwMDJiODgxZWRlNTYyMGJkLi40ZmQ0OTZlYzNiNTZmZmU4M2IzNWI2
NzY0Yjc2YzQzMmJlNTdkN2U5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwv
RmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtCkBAIC03NCw2ICs3NCw3IEBAIG15ICgKICAgICAkZGV0YWlsc0VsZW1lbnRTdXBwb3J0LAog
ICAgICRkZXZpY2VPcmllbnRhdGlvblN1cHBvcnQsCiAgICAgJGRpcmVjdG9yeVVwbG9hZFN1cHBv
cnQsCisgICAgJGRpc2tJbWFnZUNhY2hlLAogICAgICRkb200RXZlbnRzQ29uc3RydWN0b3IsCiAg
ICAgJGRvd25sb2FkQXR0cmlidXRlU3VwcG9ydCwKICAgICAkZmlsdGVyc1N1cHBvcnQsCkBAIC0y
NTIsNiArMjUzLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJkaXJlY3Rv
cnktdXBsb2FkIiwgZGVzYyA9PiAiVG9nZ2xlIERpcmVjdG9yeSBVcGxvYWQgc3VwcG9ydCIsCiAg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEIiwgZGVmYXVsdCA9PiAwLCB2
YWx1ZSA9PiBcJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJk
aXNrLWltYWdlLWNhY2hlIiwgZGVzYyA9PiAiVG9nZ2xlIERpc2sgSW1hZ2UgQ2FjaGUgc3VwcG9y
dCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ESVNLX0lNQUdFX0NBQ0hFIiwgZGVmYXVsdCA9
PiAwLCB2YWx1ZSA9PiBcJGRpc2tJbWFnZUNhY2hlIH0sCisKICAgICB7IG9wdGlvbiA9PiAiZG9t
NC1ldmVudHMtY29uc3RydWN0b3IiLCBkZXNjID0+ICJFeHBvc2UgRE9NNCBFdmVudHMgY29uc3Ry
dWN0b3JzIiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9S
IiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNFZmwoKSksIHZh
bHVlID0+IFwkZG9tNEV2ZW50c0NvbnN0cnVjdG9yIH0sCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCA2NjNjZDQ5NTE4NGZiZjUzOTgwYjA0NmRkODk1YWFhMzRiOWFi
OTVkLi5jZGM0NDM1ZTRiOTU1YWNlMGYwMTE5OTAzYWE5ZmQ1OGNiYTc2ZmQxIDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTEg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgor
CisgICAgICAgIE1ha2UgRGlza0ltYWdlQ2FjaGUgY3Jvc3MtcGxhdGZvcm0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDE2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9T
ZXR1cFdlYktpdEZlYXR1cmVzLm00OiBuZXcgZmVhdHVyZSBmbGFnIGZvciBESVNLX0lNQUdFX0NB
Q0hFLgorCiAyMDE0LTAxLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgTkVXUyBhbmQgVmVyc2lvbnMubTQg
Zm9yIDIuMy40IHJlbGVhc2UuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>