<?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>190838</bug_id>
          
          <creation_ts>2018-10-23 12:24:05 -0700</creation_ts>
          <short_desc>Cleanup: MIMETypeRegistry functions</short_desc>
          <delta_ts>2018-10-24 11:44:43 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>190454</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1471639</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-23 12:24:05 -0700</bug_when>
    <thetext>Some of the functions in MIMETypeRegistry return HashSet&lt;Sting&gt;. For these functions, we need to do the following:

1. Use NeverDestroyed&lt;&gt; instead of allocating raw pointers with the new operator.
2. Use std::initializer_list to initialize the static HashSet&lt;String&gt; when the list of supported mime types is static list of strings.
3. Use makeNeverDestroyed() to initialize the static HashSet&lt;String&gt; when the list of supported mime types is retrieved from a system call.
3. Replace the functions MIMETypeRegistry::getSupported...() with MIMETypeRegistry::supported...(). The functions whose names are MIMETypeRegistry::supported...() will be responsible of filling and validating their local NeverDestroyed&lt;&gt; and returning the underlaying HashSets.
4. As a preparation for landing 190454, the term UTI will be replaced by ImageSourceType. A new SPI will be added and adding UTI in its name does not seem  appealing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471651</commentid>
    <comment_count>1</comment_count>
      <attachid>352990</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-23 12:53:36 -0700</bug_when>
    <thetext>Created attachment 352990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471688</commentid>
    <comment_count>2</comment_count>
      <attachid>353000</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-23 16:28:21 -0700</bug_when>
    <thetext>Created attachment 353000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471726</commentid>
    <comment_count>3</comment_count>
      <attachid>353011</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-23 18:08:26 -0700</bug_when>
    <thetext>Created attachment 353011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471838</commentid>
    <comment_count>4</comment_count>
      <attachid>353011</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-24 08:35:40 -0700</bug_when>
    <thetext>Comment on attachment 353011
Patch

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

&gt; Source/WebCore/platform/MIMETypeRegistry.h:112
&gt; +    WEBCORE_EXPORT const static HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&amp; supportedImageMIMETypes();
&gt; +    WEBCORE_EXPORT static HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&amp; supportedNonImageMIMETypes();
&gt; +    WEBCORE_EXPORT const static HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&amp; supportedMediaMIMETypes();
&gt; +    WEBCORE_EXPORT const static HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&amp; pdfMIMETypes();
&gt; +    WEBCORE_EXPORT const static HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&amp; unsupportedTextMIMETypes();

I think static const HashSet&lt;&gt; reads better.

Is there a reason supportedNonImageMIMETypes() doesn&apos;t return a const HashSet&lt;&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471861</commentid>
    <comment_count>5</comment_count>
      <attachid>353037</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-24 09:56:39 -0700</bug_when>
    <thetext>Created attachment 353037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471885</commentid>
    <comment_count>6</comment_count>
      <attachid>353011</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-10-24 11:21:59 -0700</bug_when>
    <thetext>Comment on attachment 353011
Patch

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

&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.h:112
&gt;&gt; +    WEBCORE_EXPORT const static HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&amp; unsupportedTextMIMETypes();
&gt; 
&gt; I think static const HashSet&lt;&gt; reads better.
&gt; 
&gt; Is there a reason supportedNonImageMIMETypes() doesn&apos;t return a const HashSet&lt;&gt;?

Yes.

[WebView _unregisterViewClassAndRepresentationClassForMIMEType]
[WebView _registerViewClass]
[WebView registerViewClass]

need to change it by adding and removing mime types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471898</commentid>
    <comment_count>7</comment_count>
      <attachid>353037</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-24 11:42:31 -0700</bug_when>
    <thetext>Comment on attachment 353037
Patch

Clearing flags on attachment: 353037

Committed r237393: &lt;https://trac.webkit.org/changeset/237393&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471899</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-24 11:42:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471900</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-24 11:44:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/45527724&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352990</attachid>
            <date>2018-10-23 12:53:36 -0700</date>
            <delta_ts>2018-10-23 16:28:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190838-20181023125336.patch</filename>
            <type>text/plain</type>
            <size>43968</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE4LTEwLTIzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cDog
TUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vZGVybml6ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGxp
c3RzIGluIE1JTUVUeXBlUmVnaXN0cnkuIE1ha2UgdGhlCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0
IHJldHVybiB0aGVzZSBsaXN0IGJlIHNlbGYtY29udGFpbmVkLiBVc2UgTmV2ZXJEZXN0cm95PD4g
dG8KKyAgICAgICAgYWxsb2NhdGUgdGhlIGxvY2FsIHN0YXRpYyB2YXJpYWJsZS4gVXNlIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdCgpIGFuZAorICAgICAgICBtYWtlTmV2ZXJEZXN0cm95ZWQoKSB0byBp
bml0aWFsaXplIE5ldmVyRGVzdHJveTw+IHZhcmlhYmxlcyBvbmx5IG9uY2UuCisKKyAgICAgICAg
c3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcyB3aWxsIGJlIGRlbGV0ZWQgYW5kIGFsbCB0
aGUgY2FsbHMgdG8gaXQgCisgICAgICAgIHdpbGwgYmUgcmVwbGFjZWQgYnkgc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMgYmVjYXVzZSB0aGV5IGFyZSBpZGVudGljYWwuCisKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZl
RmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMpOiBUaGlzIGZ1bmN0aW9uCisg
ICAgICAgIGlzIGNhbGxlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzKCkuIFNvIGl0CisgICAgICAgIHNob3VsZCBub3QgaGF2ZSBhIGRpcmVjdCBjYWxs
IHRvIGl0LiBJbnN0ZWFkLCBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcworICAgICAgICBpcyBw
YXNzZWQgdG8gaXQuCisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6c3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpwZGZNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNv
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEph
dmFTY3JpcHRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVk
SmF2YVNjcmlwdE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplUERGTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVT
dXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpp
bml0aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aW5pdGlhbGl6ZVVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VN
SU1FVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6OmdldFN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3lz
dGVtUHJldmlld01JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckNHOjplbmNvZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVk
RGVmYXVsdEltYWdlU291cmNlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0SW1h
Z2VTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmFsbG93ZWRJbWFnZVVUSXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VVVEkpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZSk6CisKIDIwMTgtMTAtMjIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXVtJRkNdIEFkZCBqdXN0aWZ5IHRleHQtYWxpZ24gc3VwcG9ydC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOSArOTUsOCBAQCBSZWZQdHI8
QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHVy
bCwgKmRhdGEpOwogfQogCi12b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2
ZU1JTUVUeXBlcygpCit2b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1J
TUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5
cGVzKQogewotICAgIGF1dG8mIG1pbWVUeXBlcyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBv
cnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7CiAgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IGFyY2hp
dmVNSU1FVHlwZXMoKS5rZXlzKCkpCiAgICAgICAgIG1pbWVUeXBlcy5hZGQobWltZVR5cGUpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9y
eS5oCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEFy
Y2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlw
ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25z
dCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCk7CisgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCShyZXZp
c2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU1LDIx
MCArNTUsMjI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlN
RVR5cGVzOwotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
KiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZzsK
LXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9y
dGVkSmF2YVNjcmlwdE1JTUVUeXBlczsKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7Ci1zdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzOwotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
KiBwZGZNSU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4qIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKLQotc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcygpCiB7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcyA9IG5ldyBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLSAgICBzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPjsKLQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8U3RyaW5nPiB7CiAjaWYgVVNFKENHKQotICAgIC8vIFRoaXMgcmVwcmVzZW50
cyB0aGUgc3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2UgVVRJcyBmb3Igd2hpY2ggQ29yZVNlcnZpY2Vz
IGhhcyBhIGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBlLiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIGFs
bG93ZWRJbWFnZVVUSXMoKS4KLSAgICBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIGFsbG93ZWRJ
bWFnZU1JTUVUeXBlc1tdID0geyAiaW1hZ2UvdGlmZiJfcywgImltYWdlL2dpZiJfcywgImltYWdl
L2pwZWciX3MsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MsICJpbWFnZS9qcDIiX3MsICJp
bWFnZS9wbmciX3MsICJpbWFnZS9ibXAiX3MgfTsKLSAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDog
YWxsb3dlZEltYWdlTUlNRVR5cGVzKSB7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
LT5hZGQobWltZVR5cGUpOwotICAgICAgICBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVz
LT5hZGQobWltZVR5cGUpOwotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICBmb3IgKGF1dG8m
IHV0aSA6IGFsbG93ZWRJbWFnZVVUSXMoKSkgewotICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUodXRpKTsKLSAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29u
dGFpbnMobWltZVR5cGUpKTsKLSAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZVJlc291
cmNlTUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZm9yIChhdXRvJiBtaW1lIDogKnN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzKQotICAgICAgICBBU1NFUlRfVU5VU0VEKG1pbWUsIGFsbG93ZWRJbWFnZVVUSXMo
KS5jb250YWlucyhVVElGcm9tTUlNRVR5cGUobWltZSkpKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAg
ICAvLyBGYXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRo
ZXIuCi0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmFkZCgiaW1hZ2UveC1pY29uIik7Ci0g
ICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS94LWljb24iKTsK
KyAgICAgICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBzdWJzZXQgb2YgYWxsb3dlZCBpbWFnZSBV
VElzIGZvciB3aGljaCBDb3JlU2VydmljZXMgaGFzIGEgY29ycmVzcG9uZGluZyBNSU1FIHR5cGUu
CisgICAgICAgICJpbWFnZS90aWZmIl9zLAorICAgICAgICAiaW1hZ2UvZ2lmIl9zLAorICAgICAg
ICAiaW1hZ2UvanBlZyJfcywKKyAgICAgICAgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywK
KyAgICAgICAgImltYWdlL2pwMiJfcywKKyAgICAgICAgImltYWdlL3BuZyJfcywKKyAgICAgICAg
ImltYWdlL2JtcCJfcywKIAotICAgIC8vICBXZSBvbmx5IGdldCBvbmUgTUlNRSB0eXBlIHBlciBV
VEksIGhlbmNlIG91ciBuZWVkIHRvIGFkZCB0aGVzZSBtYW51YWxseQotICAgIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzLT5hZGQoImltYWdlL3BqcGVnIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNv
dXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS9wanBlZyIpOworICAgICAgICAiaW1hZ2UveC1pY29u
Il9zLCAvLyBGYXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBl
aXRoZXIuCisgICAgICAgICJpbWFnZS9wanBlZyJfcywgLy8gIFdlIG9ubHkgZ2V0IG9uZSBNSU1F
IHR5cGUgcGVyIFVUSSwgaGVuY2Ugb3VyIG5lZWQgdG8gYWRkIHRoZXNlIG1hbnVhbGx5CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIEFkZCBtYWxmb3JtZWQgaW1hZ2UgbWltZXR5
cGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBNYWlsIGFuZCB0byBoYW5kbGUgbWFsZm9ybWVkIG1p
bWV0eXBlcyBmcm9tIHRoZSBuZXQKLSAgICAvLyBUaGVzZSB3ZXJlIHJlbW92ZWQgZm9yIDxyZGFy
Oi8vcHJvYmxlbS82NTY0NTM4PiBSZS1lbmFibGUgVVRJIGNvZGUgaW4gV2ViQ29yZSBub3cgdGhh
dCBNb2JpbGVDb3JlU2VydmljZXMgZXhpc3RzCi0gICAgLy8gQnV0IE1haWwgcmVsaWVzIG9uIGF0
IGxlYXN0IGltYWdlL3RpZiByZXBvcnRlZCBhcyBiZWluZyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBp
bWFnZS90aWZmKS4KLSAgICAvLyBUaGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gTWFpbCBhZGRyZXNz
ZXM6Ci0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc4Nzk1MTA+IE1haWwgc2hvdWxkIHVzZSBzdGFu
ZGFyZCBpbWFnZSBtaW1ldHlwZXMKLSAgICAvLyBhbmQgd2UgZml4IHNuaWZmaW5nIHNvIHRoYXQg
aXQgY29ycmVjdHMgaXRlbXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4gaW1hZ2UvanBlZy4KLSAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3QgbWFsZm9ybWVkTUlNRVR5cGVzW10gPSB7CiAgICAgICAg
IC8vIEpQRUcgKGltYWdlL2pwZWcpCi0gICAgICAgICJpbWFnZS9qcGciLCAiaW1hZ2UvanBfIiwg
ImltYWdlL2pwZV8iLCAiYXBwbGljYXRpb24vanBnIiwgImFwcGxpY2F0aW9uL3gtanBnIiwgImlt
YWdlL3BpcGVnIiwKLSAgICAgICAgImltYWdlL3ZuZC5zd2l0ZnZpZXctanBlZyIsICJpbWFnZS94
LXhiaXRtYXAiLAorICAgICAgICAiaW1hZ2UvanBnIl9zLAorICAgICAgICAiaW1hZ2UvanBfIl9z
LAorICAgICAgICAiaW1hZ2UvanBlXyJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL2pwZyJfcywK
KyAgICAgICAgImFwcGxpY2F0aW9uL3gtanBnIl9zLAorICAgICAgICAiaW1hZ2UvcGlwZWciX3Ms
CisgICAgICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciX3MsCisgICAgICAgICJpbWFnZS94
LXhiaXRtYXAiX3MsCisKICAgICAgICAgLy8gR0lGIChpbWFnZS9naWYpCi0gICAgICAgICJpbWFn
ZS9naV8iLAorICAgICAgICAiaW1hZ2UvZ2lfIl9zLAorCiAgICAgICAgIC8vIFBORyAoaW1hZ2Uv
cG5nKQotICAgICAgICAiYXBwbGljYXRpb24vcG5nIiwgImFwcGxpY2F0aW9uL3gtcG5nIiwKKyAg
ICAgICAgImFwcGxpY2F0aW9uL3BuZyJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3gtcG5nIl9z
LAorCiAgICAgICAgIC8vIFRJRkYgKGltYWdlL3RpZmYpCi0gICAgICAgICJpbWFnZS94LXRpZiIs
ICJpbWFnZS90aWYiLCAiaW1hZ2UveC10aWZmIiwgImFwcGxpY2F0aW9uL3RpZiIsICJhcHBsaWNh
dGlvbi94LXRpZiIsICJhcHBsaWNhdGlvbi90aWZmIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL3gt
dGlmZiIsCisgICAgICAgICJpbWFnZS94LXRpZiJfcywKKyAgICAgICAgImltYWdlL3RpZiJfcywK
KyAgICAgICAgImltYWdlL3gtdGlmZiJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3RpZiJfcywK
KyAgICAgICAgImFwcGxpY2F0aW9uL3gtdGlmIl9zLAorICAgICAgICAiYXBwbGljYXRpb24vdGlm
ZiJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3gtdGlmZiJfcywKKwogICAgICAgICAvLyBCTVAg
KGltYWdlL2JtcCwgaW1hZ2UveC1iaXRtYXApCi0gICAgICAgICJpbWFnZS94LWJtcCIsICJpbWFn
ZS94LXdpbi1iaXRtYXAiLCAiaW1hZ2UveC13aW5kb3dzLWJtcCIsICJpbWFnZS9tcy1ibXAiLCAi
aW1hZ2UveC1tcy1ibXAiLAotICAgICAgICAiYXBwbGljYXRpb24vYm1wIiwgImFwcGxpY2F0aW9u
L3gtYm1wIiwgImFwcGxpY2F0aW9uL3gtd2luLWJpdG1hcCIsCi0gICAgfTsKLSAgICBmb3IgKGF1
dG8mIHR5cGUgOiBtYWxmb3JtZWRNSU1FVHlwZXMpIHsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMtPmFkZCh0eXBlKTsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVU
eXBlcy0+YWRkKHR5cGUpOwotICAgIH0KKyAgICAgICAgImltYWdlL3gtYm1wIl9zLAorICAgICAg
ICAiaW1hZ2UveC13aW4tYml0bWFwIl9zLAorICAgICAgICAiaW1hZ2UveC13aW5kb3dzLWJtcCJf
cywKKyAgICAgICAgImltYWdlL21zLWJtcCJfcywKKyAgICAgICAgImltYWdlL3gtbXMtYm1wIl9z
LAorICAgICAgICAiYXBwbGljYXRpb24vYm1wIl9zLAorICAgICAgICAiYXBwbGljYXRpb24veC1i
bXAiX3MsCisgICAgICAgICJhcHBsaWNhdGlvbi94LXdpbi1iaXRtYXAiX3MsCiAjZW5kaWYKLQog
I2Vsc2UKLSAgICAvLyBhc3N1bWUgdGhhdCBhbGwgaW1wbGVtZW50YXRpb25zIGF0IGxlYXN0IHN1
cHBvcnQgdGhlIGZvbGxvd2luZyBzdGFuZGFyZAotICAgIC8vIGltYWdlIHR5cGVzOgotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0gewotICAgICAgICAiaW1hZ2UvanBlZyIs
Ci0gICAgICAgICJpbWFnZS9wbmciLAotICAgICAgICAiaW1hZ2UvZ2lmIiwKLSAgICAgICAgImlt
YWdlL2JtcCIsCi0gICAgICAgICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCAgICAvLyBpY28K
LSAgICAgICAgImltYWdlL3gtaWNvbiIsICAgIC8vIGljbwotICAgICAgICAiaW1hZ2UveC14Yml0
bWFwIiAgLy8geGJtCi0gICAgfTsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykgewotICAg
ICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGUpOwotICAgICAgICBzdXBwb3J0
ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQodHlwZSk7Ci0gICAgfQotCisgICAgICAgIC8v
IGFzc3VtZSB0aGF0IGFsbCBpbXBsZW1lbnRhdGlvbnMgYXQgbGVhc3Qgc3VwcG9ydCB0aGUgZm9s
bG93aW5nIHN0YW5kYXJkCisgICAgICAgIC8vIGltYWdlIHR5cGVzOgorICAgICAgICAiaW1hZ2Uv
anBlZyJfcywKKyAgICAgICAgImltYWdlL3BuZyJfcywKKyAgICAgICAgImltYWdlL2dpZiJfcywK
KyAgICAgICAgImltYWdlL2JtcCJfcywKKyAgICAgICAgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNv
biJfcywgLy8gaWNvCisgICAgICAgICJpbWFnZS94LWljb24iX3MsIC8vIGljbworICAgICAgICAi
aW1hZ2UveC14Yml0bWFwIl9zLCAvLyB4Ym0KICNpZiBVU0UoV0VCUCkKLSAgICBzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS93ZWJwIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNv
dXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS93ZWJwIik7CisgICAgICAgICJpbWFnZS93ZWJwIl9z
LAogI2VuZGlmCisjZW5kaWYKKyAgICB9OwogCi0jZW5kaWYgLy8gVVNFKENHKQorI2lmIFVTRShD
RykKKyNpZm5kZWYgTkRFQlVHCisgICAgLy8gRXNudXJlIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
KCkgaXMgaW4gc3luYyB3aXRoIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuCisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CisgICAgICAgIGZvciAoYXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogc3VwcG9y
dGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMoKSkgeworICAgICAgICAgICAgYXV0byBtaW1lVHlw
ZSA9IE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGltYWdlU291cmNlVHlwZSk7CisgICAgICAg
ICAgICBBU1NFUlRfSU1QTElFUyghbWltZVR5cGUuaXNFbXB0eSgpLCBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcy5nZXQoKS5jb250YWlucyhtaW1lVHlwZSkpOworICAgICAgICB9CisgICAgfSk7Cisj
ZW5kaWYKKyNlbmRpZgorICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKIH0KIAot
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmco
KQorc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCkKIHsKLSAgICBzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+OwotCi0jaWYgVVNFKENHKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiBzdXBwb3J0ZWRUeXBlcyA9IGFkb3B0Q0YoQ0dJbWFnZURl
c3RpbmF0aW9uQ29weVR5cGVJZGVudGlmaWVycygpKTsKLSAgICBDRkluZGV4IGNvdW50ID0gQ0ZB
cnJheUdldENvdW50KHN1cHBvcnRlZFR5cGVzLmdldCgpKTsKLSAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIHN1cHBvcnRlZFR5cGUg
PSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1
cHBvcnRlZFR5cGVzLmdldCgpLCBpKSk7Ci0gICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVU
eXBlRm9ySW1hZ2VTb3VyY2VUeXBlKHN1cHBvcnRlZFR5cGUpOwotICAgICAgICBpZiAoIW1pbWVU
eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5j
b2RpbmctPmFkZChtaW1lVHlwZSk7Ci0gICAgfQorICAgIHN0YXRpYyBjb25zdCBhdXRvIHN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3VwcG9ydGVkVHlwZXMgPSBhZG9wdENGKENH
SW1hZ2VEZXN0aW5hdGlvbkNvcHlUeXBlSWRlbnRpZmllcnMoKSk7CisgICAgICAgIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
Rm9yRW5jb2Rpbmc7CisgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3Vw
cG9ydGVkVHlwZXMuZ2V0KCkpOworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CisgICAgICAgICAgICBDRlN0cmluZ1JlZiBzdXBwb3J0ZWRUeXBlID0gcmVpbnRl
cnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdXBwb3J0ZWRU
eXBlcy5nZXQoKSwgaSkpOworICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVG
b3JJbWFnZVNvdXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7CisgICAgICAgICAgICBpZiAoIW1pbWVU
eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0Zv
ckVuY29kaW5nLmFkZChtaW1lVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmc7CisgICAgfSgpKTsKICNlbHNlCi0gICAgLy8g
RklYTUU6IEFkZCBXaW5kb3dzIHN1cHBvcnQgZm9yIGFsbCB0aGUgc3VwcG9ydGVkIFVUSSdzIHdo
ZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3Vu
ZC4KLSAgICAvLyBGb3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBKUEVHIGFuZCBHSUYuICBTZWUg
PHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9y
RW5jb2RpbmctPmFkZCgiaW1hZ2UvcG5nIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNG
b3JFbmNvZGluZy0+YWRkKCJpbWFnZS9qcGVnIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9naWYiKTsKLSNlbmRpZgorICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyA9c3RkOjppbml0aWFsaXplcl9saXN0PFN0
cmluZz4geworI2lmIFVTRShDRykKKyAgICAgICAgLy8gRklYTUU6IEFkZCBXaW5kb3dzIHN1cHBv
cnQgZm9yIGFsbCB0aGUgc3VwcG9ydGVkIFVUSSdzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9t
IE1JTUVUeXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KKyAgICAgICAgLy8gRm9yIG5vdywg
b25seSBzdXBwb3J0IFBORywgSlBFRyBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUy
ODY+LgorICAgICAgICAiaW1hZ2UvcG5nIl9zLAorICAgICAgICAiaW1hZ2UvanBlZyJfcywKKyAg
ICAgICAgImltYWdlL2dpZiJfcywKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL3BuZyIpOwotICAgIHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvanBlZyIpOwotICAgIHN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvdGlmZiIpOwotICAgIHN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvYm1wIik7Ci0gICAg
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9pY28iKTsKKyAg
ICAgICAgImltYWdlL3BuZyJfcywKKyAgICAgICAgImltYWdlL2pwZWciX3MsCisgICAgICAgICJp
bWFnZS90aWZmIl9zLAorICAgICAgICAiaW1hZ2UvYm1wIl9zLAorICAgICAgICAiaW1hZ2UvaWNv
Il9zLAogI2VsaWYgVVNFKENBSVJPKQotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5j
b2RpbmctPmFkZCgiaW1hZ2UvcG5nIik7CisgICAgICAgICJpbWFnZS9wbmciX3MsCiAjZW5kaWYK
LX0KLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMo
KQotewotICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3Njcmlw
dGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IHR5cGVzW10gPSB7Ci0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQiLAotICAgICAgICAidGV4
dC9lY21hc2NyaXB0IiwKLSAgICAgICAgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLAotICAgICAg
ICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LWphdmFz
Y3JpcHQiLAotICAgICAgICAiYXBwbGljYXRpb24veC1lY21hc2NyaXB0IiwKLSAgICAgICAgInRl
eHQvamF2YXNjcmlwdDEuMCIsCi0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjEiLAotICAgICAg
ICAidGV4dC9qYXZhc2NyaXB0MS4yIiwKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyIsCi0g
ICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjQiLAotICAgICAgICAidGV4dC9qYXZhc2NyaXB0MS41
IiwKLSAgICAgICAgInRleHQvanNjcmlwdCIsCi0gICAgICAgICJ0ZXh0L2xpdmVzY3JpcHQiLAot
ICAgICAgICAidGV4dC94LWphdmFzY3JpcHQiLAotICAgICAgICAidGV4dC94LWVjbWFzY3JpcHQi
CiAgICAgfTsKLQotICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0gICAgZm9yIChhdXRvKiB0eXBl
IDogdHlwZXMpCi0gICAgICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMtPmFkZCh0eXBl
KTsKKyNlbmRpZgorICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5n
OwogfQogCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplUERGTUlNRVR5cGVzKCkKK3N0YXRpYyBjb25z
dCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkSmF2
YVNjcmlwdE1JTUVUeXBlcygpCiB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsK
LSAgICAgICAgImFwcGxpY2F0aW9uL3BkZiIsCi0gICAgICAgICJ0ZXh0L3BkZiIKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4+IHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
U3RyaW5nPiB7CisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL3NjcmlwdGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCisgICAgICAgICJ0ZXh0L2ph
dmFzY3JpcHQiX3MsCisgICAgICAgICJ0ZXh0L2VjbWFzY3JpcHQiX3MsCisgICAgICAgICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0Il9zLAorICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCJf
cywKKyAgICAgICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcywKKyAgICAgICAgImFwcGxp
Y2F0aW9uL3gtZWNtYXNjcmlwdCJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMCJfcywK
KyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMSJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlw
dDEuMiJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyJfcywKKyAgICAgICAgInRleHQv
amF2YXNjcmlwdDEuNCJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNSJfcywKKyAgICAg
ICAgInRleHQvanNjcmlwdCJfcywKKyAgICAgICAgInRleHQvbGl2ZXNjcmlwdCJfcywKKyAgICAg
ICAgInRleHQveC1qYXZhc2NyaXB0Il9zLAorICAgICAgICAidGV4dC94LWVjbWFzY3JpcHQiX3Ms
CiAgICAgfTsKLQotICAgIHBkZk1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPjsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAg
ICAgcGRmTUlNRVR5cGVzLT5hZGQodHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZXM7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFn
ZU1pbWVUeXBlcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7
Ci0gICAgICAgICJ0ZXh0L2h0bWwiLAotICAgICAgICAidGV4dC94bWwiLAotICAgICAgICAidGV4
dC94c2wiLAotICAgICAgICAidGV4dC9wbGFpbiIsCi0gICAgICAgICJ0ZXh0LyIsCi0gICAgICAg
ICJhcHBsaWNhdGlvbi94bWwiLAotICAgICAgICAiYXBwbGljYXRpb24veGh0bWwreG1sIiwKK0hh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5
OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpCit7CisgICAgc3RhdGljIGF1dG8gc3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBzdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICAgICAgICAg
ICJ0ZXh0L2h0bWwiX3MsCisgICAgICAgICAgICAidGV4dC94bWwiX3MsCisgICAgICAgICAgICAi
dGV4dC94c2wiX3MsCisgICAgICAgICAgICAidGV4dC9wbGFpbiJfcywKKyAgICAgICAgICAgICJ0
ZXh0LyJfcywKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi94bWwiX3MsCisgICAgICAgICAgICAi
YXBwbGljYXRpb24veGh0bWwreG1sIl9zLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAg
ICAgICAiYXBwbGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwiLAotICAgICAgICAiYXBwbGljYXRp
b24vcnNzK3htbCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi9hdG9tK3htbCIsCisgICAgICAgICAg
ICAiYXBwbGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwiX3MsCisgICAgICAgICAgICAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcywKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi9hdG9tK3htbCJfcywK
ICNlbmRpZgotICAgICAgICAiYXBwbGljYXRpb24vanNvbiIsCi0gICAgICAgICJpbWFnZS9zdmcr
eG1sIiwKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIl9zLAorICAgICAgICAgICAgImlt
YWdlL3N2Zyt4bWwiX3MsCiAjaWYgRU5BQkxFKEZUUERJUikKLSAgICAgICAgImFwcGxpY2F0aW9u
L3gtZnRwLWRpcmVjdG9yeSIsCisgICAgICAgICAgICAiYXBwbGljYXRpb24veC1mdHAtZGlyZWN0
b3J5Il9zLAogI2VuZGlmCi0gICAgICAgICJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIgorICAg
ICAgICAgICAgIm11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiX3MsCiAgICAgICAgIC8vIE5vdGU6
IEFkZGluZyBhIG5ldyB0eXBlIGhlcmUgd2lsbCBwcm9iYWJseSByZW5kZXIgaXQgYXMgSFRNTC4K
ICAgICAgICAgLy8gVGhpcyBjYW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5l
cmFiaWxpdGllcy4KLSAgICB9OworICAgICAgICB9OworICAgICAgICBzdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcy5hZGQoc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcygpLmJlZ2luKCksIHN1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKS5lbmQoKSk7CisjaWYgRU5BQkxFKFdFQl9BUkNI
SVZFKSB8fCBFTkFCTEUoTUhUTUwpCisgICAgICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktu
b3duQXJjaGl2ZU1JTUVUeXBlcyhzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyk7CisjZW5kaWYK
KyAgICAgICAgcmV0dXJuIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOworICAgIH0oKSk7Cisg
ICAgcmV0dXJuIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOworfQogCi0gICAgaWYgKCFzdXBw
b3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSmF2
YVNjcmlwdE1JTUVUeXBlcygpOworY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgYXV0byBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworI2lmIEVOQUJMRShWSURFTykK
KyAgICAgICAgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKHN1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7
CisgICAgfSgpKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7Cit9CiAKLSAg
ICBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiB7ICpzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzIH07Ci0g
ICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIHN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzLT5hZGQodHlwZSk7CitzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIHBkZk1JTUVUeXBlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBwZGZNSU1F
VHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CisgICAgICAgICJhcHBsaWNh
dGlvbi9wZGYiX3MsCisgICAgICAgICJ0ZXh0L3BkZiJfcywKKyAgICB9OworICAgIHJldHVybiBw
ZGZNSU1FVHlwZXM7Cit9CiAKLSNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRN
TCkKLSAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoKTsK
K2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlw
ZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gdW5z
dXBwb3J0ZWRUZXh0TUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewor
ICAgICAgICAidGV4dC9jYWxlbmRhciJfcywKKyAgICAgICAgInRleHQveC1jYWxlbmRhciJfcywK
KyAgICAgICAgInRleHQveC12Y2FsZW5kYXIiX3MsCisgICAgICAgICJ0ZXh0L3ZjYWxlbmRhciJf
cywKKyAgICAgICAgInRleHQvdmNhcmQiX3MsCisgICAgICAgICJ0ZXh0L3gtdmNhcmQiX3MsCisg
ICAgICAgICJ0ZXh0L2RpcmVjdG9yeSJfcywKKyAgICAgICAgInRleHQvbGRpZiJfcywKKyAgICAg
ICAgInRleHQvcWlmIl9zLAorICAgICAgICAidGV4dC94LXFpZiJfcywKKyAgICAgICAgInRleHQv
eC1jc3YiX3MsCisgICAgICAgICJ0ZXh0L3gtdmNmIl9zLAorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgICAgICAidGV4dC9ydGYiX3MsCisjZWxzZQorICAgICAgICAidGV4dC92bmQuc3Vu
LmoybWUuYXBwLWRlc2NyaXB0b3IiX3MsCiAjZW5kaWYKKyAgICB9OworICAgIHJldHVybiB1bnN1
cHBvcnRlZFRleHRNSU1FVHlwZXM7CiB9CiAKIHN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiog
dHlwZXNGb3JDb21tb25FeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCkBAIC0zOTIs
NDEgKzQxMCw2IEBAIFZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGkKICAg
ICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkTWVkaWFN
SU1FVHlwZXMoKQotewotICAgIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwotI2lmIEVOQUJMRShWSURFTykKLSAg
ICBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVkVHlwZXMoKnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
KTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsKLSAg
ICAgICAgInRleHQvY2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtY2FsZW5kYXIiX3MsCi0g
ICAgICAgICJ0ZXh0L3gtdmNhbGVuZGFyIl9zLAotICAgICAgICAidGV4dC92Y2FsZW5kYXIiX3Ms
Ci0gICAgICAgICJ0ZXh0L3ZjYXJkIl9zLAotICAgICAgICAidGV4dC94LXZjYXJkIl9zLAotICAg
ICAgICAidGV4dC9kaXJlY3RvcnkiX3MsCi0gICAgICAgICJ0ZXh0L2xkaWYiX3MsCi0gICAgICAg
ICJ0ZXh0L3FpZiJfcywKLSAgICAgICAgInRleHQveC1xaWYiX3MsCi0gICAgICAgICJ0ZXh0L3gt
Y3N2Il9zLAotICAgICAgICAidGV4dC94LXZjZiJfcywKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICAgICAgInRleHQvcnRmIl9zLAotI2Vsc2UKLSAgICAgICAgInRleHQvdm5kLnN1bi5q
Mm1lLmFwcC1kZXNjcmlwdG9yIl9zLAotI2VuZGlmCi0gICAgfTsKLQotICAgIHVuc3VwcG9ydGVk
VGV4dE1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPjsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgdW5zdXBwb3J0ZWRU
ZXh0TUlNRVR5cGVzLT5hZGQodHlwZSk7Ci19Ci0KIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3Mg
PSBwYXRoLnJldmVyc2VGaW5kKCcuJyk7CkBAIC00NDMsOSArNDI2LDcgQEAgYm9vbCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTQogewogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICBy
ZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1F
VHlwZShtaW1lVHlwZSkpOworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNv
bnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkpOwogfQogCiBib29sIE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKQEAgLTQ2MSwyNCArNDQyLDEzIEBAIGJvb2wgTUlNRVR5cGVSZWdpc3Ry
eTo6aXNTdXBwb3J0ZWRJbWFnZVYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKLXsKLSAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKQotICAg
ICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3Vw
cG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVU
eXBlKG1pbWVUeXBlKSk7Ci19Ci0KIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZykKLSAgICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5j
b2RpbmcoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+
Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0Zv
ckVuY29kaW5nKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CkBAIC00OTQsOSArNDY0LDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEph
dmFTYwogICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7CiAgICAgfQogCi0gICAgaWYgKCFzdXBw
b3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkTm9u
SW1hZ2VNaW1lVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
cy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkU3R5bGVTaGVldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBA
IC01MzksMTggKzUwNywxNCBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9u
SW1hCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxp
emVTdXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcygpOwotICAgIHJldHVybiBzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRO
b25JbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAogYm9vbCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcykKLSAgICAgICAgaW5pdGlhbGl6ZVN1
cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5
cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5
cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkVGV4dFRyYWNrTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTU2
Miw5ICs1MjYsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0CiB7
CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplVW5zdXBw
b3J0ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
cy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiB1bnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNU
ZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTYyMiw5ICs1ODQsNyBAQCBi
b29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUoY29uCiB7CiAgICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghcGRmTUlNRVR5
cGVzKQotICAgICAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHBkZk1J
TUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBwZGZNSU1FVHlwZXMoKS5j
b250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQb3N0U2Ny
aXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTY1MSw0OSArNjExLDYgQEAg
Ym9vbCBNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoYwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKLXsKLSAgICBp
ZiAoIXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzOwot
fQotCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcygpCi17Ci0g
ICAgaWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFs
aXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZEltYWdl
UmVzb3VyY2VNSU1FVHlwZXM7Ci19Ci0KLUhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cygpCi17Ci0gICAgaWYgKCFzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcykKLSAgICAgICAgaW5p
dGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCk7Ci0gICAgcmV0dXJuICpzdXBwb3J0
ZWROb25JbWFnZU1JTUVUeXBlczsKLX0KLQotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzKCkKLXsKLSAgICBpZiAoIXN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKQotICAgICAgICBp
bml0aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRl
ZE1lZGlhTUlNRVR5cGVzOwotfQotCi0KLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKQotewot
ICAgIGlmICghcGRmTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7
Ci0gICAgcmV0dXJuICpwZGZNSU1FVHlwZXM7Ci19Ci0KLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXMoKQotewotICAgIGlmICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKQot
ICAgICAgICBpbml0aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJu
ICp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXM7Ci19Ci0KIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1J
TUVUeXBlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBkZWZh
dWx0TUlNRVR5cGUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIpKTsKQEAgLTcwMSw3ICs2MTgsNyBAQCBjb25zdCBTdHJpbmcmIGRlZmF1bHRNSU1FVHlw
ZSgpCiB9CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi1jb25zdCBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3lzdGVtUHJl
dmlld01JTUVUeXBlcygpCitjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcygpCiB7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+PiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0
PFN0cmluZz4gewogICAgICAgICAvLyBUaGUgb2ZmaWNpYWwgdHlwZTogaHR0cHM6Ly93d3cuaWFu
YS5vcmcvYXNzaWdubWVudHMvbWVkaWEtdHlwZXMvbW9kZWwvdm5kLnVzZHoremlwCkBAIC03MTcs
NyArNjM0LDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N5c3RlbVByZXZpZXdNSQogewog
ICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gZ2V0U3lzdGVtUHJldmlld01JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKKyAg
ICByZXR1cm4gc3lzdGVtUHJldmlld01JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0K
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5oCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCw2IEBAIHB1YmxpYzoKICAg
ICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxv
YWRlZCBhcyBhbiBpbWFnZSwgaW5jbHVkaW5nIFNWRyBhbmQgVmlkZW8gKHdoZXJlIHN1cHBvcnRl
ZCkuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZVZpZGVv
T3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIC8vIENoZWNrIHRv
IHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGFuIGlt
YWdlCi0gICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKLQogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJs
ZSBmb3IgYmVpbmcgZW5jb2RlZC4KICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApAQCAtMTA4LDE4ICsx
MDQsMTQgQEAgcHVibGljOgogICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBpcyBhZnRlciBtYW55IG90
aGVyIHRlc3RzIGFyZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAg
ICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNob3VsZCBub3QgaGF2ZSB0
aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZXMgb2YgdGhlc2UgZnVuY3Rpb25zLgogICAgIC8vIEZJ
WE1FOiBXb3VsZCBiZSBuaWNlIHRvIGZpbmQgYSB3YXkgdG8gYXZvaWQgZXhwb3NpbmcgdGhlc2Ug
c2V0cywgZXZlbiB3b3JzZSBleHBvc2luZyBub24tY29uc3QgcmVmZXJlbmNlcy4KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIGdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IGdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7Ci0gICAgY29uc3Qgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRTdXBwb3J0ZWRJbWFnZVJlc291
cmNlTUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRTdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2V0UERGTUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOwogCiAjaWYg
VVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2V0U3lzdGVtUHJldmlld01J
TUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3lzdGVtUHJldmlld01JTUVUeXBlcygpOwog
I2VuZGlmCiAKICAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNob3Vs
ZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNp
b24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2U6OmNy
ZWF0ZShJbWFnZU9ic2VydmUKIAogYm9vbCBJbWFnZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKLSAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZVJlc291cmNlTUlNRVR5cGUodHlwZSk7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSh0eXBlKTsKIH0gCiAKIGJvb2wgSW1hZ2U6OmlzUERGUmVz
b3VyY2UoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCShyZXZpc2lvbiAyMzczMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTks
NyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlCiAgICAgICAgIHJl
dHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICBjYXNlIGtDR0ltYWdlU3RhdHVz
SW5jb21wbGV0ZTogewotICAgICAgICBpZiAoIWlzQWxsb3dlZEltYWdlVVRJKHV0aSkpCisgICAg
ICAgIGlmICghaXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKHV0aSkpCiAgICAgICAgICAgICByZXR1
cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwogCiAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IGltYWdlMFByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJv
cGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlv
bnMoKS5nZXQoKSkpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdl
RGVjb2RlckNHOjplbmNvZGUKICAgICB9CiAKICAgICBjYXNlIGtDR0ltYWdlU3RhdHVzQ29tcGxl
dGU6Ci0gICAgICAgIGlmICghaXNBbGxvd2VkSW1hZ2VVVEkodXRpKSkKKyAgICAgICAgaWYgKCFp
c1N1cHBvcnRJbWFnZVNvdXJjZVR5cGUodXRpKSkKICAgICAgICAgICAgIHJldHVybiBFbmNvZGVk
RGF0YVN0YXR1czo6RXJyb3I7CiAKICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpD
b21wbGV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJl
Z2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9VVElSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTAgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaFNldDxTdHJpbmc+
JiBhbGxvd2VkSW1hZ2VVVElzKCkKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkRGVm
YXVsdEltYWdlU291cmNlVHlwZXMoKQogewogICAgIC8vIENHIGF0IGxlYXN0IHN1cHBvcnRzIHRo
ZSBmb2xsb3dpbmcgc3RhbmRhcmQgaW1hZ2UgdHlwZXM6Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8U3RyaW5nPj4gc19hbGxvd2VkSW1hZ2VVVElzID0gc3RkOjppbml0aWFsaXpl
cl9saXN0PFN0cmluZz4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmlu
Zz4+IHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9s
aXN0PFN0cmluZz4gewogICAgICAgICAiY29tLmNvbXB1c2VydmUuZ2lmIiwKICAgICAgICAgImNv
bS5taWNyb3NvZnQuYm1wIiwKICAgICAgICAgImNvbS5taWNyb3NvZnQuY3VyIiwKQEAgLTU0LDI1
ICs1NCwyNCBAQCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQogICAgIH07CiAK
ICNpZm5kZWYgTkRFQlVHCi0gICAgLy8gQnV0IG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0aGVtIGFy
ZSByZWFsbHkgc3VwcG9ydGVkLgotICAgIHN0YXRpYyBib29sIGNoZWNrZWQgPSBmYWxzZTsKLSAg
ICBpZiAoIWNoZWNrZWQpIHsKLSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3RlbUlt
YWdlVVRJcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7Ci0g
ICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VVVElzLmdl
dCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVVUSSA6IHNfYWxsb3dlZEltYWdlVVRJcy5n
ZXQoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcgPSBpbWFn
ZVVUSS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAgICAgQVNTRVJUKENGQXJyYXlDb250YWlu
c1ZhbHVlKHN5c3RlbUltYWdlVVRJcy5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgY291bnQpLCBzdHJp
bmcuZ2V0KCkpKTsKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCBDRyBzdXBwb3J0cyB0aGVtLgorICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10geworICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3lzdGVtSW1hZ2VTb3Vy
Y2VUeXBlcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlUeXBlSWRlbnRpZmllcnMoKSk7Cisg
ICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3lzdGVtSW1hZ2VTb3VyY2VU
eXBlcy5nZXQoKSk7CisgICAgICAgIGZvciAoYXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogc3VwcG9y
dGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMuZ2V0KCkpIHsKKyAgICAgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gaW1hZ2VTb3VyY2VUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7
CisgICAgICAgICAgICBBU1NFUlQoQ0ZBcnJheUNvbnRhaW5zVmFsdWUoc3lzdGVtSW1hZ2VTb3Vy
Y2VUeXBlcy5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgY291bnQpLCBzdHJpbmcuZ2V0KCkpKTsKICAg
ICAgICAgfQotICAgICAgICBjaGVja2VkID0gdHJ1ZTsKLSAgICB9CisgICAgfSk7CiAjZW5kaWYK
IAotICAgIHJldHVybiBzX2FsbG93ZWRJbWFnZVVUSXMuZ2V0KCk7CisgICAgcmV0dXJuIHN1cHBv
cnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzOwogfQogCi1ib29sIGlzQWxsb3dlZEltYWdlVVRJ
KGNvbnN0IFN0cmluZyYgaW1hZ2VVVEkpCitib29sIGlzU3VwcG9ydEltYWdlU291cmNlVHlwZShj
b25zdCBTdHJpbmcmIGltYWdlU291cmNlVHlwZSkKIHsKLSAgICByZXR1cm4gIWltYWdlVVRJLmlz
RW1wdHkoKSAmJiBhbGxvd2VkSW1hZ2VVVElzKCkuY29udGFpbnMoaW1hZ2VVVEkpOworICAgIHJl
dHVybiAhaW1hZ2VTb3VyY2VUeXBlLmlzRW1wdHkoKSAmJiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VT
b3VyY2VUeXBlcygpLmNvbnRhaW5zKGltYWdlU291cmNlVHlwZSk7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAko
cmV2aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
VVRJUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygpOwotYm9v
bCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcmKTsKK2NvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMoKTsKK2Jvb2wgaXNTdXBwb3J0SW1h
Z2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYpOwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQkocmV2aXNpb24gMjM3MzA4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRJCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXaHkgY2FuIHdlIGFzc2VydCB0
aGlzPyBJdCBkb2Vzbid0IHNlZW0gbGlrZSBpdCdzIGd1YXJhbnRlZWQuCi0gICAgQVNTRVJUKE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKHBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKSk7CisgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlw
ZSkpOwogCiAgICAgYXV0byB0eXBlcyA9IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpOwogICAgIGlm
IChwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMzczNjEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTEwLTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cDogTUlNRVR5cGVSZWdpc3RyeSBm
dW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSBpbml0V2l0aENvbmZp
Z3VyYXRpb246XSk6CisKIDIwMTgtMTAtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBbUFNPTl0gQWRkIHN1cHBvcnQgZm9yIGNyb3NzLXNpdGUgY2xpZW50LXNp
ZGUgcmVkaXJlY3RzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZp
ZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkocmV2
aXNpb24gMjM3MzA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooVwogCiAjaWYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQogICAgIGlmIChjb25maWd1cmF0aW9uLl9zeXN0ZW1QcmV2aWV3RW5hYmxl
ZCkgewotICAgICAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdp
c3RyeTo6Z2V0U3lzdGVtUHJldmlld01JTUVUeXBlcygpKQorICAgICAgICBmb3IgKGF1dG8mIG1p
bWVUeXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBl
cygpKQogICAgICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpbV0tTeXN0ZW1QcmV2aWV3
VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6bWltZVR5cGVdOwogICAgIH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MzM4KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTgtMTAtMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4K
KworICAgICAgICBDbGVhbnVwOiBNSU1FVHlwZVJlZ2lzdHJ5IGZ1bmN0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODM4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYk5TUGFzdGVi
b2FyZEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGVQcm9taXNl
ZFJURkRGcm9tQXJjaGl2ZTpjb250YWluc0ltYWdlOl0pOgorICAgICAgICBSZXBsYWNlIGlzU3Vw
cG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKCkgYnkgaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
KCkKKyAgICAgICAgYmVjYXVzZSB0aGV5IHdlcmUgaWRlbnRpY2FsLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlc10pOgorICAgICAgICAoK1tXZWJIVE1MUmVw
cmVzZW50YXRpb24gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2Vi
SFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSk6CisgICAgICAgICgr
W1dlYkhUTUxSZXByZXNlbnRhdGlvbiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXNdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX3VucmVnaXN0ZXJW
aWV3Q2xhc3NBbmRSZXByZXNlbnRhdGlvbkNsYXNzRm9yTUlNRVR5cGU6XSk6CisgICAgICAgICgr
W1dlYlZpZXcgX3JlZ2lzdGVyVmlld0NsYXNzOnJlcHJlc2VudGF0aW9uQ2xhc3M6Zm9yVVJMU2No
ZW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IHJlZ2lzdGVyVmlld0NsYXNzOnJlcHJlc2VudGF0
aW9uQ2xhc3M6Zm9yTUlNRVR5cGU6XSk6CisKIDIwMTgtMTAtMTggIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgU3dpdGNoIGZyb20gUExBVEZPUk0oSU9TKSB0
byBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHJldmlzaW9uIDIzNzMwOCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTMgKzIxNCwxMyBAQCAtICh2b2lkKV93ZWJfd3JpdGVQ
cm9taXNlZFJURkRGcm9tQXJjaGl2CiAgICAgaWYgKGNvbnRhaW5zSW1hZ2UgJiYgW3N1YnJlc291
cmNlcyBjb3VudF0gPiAwKSB7CiAgICAgICAgIFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSA9IFtz
dWJyZXNvdXJjZXMgb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgTlNTdHJpbmcgKnN1YnJlc291
cmNlTUlNRVR5cGUgPSBbc3VicmVzb3VyY2UgTUlNRVR5cGVdOwotICAgICAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoc3VicmVzb3VyY2VN
SU1FVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShz
dWJyZXNvdXJjZU1JTUVUeXBlKSkKKyAgICAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZShzdWJyZXNvdXJjZU1JTUVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHN1YnJlc291cmNlTUlNRVR5cGUpKQogICAg
ICAgICAgICAgcmVzb3VyY2UgPSBzdWJyZXNvdXJjZTsKICAgICB9CiAgICAgQVNTRVJUKHJlc291
cmNlICE9IG5pbCk7CiAgICAgCi0gICAgQVNTRVJUKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKFtyZXNvdXJjZSBNSU1F
VHlwZV0pIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUoW3Jl
c291cmNlIE1JTUVUeXBlXSkpOwotICAgIGlmICghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5
cGVdKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNv
dXJjZSBNSU1FVHlwZV0pKQorICAgIEFTU0VSVCghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoW3Jlc291cmNlIE1JTUVUeXBlXSkgfHwg
TUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShbcmVzb3VyY2UgTUlN
RVR5cGVdKSk7CisgICAgaWYgKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5cGVdKSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNvdXJjZSBNSU1FVHlwZV0pKQog
ICAgICAgICBbc2VsZiBfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50OltyZXNv
dXJjZSBfZmlsZVdyYXBwZXJSZXByZXNlbnRhdGlvbl1dOwogICAgIAogfQpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0JKHJldmlzaW9uIDIzNzMwOCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMjUg
KzEwNCwyNSBAQCArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiAKICsgKE5TQXJyYXkg
KilzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNT
dXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0YXRp
YyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0
cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1Jl
ZigpOwogICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKIH0KIAogKyAo
TlNBcnJheSAqKXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5TQXJy
YXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5n
cyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKS5sZWFr
UmVmKCk7CisgICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5
cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMg
PSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6
OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gc3RhdGlj
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljVW5zdXBwb3J0ZWRUZXh0
TUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBOU0FycmF5ICpz
dGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVU
eXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKS5sZWFrUmVmKCk7CiAgICAg
cmV0dXJuIHN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjM3MzA4KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDIwLDcgKzM0MjAsNyBAQCArICh2b2lkKV91bnJlZ2lzdGVyVmlld0NsYXNzQW5k
UmVwcmVzZW50CiAgICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBtYWludGFpbiBNSU1FVHlw
ZSByZWdpc3RyYXRpb25zICh3aGljaCBjYW4gYmUgZHluYW1pY2FsbHkgY2hhbmdlZCkKICAgICAv
LyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcg
dGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJv
YmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBp
cyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCi0gICAgTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5yZW1vdmUoTUlNRVR5cGUpOworICAgIE1J
TUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkucmVtb3ZlKE1JTUVU
eXBlKTsKIH0KIAogKyAodm9pZClfcmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNzKXZpZXdDbGFzcyBy
ZXByZXNlbnRhdGlvbkNsYXNzOihDbGFzcylyZXByZXNlbnRhdGlvbkNsYXNzIGZvclVSTFNjaGVt
ZTooTlNTdHJpbmcgKilVUkxTY2hlbWUKQEAgLTM0MzIsNyArMzQzMiw3IEBAICsgKHZvaWQpX3Jl
Z2lzdGVyVmlld0NsYXNzOihDbGFzcyl2aWV3Q2wKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1F
VHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0
ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0
dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVy
ZSByb2J1c3RuZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1MVmlldyBj
bGFzc10pCi0gICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCkuYWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogICAgIAogICAgIC8vIFRoaXMg
aXMgdXNlZCB0byBtYWtlIF9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSBmYXN0ZXIu
CiAgICAgLy8gV2l0aG91dCB0aGlzIHNldCwgd2UnZCBoYXZlIHRvIGNyZWF0ZSB0aGUgTUlNRSB0
eXBlIGVhY2ggdGltZS4KQEAgLTY5OTcsNyArNjk5Nyw3IEBAICsgKHZvaWQpcmVnaXN0ZXJWaWV3
Q2xhc3M6KENsYXNzKXZpZXdDbGEKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdp
c3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVy
CiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFt
cGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3Ru
ZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1MVmlldyBjbGFzc10pCi0g
ICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCku
YWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogfQogCiAtICh2b2lkKXNldEdyb3VwTmFtZToo
TlNTdHJpbmcgKilncm91cE5hbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353000</attachid>
            <date>2018-10-23 16:28:21 -0700</date>
            <delta_ts>2018-10-23 18:08:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190838-20181023162820.patch</filename>
            <type>text/plain</type>
            <size>45282</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE4LTEwLTIzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cDog
TUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vZGVybml6ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGxp
c3RzIGluIE1JTUVUeXBlUmVnaXN0cnkuIE1ha2UgdGhlCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0
IHJldHVybiB0aGVzZSBsaXN0IGJlIHNlbGYtY29udGFpbmVkLiBVc2UgTmV2ZXJEZXN0cm95PD4g
dG8KKyAgICAgICAgYWxsb2NhdGUgdGhlIGxvY2FsIHN0YXRpYyB2YXJpYWJsZS4gVXNlIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdCgpIGFuZAorICAgICAgICBtYWtlTmV2ZXJEZXN0cm95ZWQoKSB0byBp
bml0aWFsaXplIE5ldmVyRGVzdHJveTw+IHZhcmlhYmxlcyBvbmx5IG9uY2UuCisKKyAgICAgICAg
c3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcyB3aWxsIGJlIGRlbGV0ZWQgYW5kIGFsbCB0
aGUgY2FsbHMgdG8gaXQgCisgICAgICAgIHdpbGwgYmUgcmVwbGFjZWQgYnkgc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMgYmVjYXVzZSB0aGV5IGFyZSBpZGVudGljYWwuCisKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZl
RmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMpOiBUaGlzIGZ1bmN0aW9uCisg
ICAgICAgIGlzIGNhbGxlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzKCkuIFNvIGl0CisgICAgICAgIHNob3VsZCBub3QgaGF2ZSBhIGRpcmVjdCBjYWxs
IHRvIGl0LiBJbnN0ZWFkLCBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcworICAgICAgICBpcyBw
YXNzZWQgdG8gaXQuCisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6c3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpwZGZNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNv
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEph
dmFTY3JpcHRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVk
SmF2YVNjcmlwdE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplUERGTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVT
dXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpp
bml0aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aW5pdGlhbGl6ZVVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VN
SU1FVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6OmdldFN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3lz
dGVtUHJldmlld01JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckNHOjplbmNvZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVk
RGVmYXVsdEltYWdlU291cmNlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0SW1h
Z2VTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmFsbG93ZWRJbWFnZVVUSXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VVVEkpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZSk6CisKIDIwMTgtMTAtMjMgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzI2MS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHJl
dmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOSArOTUsOCBAQCBSZWZQdHI8QXJjaGl2
ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHVybCwgKmRh
dGEpOwogfQogCi12b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVU
eXBlcygpCit2b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5cGVzKQog
ewotICAgIGF1dG8mIG1pbWVUeXBlcyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzKCk7CiAgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IGFyY2hpdmVNSU1F
VHlwZXMoKS5rZXlzKCkpCiAgICAgICAgIG1pbWVUeXBlcy5hZGQobWltZVR5cGUpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCShy
ZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEFyY2hpdmVG
YWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25z
dCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwm
LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCk7CisgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAy
MzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6
Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU1LDIxMCArNTUs
MjI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVz
Owotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlczsKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZzsKLXN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSmF2
YVNjcmlwdE1JTUVUeXBlczsKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiogc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
Owotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBwZGZN
SU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4qIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cygpCiB7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLSAgICBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsK
LQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8U3RyaW5nPiB7CiAjaWYgVVNFKENHKQotICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUg
c3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2UgVVRJcyBmb3Igd2hpY2ggQ29yZVNlcnZpY2VzIGhhcyBh
IGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBlLiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIGFsbG93ZWRJ
bWFnZVVUSXMoKS4KLSAgICBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIGFsbG93ZWRJbWFnZU1J
TUVUeXBlc1tdID0geyAiaW1hZ2UvdGlmZiJfcywgImltYWdlL2dpZiJfcywgImltYWdlL2pwZWci
X3MsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MsICJpbWFnZS9qcDIiX3MsICJpbWFnZS9w
bmciX3MsICJpbWFnZS9ibXAiX3MgfTsKLSAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogYWxsb3dl
ZEltYWdlTUlNRVR5cGVzKSB7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQo
bWltZVR5cGUpOwotICAgICAgICBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQo
bWltZVR5cGUpOwotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICBmb3IgKGF1dG8mIHV0aSA6
IGFsbG93ZWRJbWFnZVVUSXMoKSkgewotICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVG
b3JJbWFnZVNvdXJjZVR5cGUodXRpKTsKLSAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMo
bWltZVR5cGUpKTsKLSAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlN
RVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgZm9yIChhdXRvJiBtaW1lIDogKnN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzKQotICAgICAgICBBU1NFUlRfVU5VU0VEKG1pbWUsIGFsbG93ZWRJbWFnZVVUSXMoKS5jb250
YWlucyhVVElGcm9tTUlNRVR5cGUobWltZSkpKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBG
YXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRoZXIuCi0g
ICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmFkZCgiaW1hZ2UveC1pY29uIik7Ci0gICAgc3Vw
cG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS94LWljb24iKTsKKyAgICAg
ICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBzdWJzZXQgb2YgYWxsb3dlZCBpbWFnZSBVVElzIGZv
ciB3aGljaCBDb3JlU2VydmljZXMgaGFzIGEgY29ycmVzcG9uZGluZyBNSU1FIHR5cGUuCisgICAg
ICAgICJpbWFnZS90aWZmIl9zLAorICAgICAgICAiaW1hZ2UvZ2lmIl9zLAorICAgICAgICAiaW1h
Z2UvanBlZyJfcywKKyAgICAgICAgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywKKyAgICAg
ICAgImltYWdlL2pwMiJfcywKKyAgICAgICAgImltYWdlL3BuZyJfcywKKyAgICAgICAgImltYWdl
L2JtcCJfcywKIAotICAgIC8vICBXZSBvbmx5IGdldCBvbmUgTUlNRSB0eXBlIHBlciBVVEksIGhl
bmNlIG91ciBuZWVkIHRvIGFkZCB0aGVzZSBtYW51YWxseQotICAgIHN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzLT5hZGQoImltYWdlL3BqcGVnIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1J
TUVUeXBlcy0+YWRkKCJpbWFnZS9wanBlZyIpOworICAgICAgICAiaW1hZ2UveC1pY29uIl9zLCAv
LyBGYXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRoZXIu
CisgICAgICAgICJpbWFnZS9wanBlZyJfcywgLy8gIFdlIG9ubHkgZ2V0IG9uZSBNSU1FIHR5cGUg
cGVyIFVUSSwgaGVuY2Ugb3VyIG5lZWQgdG8gYWRkIHRoZXNlIG1hbnVhbGx5CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIC8vIEFkZCBtYWxmb3JtZWQgaW1hZ2UgbWltZXR5cGUgZm9y
IGNvbXBhdGliaWxpdHkgd2l0aCBNYWlsIGFuZCB0byBoYW5kbGUgbWFsZm9ybWVkIG1pbWV0eXBl
cyBmcm9tIHRoZSBuZXQKLSAgICAvLyBUaGVzZSB3ZXJlIHJlbW92ZWQgZm9yIDxyZGFyOi8vcHJv
YmxlbS82NTY0NTM4PiBSZS1lbmFibGUgVVRJIGNvZGUgaW4gV2ViQ29yZSBub3cgdGhhdCBNb2Jp
bGVDb3JlU2VydmljZXMgZXhpc3RzCi0gICAgLy8gQnV0IE1haWwgcmVsaWVzIG9uIGF0IGxlYXN0
IGltYWdlL3RpZiByZXBvcnRlZCBhcyBiZWluZyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90
aWZmKS4KLSAgICAvLyBUaGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gTWFpbCBhZGRyZXNzZXM6Ci0g
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc4Nzk1MTA+IE1haWwgc2hvdWxkIHVzZSBzdGFuZGFyZCBp
bWFnZSBtaW1ldHlwZXMKLSAgICAvLyBhbmQgd2UgZml4IHNuaWZmaW5nIHNvIHRoYXQgaXQgY29y
cmVjdHMgaXRlbXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4gaW1hZ2UvanBlZy4KLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgbWFsZm9ybWVkTUlNRVR5cGVzW10gPSB7CiAgICAgICAgIC8vIEpQ
RUcgKGltYWdlL2pwZWcpCi0gICAgICAgICJpbWFnZS9qcGciLCAiaW1hZ2UvanBfIiwgImltYWdl
L2pwZV8iLCAiYXBwbGljYXRpb24vanBnIiwgImFwcGxpY2F0aW9uL3gtanBnIiwgImltYWdlL3Bp
cGVnIiwKLSAgICAgICAgImltYWdlL3ZuZC5zd2l0ZnZpZXctanBlZyIsICJpbWFnZS94LXhiaXRt
YXAiLAorICAgICAgICAiaW1hZ2UvanBnIl9zLAorICAgICAgICAiaW1hZ2UvanBfIl9zLAorICAg
ICAgICAiaW1hZ2UvanBlXyJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL2pwZyJfcywKKyAgICAg
ICAgImFwcGxpY2F0aW9uL3gtanBnIl9zLAorICAgICAgICAiaW1hZ2UvcGlwZWciX3MsCisgICAg
ICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciX3MsCisgICAgICAgICJpbWFnZS94LXhiaXRt
YXAiX3MsCisKICAgICAgICAgLy8gR0lGIChpbWFnZS9naWYpCi0gICAgICAgICJpbWFnZS9naV8i
LAorICAgICAgICAiaW1hZ2UvZ2lfIl9zLAorCiAgICAgICAgIC8vIFBORyAoaW1hZ2UvcG5nKQot
ICAgICAgICAiYXBwbGljYXRpb24vcG5nIiwgImFwcGxpY2F0aW9uL3gtcG5nIiwKKyAgICAgICAg
ImFwcGxpY2F0aW9uL3BuZyJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3gtcG5nIl9zLAorCiAg
ICAgICAgIC8vIFRJRkYgKGltYWdlL3RpZmYpCi0gICAgICAgICJpbWFnZS94LXRpZiIsICJpbWFn
ZS90aWYiLCAiaW1hZ2UveC10aWZmIiwgImFwcGxpY2F0aW9uL3RpZiIsICJhcHBsaWNhdGlvbi94
LXRpZiIsICJhcHBsaWNhdGlvbi90aWZmIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtdGlmZiIs
CisgICAgICAgICJpbWFnZS94LXRpZiJfcywKKyAgICAgICAgImltYWdlL3RpZiJfcywKKyAgICAg
ICAgImltYWdlL3gtdGlmZiJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3RpZiJfcywKKyAgICAg
ICAgImFwcGxpY2F0aW9uL3gtdGlmIl9zLAorICAgICAgICAiYXBwbGljYXRpb24vdGlmZiJfcywK
KyAgICAgICAgImFwcGxpY2F0aW9uL3gtdGlmZiJfcywKKwogICAgICAgICAvLyBCTVAgKGltYWdl
L2JtcCwgaW1hZ2UveC1iaXRtYXApCi0gICAgICAgICJpbWFnZS94LWJtcCIsICJpbWFnZS94LXdp
bi1iaXRtYXAiLCAiaW1hZ2UveC13aW5kb3dzLWJtcCIsICJpbWFnZS9tcy1ibXAiLCAiaW1hZ2Uv
eC1tcy1ibXAiLAotICAgICAgICAiYXBwbGljYXRpb24vYm1wIiwgImFwcGxpY2F0aW9uL3gtYm1w
IiwgImFwcGxpY2F0aW9uL3gtd2luLWJpdG1hcCIsCi0gICAgfTsKLSAgICBmb3IgKGF1dG8mIHR5
cGUgOiBtYWxmb3JtZWRNSU1FVHlwZXMpIHsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMtPmFkZCh0eXBlKTsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+
YWRkKHR5cGUpOwotICAgIH0KKyAgICAgICAgImltYWdlL3gtYm1wIl9zLAorICAgICAgICAiaW1h
Z2UveC13aW4tYml0bWFwIl9zLAorICAgICAgICAiaW1hZ2UveC13aW5kb3dzLWJtcCJfcywKKyAg
ICAgICAgImltYWdlL21zLWJtcCJfcywKKyAgICAgICAgImltYWdlL3gtbXMtYm1wIl9zLAorICAg
ICAgICAiYXBwbGljYXRpb24vYm1wIl9zLAorICAgICAgICAiYXBwbGljYXRpb24veC1ibXAiX3Ms
CisgICAgICAgICJhcHBsaWNhdGlvbi94LXdpbi1iaXRtYXAiX3MsCiAjZW5kaWYKLQogI2Vsc2UK
LSAgICAvLyBhc3N1bWUgdGhhdCBhbGwgaW1wbGVtZW50YXRpb25zIGF0IGxlYXN0IHN1cHBvcnQg
dGhlIGZvbGxvd2luZyBzdGFuZGFyZAotICAgIC8vIGltYWdlIHR5cGVzOgotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0gewotICAgICAgICAiaW1hZ2UvanBlZyIsCi0gICAg
ICAgICJpbWFnZS9wbmciLAotICAgICAgICAiaW1hZ2UvZ2lmIiwKLSAgICAgICAgImltYWdlL2Jt
cCIsCi0gICAgICAgICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCAgICAvLyBpY28KLSAgICAg
ICAgImltYWdlL3gtaWNvbiIsICAgIC8vIGljbwotICAgICAgICAiaW1hZ2UveC14Yml0bWFwIiAg
Ly8geGJtCi0gICAgfTsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykgewotICAgICAgICBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGUpOwotICAgICAgICBzdXBwb3J0ZWRJbWFn
ZVJlc291cmNlTUlNRVR5cGVzLT5hZGQodHlwZSk7Ci0gICAgfQotCisgICAgICAgIC8vIGFzc3Vt
ZSB0aGF0IGFsbCBpbXBsZW1lbnRhdGlvbnMgYXQgbGVhc3Qgc3VwcG9ydCB0aGUgZm9sbG93aW5n
IHN0YW5kYXJkCisgICAgICAgIC8vIGltYWdlIHR5cGVzOgorICAgICAgICAiaW1hZ2UvanBlZyJf
cywKKyAgICAgICAgImltYWdlL3BuZyJfcywKKyAgICAgICAgImltYWdlL2dpZiJfcywKKyAgICAg
ICAgImltYWdlL2JtcCJfcywKKyAgICAgICAgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywg
Ly8gaWNvCisgICAgICAgICJpbWFnZS94LWljb24iX3MsIC8vIGljbworICAgICAgICAiaW1hZ2Uv
eC14Yml0bWFwIl9zLCAvLyB4Ym0KICNpZiBVU0UoV0VCUCkKLSAgICBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcy0+YWRkKCJpbWFnZS93ZWJwIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1J
TUVUeXBlcy0+YWRkKCJpbWFnZS93ZWJwIik7CisgICAgICAgICJpbWFnZS93ZWJwIl9zLAogI2Vu
ZGlmCisjZW5kaWYKKyAgICB9OwogCi0jZW5kaWYgLy8gVVNFKENHKQorI2lmIFVTRShDRykKKyNp
Zm5kZWYgTkRFQlVHCisgICAgLy8gRXNudXJlIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkgaXMg
aW4gc3luYyB3aXRoIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuCisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisgICAgICAgIGZvciAoYXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogc3VwcG9ydGVkRGVm
YXVsdEltYWdlU291cmNlVHlwZXMoKSkgeworICAgICAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1J
TUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGltYWdlU291cmNlVHlwZSk7CisgICAgICAgICAgICBB
U1NFUlRfSU1QTElFUyghbWltZVR5cGUuaXNFbXB0eSgpLCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cy5nZXQoKS5jb250YWlucyhtaW1lVHlwZSkpOworICAgICAgICB9CisgICAgfSk7CisjZW5kaWYK
KyNlbmRpZgorICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKIH0KIAotc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcoKQorc3Rh
dGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCkKIHsKLSAgICBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0ZvckVuY29kaW5nID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+OwotCi0jaWYgVVNFKENHKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBzdXBwb3J0ZWRUeXBlcyA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0
aW9uQ29weVR5cGVJZGVudGlmaWVycygpKTsKLSAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdl
dENvdW50KHN1cHBvcnRlZFR5cGVzLmdldCgpKTsKLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkg
PCBjb3VudDsgaSsrKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIHN1cHBvcnRlZFR5cGUgPSByZWlu
dGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1cHBvcnRl
ZFR5cGVzLmdldCgpLCBpKSk7Ci0gICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRm9y
SW1hZ2VTb3VyY2VUeXBlKHN1cHBvcnRlZFR5cGUpOwotICAgICAgICBpZiAoIW1pbWVUeXBlLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmct
PmFkZChtaW1lVHlwZSk7Ci0gICAgfQorICAgIHN0YXRpYyBjb25zdCBhdXRvIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3VwcG9ydGVkVHlwZXMgPSBhZG9wdENGKENHSW1hZ2VE
ZXN0aW5hdGlvbkNvcHlUeXBlSWRlbnRpZmllcnMoKSk7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5j
b2Rpbmc7CisgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVk
VHlwZXMuZ2V0KCkpOworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CisgICAgICAgICAgICBDRlN0cmluZ1JlZiBzdXBwb3J0ZWRUeXBlID0gcmVpbnRlcnByZXRf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdXBwb3J0ZWRUeXBlcy5n
ZXQoKSwgaSkpOworICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFn
ZVNvdXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7CisgICAgICAgICAgICBpZiAoIW1pbWVUeXBlLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29k
aW5nLmFkZChtaW1lVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmc7CisgICAgfSgpKTsKICNlbHNlCi0gICAgLy8gRklYTUU6
IEFkZCBXaW5kb3dzIHN1cHBvcnQgZm9yIGFsbCB0aGUgc3VwcG9ydGVkIFVUSSdzIHdoZW4gYSB3
YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KLSAg
ICAvLyBGb3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBKUEVHIGFuZCBHSUYuICBTZWUgPHJkYXI6
Ly9wcm9ibGVtLzYwOTUyODY+LgotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rp
bmctPmFkZCgiaW1hZ2UvcG5nIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNv
ZGluZy0+YWRkKCJpbWFnZS9qcGVnIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZy0+YWRkKCJpbWFnZS9naWYiKTsKLSNlbmRpZgorICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZyA9c3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4g
eworI2lmIFVTRShDRykKKyAgICAgICAgLy8gRklYTUU6IEFkZCBXaW5kb3dzIHN1cHBvcnQgZm9y
IGFsbCB0aGUgc3VwcG9ydGVkIFVUSSdzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVU
eXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KKyAgICAgICAgLy8gRm9yIG5vdywgb25seSBz
dXBwb3J0IFBORywgSlBFRyBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+Lgor
ICAgICAgICAiaW1hZ2UvcG5nIl9zLAorICAgICAgICAiaW1hZ2UvanBlZyJfcywKKyAgICAgICAg
ImltYWdlL2dpZiJfcywKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL3BuZyIpOwotICAgIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvanBlZyIpOwotICAgIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvdGlmZiIpOwotICAgIHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvYm1wIik7Ci0gICAgc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9pY28iKTsKKyAgICAgICAg
ImltYWdlL3BuZyJfcywKKyAgICAgICAgImltYWdlL2pwZWciX3MsCisgICAgICAgICJpbWFnZS90
aWZmIl9zLAorICAgICAgICAiaW1hZ2UvYm1wIl9zLAorICAgICAgICAiaW1hZ2UvaWNvIl9zLAog
I2VsaWYgVVNFKENBSVJPKQotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmct
PmFkZCgiaW1hZ2UvcG5nIik7CisgICAgICAgICJpbWFnZS9wbmciX3MsCiAjZW5kaWYKLX0KLQot
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKQotewot
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5o
dG1sI2phdmFzY3JpcHQtbWltZS10eXBlCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5
cGVzW10gPSB7Ci0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQiLAotICAgICAgICAidGV4dC9lY21h
c2NyaXB0IiwKLSAgICAgICAgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLAotICAgICAgICAiYXBw
bGljYXRpb24vZWNtYXNjcmlwdCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQi
LAotICAgICAgICAiYXBwbGljYXRpb24veC1lY21hc2NyaXB0IiwKLSAgICAgICAgInRleHQvamF2
YXNjcmlwdDEuMCIsCi0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjEiLAotICAgICAgICAidGV4
dC9qYXZhc2NyaXB0MS4yIiwKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyIsCi0gICAgICAg
ICJ0ZXh0L2phdmFzY3JpcHQxLjQiLAotICAgICAgICAidGV4dC9qYXZhc2NyaXB0MS41IiwKLSAg
ICAgICAgInRleHQvanNjcmlwdCIsCi0gICAgICAgICJ0ZXh0L2xpdmVzY3JpcHQiLAotICAgICAg
ICAidGV4dC94LWphdmFzY3JpcHQiLAotICAgICAgICAidGV4dC94LWVjbWFzY3JpcHQiCiAgICAg
fTsKLQotICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0gICAgZm9yIChhdXRvKiB0eXBlIDogdHlw
ZXMpCi0gICAgICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMtPmFkZCh0eXBlKTsKKyNl
bmRpZgorICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nOwogfQog
Ci1zdGF0aWMgdm9pZCBpbml0aWFsaXplUERGTUlNRVR5cGVzKCkKK3N0YXRpYyBjb25zdCBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlcygpCiB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsKLSAgICAg
ICAgImFwcGxpY2F0aW9uL3BkZiIsCi0gICAgICAgICJ0ZXh0L3BkZiIKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5n
PiB7CisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3Nj
cmlwdGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCisgICAgICAgICJ0ZXh0L2phdmFzY3Jp
cHQiX3MsCisgICAgICAgICJ0ZXh0L2VjbWFzY3JpcHQiX3MsCisgICAgICAgICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Il9zLAorICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCJfcywKKyAg
ICAgICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcywKKyAgICAgICAgImFwcGxpY2F0aW9u
L3gtZWNtYXNjcmlwdCJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMCJfcywKKyAgICAg
ICAgInRleHQvamF2YXNjcmlwdDEuMSJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMiJf
cywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyJfcywKKyAgICAgICAgInRleHQvamF2YXNj
cmlwdDEuNCJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNSJfcywKKyAgICAgICAgInRl
eHQvanNjcmlwdCJfcywKKyAgICAgICAgInRleHQvbGl2ZXNjcmlwdCJfcywKKyAgICAgICAgInRl
eHQveC1qYXZhc2NyaXB0Il9zLAorICAgICAgICAidGV4dC94LWVjbWFzY3JpcHQiX3MsCiAgICAg
fTsKLQotICAgIHBkZk1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPjsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgcGRm
TUlNRVR5cGVzLT5hZGQodHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1F
VHlwZXM7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFnZU1pbWVU
eXBlcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7Ci0gICAg
ICAgICJ0ZXh0L2h0bWwiLAotICAgICAgICAidGV4dC94bWwiLAotICAgICAgICAidGV4dC94c2wi
LAotICAgICAgICAidGV4dC9wbGFpbiIsCi0gICAgICAgICJ0ZXh0LyIsCi0gICAgICAgICJhcHBs
aWNhdGlvbi94bWwiLAotICAgICAgICAiYXBwbGljYXRpb24veGh0bWwreG1sIiwKK0hhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBw
b3J0ZWROb25JbWFnZU1JTUVUeXBlcygpCit7CisgICAgc3RhdGljIGF1dG8gc3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICAgICAgICAgICJ0ZXh0
L2h0bWwiX3MsCisgICAgICAgICAgICAidGV4dC94bWwiX3MsCisgICAgICAgICAgICAidGV4dC94
c2wiX3MsCisgICAgICAgICAgICAidGV4dC9wbGFpbiJfcywKKyAgICAgICAgICAgICJ0ZXh0LyJf
cywKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi94bWwiX3MsCisgICAgICAgICAgICAiYXBwbGlj
YXRpb24veGh0bWwreG1sIl9zLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAi
YXBwbGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwiLAotICAgICAgICAiYXBwbGljYXRpb24vcnNz
K3htbCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi9hdG9tK3htbCIsCisgICAgICAgICAgICAiYXBw
bGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwiX3MsCisgICAgICAgICAgICAiYXBwbGljYXRpb24v
cnNzK3htbCJfcywKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi9hdG9tK3htbCJfcywKICNlbmRp
ZgotICAgICAgICAiYXBwbGljYXRpb24vanNvbiIsCi0gICAgICAgICJpbWFnZS9zdmcreG1sIiwK
KyAgICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIl9zLAorICAgICAgICAgICAgImltYWdlL3N2
Zyt4bWwiX3MsCiAjaWYgRU5BQkxFKEZUUERJUikKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtZnRw
LWRpcmVjdG9yeSIsCisgICAgICAgICAgICAiYXBwbGljYXRpb24veC1mdHAtZGlyZWN0b3J5Il9z
LAogI2VuZGlmCi0gICAgICAgICJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIgorICAgICAgICAg
ICAgIm11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiX3MsCiAgICAgICAgIC8vIE5vdGU6IEFkZGlu
ZyBhIG5ldyB0eXBlIGhlcmUgd2lsbCBwcm9iYWJseSByZW5kZXIgaXQgYXMgSFRNTC4KICAgICAg
ICAgLy8gVGhpcyBjYW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxp
dGllcy4KLSAgICB9OworICAgICAgICB9OworICAgICAgICBzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlcy5hZGQoc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcygpLmJlZ2luKCksIHN1cHBvcnRl
ZEphdmFTY3JpcHRNSU1FVHlwZXMoKS5lbmQoKSk7CisjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8
fCBFTkFCTEUoTUhUTUwpCisgICAgICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJj
aGl2ZU1JTUVUeXBlcyhzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyk7CisjZW5kaWYKKyAgICAg
ICAgcmV0dXJuIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOworICAgIH0oKSk7CisgICAgcmV0
dXJuIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOworfQogCi0gICAgaWYgKCFzdXBwb3J0ZWRK
YXZhU2NyaXB0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlw
dE1JTUVUeXBlcygpOworY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgYXV0byBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG1ha2VOZXZlckRl
c3Ryb3llZChbXSB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+IHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworI2lmIEVOQUJMRShWSURFTykKKyAgICAg
ICAgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisgICAg
fSgpKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7Cit9CiAKLSAgICBzdXBw
b3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiB7ICpzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzIH07Ci0gICAgZm9y
IChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
LT5hZGQodHlwZSk7Citjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHBk
Zk1JTUVUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICAgICAgImFw
cGxpY2F0aW9uL3BkZiJfcywKKyAgICAgICAgInRleHQvcGRmIl9zLAorICAgIH07CisgICAgcmV0
dXJuIHBkZk1JTUVUeXBlczsKK30KIAotI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxF
KE1IVE1MKQotICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cygpOworY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1J
TUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
PiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5n
PiB7CisgICAgICAgICJ0ZXh0L2NhbGVuZGFyIl9zLAorICAgICAgICAidGV4dC94LWNhbGVuZGFy
Il9zLAorICAgICAgICAidGV4dC94LXZjYWxlbmRhciJfcywKKyAgICAgICAgInRleHQvdmNhbGVu
ZGFyIl9zLAorICAgICAgICAidGV4dC92Y2FyZCJfcywKKyAgICAgICAgInRleHQveC12Y2FyZCJf
cywKKyAgICAgICAgInRleHQvZGlyZWN0b3J5Il9zLAorICAgICAgICAidGV4dC9sZGlmIl9zLAor
ICAgICAgICAidGV4dC9xaWYiX3MsCisgICAgICAgICJ0ZXh0L3gtcWlmIl9zLAorICAgICAgICAi
dGV4dC94LWNzdiJfcywKKyAgICAgICAgInRleHQveC12Y2YiX3MsCisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgICAgICJ0ZXh0L3J0ZiJfcywKKyNlbHNlCisgICAgICAgICJ0ZXh0L3Zu
ZC5zdW4uajJtZS5hcHAtZGVzY3JpcHRvciJfcywKICNlbmRpZgorICAgIH07CisgICAgcmV0dXJu
IHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKIH0KIAogc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJp
bmc+KiB0eXBlc0ZvckNvbW1vbkV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKQEAg
LTM5Miw0MSArNDEwLDYgQEAgVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TWVk
aQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRN
ZWRpYU1JTUVUeXBlcygpCi17Ci0gICAgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMgPSBuZXcgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0jaWYgRU5BQkxFKFZJREVP
KQotICAgIE1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcygqc3VwcG9ydGVkTWVkaWFNSU1F
VHlwZXMpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMoKQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0g
ewotICAgICAgICAidGV4dC9jYWxlbmRhciJfcywKLSAgICAgICAgInRleHQveC1jYWxlbmRhciJf
cywKLSAgICAgICAgInRleHQveC12Y2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3ZjYWxlbmRh
ciJfcywKLSAgICAgICAgInRleHQvdmNhcmQiX3MsCi0gICAgICAgICJ0ZXh0L3gtdmNhcmQiX3Ms
Ci0gICAgICAgICJ0ZXh0L2RpcmVjdG9yeSJfcywKLSAgICAgICAgInRleHQvbGRpZiJfcywKLSAg
ICAgICAgInRleHQvcWlmIl9zLAotICAgICAgICAidGV4dC94LXFpZiJfcywKLSAgICAgICAgInRl
eHQveC1jc3YiX3MsCi0gICAgICAgICJ0ZXh0L3gtdmNmIl9zLAotI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgICAgICAidGV4dC9ydGYiX3MsCi0jZWxzZQotICAgICAgICAidGV4dC92bmQu
c3VuLmoybWUuYXBwLWRlc2NyaXB0b3IiX3MsCi0jZW5kaWYKLSAgICB9OwotCi0gICAgdW5zdXBw
b3J0ZWRUZXh0TUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+OwotICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKQotICAgICAgICB1bnN1cHBv
cnRlZFRleHRNSU1FVHlwZXMtPmFkZCh0eXBlKTsKLX0KLQogU3RyaW5nIE1JTUVUeXBlUmVnaXN0
cnk6OmdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc2l6ZV90
IHBvcyA9IHBhdGgucmV2ZXJzZUZpbmQoJy4nKTsKQEAgLTQ0Myw5ICs0MjYsNyBAQCBib29sIE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwot
ICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFsaXpl
ZE1JTUVUeXBlKG1pbWVUeXBlKSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
KCkuY29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKG1pbWVUeXBlKSk7CiB9CiAKIGJvb2wg
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVZpZGVvT3JTVkdNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDYxLDI0ICs0NDIsMTMgQEAgYm9vbCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlVgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQotewotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMp
Ci0gICAgICAgIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwotICAgIHJldHVy
biBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5jb250YWlucyhnZXROb3JtYWxpemVk
TUlNRVR5cGUobWltZVR5cGUpKTsKLX0KLQogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
c0ZvckVuY29kaW5nKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNG
b3JFbmNvZGluZygpOwotICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29k
aW5nLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzRm9yRW5jb2RpbmcoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKQEAgLTQ5NCw5ICs0NjQsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSmF2YVNjCiAgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZDsKICAgICB9CiAKLSAgICBpZiAo
IXN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVTdXBwb3J0
ZWROb25JbWFnZU1pbWVUeXBlcygpOwotICAgIHJldHVybiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRTdHlsZVNoZWV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKQEAgLTUzOSwxOCArNTA3LDE0IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWROb25JbWEKIHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcykKLSAgICAgICAgaW5p
dGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCk7Ci0gICAgcmV0dXJuIHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBv
cnRlZE5vbkltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogewogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIXN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFs
aXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFN
SU1FVHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFN
SU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3Ry
eTo6aXNTdXBwb3J0ZWRUZXh0VHJhY2tNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpA
QCAtNTYyLDkgKzUyNiw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRl
eHQKIHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCF1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVV
bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gdW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNjIyLDkgKzU4NCw3
IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShjb24KIHsKICAgICBpZiAo
bWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFwZGZN
SU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVQREZNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4g
cGRmTUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHBkZk1JTUVUeXBl
cygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Bv
c3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNjUxLDQ5ICs2MTEs
NiBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZShjCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQotewot
ICAgIGlmICghc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcygpOwotICAgIHJldHVybiAqc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXM7Ci19Ci0KLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKCkK
LXsKLSAgICBpZiAoIXN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMpCi0gICAgICAgIGlu
aXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwotICAgIHJldHVybiAqc3VwcG9ydGVk
SW1hZ2VSZXNvdXJjZU1JTUVUeXBlczsKLX0KLQotSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCkKLXsKLSAgICBpZiAoIXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKQotICAgICAg
ICBpbml0aWFsaXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOwotfQotCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTWVk
aWFNSU1FVHlwZXMoKQotewotICAgIGlmICghc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpCi0gICAg
ICAgIGluaXRpYWxpemVTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOwotICAgIHJldHVybiAqc3Vw
cG9ydGVkTWVkaWFNSU1FVHlwZXM7Ci19Ci0KLQotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBlcygp
Ci17Ci0gICAgaWYgKCFwZGZNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVQREZNSU1FVHlw
ZXMoKTsKLSAgICByZXR1cm4gKnBkZk1JTUVUeXBlczsKLX0KLQotY29uc3QgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFVuc3Vw
cG9ydGVkVGV4dE1JTUVUeXBlcygpCi17Ci0gICAgaWYgKCF1bnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMpCi0gICAgICAgIGluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICBy
ZXR1cm4gKnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKLX0KLQogY29uc3QgU3RyaW5nJiBkZWZh
dWx0TUlNRVR5cGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IGRlZmF1bHRNSU1FVHlwZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIikpOwpAQCAtNzAxLDcgKzYxOCw3IEBAIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1J
TUVUeXBlKCkKIH0KIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKLWNvbnN0IEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTeXN0
ZW1QcmV2aWV3TUlNRVR5cGVzKCkKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4+IHN5c3RlbVByZXZpZXdNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8U3RyaW5nPiB7CiAgICAgICAgIC8vIFRoZSBvZmZpY2lhbCB0eXBlOiBodHRwczovL3d3
dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9tb2RlbC92bmQudXNkeit6aXAKQEAg
LTcxNyw3ICs2MzQsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01J
CiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBnZXRTeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUp
OworICAgIHJldHVybiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUp
OwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmgJKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgcHVibGlj
OgogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVp
bmcgbG9hZGVkIGFzIGFuIGltYWdlLCBpbmNsdWRpbmcgU1ZHIGFuZCBWaWRlbyAod2hlcmUgc3Vw
cG9ydGVkKS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdl
VmlkZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gQ2hl
Y2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMg
YW4gaW1hZ2UKLSAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwotCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1
aXRhYmxlIGZvciBiZWluZyBlbmNvZGVkLgogICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkBAIC0xMDgs
MTggKzEwNCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gbWFrZXMgdGhpcyB0ZXN0IGlzIGFmdGVyIG1h
bnkgb3RoZXIgdGVzdHMgYXJlIGRvbmUgb24gdGhlIE1JTUUgdHlwZS4KICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
IAotICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBo
YXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMuCiAgICAg
Ly8gRklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBhdm9pZCBleHBvc2luZyB0
aGVzZSBzZXRzLCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1jb25zdCByZWZlcmVuY2VzLgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgZ2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKLQotICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgZ2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICBjb25zdCBzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1cHBvcnRlZEltYWdl
UmVzb3VyY2VNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1cHBvcnRlZE1lZGlh
TUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRQREZNSU1FVHlwZXMoKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIGdldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgcGRmTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKIAogI2lmIFVTRShTWVNURU1fUFJFVklF
VykKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN5c3RlbVByZXZpZXdNSU1FVHlwZXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIHN5c3RlbVByZXZpZXdNSU1FVHlwZXMoKTsKICNlbmRpZgogCiAgICAgLy8g
RklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUgc2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdv
cmQgImdldCIgaW4gdGhlIG5hbWUgb2YgdGhpcyBmdW5jdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDIzNzM2NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsNyBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlOjpjcmVhdGUoSW1hZ2VPYnNlcnZl
CiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAg
cmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBl
KHR5cGUpOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGUodHlwZSk7CiB9IAogCiBib29sIEltYWdlOjppc1BERlJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkocmV2aXNpb24g
MjM3MzY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZERhdGFT
dGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZQogICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFT
dGF0dXM6OkVycm9yOwogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGU6IHsKLSAg
ICAgICAgaWYgKCFpc0FsbG93ZWRJbWFnZVVUSSh1dGkpKQorICAgICAgICBpZiAoIWlzU3VwcG9y
dEltYWdlU291cmNlVHlwZSh1dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3Rh
dHVzOjpFcnJvcjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQ
cm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1f
bmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAg
LTIxMyw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2Rl
CiAgICAgfQogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0NvbXBsZXRlOgotICAgICAgICBpZiAo
IWlzQWxsb3dlZEltYWdlVVRJKHV0aSkpCisgICAgICAgIGlmICghaXNTdXBwb3J0SW1hZ2VTb3Vy
Y2VUeXBlKHV0aSkpCiAgICAgICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9y
OwogCiAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnku
Y3BwCShyZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9VVElSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJ
cygpCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5
cGVzKCkKIHsKICAgICAvLyBDRyBhdCBsZWFzdCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHN0YW5k
YXJkIGltYWdlIHR5cGVzOgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmlu
Zz4+IHNfYWxsb3dlZEltYWdlVVRJcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBzdXBwb3J0ZWREZWZh
dWx0SW1hZ2VTb3VyY2VUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKICAg
ICAgICAgImNvbS5jb21wdXNlcnZlLmdpZiIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmJtcCIs
CiAgICAgICAgICJjb20ubWljcm9zb2Z0LmN1ciIsCkBAIC01NCwyNSArNTQsMjQgQEAgSGFzaFNl
dDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAgICB9OwogCiAjaWZuZGVmIE5ERUJVRwot
ICAgIC8vIEJ1dCBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVhbGx5IHN1cHBvcnRl
ZC4KLSAgICBzdGF0aWMgYm9vbCBjaGVja2VkID0gZmFsc2U7Ci0gICAgaWYgKCFjaGVja2VkKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzeXN0ZW1JbWFnZVVUSXMgPSBhZG9wdENG
KENHSW1hZ2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCkpOwotICAgICAgICBDRkluZGV4IGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KHN5c3RlbUltYWdlVVRJcy5nZXQoKSk7Ci0gICAgICAgIGZv
ciAoYXV0byYgaW1hZ2VVVEkgOiBzX2FsbG93ZWRJbWFnZVVUSXMuZ2V0KCkpIHsKLSAgICAgICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gaW1hZ2VVVEkuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICAgICAgICAgIEFTU0VSVChDRkFycmF5Q29udGFpbnNWYWx1ZShzeXN0ZW1JbWFn
ZVVUSXMuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgc3RyaW5nLmdldCgpKSk7CisgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgQ0cgc3VwcG9ydHMgdGhlbS4KKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAg
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3RlbUltYWdlU291cmNlVHlwZXMgPSBhZG9wdENG
KENHSW1hZ2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCkpOworICAgICAgICBDRkluZGV4IGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KHN5c3RlbUltYWdlU291cmNlVHlwZXMuZ2V0KCkpOworICAg
ICAgICBmb3IgKGF1dG8mIGltYWdlU291cmNlVHlwZSA6IHN1cHBvcnRlZERlZmF1bHRJbWFnZVNv
dXJjZVR5cGVzLmdldCgpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0
cmluZyA9IGltYWdlU291cmNlVHlwZS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgQVNT
RVJUKENGQXJyYXlDb250YWluc1ZhbHVlKHN5c3RlbUltYWdlU291cmNlVHlwZXMuZ2V0KCksIENG
UmFuZ2VNYWtlKDAsIGNvdW50KSwgc3RyaW5nLmdldCgpKSk7CiAgICAgICAgIH0KLSAgICAgICAg
Y2hlY2tlZCA9IHRydWU7Ci0gICAgfQorICAgIH0pOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc19h
bGxvd2VkSW1hZ2VVVElzLmdldCgpOworICAgIHJldHVybiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VT
b3VyY2VUeXBlczsKIH0KIAotYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcmIGlt
YWdlVVRJKQorYm9vbCBpc1N1cHBvcnRJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBpbWFn
ZVNvdXJjZVR5cGUpCiB7Ci0gICAgcmV0dXJuICFpbWFnZVVUSS5pc0VtcHR5KCkgJiYgYWxsb3dl
ZEltYWdlVVRJcygpLmNvbnRhaW5zKGltYWdlVVRJKTsKKyAgICByZXR1cm4gIWltYWdlU291cmNl
VHlwZS5pc0VtcHR5KCkgJiYgc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMoKS5jb250
YWlucyhpbWFnZVNvdXJjZVR5cGUpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDIzNzM2NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1I
YXNoU2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKTsKLWJvb2wgaXNBbGxvd2VkSW1hZ2VV
VEkoY29uc3QgU3RyaW5nJik7Citjb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZERlZmF1
bHRJbWFnZVNvdXJjZVR5cGVzKCk7Citib29sIGlzU3VwcG9ydEltYWdlU291cmNlVHlwZShjb25z
dCBTdHJpbmcmKTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0JKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBGSVhNRTogV2h5IGNhbiB3ZSBhc3NlcnQgdGhpcz8gSXQgZG9lc24ndCBz
ZWVtIGxpa2UgaXQncyBndWFyYW50ZWVkLgotICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VN
SU1FVHlwZSkpOworICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
TUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpKTsKIAogICAgIGF1dG8g
dHlwZXMgPSB3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKTsKICAgICBpZiAocGFzdGVib2FyZEltYWdl
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MzY3KQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxOC0xMC0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIENsZWFudXA6IE1JTUVUeXBlUmVnaXN0cnkgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgaW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOgorCiAy
MDE4LTEwLTIzICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzcyNjEuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNzM2NykKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU2ODIsNyArNTY4Miw3IEBAIC0gKFVJVmlldyAqKV92aWV3Rm9yRmluZFVJCiAK
IC0gKEJPT0wpX2lzRGlzcGxheWluZ1BERgogewotICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKSkgeworICAgIGZvciAo
YXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMo
KSkgewogICAgICAgICBDbGFzcyBwcm92aWRlckNsYXNzID0gW1tfY29uZmlndXJhdGlvbiBfY29u
dGVudFByb3ZpZGVyUmVnaXN0cnldIHByb3ZpZGVyRm9yTUlNRVR5cGU6bWltZVR5cGVdOwogICAg
ICAgICBpZiAoW19jdXN0b21Db250ZW50VmlldyBpc0tpbmRPZkNsYXNzOnByb3ZpZGVyQ2xhc3Nd
KQogICAgICAgICAgICAgcmV0dXJuIFlFUzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJl
Z2lzdHJ5Lm1tCShyZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTMsMTYgKzUzLDE2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbmZpZ3VyYXRpb246
KFcKICAgICAgICAgcmV0dXJuIG5pbDsKIAogI2lmIEVOQUJMRShXS1BERlZJRVcpCi0gICAgZm9y
IChhdXRvJiBtaW1lVHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVU
eXBlcygpKQorICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lz
dHJ5OjpwZGZNSU1FVHlwZXMoKSkKICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpbV0tQ
REZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07CiAjZWxpZiBFTkFCTEUoV0tMRUdB
Q1lQREZWSUVXKQotICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKSkKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkpCiAgICAgICAgIFtzZWxmIHJl
Z2lzdGVyUHJvdmlkZXI6W1dLTGVnYWN5UERGVmlldyBjbGFzc10gZm9yTUlNRVR5cGU6bWltZVR5
cGVdOwogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGNvbmZpZ3Vy
YXRpb24uX3N5c3RlbVByZXZpZXdFbmFibGVkKSB7Ci0gICAgICAgIGZvciAoYXV0byYgbWltZVR5
cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTeXN0ZW1QcmV2aWV3TUlNRVR5cGVz
KCkpCisgICAgICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lz
dHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkpCiAgICAgICAgICAgICBbc2VsZiByZWdpc3Rl
clByb3ZpZGVyOltXS1N5c3RlbVByZXZpZXdWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlw
ZV07CiAgICAgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMC0yMyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXA6IE1JTUVUeXBlUmVn
aXN0cnkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1Bh
c3RlYm9hcmQgX3dlYl93cml0ZVByb21pc2VkUlRGREZyb21BcmNoaXZlOmNvbnRhaW5zSW1hZ2U6
XSk6CisgICAgICAgIFJlcGxhY2UgaXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoKSBi
eSBpc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoKQorICAgICAgICBiZWNhdXNlIHRoZXkgd2VyZSBp
ZGVudGljYWwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToK
KyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
XSk6CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlc10pOgorICAgICAgICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9y
dGVkVGV4dE1JTUVUeXBlc10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKCtbV2ViVmlldyBfdW5yZWdpc3RlclZpZXdDbGFzc0FuZFJlcHJlc2VudGF0aW9uQ2xhc3NG
b3JNSU1FVHlwZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVnaXN0ZXJWaWV3Q2xhc3M6cmVw
cmVzZW50YXRpb25DbGFzczpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgrW1dlYlZpZXcgcmVn
aXN0ZXJWaWV3Q2xhc3M6cmVwcmVzZW50YXRpb25DbGFzczpmb3JNSU1FVHlwZTpdKToKKwogMjAx
OC0xMC0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBmYWxzZSBwb3NpdGl2ZSBsZWFrcyB3aGVuIHVzaW5nIGN1c3RvbSAtaW5pdCBtZXRob2RzIHRo
YXQgZG9uJ3Qgc3RhcnQgd2l0aCAtaW5pdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHJldmlzaW9uIDIzNzM2
NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTMgKzIxNCwxMyBAQCAtICh2b2lkKV93ZWJfd3Jp
dGVQcm9taXNlZFJURkRGcm9tQXJjaGl2CiAgICAgaWYgKGNvbnRhaW5zSW1hZ2UgJiYgW3N1YnJl
c291cmNlcyBjb3VudF0gPiAwKSB7CiAgICAgICAgIFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSA9
IFtzdWJyZXNvdXJjZXMgb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgTlNTdHJpbmcgKnN1YnJl
c291cmNlTUlNRVR5cGUgPSBbc3VicmVzb3VyY2UgTUlNRVR5cGVdOwotICAgICAgICBpZiAoTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoc3VicmVzb3Vy
Y2VNSU1FVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlw
ZShzdWJyZXNvdXJjZU1JTUVUeXBlKSkKKyAgICAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShzdWJyZXNvdXJjZU1JTUVUeXBlKSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHN1YnJlc291cmNlTUlNRVR5cGUpKQog
ICAgICAgICAgICAgcmVzb3VyY2UgPSBzdWJyZXNvdXJjZTsKICAgICB9CiAgICAgQVNTRVJUKHJl
c291cmNlICE9IG5pbCk7CiAgICAgCi0gICAgQVNTRVJUKCFjb250YWluc0ltYWdlIHx8IE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKFtyZXNvdXJjZSBN
SU1FVHlwZV0pIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUo
W3Jlc291cmNlIE1JTUVUeXBlXSkpOwotICAgIGlmICghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShbcmVzb3VyY2UgTUlN
RVR5cGVdKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFty
ZXNvdXJjZSBNSU1FVHlwZV0pKQorICAgIEFTU0VSVCghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoW3Jlc291cmNlIE1JTUVUeXBlXSkg
fHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShbcmVzb3VyY2Ug
TUlNRVR5cGVdKSk7CisgICAgaWYgKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5cGVdKSB8fCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNvdXJjZSBNSU1FVHlwZV0p
KQogICAgICAgICBbc2VsZiBfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50Olty
ZXNvdXJjZSBfZmlsZVdyYXBwZXJSZXByZXNlbnRhdGlvbl1dOwogICAgIAogfQpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0JKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
MjUgKzEwNCwyNSBAQCArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiAKICsgKE5TQXJy
YXkgKilzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0
aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0
YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0
aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVh
a1JlZigpOwogICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKIH0KIAog
KyAoTlNBcnJheSAqKXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5T
QXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3Ry
aW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRO
b25JbWFnZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0
cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gc3Rh
dGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljVW5zdXBwb3J0ZWRU
ZXh0TUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRV
bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBOU0FycmF5
ICpzdGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1J
TUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKS5sZWFrUmVmKCk7CiAg
ICAgcmV0dXJuIHN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjM3MzY3
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDIwLDcgKzM0MjAsNyBAQCArICh2b2lkKV91bnJlZ2lzdGVyVmlld0NsYXNz
QW5kUmVwcmVzZW50CiAgICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBtYWludGFpbiBNSU1F
VHlwZSByZWdpc3RyYXRpb25zICh3aGljaCBjYW4gYmUgZHluYW1pY2FsbHkgY2hhbmdlZCkKICAg
ICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9p
bmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8v
cHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3Rl
bSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCi0gICAgTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5yZW1vdmUoTUlNRVR5cGUpOworICAg
IE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkucmVtb3ZlKE1J
TUVUeXBlKTsKIH0KIAogKyAodm9pZClfcmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNzKXZpZXdDbGFz
cyByZXByZXNlbnRhdGlvbkNsYXNzOihDbGFzcylyZXByZXNlbnRhdGlvbkNsYXNzIGZvclVSTFNj
aGVtZTooTlNTdHJpbmcgKilVUkxTY2hlbWUKQEAgLTM0MzIsNyArMzQzMiw3IEBAICsgKHZvaWQp
X3JlZ2lzdGVyVmlld0NsYXNzOihDbGFzcyl2aWV3Q2wKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBN
SU1FVHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxp
bWl0ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEg
ZnV0dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1
dHVyZSByb2J1c3RuZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1MVmll
dyBjbGFzc10pCi0gICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzKCkuYWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3Vw
cG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogICAgIAogICAgIC8vIFRo
aXMgaXMgdXNlZCB0byBtYWtlIF9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSBmYXN0
ZXIuCiAgICAgLy8gV2l0aG91dCB0aGlzIHNldCwgd2UnZCBoYXZlIHRvIGNyZWF0ZSB0aGUgTUlN
RSB0eXBlIGVhY2ggdGltZS4KQEAgLTY5OTcsNyArNjk5Nyw3IEBAICsgKHZvaWQpcmVnaXN0ZXJW
aWV3Q2xhc3M6KENsYXNzKXZpZXdDbGEKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSBy
ZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFu
bmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJl
dmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1
c3RuZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1MVmlldyBjbGFzc10p
Ci0gICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
KCkuYWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogfQogCiAtICh2b2lkKXNldEdyb3VwTmFt
ZTooTlNTdHJpbmcgKilncm91cE5hbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353011</attachid>
            <date>2018-10-23 18:08:26 -0700</date>
            <delta_ts>2018-10-24 09:56:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190838-20181023180825.patch</filename>
            <type>text/plain</type>
            <size>45849</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE4LTEwLTIzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cDog
TUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vZGVybml6ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGxp
c3RzIGluIE1JTUVUeXBlUmVnaXN0cnkuIE1ha2UgdGhlCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0
IHJldHVybiB0aGVzZSBsaXN0IGJlIHNlbGYtY29udGFpbmVkLiBVc2UgTmV2ZXJEZXN0cm95PD4g
dG8KKyAgICAgICAgYWxsb2NhdGUgdGhlIGxvY2FsIHN0YXRpYyB2YXJpYWJsZS4gVXNlIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdCgpIGFuZAorICAgICAgICBtYWtlTmV2ZXJEZXN0cm95ZWQoKSB0byBp
bml0aWFsaXplIE5ldmVyRGVzdHJveTw+IHZhcmlhYmxlcyBvbmx5IG9uY2UuCisKKyAgICAgICAg
c3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcyB3aWxsIGJlIGRlbGV0ZWQgYW5kIGFsbCB0
aGUgY2FsbHMgdG8gaXQgCisgICAgICAgIHdpbGwgYmUgcmVwbGFjZWQgYnkgc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMgYmVjYXVzZSB0aGV5IGFyZSBpZGVudGljYWwuCisKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZl
RmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMpOiBUaGlzIGZ1bmN0aW9uCisg
ICAgICAgIGlzIGNhbGxlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzKCkuIFNvIGl0CisgICAgICAgIHNob3VsZCBub3QgaGF2ZSBhIGRpcmVjdCBjYWxs
IHRvIGl0LiBJbnN0ZWFkLCBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcworICAgICAgICBpcyBw
YXNzZWQgdG8gaXQuCisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6c3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpwZGZNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNv
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEph
dmFTY3JpcHRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVk
SmF2YVNjcmlwdE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplUERGTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVT
dXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpp
bml0aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aW5pdGlhbGl6ZVVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VN
SU1FVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6OmdldFN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3lz
dGVtUHJldmlld01JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckNHOjplbmNvZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVk
RGVmYXVsdEltYWdlU291cmNlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0SW1h
Z2VTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmFsbG93ZWRJbWFnZVVUSXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkSW1hZ2VVVEkpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZSk6CisKIDIwMTgtMTAtMjMgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzI2MS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHJl
dmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOSArOTUsOCBAQCBSZWZQdHI8QXJjaGl2
ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHVybCwgKmRh
dGEpOwogfQogCi12b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVU
eXBlcygpCit2b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5cGVzKQog
ewotICAgIGF1dG8mIG1pbWVUeXBlcyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzKCk7CiAgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IGFyY2hpdmVNSU1F
VHlwZXMoKS5rZXlzKCkpCiAgICAgICAgIG1pbWVUeXBlcy5hZGQobWltZVR5cGUpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCShy
ZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEFyY2hpdmVG
YWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25z
dCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwm
LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCk7CisgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAy
MzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6
Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU1LDIxMCArNTUs
MjM1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVz
Owotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlczsKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZzsKLXN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSmF2
YVNjcmlwdE1JTUVUeXBlczsKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiogc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
Owotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBwZGZN
SU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4qIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cygpCiB7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsKLSAgICBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjsK
LQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8U3RyaW5nPiB7CiAjaWYgVVNFKENHKQotICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUg
c3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2UgVVRJcyBmb3Igd2hpY2ggQ29yZVNlcnZpY2VzIGhhcyBh
IGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBlLiBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIGFsbG93ZWRJ
bWFnZVVUSXMoKS4KLSAgICBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIGFsbG93ZWRJbWFnZU1J
TUVUeXBlc1tdID0geyAiaW1hZ2UvdGlmZiJfcywgImltYWdlL2dpZiJfcywgImltYWdlL2pwZWci
X3MsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MsICJpbWFnZS9qcDIiX3MsICJpbWFnZS9w
bmciX3MsICJpbWFnZS9ibXAiX3MgfTsKLSAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogYWxsb3dl
ZEltYWdlTUlNRVR5cGVzKSB7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQo
bWltZVR5cGUpOwotICAgICAgICBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQo
bWltZVR5cGUpOwotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICBmb3IgKGF1dG8mIHV0aSA6
IGFsbG93ZWRJbWFnZVVUSXMoKSkgewotICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVG
b3JJbWFnZVNvdXJjZVR5cGUodXRpKTsKLSAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMo
bWltZVR5cGUpKTsKLSAgICAgICAgICAgIEFTU0VSVChzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlN
RVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgZm9yIChhdXRvJiBtaW1lIDogKnN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzKQotICAgICAgICBBU1NFUlRfVU5VU0VEKG1pbWUsIGFsbG93ZWRJbWFnZVVUSXMoKS5jb250
YWlucyhVVElGcm9tTUlNRVR5cGUobWltZSkpKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBG
YXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRoZXIuCi0g
ICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmFkZCgiaW1hZ2UveC1pY29uIik7Ci0gICAgc3Vw
cG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS94LWljb24iKTsKKyAgICAg
ICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBzdWJzZXQgb2YgYWxsb3dlZCBpbWFnZSBVVElzIGZv
ciB3aGljaCBDb3JlU2VydmljZXMgaGFzIGEgY29ycmVzcG9uZGluZyBNSU1FIHR5cGUuCisgICAg
ICAgICJpbWFnZS90aWZmIl9zLAorICAgICAgICAiaW1hZ2UvZ2lmIl9zLAorICAgICAgICAiaW1h
Z2UvanBlZyJfcywKKyAgICAgICAgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywKKyAgICAg
ICAgImltYWdlL2pwMiJfcywKKyAgICAgICAgImltYWdlL3BuZyJfcywKKyAgICAgICAgImltYWdl
L2JtcCJfcywKIAotICAgIC8vICBXZSBvbmx5IGdldCBvbmUgTUlNRSB0eXBlIHBlciBVVEksIGhl
bmNlIG91ciBuZWVkIHRvIGFkZCB0aGVzZSBtYW51YWxseQotICAgIHN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzLT5hZGQoImltYWdlL3BqcGVnIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1J
TUVUeXBlcy0+YWRkKCJpbWFnZS9wanBlZyIpOworICAgICAgICAiaW1hZ2UveC1pY29uIl9zLCAv
LyBGYXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRoZXIu
CisgICAgICAgICJpbWFnZS9wanBlZyJfcywgLy8gIFdlIG9ubHkgZ2V0IG9uZSBNSU1FIHR5cGUg
cGVyIFVUSSwgaGVuY2Ugb3VyIG5lZWQgdG8gYWRkIHRoZXNlIG1hbnVhbGx5CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIC8vIEFkZCBtYWxmb3JtZWQgaW1hZ2UgbWltZXR5cGUgZm9y
IGNvbXBhdGliaWxpdHkgd2l0aCBNYWlsIGFuZCB0byBoYW5kbGUgbWFsZm9ybWVkIG1pbWV0eXBl
cyBmcm9tIHRoZSBuZXQKLSAgICAvLyBUaGVzZSB3ZXJlIHJlbW92ZWQgZm9yIDxyZGFyOi8vcHJv
YmxlbS82NTY0NTM4PiBSZS1lbmFibGUgVVRJIGNvZGUgaW4gV2ViQ29yZSBub3cgdGhhdCBNb2Jp
bGVDb3JlU2VydmljZXMgZXhpc3RzCi0gICAgLy8gQnV0IE1haWwgcmVsaWVzIG9uIGF0IGxlYXN0
IGltYWdlL3RpZiByZXBvcnRlZCBhcyBiZWluZyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90
aWZmKS4KLSAgICAvLyBUaGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gTWFpbCBhZGRyZXNzZXM6Ci0g
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc4Nzk1MTA+IE1haWwgc2hvdWxkIHVzZSBzdGFuZGFyZCBp
bWFnZSBtaW1ldHlwZXMKLSAgICAvLyBhbmQgd2UgZml4IHNuaWZmaW5nIHNvIHRoYXQgaXQgY29y
cmVjdHMgaXRlbXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4gaW1hZ2UvanBlZy4KLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgbWFsZm9ybWVkTUlNRVR5cGVzW10gPSB7CisgICAgICAgIC8vIEFk
ZCBtYWxmb3JtZWQgaW1hZ2UgbWltZXR5cGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBNYWlsIGFu
ZCB0byBoYW5kbGUgbWFsZm9ybWVkIG1pbWV0eXBlcyBmcm9tIHRoZSBuZXQKKyAgICAgICAgLy8g
VGhlc2Ugd2VyZSByZW1vdmVkIGZvciA8cmRhcjovL3Byb2JsZW0vNjU2NDUzOD4gUmUtZW5hYmxl
IFVUSSBjb2RlIGluIFdlYkNvcmUgbm93IHRoYXQgTW9iaWxlQ29yZVNlcnZpY2VzIGV4aXN0cwor
ICAgICAgICAvLyBCdXQgTWFpbCByZWxpZXMgb24gYXQgbGVhc3QgaW1hZ2UvdGlmIHJlcG9ydGVk
IGFzIGJlaW5nIHN1cHBvcnRlZCAoc2hvdWxkIGJlIGltYWdlL3RpZmYpLgorICAgICAgICAvLyBU
aGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gTWFpbCBhZGRyZXNzZXM6CisgICAgICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS83ODc5NTEwPiBNYWlsIHNob3VsZCB1c2Ugc3RhbmRhcmQgaW1hZ2UgbWltZXR5
cGVzCisgICAgICAgIC8vIGFuZCB3ZSBmaXggc25pZmZpbmcgc28gdGhhdCBpdCBjb3JyZWN0cyBp
dGVtcyBzdWNoIGFzIGltYWdlL2pwZyAtPiBpbWFnZS9qcGVnLgorCiAgICAgICAgIC8vIEpQRUcg
KGltYWdlL2pwZWcpCi0gICAgICAgICJpbWFnZS9qcGciLCAiaW1hZ2UvanBfIiwgImltYWdlL2pw
ZV8iLCAiYXBwbGljYXRpb24vanBnIiwgImFwcGxpY2F0aW9uL3gtanBnIiwgImltYWdlL3BpcGVn
IiwKLSAgICAgICAgImltYWdlL3ZuZC5zd2l0ZnZpZXctanBlZyIsICJpbWFnZS94LXhiaXRtYXAi
LAorICAgICAgICAiaW1hZ2UvanBnIl9zLAorICAgICAgICAiaW1hZ2UvanBfIl9zLAorICAgICAg
ICAiaW1hZ2UvanBlXyJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL2pwZyJfcywKKyAgICAgICAg
ImFwcGxpY2F0aW9uL3gtanBnIl9zLAorICAgICAgICAiaW1hZ2UvcGlwZWciX3MsCisgICAgICAg
ICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciX3MsCisgICAgICAgICJpbWFnZS94LXhiaXRtYXAi
X3MsCisKICAgICAgICAgLy8gR0lGIChpbWFnZS9naWYpCi0gICAgICAgICJpbWFnZS9naV8iLAor
ICAgICAgICAiaW1hZ2UvZ2lfIl9zLAorCiAgICAgICAgIC8vIFBORyAoaW1hZ2UvcG5nKQotICAg
ICAgICAiYXBwbGljYXRpb24vcG5nIiwgImFwcGxpY2F0aW9uL3gtcG5nIiwKKyAgICAgICAgImFw
cGxpY2F0aW9uL3BuZyJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3gtcG5nIl9zLAorCiAgICAg
ICAgIC8vIFRJRkYgKGltYWdlL3RpZmYpCi0gICAgICAgICJpbWFnZS94LXRpZiIsICJpbWFnZS90
aWYiLCAiaW1hZ2UveC10aWZmIiwgImFwcGxpY2F0aW9uL3RpZiIsICJhcHBsaWNhdGlvbi94LXRp
ZiIsICJhcHBsaWNhdGlvbi90aWZmIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtdGlmZiIsCisg
ICAgICAgICJpbWFnZS94LXRpZiJfcywKKyAgICAgICAgImltYWdlL3RpZiJfcywKKyAgICAgICAg
ImltYWdlL3gtdGlmZiJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3RpZiJfcywKKyAgICAgICAg
ImFwcGxpY2F0aW9uL3gtdGlmIl9zLAorICAgICAgICAiYXBwbGljYXRpb24vdGlmZiJfcywKKyAg
ICAgICAgImFwcGxpY2F0aW9uL3gtdGlmZiJfcywKKwogICAgICAgICAvLyBCTVAgKGltYWdlL2Jt
cCwgaW1hZ2UveC1iaXRtYXApCi0gICAgICAgICJpbWFnZS94LWJtcCIsICJpbWFnZS94LXdpbi1i
aXRtYXAiLCAiaW1hZ2UveC13aW5kb3dzLWJtcCIsICJpbWFnZS9tcy1ibXAiLCAiaW1hZ2UveC1t
cy1ibXAiLAotICAgICAgICAiYXBwbGljYXRpb24vYm1wIiwgImFwcGxpY2F0aW9uL3gtYm1wIiwg
ImFwcGxpY2F0aW9uL3gtd2luLWJpdG1hcCIsCi0gICAgfTsKLSAgICBmb3IgKGF1dG8mIHR5cGUg
OiBtYWxmb3JtZWRNSU1FVHlwZXMpIHsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMt
PmFkZCh0eXBlKTsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRk
KHR5cGUpOwotICAgIH0KKyAgICAgICAgImltYWdlL3gtYm1wIl9zLAorICAgICAgICAiaW1hZ2Uv
eC13aW4tYml0bWFwIl9zLAorICAgICAgICAiaW1hZ2UveC13aW5kb3dzLWJtcCJfcywKKyAgICAg
ICAgImltYWdlL21zLWJtcCJfcywKKyAgICAgICAgImltYWdlL3gtbXMtYm1wIl9zLAorICAgICAg
ICAiYXBwbGljYXRpb24vYm1wIl9zLAorICAgICAgICAiYXBwbGljYXRpb24veC1ibXAiX3MsCisg
ICAgICAgICJhcHBsaWNhdGlvbi94LXdpbi1iaXRtYXAiX3MsCiAjZW5kaWYKLQogI2Vsc2UKLSAg
ICAvLyBhc3N1bWUgdGhhdCBhbGwgaW1wbGVtZW50YXRpb25zIGF0IGxlYXN0IHN1cHBvcnQgdGhl
IGZvbGxvd2luZyBzdGFuZGFyZAotICAgIC8vIGltYWdlIHR5cGVzOgotICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCB0eXBlc1tdID0gewotICAgICAgICAiaW1hZ2UvanBlZyIsCi0gICAgICAg
ICJpbWFnZS9wbmciLAotICAgICAgICAiaW1hZ2UvZ2lmIiwKLSAgICAgICAgImltYWdlL2JtcCIs
Ci0gICAgICAgICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCAgICAvLyBpY28KLSAgICAgICAg
ImltYWdlL3gtaWNvbiIsICAgIC8vIGljbwotICAgICAgICAiaW1hZ2UveC14Yml0bWFwIiAgLy8g
eGJtCi0gICAgfTsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykgewotICAgICAgICBzdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGUpOwotICAgICAgICBzdXBwb3J0ZWRJbWFnZVJl
c291cmNlTUlNRVR5cGVzLT5hZGQodHlwZSk7Ci0gICAgfQotCisgICAgICAgIC8vIGFzc3VtZSB0
aGF0IGFsbCBpbXBsZW1lbnRhdGlvbnMgYXQgbGVhc3Qgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHN0
YW5kYXJkCisgICAgICAgIC8vIGltYWdlIHR5cGVzOgorICAgICAgICAiaW1hZ2UvanBlZyJfcywK
KyAgICAgICAgImltYWdlL3BuZyJfcywKKyAgICAgICAgImltYWdlL2dpZiJfcywKKyAgICAgICAg
ImltYWdlL2JtcCJfcywKKyAgICAgICAgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcywgLy8g
aWNvCisgICAgICAgICJpbWFnZS94LWljb24iX3MsIC8vIGljbworICAgICAgICAiaW1hZ2UveC14
Yml0bWFwIl9zLCAvLyB4Ym0KICNpZiBVU0UoV0VCUCkKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcy0+YWRkKCJpbWFnZS93ZWJwIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVU
eXBlcy0+YWRkKCJpbWFnZS93ZWJwIik7CisgICAgICAgICJpbWFnZS93ZWJwIl9zLAorI2VuZGlm
CiAjZW5kaWYKKyAgICB9OwogCi0jZW5kaWYgLy8gVVNFKENHKQorI2lmIFVTRShDRykKKyNpZm5k
ZWYgTkRFQlVHCisgICAgLy8gRXNudXJlIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkgaXMgaW4g
c3luYyB3aXRoIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuCisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CisgICAgICAgIGZvciAoYXV0byYgaW1hZ2VTb3VyY2VUeXBlIDogc3VwcG9ydGVkRGVmYXVs
dEltYWdlU291cmNlVHlwZXMoKSkgeworICAgICAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVU
eXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGltYWdlU291cmNlVHlwZSk7CisgICAgICAgICAgICBBU1NF
UlRfSU1QTElFUyghbWltZVR5cGUuaXNFbXB0eSgpLCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy5n
ZXQoKS5jb250YWlucyhtaW1lVHlwZSkpOworICAgICAgICB9CisgICAgfSk7CisjZW5kaWYKKyNl
bmRpZgorICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKIH0KIAotc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcoKQorc3RhdGlj
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCkKIHsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlc0ZvckVuY29kaW5nID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+OwotCi0jaWYgVVNFKENHKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBzdXBwb3J0ZWRUeXBlcyA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9u
Q29weVR5cGVJZGVudGlmaWVycygpKTsKLSAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENv
dW50KHN1cHBvcnRlZFR5cGVzLmdldCgpKTsKLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIHN1cHBvcnRlZFR5cGUgPSByZWludGVy
cHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1cHBvcnRlZFR5
cGVzLmdldCgpLCBpKSk7Ci0gICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1h
Z2VTb3VyY2VUeXBlKHN1cHBvcnRlZFR5cGUpOwotICAgICAgICBpZiAoIW1pbWVUeXBlLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFk
ZChtaW1lVHlwZSk7Ci0gICAgfQorICAgIHN0YXRpYyBjb25zdCBhdXRvIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzRm9yRW5jb2RpbmcgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3VwcG9ydGVkVHlwZXMgPSBhZG9wdENGKENHSW1hZ2VEZXN0
aW5hdGlvbkNvcHlUeXBlSWRlbnRpZmllcnMoKSk7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rp
bmc7CisgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVkVHlw
ZXMuZ2V0KCkpOworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7
CisgICAgICAgICAgICBDRlN0cmluZ1JlZiBzdXBwb3J0ZWRUeXBlID0gcmVpbnRlcnByZXRfY2Fz
dDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdXBwb3J0ZWRUeXBlcy5nZXQo
KSwgaSkpOworICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVNv
dXJjZVR5cGUoc3VwcG9ydGVkVHlwZSk7CisgICAgICAgICAgICBpZiAoIW1pbWVUeXBlLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5n
LmFkZChtaW1lVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzRm9yRW5jb2Rpbmc7CisgICAgfSgpKTsKICNlbHNlCi0gICAgLy8gRklYTUU6IEFk
ZCBXaW5kb3dzIHN1cHBvcnQgZm9yIGFsbCB0aGUgc3VwcG9ydGVkIFVUSSdzIHdoZW4gYSB3YXkg
dG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KLSAgICAv
LyBGb3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBKUEVHIGFuZCBHSUYuICBTZWUgPHJkYXI6Ly9w
cm9ibGVtLzYwOTUyODY+LgotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmct
PmFkZCgiaW1hZ2UvcG5nIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGlu
Zy0+YWRkKCJpbWFnZS9qcGVnIik7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNv
ZGluZy0+YWRkKCJpbWFnZS9naWYiKTsKLSNlbmRpZgorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXNGb3JFbmNvZGluZyA9c3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewor
I2lmIFVTRShDRykKKyAgICAgICAgLy8gRklYTUU6IEFkZCBXaW5kb3dzIHN1cHBvcnQgZm9yIGFs
bCB0aGUgc3VwcG9ydGVkIFVUSSdzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBl
IHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KKyAgICAgICAgLy8gRm9yIG5vdywgb25seSBzdXBw
b3J0IFBORywgSlBFRyBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgorICAg
ICAgICAiaW1hZ2UvcG5nIl9zLAorICAgICAgICAiaW1hZ2UvanBlZyJfcywKKyAgICAgICAgImlt
YWdlL2dpZiJfcywKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL3BuZyIpOwotICAgIHN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvanBlZyIpOwotICAgIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvdGlmZiIpOwotICAgIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvYm1wIik7Ci0gICAgc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9pY28iKTsKKyAgICAgICAgImlt
YWdlL3BuZyJfcywKKyAgICAgICAgImltYWdlL2pwZWciX3MsCisgICAgICAgICJpbWFnZS90aWZm
Il9zLAorICAgICAgICAiaW1hZ2UvYm1wIl9zLAorICAgICAgICAiaW1hZ2UvaWNvIl9zLAogI2Vs
aWYgVVNFKENBSVJPKQotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFk
ZCgiaW1hZ2UvcG5nIik7CisgICAgICAgICJpbWFnZS9wbmciX3MsCiAjZW5kaWYKLX0KLQotc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKQotewotICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1s
I2phdmFzY3JpcHQtbWltZS10eXBlCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVz
W10gPSB7Ci0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQiLAotICAgICAgICAidGV4dC9lY21hc2Ny
aXB0IiwKLSAgICAgICAgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLAotICAgICAgICAiYXBwbGlj
YXRpb24vZWNtYXNjcmlwdCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiLAot
ICAgICAgICAiYXBwbGljYXRpb24veC1lY21hc2NyaXB0IiwKLSAgICAgICAgInRleHQvamF2YXNj
cmlwdDEuMCIsCi0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjEiLAotICAgICAgICAidGV4dC9q
YXZhc2NyaXB0MS4yIiwKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyIsCi0gICAgICAgICJ0
ZXh0L2phdmFzY3JpcHQxLjQiLAotICAgICAgICAidGV4dC9qYXZhc2NyaXB0MS41IiwKLSAgICAg
ICAgInRleHQvanNjcmlwdCIsCi0gICAgICAgICJ0ZXh0L2xpdmVzY3JpcHQiLAotICAgICAgICAi
dGV4dC94LWphdmFzY3JpcHQiLAotICAgICAgICAidGV4dC94LWVjbWFzY3JpcHQiCiAgICAgfTsK
LQotICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0gICAgZm9yIChhdXRvKiB0eXBlIDogdHlwZXMp
Ci0gICAgICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMtPmFkZCh0eXBlKTsKKyNlbmRp
ZgorICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nOwogfQogCi1z
dGF0aWMgdm9pZCBpbml0aWFsaXplUERGTUlNRVR5cGVzKCkKK3N0YXRpYyBjb25zdCBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlcygpCiB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsKLSAgICAgICAg
ImFwcGxpY2F0aW9uL3BkZiIsCi0gICAgICAgICJ0ZXh0L3BkZiIKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBv
cnRlZEphdmFTY3JpcHRNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7
CisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3Njcmlw
dGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCisgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQi
X3MsCisgICAgICAgICJ0ZXh0L2VjbWFzY3JpcHQiX3MsCisgICAgICAgICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Il9zLAorICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCJfcywKKyAgICAg
ICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3gt
ZWNtYXNjcmlwdCJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMCJfcywKKyAgICAgICAg
InRleHQvamF2YXNjcmlwdDEuMSJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMiJfcywK
KyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlw
dDEuNCJfcywKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNSJfcywKKyAgICAgICAgInRleHQv
anNjcmlwdCJfcywKKyAgICAgICAgInRleHQvbGl2ZXNjcmlwdCJfcywKKyAgICAgICAgInRleHQv
eC1qYXZhc2NyaXB0Il9zLAorICAgICAgICAidGV4dC94LWVjbWFzY3JpcHQiX3MsCiAgICAgfTsK
LQotICAgIHBkZk1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPjsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgcGRmTUlN
RVR5cGVzLT5hZGQodHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlw
ZXM7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWROb25JbWFnZU1pbWVUeXBl
cygpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7Ci0gICAgICAg
ICJ0ZXh0L2h0bWwiLAotICAgICAgICAidGV4dC94bWwiLAotICAgICAgICAidGV4dC94c2wiLAot
ICAgICAgICAidGV4dC9wbGFpbiIsCi0gICAgICAgICJ0ZXh0LyIsCi0gICAgICAgICJhcHBsaWNh
dGlvbi94bWwiLAotICAgICAgICAiYXBwbGljYXRpb24veGh0bWwreG1sIiwKK0hhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0
ZWROb25JbWFnZU1JTUVUeXBlcygpCit7CisgICAgc3RhdGljIGF1dG8gc3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICAgICAgICAgICJ0ZXh0L2h0
bWwiX3MsCisgICAgICAgICAgICAidGV4dC94bWwiX3MsCisgICAgICAgICAgICAidGV4dC94c2wi
X3MsCisgICAgICAgICAgICAidGV4dC9wbGFpbiJfcywKKyAgICAgICAgICAgICJ0ZXh0LyJfcywK
KyAgICAgICAgICAgICJhcHBsaWNhdGlvbi94bWwiX3MsCisgICAgICAgICAgICAiYXBwbGljYXRp
b24veGh0bWwreG1sIl9zLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAiYXBw
bGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwiLAotICAgICAgICAiYXBwbGljYXRpb24vcnNzK3ht
bCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi9hdG9tK3htbCIsCisgICAgICAgICAgICAiYXBwbGlj
YXRpb24vdm5kLndhcC54aHRtbCt4bWwiX3MsCisgICAgICAgICAgICAiYXBwbGljYXRpb24vcnNz
K3htbCJfcywKKyAgICAgICAgICAgICJhcHBsaWNhdGlvbi9hdG9tK3htbCJfcywKICNlbmRpZgot
ICAgICAgICAiYXBwbGljYXRpb24vanNvbiIsCi0gICAgICAgICJpbWFnZS9zdmcreG1sIiwKKyAg
ICAgICAgICAgICJhcHBsaWNhdGlvbi9qc29uIl9zLAorICAgICAgICAgICAgImltYWdlL3N2Zyt4
bWwiX3MsCiAjaWYgRU5BQkxFKEZUUERJUikKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtZnRwLWRp
cmVjdG9yeSIsCisgICAgICAgICAgICAiYXBwbGljYXRpb24veC1mdHAtZGlyZWN0b3J5Il9zLAog
I2VuZGlmCi0gICAgICAgICJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIgorICAgICAgICAgICAg
Im11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiX3MsCiAgICAgICAgIC8vIE5vdGU6IEFkZGluZyBh
IG5ldyB0eXBlIGhlcmUgd2lsbCBwcm9iYWJseSByZW5kZXIgaXQgYXMgSFRNTC4KICAgICAgICAg
Ly8gVGhpcyBjYW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGll
cy4KLSAgICB9OworICAgICAgICB9OworICAgICAgICBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cy5hZGQoc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcygpLmJlZ2luKCksIHN1cHBvcnRlZEph
dmFTY3JpcHRNSU1FVHlwZXMoKS5lbmQoKSk7CisjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBF
TkFCTEUoTUhUTUwpCisgICAgICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2
ZU1JTUVUeXBlcyhzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyk7CisjZW5kaWYKKyAgICAgICAg
cmV0dXJuIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOworICAgIH0oKSk7CisgICAgcmV0dXJu
IHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOworfQogCi0gICAgaWYgKCFzdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlcygpOworY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCkKK3sKKyAgICBz
dGF0aWMgY29uc3QgYXV0byBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworI2lmIEVOQUJMRShWSURFTykKKyAgICAgICAg
TWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTsK
KyNlbmRpZgorICAgICAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisgICAgfSgp
KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7Cit9CiAKLSAgICBzdXBwb3J0
ZWROb25JbWFnZU1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiB7ICpzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzIH07Ci0gICAgZm9yIChh
dXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzLT5h
ZGQodHlwZSk7Citjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgTUlNRVR5cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHBkZk1J
TUVUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICAgICAgImFwcGxp
Y2F0aW9uL3BkZiJfcywKKyAgICAgICAgInRleHQvcGRmIl9zLAorICAgIH07CisgICAgcmV0dXJu
IHBkZk1JTUVUeXBlczsKK30KIAotI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1I
VE1MKQotICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcygp
OworY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVU
eXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiB1
bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7
CisgICAgICAgICJ0ZXh0L2NhbGVuZGFyIl9zLAorICAgICAgICAidGV4dC94LWNhbGVuZGFyIl9z
LAorICAgICAgICAidGV4dC94LXZjYWxlbmRhciJfcywKKyAgICAgICAgInRleHQvdmNhbGVuZGFy
Il9zLAorICAgICAgICAidGV4dC92Y2FyZCJfcywKKyAgICAgICAgInRleHQveC12Y2FyZCJfcywK
KyAgICAgICAgInRleHQvZGlyZWN0b3J5Il9zLAorICAgICAgICAidGV4dC9sZGlmIl9zLAorICAg
ICAgICAidGV4dC9xaWYiX3MsCisgICAgICAgICJ0ZXh0L3gtcWlmIl9zLAorICAgICAgICAidGV4
dC94LWNzdiJfcywKKyAgICAgICAgInRleHQveC12Y2YiX3MsCisjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgICAgICJ0ZXh0L3J0ZiJfcywKKyNlbHNlCisgICAgICAgICJ0ZXh0L3ZuZC5z
dW4uajJtZS5hcHAtZGVzY3JpcHRvciJfcywKICNlbmRpZgorICAgIH07CisgICAgcmV0dXJuIHVu
c3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKIH0KIAogc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+
KiB0eXBlc0ZvckNvbW1vbkV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTM5
Miw0MSArNDE3LDYgQEAgVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TWVkaQog
ICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRNZWRp
YU1JTUVUeXBlcygpCi17Ci0gICAgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMgPSBuZXcgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0jaWYgRU5BQkxFKFZJREVPKQot
ICAgIE1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcygqc3VwcG9ydGVkTWVkaWFNSU1FVHlw
ZXMpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRN
SU1FVHlwZXMoKQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0gewot
ICAgICAgICAidGV4dC9jYWxlbmRhciJfcywKLSAgICAgICAgInRleHQveC1jYWxlbmRhciJfcywK
LSAgICAgICAgInRleHQveC12Y2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3ZjYWxlbmRhciJf
cywKLSAgICAgICAgInRleHQvdmNhcmQiX3MsCi0gICAgICAgICJ0ZXh0L3gtdmNhcmQiX3MsCi0g
ICAgICAgICJ0ZXh0L2RpcmVjdG9yeSJfcywKLSAgICAgICAgInRleHQvbGRpZiJfcywKLSAgICAg
ICAgInRleHQvcWlmIl9zLAotICAgICAgICAidGV4dC94LXFpZiJfcywKLSAgICAgICAgInRleHQv
eC1jc3YiX3MsCi0gICAgICAgICJ0ZXh0L3gtdmNmIl9zLAotI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQotICAgICAgICAidGV4dC9ydGYiX3MsCi0jZWxzZQotICAgICAgICAidGV4dC92bmQuc3Vu
LmoybWUuYXBwLWRlc2NyaXB0b3IiX3MsCi0jZW5kaWYKLSAgICB9OwotCi0gICAgdW5zdXBwb3J0
ZWRUZXh0TUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+OwotICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKQotICAgICAgICB1bnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXMtPmFkZCh0eXBlKTsKLX0KLQogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc2l6ZV90IHBv
cyA9IHBhdGgucmV2ZXJzZUZpbmQoJy4nKTsKQEAgLTQ0Myw5ICs0MzMsNyBAQCBib29sIE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwotICAg
IHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1J
TUVUeXBlKG1pbWVUeXBlKSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCku
Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKG1pbWVUeXBlKSk7CiB9CiAKIGJvb2wgTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVZpZGVvT3JTVkdNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQpAQCAtNDYxLDI0ICs0NDksMTMgQEAgYm9vbCBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZEltYWdlVgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQotewotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIXN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMpCi0g
ICAgICAgIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwotICAgIHJldHVybiBz
dXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5jb250YWlucyhnZXROb3JtYWxpemVkTUlN
RVR5cGUobWltZVR5cGUpKTsKLX0KLQogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0Zv
ckVuY29kaW5nKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZygpOwotICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5n
LT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
Rm9yRW5jb2RpbmcoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKQEAgLTQ5NCw5ICs0NzEsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVk
SmF2YVNjCiAgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZDsKICAgICB9CiAKLSAgICBpZiAoIXN1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVTdXBwb3J0ZWRO
b25JbWFnZU1pbWVUeXBlcygpOwotICAgIHJldHVybiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZEphdmFTY3JpcHRN
SU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3Ry
eTo6aXNTdXBwb3J0ZWRTdHlsZVNoZWV0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
QEAgLTUzOSwxOCArNTE0LDE0IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRO
b25JbWEKIHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcykKLSAgICAgICAgaW5pdGlh
bGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCk7Ci0gICAgcmV0dXJuIHN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIXN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXpl
U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1F
VHlwZXMtPmNvbnRhaW5zKG1pbWVUeXBlKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1F
VHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRUZXh0VHJhY2tNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAt
NTYyLDkgKzUzMyw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRleHQK
IHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCF1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5
cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNjIyLDkgKzU5MSw3IEBA
IGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShjb24KIHsKICAgICBpZiAobWlt
ZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFwZGZNSU1F
VHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVQREZNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gcGRm
TUlNRVR5cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHBkZk1JTUVUeXBlcygp
LmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Bvc3RT
Y3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNjUxLDQ5ICs2MTgsNiBA
QCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZShjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQotewotICAg
IGlmICghc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcygpOwotICAgIHJldHVybiAqc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7
Ci19Ci0KLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKCkKLXsK
LSAgICBpZiAoIXN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMpCi0gICAgICAgIGluaXRp
YWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwotICAgIHJldHVybiAqc3VwcG9ydGVkSW1h
Z2VSZXNvdXJjZU1JTUVUeXBlczsKLX0KLQotSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5
cGVzKCkKLXsKLSAgICBpZiAoIXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKQotICAgICAgICBp
bml0aWFsaXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBv
cnRlZE5vbkltYWdlTUlNRVR5cGVzOwotfQotCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTWVkaWFN
SU1FVHlwZXMoKQotewotICAgIGlmICghc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpCi0gICAgICAg
IGluaXRpYWxpemVTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpOwotICAgIHJldHVybiAqc3VwcG9y
dGVkTWVkaWFNSU1FVHlwZXM7Ci19Ci0KLQotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBlcygpCi17
Ci0gICAgaWYgKCFwZGZNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxpemVQREZNSU1FVHlwZXMo
KTsKLSAgICByZXR1cm4gKnBkZk1JTUVUeXBlczsKLX0KLQotY29uc3QgSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFVuc3VwcG9y
dGVkVGV4dE1JTUVUeXBlcygpCi17Ci0gICAgaWYgKCF1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMp
Ci0gICAgICAgIGluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKLSAgICByZXR1
cm4gKnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKLX0KLQogY29uc3QgU3RyaW5nJiBkZWZhdWx0
TUlNRVR5cGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IGRl
ZmF1bHRNSU1FVHlwZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtIikpOwpAQCAtNzAxLDcgKzYyNSw3IEBAIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVU
eXBlKCkKIH0KIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKLWNvbnN0IEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTeXN0ZW1Q
cmV2aWV3TUlNRVR5cGVzKCkKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4+IHN5c3RlbVByZXZpZXdNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8U3RyaW5nPiB7CiAgICAgICAgIC8vIFRoZSBvZmZpY2lhbCB0eXBlOiBodHRwczovL3d3dy5p
YW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9tb2RlbC92bmQudXNkeit6aXAKQEAgLTcx
Nyw3ICs2NDEsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JCiB7
CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiBnZXRTeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwor
ICAgIHJldHVybiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwog
fQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmgJKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgcHVibGljOgog
ICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcg
bG9hZGVkIGFzIGFuIGltYWdlLCBpbmNsdWRpbmcgU1ZHIGFuZCBWaWRlbyAod2hlcmUgc3VwcG9y
dGVkKS4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlVmlk
ZW9PclNWR01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgLy8gQ2hlY2sg
dG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRhYmxlIGZvciBiZWluZyBsb2FkZWQgYXMgYW4g
aW1hZ2UKLSAgICAvLyBkb2N1bWVudCBpbiBhIGZyYW1lLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwotCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGEgTUlNRSB0eXBlIGlzIHN1aXRh
YmxlIGZvciBiZWluZyBlbmNvZGVkLgogICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCkBAIC0xMDgsMTgg
KzEwNCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gbWFrZXMgdGhpcyB0ZXN0IGlzIGFmdGVyIG1hbnkg
b3RoZXIgdGVzdHMgYXJlIGRvbmUgb24gdGhlIE1JTUUgdHlwZS4KICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAot
ICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZl
IHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMuCiAgICAgLy8g
RklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBhdm9pZCBleHBvc2luZyB0aGVz
ZSBzZXRzLCBldmVuIHdvcnNlIGV4cG9zaW5nIG5vbi1jb25zdCByZWZlcmVuY2VzLgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgZ2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgZ2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICBjb25zdCBzdGF0aWMgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1cHBvcnRlZEltYWdlUmVz
b3VyY2VNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRQREZNSU1FVHlwZXMoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mIGdldFVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBl
cygpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgcGRmTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykK
LSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIGdldFN5c3RlbVByZXZpZXdNSU1FVHlwZXMoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mIHN5c3RlbVByZXZpZXdNSU1FVHlwZXMoKTsKICNlbmRpZgogCiAgICAgLy8gRklY
TUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUgc2F5cyB3ZSBzaG91bGQgbm90IGhhdmUgdGhlIHdvcmQg
ImdldCIgaW4gdGhlIG5hbWUgb2YgdGhpcyBmdW5jdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODIsNyArODIsNyBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlOjpjcmVhdGUoSW1hZ2VPYnNlcnZlCiAK
IGJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgcmV0
dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKHR5
cGUpOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5
cGUodHlwZSk7CiB9IAogCiBib29sIEltYWdlOjppc1BERlJlc291cmNlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAkocmV2aXNpb24gMjM3
MzY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZERhdGFTdGF0
dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZQogICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0
dXM6OkVycm9yOwogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGU6IHsKLSAgICAg
ICAgaWYgKCFpc0FsbG93ZWRJbWFnZVVUSSh1dGkpKQorICAgICAgICBpZiAoIWlzU3VwcG9ydElt
YWdlU291cmNlVHlwZSh1dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVz
OjpFcnJvcjsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZTBQcm9w
ZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0
aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKQEAgLTIx
Myw3ICsyMTMsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJDRzo6ZW5jb2RlCiAg
ICAgfQogCiAgICAgY2FzZSBrQ0dJbWFnZVN0YXR1c0NvbXBsZXRlOgotICAgICAgICBpZiAoIWlz
QWxsb3dlZEltYWdlVVRJKHV0aSkpCisgICAgICAgIGlmICghaXNTdXBwb3J0SW1hZ2VTb3VyY2VU
eXBlKHV0aSkpCiAgICAgICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwog
CiAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3Bw
CShyZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9VVElSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEltYWdlVVRJcygp
Citjb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVz
KCkKIHsKICAgICAvLyBDRyBhdCBsZWFzdCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHN0YW5kYXJk
IGltYWdlIHR5cGVzOgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+
IHNfYWxsb3dlZEltYWdlVVRJcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBzdXBwb3J0ZWREZWZhdWx0
SW1hZ2VTb3VyY2VUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKICAgICAg
ICAgImNvbS5jb21wdXNlcnZlLmdpZiIsCiAgICAgICAgICJjb20ubWljcm9zb2Z0LmJtcCIsCiAg
ICAgICAgICJjb20ubWljcm9zb2Z0LmN1ciIsCkBAIC01NCwyNSArNTQsMjQgQEAgSGFzaFNldDxT
dHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCkKICAgICB9OwogCiAjaWZuZGVmIE5ERUJVRwotICAg
IC8vIEJ1dCBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBhcmUgcmVhbGx5IHN1cHBvcnRlZC4K
LSAgICBzdGF0aWMgYm9vbCBjaGVja2VkID0gZmFsc2U7Ci0gICAgaWYgKCFjaGVja2VkKSB7Ci0g
ICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBzeXN0ZW1JbWFnZVVUSXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCkpOwotICAgICAgICBDRkluZGV4IGNvdW50
ID0gQ0ZBcnJheUdldENvdW50KHN5c3RlbUltYWdlVVRJcy5nZXQoKSk7Ci0gICAgICAgIGZvciAo
YXV0byYgaW1hZ2VVVEkgOiBzX2FsbG93ZWRJbWFnZVVUSXMuZ2V0KCkpIHsKLSAgICAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nID0gaW1hZ2VVVEkuY3JlYXRlQ0ZTdHJpbmco
KTsKLSAgICAgICAgICAgIEFTU0VSVChDRkFycmF5Q29udGFpbnNWYWx1ZShzeXN0ZW1JbWFnZVVU
SXMuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIGNvdW50KSwgc3RyaW5nLmdldCgpKSk7CisgICAgLy8g
TWFrZSBzdXJlIHRoYXQgQ0cgc3VwcG9ydHMgdGhlbS4KKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IHN5c3RlbUltYWdlU291cmNlVHlwZXMgPSBhZG9wdENGKENH
SW1hZ2VTb3VyY2VDb3B5VHlwZUlkZW50aWZpZXJzKCkpOworICAgICAgICBDRkluZGV4IGNvdW50
ID0gQ0ZBcnJheUdldENvdW50KHN5c3RlbUltYWdlU291cmNlVHlwZXMuZ2V0KCkpOworICAgICAg
ICBmb3IgKGF1dG8mIGltYWdlU291cmNlVHlwZSA6IHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJj
ZVR5cGVzLmdldCgpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmlu
ZyA9IGltYWdlU291cmNlVHlwZS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgQVNTRVJU
KENGQXJyYXlDb250YWluc1ZhbHVlKHN5c3RlbUltYWdlU291cmNlVHlwZXMuZ2V0KCksIENGUmFu
Z2VNYWtlKDAsIGNvdW50KSwgc3RyaW5nLmdldCgpKSk7CiAgICAgICAgIH0KLSAgICAgICAgY2hl
Y2tlZCA9IHRydWU7Ci0gICAgfQorICAgIH0pOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc19hbGxv
d2VkSW1hZ2VVVElzLmdldCgpOworICAgIHJldHVybiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3Vy
Y2VUeXBlczsKIH0KIAotYm9vbCBpc0FsbG93ZWRJbWFnZVVUSShjb25zdCBTdHJpbmcmIGltYWdl
VVRJKQorYm9vbCBpc1N1cHBvcnRJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiBpbWFnZVNv
dXJjZVR5cGUpCiB7Ci0gICAgcmV0dXJuICFpbWFnZVVUSS5pc0VtcHR5KCkgJiYgYWxsb3dlZElt
YWdlVVRJcygpLmNvbnRhaW5zKGltYWdlVVRJKTsKKyAgICByZXR1cm4gIWltYWdlU291cmNlVHlw
ZS5pc0VtcHR5KCkgJiYgc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNlVHlwZXMoKS5jb250YWlu
cyhpbWFnZVNvdXJjZVR5cGUpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDIzNzM2NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IYXNo
U2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKTsKLWJvb2wgaXNBbGxvd2VkSW1hZ2VVVEko
Y29uc3QgU3RyaW5nJik7Citjb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZERlZmF1bHRJ
bWFnZVNvdXJjZVR5cGVzKCk7Citib29sIGlzU3VwcG9ydEltYWdlU291cmNlVHlwZShjb25zdCBT
dHJpbmcmKTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0JKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1LDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBGSVhNRTogV2h5IGNhbiB3ZSBhc3NlcnQgdGhpcz8gSXQgZG9lc24ndCBzZWVt
IGxpa2UgaXQncyBndWFyYW50ZWVkLgotICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1
cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1F
VHlwZSkpOworICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGUocGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpKTsKIAogICAgIGF1dG8gdHlw
ZXMgPSB3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKTsKICAgICBpZiAocGFzdGVib2FyZEltYWdlLmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MzY3KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxOC0xMC0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIENsZWFudXA6IE1JTUVUeXBlUmVnaXN0cnkgZnVuY3Rpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
S1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgaW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOgorCiAyMDE4
LTEwLTIzICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzcyNjEuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNzM2NykKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU2ODIsNyArNTY4Miw3IEBAIC0gKFVJVmlldyAqKV92aWV3Rm9yRmluZFVJCiAKIC0g
KEJPT0wpX2lzRGlzcGxheWluZ1BERgogewotICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKSkgeworICAgIGZvciAoYXV0
byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkg
ewogICAgICAgICBDbGFzcyBwcm92aWRlckNsYXNzID0gW1tfY29uZmlndXJhdGlvbiBfY29udGVu
dFByb3ZpZGVyUmVnaXN0cnldIHByb3ZpZGVyRm9yTUlNRVR5cGU6bWltZVR5cGVdOwogICAgICAg
ICBpZiAoW19jdXN0b21Db250ZW50VmlldyBpc0tpbmRPZkNsYXNzOnByb3ZpZGVyQ2xhc3NdKQog
ICAgICAgICAgICAgcmV0dXJuIFlFUzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lz
dHJ5Lm1tCShyZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTMsMTYgKzUzLDE2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KFcK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAogI2lmIEVOQUJMRShXS1BERlZJRVcpCi0gICAgZm9yIChh
dXRvJiBtaW1lVHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBl
cygpKQorICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjpwZGZNSU1FVHlwZXMoKSkKICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQcm92aWRlcjpbV0tQREZW
aWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07CiAjZWxpZiBFTkFCTEUoV0tMRUdBQ1lQ
REZWSUVXKQotICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRQREZNSU1FVHlwZXMoKSkKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkpCiAgICAgICAgIFtzZWxmIHJlZ2lz
dGVyUHJvdmlkZXI6W1dLTGVnYWN5UERGVmlldyBjbGFzc10gZm9yTUlNRVR5cGU6bWltZVR5cGVd
OwogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGNvbmZpZ3VyYXRp
b24uX3N5c3RlbVByZXZpZXdFbmFibGVkKSB7Ci0gICAgICAgIGZvciAoYXV0byYgbWltZVR5cGUg
OiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkp
CisgICAgICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkpCiAgICAgICAgICAgICBbc2VsZiByZWdpc3RlclBy
b3ZpZGVyOltXS1N5c3RlbVByZXZpZXdWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07
CiAgICAgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzczNjcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMC0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXA6IE1JTUVUeXBlUmVnaXN0
cnkgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA4MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1Bhc3Rl
Ym9hcmQgX3dlYl93cml0ZVByb21pc2VkUlRGREZyb21BcmNoaXZlOmNvbnRhaW5zSW1hZ2U6XSk6
CisgICAgICAgIFJlcGxhY2UgaXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoKSBieSBp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoKQorICAgICAgICBiZWNhdXNlIHRoZXkgd2VyZSBpZGVu
dGljYWwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAg
ICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6
CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlc10pOgorICAgICAgICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVk
VGV4dE1JTUVUeXBlc10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KCtbV2ViVmlldyBfdW5yZWdpc3RlclZpZXdDbGFzc0FuZFJlcHJlc2VudGF0aW9uQ2xhc3NGb3JN
SU1FVHlwZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVnaXN0ZXJWaWV3Q2xhc3M6cmVwcmVz
ZW50YXRpb25DbGFzczpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgrW1dlYlZpZXcgcmVnaXN0
ZXJWaWV3Q2xhc3M6cmVwcmVzZW50YXRpb25DbGFzczpmb3JNSU1FVHlwZTpdKToKKwogMjAxOC0x
MC0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBm
YWxzZSBwb3NpdGl2ZSBsZWFrcyB3aGVuIHVzaW5nIGN1c3RvbSAtaW5pdCBtZXRob2RzIHRoYXQg
ZG9uJ3Qgc3RhcnQgd2l0aCAtaW5pdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHJldmlzaW9uIDIzNzM2NykK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTMgKzIxNCwxMyBAQCAtICh2b2lkKV93ZWJfd3JpdGVQ
cm9taXNlZFJURkRGcm9tQXJjaGl2CiAgICAgaWYgKGNvbnRhaW5zSW1hZ2UgJiYgW3N1YnJlc291
cmNlcyBjb3VudF0gPiAwKSB7CiAgICAgICAgIFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSA9IFtz
dWJyZXNvdXJjZXMgb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgTlNTdHJpbmcgKnN1YnJlc291
cmNlTUlNRVR5cGUgPSBbc3VicmVzb3VyY2UgTUlNRVR5cGVdOwotICAgICAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoc3VicmVzb3VyY2VN
SU1FVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShz
dWJyZXNvdXJjZU1JTUVUeXBlKSkKKyAgICAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZShzdWJyZXNvdXJjZU1JTUVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHN1YnJlc291cmNlTUlNRVR5cGUpKQogICAg
ICAgICAgICAgcmVzb3VyY2UgPSBzdWJyZXNvdXJjZTsKICAgICB9CiAgICAgQVNTRVJUKHJlc291
cmNlICE9IG5pbCk7CiAgICAgCi0gICAgQVNTRVJUKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKFtyZXNvdXJjZSBNSU1F
VHlwZV0pIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUoW3Jl
c291cmNlIE1JTUVUeXBlXSkpOwotICAgIGlmICghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5
cGVdKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNv
dXJjZSBNSU1FVHlwZV0pKQorICAgIEFTU0VSVCghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoW3Jlc291cmNlIE1JTUVUeXBlXSkgfHwg
TUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShbcmVzb3VyY2UgTUlN
RVR5cGVdKSk7CisgICAgaWYgKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5cGVdKSB8fCBNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNvdXJjZSBNSU1FVHlwZV0pKQog
ICAgICAgICBbc2VsZiBfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50OltyZXNv
dXJjZSBfZmlsZVdyYXBwZXJSZXByZXNlbnRhdGlvbl1dOwogICAgIAogfQpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0JKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMjUg
KzEwNCwyNSBAQCArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiAKICsgKE5TQXJyYXkg
KilzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNT
dXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0YXRp
YyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0
cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1Jl
ZigpOwogICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKIH0KIAogKyAo
TlNBcnJheSAqKXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5TQXJy
YXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5n
cyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKS5sZWFr
UmVmKCk7CisgICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5
cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMg
PSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6
OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gc3RhdGlj
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljVW5zdXBwb3J0ZWRUZXh0
TUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBOU0FycmF5ICpz
dGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVU
eXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKS5sZWFrUmVmKCk7CiAgICAg
cmV0dXJuIHN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjM3MzY3KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDIwLDcgKzM0MjAsNyBAQCArICh2b2lkKV91bnJlZ2lzdGVyVmlld0NsYXNzQW5k
UmVwcmVzZW50CiAgICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBtYWludGFpbiBNSU1FVHlw
ZSByZWdpc3RyYXRpb25zICh3aGljaCBjYW4gYmUgZHluYW1pY2FsbHkgY2hhbmdlZCkKICAgICAv
LyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcg
dGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJv
YmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBp
cyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCi0gICAgTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5yZW1vdmUoTUlNRVR5cGUpOworICAgIE1J
TUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkucmVtb3ZlKE1JTUVU
eXBlKTsKIH0KIAogKyAodm9pZClfcmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNzKXZpZXdDbGFzcyBy
ZXByZXNlbnRhdGlvbkNsYXNzOihDbGFzcylyZXByZXNlbnRhdGlvbkNsYXNzIGZvclVSTFNjaGVt
ZTooTlNTdHJpbmcgKilVUkxTY2hlbWUKQEAgLTM0MzIsNyArMzQzMiw3IEBAICsgKHZvaWQpX3Jl
Z2lzdGVyVmlld0NsYXNzOihDbGFzcyl2aWV3Q2wKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1F
VHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0
ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0
dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVy
ZSByb2J1c3RuZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1MVmlldyBj
bGFzc10pCi0gICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCkuYWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogICAgIAogICAgIC8vIFRoaXMg
aXMgdXNlZCB0byBtYWtlIF9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSBmYXN0ZXIu
CiAgICAgLy8gV2l0aG91dCB0aGlzIHNldCwgd2UnZCBoYXZlIHRvIGNyZWF0ZSB0aGUgTUlNRSB0
eXBlIGVhY2ggdGltZS4KQEAgLTY5OTcsNyArNjk5Nyw3IEBAICsgKHZvaWQpcmVnaXN0ZXJWaWV3
Q2xhc3M6KENsYXNzKXZpZXdDbGEKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdp
c3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVy
CiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFt
cGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3Ru
ZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1MVmlldyBjbGFzc10pCi0g
ICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCku
YWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogfQogCiAtICh2b2lkKXNldEdyb3VwTmFtZToo
TlNTdHJpbmcgKilncm91cE5hbWUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353037</attachid>
            <date>2018-10-24 09:56:39 -0700</date>
            <delta_ts>2018-10-24 11:42:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190838-20181024095638.patch</filename>
            <type>text/plain</type>
            <size>45843</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE4LTEwLTIzICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cDog
TUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBNb2Rlcm5pemUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBsaXN0
cyBpbiBNSU1FVHlwZVJlZ2lzdHJ5LiBNYWtlIHRoZQorICAgICAgICBmdW5jdGlvbnMgdGhhdCBy
ZXR1cm4gdGhlc2UgbGlzdCBiZSBzZWxmLWNvbnRhaW5lZC4gVXNlIE5ldmVyRGVzdHJveTw+IHRv
CisgICAgICAgIGFsbG9jYXRlIHRoZSBsb2NhbCBzdGF0aWMgdmFyaWFibGUuIFVzZSBzdGQ6Omlu
aXRpYWxpemVyX2xpc3QoKSBhbmQKKyAgICAgICAgbWFrZU5ldmVyRGVzdHJveWVkKCkgdG8gaW5p
dGlhbGl6ZSBOZXZlckRlc3Ryb3k8PiB2YXJpYWJsZXMgb25seSBvbmNlLgorCisgICAgICAgIHN1
cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMgd2lsbCBiZSBkZWxldGVkIGFuZCBhbGwgdGhl
IGNhbGxzIHRvIGl0IAorICAgICAgICB3aWxsIGJlIHJlcGxhY2VkIGJ5IHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzIGJlY2F1c2UgdGhleSBhcmUgaWRlbnRpY2FsLgorCisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZUZh
Y3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKTogVGhpcyBmdW5jdGlvbgorICAg
ICAgICBpcyBjYWxsZWQgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcygpLiBTbyBpdAorICAgICAgICBzaG91bGQgbm90IGhhdmUgYSBkaXJlY3QgY2FsbCB0
byBpdC4gSW5zdGVhZCwgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMKKyAgICAgICAgaXMgcGFz
c2VkIHRvIGl0LgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OnN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6cGRmTUlNRVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBl
UmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNT
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVn
aXN0cnk6OmlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N5c3RlbVByZXZpZXdNSU1FVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5j
b2RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEph
dmFTY3JpcHRNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6
ZVBERk1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3Vw
cG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5p
dGlhbGl6ZVN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlN
RVR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0VW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFN5c3Rl
bVByZXZpZXdNSU1FVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJDRzo6ZW5jb2RlZERhdGFTdGF0dXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBvcnRlZERl
ZmF1bHRJbWFnZVNvdXJjZVR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydEltYWdl
U291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjphbGxvd2VkSW1hZ2VVVElzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQWxsb3dlZEltYWdlVVRJKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGUpOgorCiAyMDE4LTEwLTIzICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzcyNjEuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCShyZXZp
c2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDkgKzk1LDggQEAgUmVmUHRyPEFyY2hpdmU+
IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoYwogICAgIHJldHVybiBmdW5jdGlvbih1cmwsICpkYXRh
KTsKIH0KIAotdm9pZCBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlw
ZXMoKQordm9pZCBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVUeXBlcykKIHsK
LSAgICBhdXRvJiBtaW1lVHlwZXMgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcygpOwogICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBhcmNoaXZlTUlNRVR5
cGVzKCkua2V5cygpKQogICAgICAgICBtaW1lVHlwZXMuYWRkKG1pbWVUeXBlKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAkocmV2
aXNpb24gMjM3MzY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBcmNoaXZlRmFj
dG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICBzdGF0aWMg
dm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcygpOworICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjM3
MzY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01NSwyMTAgKzU1LDIz
NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlczsK
LXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4qIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmc7Ci1zdGF0aWMg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4qIHN1cHBvcnRlZEphdmFT
Y3JpcHRNSU1FVHlwZXM7Ci1zdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4qIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOwotc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsK
LXN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiogcGRmTUlN
RVR5cGVzOwotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
KiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXM7Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcygpCitjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMo
KQogewotICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD47Ci0K
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4+IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9s
aXN0PFN0cmluZz4gewogI2lmIFVTRShDRykKLSAgICAvLyBUaGlzIHJlcHJlc2VudHMgdGhlIHN1
YnNldCBvZiBhbGxvd2VkIGltYWdlIFVUSXMgZm9yIHdoaWNoIENvcmVTZXJ2aWNlcyBoYXMgYSBj
b3JyZXNwb25kaW5nIE1JTUUgdHlwZS4gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBhbGxvd2VkSW1h
Z2VVVElzKCkuCi0gICAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBhbGxvd2VkSW1hZ2VNSU1F
VHlwZXNbXSA9IHsgImltYWdlL3RpZmYiX3MsICJpbWFnZS9naWYiX3MsICJpbWFnZS9qcGVnIl9z
LCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zLCAiaW1hZ2UvanAyIl9zLCAiaW1hZ2UvcG5n
Il9zLCAiaW1hZ2UvYm1wIl9zIH07Ci0gICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IGFsbG93ZWRJ
bWFnZU1JTUVUeXBlcykgewotICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKG1p
bWVUeXBlKTsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKG1p
bWVUeXBlKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgZm9yIChhdXRvJiB1dGkgOiBh
bGxvd2VkSW1hZ2VVVElzKCkpIHsKLSAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9y
SW1hZ2VTb3VyY2VUeXBlKHV0aSk7Ci0gICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKG1p
bWVUeXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVU
eXBlcy0+Y29udGFpbnMobWltZVR5cGUpKTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGZvciAoYXV0byYgbWltZSA6ICpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cykKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtaW1lLCBhbGxvd2VkSW1hZ2VVVElzKCkuY29udGFp
bnMoVVRJRnJvbU1JTUVUeXBlKG1pbWUpKSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgLy8gRmF2
aWNvbnMgZG9uJ3QgaGF2ZSBhIE1JTUUgdHlwZSBpbiB0aGUgcmVnaXN0cnkgZWl0aGVyLgotICAg
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQoImltYWdlL3gtaWNvbiIpOwotICAgIHN1cHBv
cnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZCgiaW1hZ2UveC1pY29uIik7CisgICAgICAg
IC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgc3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2UgVVRJcyBmb3Ig
d2hpY2ggQ29yZVNlcnZpY2VzIGhhcyBhIGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBlLgorICAgICAg
ICAiaW1hZ2UvdGlmZiJfcywKKyAgICAgICAgImltYWdlL2dpZiJfcywKKyAgICAgICAgImltYWdl
L2pwZWciX3MsCisgICAgICAgICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MsCisgICAgICAg
ICJpbWFnZS9qcDIiX3MsCisgICAgICAgICJpbWFnZS9wbmciX3MsCisgICAgICAgICJpbWFnZS9i
bXAiX3MsCiAKLSAgICAvLyAgV2Ugb25seSBnZXQgb25lIE1JTUUgdHlwZSBwZXIgVVRJLCBoZW5j
ZSBvdXIgbmVlZCB0byBhZGQgdGhlc2UgbWFudWFsbHkKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcy0+YWRkKCJpbWFnZS9wanBlZyIpOwotICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1F
VHlwZXMtPmFkZCgiaW1hZ2UvcGpwZWciKTsKKyAgICAgICAgImltYWdlL3gtaWNvbiJfcywgLy8g
RmF2aWNvbnMgZG9uJ3QgaGF2ZSBhIE1JTUUgdHlwZSBpbiB0aGUgcmVnaXN0cnkgZWl0aGVyLgor
ICAgICAgICAiaW1hZ2UvcGpwZWciX3MsIC8vICBXZSBvbmx5IGdldCBvbmUgTUlNRSB0eXBlIHBl
ciBVVEksIGhlbmNlIG91ciBuZWVkIHRvIGFkZCB0aGVzZSBtYW51YWxseQogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBBZGQgbWFsZm9ybWVkIGltYWdlIG1pbWV0eXBlIGZvciBj
b21wYXRpYmlsaXR5IHdpdGggTWFpbCBhbmQgdG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1ldHlwZXMg
ZnJvbSB0aGUgbmV0Ci0gICAgLy8gVGhlc2Ugd2VyZSByZW1vdmVkIGZvciA8cmRhcjovL3Byb2Js
ZW0vNjU2NDUzOD4gUmUtZW5hYmxlIFVUSSBjb2RlIGluIFdlYkNvcmUgbm93IHRoYXQgTW9iaWxl
Q29yZVNlcnZpY2VzIGV4aXN0cwotICAgIC8vIEJ1dCBNYWlsIHJlbGllcyBvbiBhdCBsZWFzdCBp
bWFnZS90aWYgcmVwb3J0ZWQgYXMgYmVpbmcgc3VwcG9ydGVkIChzaG91bGQgYmUgaW1hZ2UvdGlm
ZikuCi0gICAgLy8gVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgotICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS83ODc5NTEwPiBNYWlsIHNob3VsZCB1c2Ugc3RhbmRhcmQgaW1h
Z2UgbWltZXR5cGVzCi0gICAgLy8gYW5kIHdlIGZpeCBzbmlmZmluZyBzbyB0aGF0IGl0IGNvcnJl
Y3RzIGl0ZW1zIHN1Y2ggYXMgaW1hZ2UvanBnIC0+IGltYWdlL2pwZWcuCi0gICAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IG1hbGZvcm1lZE1JTUVUeXBlc1tdID0geworICAgICAgICAvLyBBZGQg
bWFsZm9ybWVkIGltYWdlIG1pbWV0eXBlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbCBhbmQg
dG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1ldHlwZXMgZnJvbSB0aGUgbmV0CisgICAgICAgIC8vIFRo
ZXNlIHdlcmUgcmVtb3ZlZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NjQ1Mzg+IFJlLWVuYWJsZSBV
VEkgY29kZSBpbiBXZWJDb3JlIG5vdyB0aGF0IE1vYmlsZUNvcmVTZXJ2aWNlcyBleGlzdHMKKyAg
ICAgICAgLy8gQnV0IE1haWwgcmVsaWVzIG9uIGF0IGxlYXN0IGltYWdlL3RpZiByZXBvcnRlZCBh
cyBiZWluZyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90aWZmKS4KKyAgICAgICAgLy8gVGhp
cyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgorICAgICAgICAvLyA8cmRhcjov
L3Byb2JsZW0vNzg3OTUxMD4gTWFpbCBzaG91bGQgdXNlIHN0YW5kYXJkIGltYWdlIG1pbWV0eXBl
cworICAgICAgICAvLyBhbmQgd2UgZml4IHNuaWZmaW5nIHNvIHRoYXQgaXQgY29ycmVjdHMgaXRl
bXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4gaW1hZ2UvanBlZy4KKwogICAgICAgICAvLyBKUEVHIChp
bWFnZS9qcGVnKQotICAgICAgICAiaW1hZ2UvanBnIiwgImltYWdlL2pwXyIsICJpbWFnZS9qcGVf
IiwgImFwcGxpY2F0aW9uL2pwZyIsICJhcHBsaWNhdGlvbi94LWpwZyIsICJpbWFnZS9waXBlZyIs
Ci0gICAgICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciLCAiaW1hZ2UveC14Yml0bWFwIiwK
KyAgICAgICAgImltYWdlL2pwZyJfcywKKyAgICAgICAgImltYWdlL2pwXyJfcywKKyAgICAgICAg
ImltYWdlL2pwZV8iX3MsCisgICAgICAgICJhcHBsaWNhdGlvbi9qcGciX3MsCisgICAgICAgICJh
cHBsaWNhdGlvbi94LWpwZyJfcywKKyAgICAgICAgImltYWdlL3BpcGVnIl9zLAorICAgICAgICAi
aW1hZ2Uvdm5kLnN3aXRmdmlldy1qcGVnIl9zLAorICAgICAgICAiaW1hZ2UveC14Yml0bWFwIl9z
LAorCiAgICAgICAgIC8vIEdJRiAoaW1hZ2UvZ2lmKQotICAgICAgICAiaW1hZ2UvZ2lfIiwKKyAg
ICAgICAgImltYWdlL2dpXyJfcywKKwogICAgICAgICAvLyBQTkcgKGltYWdlL3BuZykKLSAgICAg
ICAgImFwcGxpY2F0aW9uL3BuZyIsICJhcHBsaWNhdGlvbi94LXBuZyIsCisgICAgICAgICJhcHBs
aWNhdGlvbi9wbmciX3MsCisgICAgICAgICJhcHBsaWNhdGlvbi94LXBuZyJfcywKKwogICAgICAg
ICAvLyBUSUZGIChpbWFnZS90aWZmKQotICAgICAgICAiaW1hZ2UveC10aWYiLCAiaW1hZ2UvdGlm
IiwgImltYWdlL3gtdGlmZiIsICJhcHBsaWNhdGlvbi90aWYiLCAiYXBwbGljYXRpb24veC10aWYi
LCAiYXBwbGljYXRpb24vdGlmZiIsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LXRpZmYiLAorICAg
ICAgICAiaW1hZ2UveC10aWYiX3MsCisgICAgICAgICJpbWFnZS90aWYiX3MsCisgICAgICAgICJp
bWFnZS94LXRpZmYiX3MsCisgICAgICAgICJhcHBsaWNhdGlvbi90aWYiX3MsCisgICAgICAgICJh
cHBsaWNhdGlvbi94LXRpZiJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3RpZmYiX3MsCisgICAg
ICAgICJhcHBsaWNhdGlvbi94LXRpZmYiX3MsCisKICAgICAgICAgLy8gQk1QIChpbWFnZS9ibXAs
IGltYWdlL3gtYml0bWFwKQotICAgICAgICAiaW1hZ2UveC1ibXAiLCAiaW1hZ2UveC13aW4tYml0
bWFwIiwgImltYWdlL3gtd2luZG93cy1ibXAiLCAiaW1hZ2UvbXMtYm1wIiwgImltYWdlL3gtbXMt
Ym1wIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL2JtcCIsICJhcHBsaWNhdGlvbi94LWJtcCIsICJh
cHBsaWNhdGlvbi94LXdpbi1iaXRtYXAiLAotICAgIH07Ci0gICAgZm9yIChhdXRvJiB0eXBlIDog
bWFsZm9ybWVkTUlNRVR5cGVzKSB7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5h
ZGQodHlwZSk7Ci0gICAgICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZCh0
eXBlKTsKLSAgICB9CisgICAgICAgICJpbWFnZS94LWJtcCJfcywKKyAgICAgICAgImltYWdlL3gt
d2luLWJpdG1hcCJfcywKKyAgICAgICAgImltYWdlL3gtd2luZG93cy1ibXAiX3MsCisgICAgICAg
ICJpbWFnZS9tcy1ibXAiX3MsCisgICAgICAgICJpbWFnZS94LW1zLWJtcCJfcywKKyAgICAgICAg
ImFwcGxpY2F0aW9uL2JtcCJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL3gtYm1wIl9zLAorICAg
ICAgICAiYXBwbGljYXRpb24veC13aW4tYml0bWFwIl9zLAogI2VuZGlmCi0KICNlbHNlCi0gICAg
Ly8gYXNzdW1lIHRoYXQgYWxsIGltcGxlbWVudGF0aW9ucyBhdCBsZWFzdCBzdXBwb3J0IHRoZSBm
b2xsb3dpbmcgc3RhbmRhcmQKLSAgICAvLyBpbWFnZSB0eXBlczoKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgdHlwZXNbXSA9IHsKLSAgICAgICAgImltYWdlL2pwZWciLAotICAgICAgICAi
aW1hZ2UvcG5nIiwKLSAgICAgICAgImltYWdlL2dpZiIsCi0gICAgICAgICJpbWFnZS9ibXAiLAot
ICAgICAgICAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwgICAgLy8gaWNvCi0gICAgICAgICJp
bWFnZS94LWljb24iLCAgICAvLyBpY28KLSAgICAgICAgImltYWdlL3gteGJpdG1hcCIgIC8vIHhi
bQotICAgIH07Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpIHsKLSAgICAgICAgc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMtPmFkZCh0eXBlKTsKLSAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNv
dXJjZU1JTUVUeXBlcy0+YWRkKHR5cGUpOwotICAgIH0KLQorICAgICAgICAvLyBhc3N1bWUgdGhh
dCBhbGwgaW1wbGVtZW50YXRpb25zIGF0IGxlYXN0IHN1cHBvcnQgdGhlIGZvbGxvd2luZyBzdGFu
ZGFyZAorICAgICAgICAvLyBpbWFnZSB0eXBlczoKKyAgICAgICAgImltYWdlL2pwZWciX3MsCisg
ICAgICAgICJpbWFnZS9wbmciX3MsCisgICAgICAgICJpbWFnZS9naWYiX3MsCisgICAgICAgICJp
bWFnZS9ibXAiX3MsCisgICAgICAgICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MsIC8vIGlj
bworICAgICAgICAiaW1hZ2UveC1pY29uIl9zLCAvLyBpY28KKyAgICAgICAgImltYWdlL3gteGJp
dG1hcCJfcywgLy8geGJtCiAjaWYgVVNFKFdFQlApCi0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMtPmFkZCgiaW1hZ2Uvd2VicCIpOwotICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlw
ZXMtPmFkZCgiaW1hZ2Uvd2VicCIpOworICAgICAgICAiaW1hZ2Uvd2VicCJfcywKKyNlbmRpZgog
I2VuZGlmCisgICAgfTsKIAotI2VuZGlmIC8vIFVTRShDRykKKyNpZiBVU0UoQ0cpCisjaWZuZGVm
IE5ERUJVRworICAgIC8vIEVzbnVyZSBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpIGlzIGluIHN5
bmMgd2l0aCBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VUeXBlcygpLgorICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10g
eworICAgICAgICBmb3IgKGF1dG8mIGltYWdlU291cmNlVHlwZSA6IHN1cHBvcnRlZERlZmF1bHRJ
bWFnZVNvdXJjZVR5cGVzKCkpIHsKKyAgICAgICAgICAgIGF1dG8gbWltZVR5cGUgPSBNSU1FVHlw
ZUZvckltYWdlU291cmNlVHlwZShpbWFnZVNvdXJjZVR5cGUpOworICAgICAgICAgICAgQVNTRVJU
X0lNUExJRVMoIW1pbWVUeXBlLmlzRW1wdHkoKSwgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0
KCkuY29udGFpbnMobWltZVR5cGUpKTsKKyAgICAgICAgfQorICAgIH0pOworI2VuZGlmCisjZW5k
aWYKKyAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKLXN0YXRpYyB2b2lk
IGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCkKK3N0YXRpYyBj
b25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZygpCiB7Ci0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNGb3JFbmNvZGluZyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPjsKLQotI2lmIFVTRShDRykKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gc3VwcG9ydGVkVHlwZXMgPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNv
cHlUeXBlSWRlbnRpZmllcnMoKSk7Ci0gICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3Vu
dChzdXBwb3J0ZWRUeXBlcy5nZXQoKSk7Ci0gICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgewotICAgICAgICBDRlN0cmluZ1JlZiBzdXBwb3J0ZWRUeXBlID0gcmVpbnRlcnBy
ZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdXBwb3J0ZWRUeXBl
cy5nZXQoKSwgaSkpOwotICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZShzdXBwb3J0ZWRUeXBlKTsKLSAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQo
bWltZVR5cGUpOwotICAgIH0KKyAgICBzdGF0aWMgY29uc3QgYXV0byBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0ZvckVuY29kaW5nID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IHN1cHBvcnRlZFR5cGVzID0gYWRvcHRDRihDR0ltYWdlRGVzdGlu
YXRpb25Db3B5VHlwZUlkZW50aWZpZXJzKCkpOworICAgICAgICBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5n
OworICAgICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHN1cHBvcnRlZFR5cGVz
LmdldCgpKTsKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewor
ICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgc3VwcG9ydGVkVHlwZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VwcG9ydGVkVHlwZXMuZ2V0KCks
IGkpKTsKKyAgICAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VTb3Vy
Y2VUeXBlKHN1cHBvcnRlZFR5cGUpOworICAgICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy5h
ZGQobWltZVR5cGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0ZvckVuY29kaW5nOworICAgIH0oKSk7CiAjZWxzZQotICAgIC8vIEZJWE1FOiBBZGQg
V2luZG93cyBzdXBwb3J0IGZvciBhbGwgdGhlIHN1cHBvcnRlZCBVVEkncyB3aGVuIGEgd2F5IHRv
IGNvbnZlcnQgZnJvbSBNSU1FVHlwZSB0byBVVEkgcmVsaWFibHkgaXMgZm91bmQuCi0gICAgLy8g
Rm9yIG5vdywgb25seSBzdXBwb3J0IFBORywgSlBFRyBhbmQgR0lGLiAgU2VlIDxyZGFyOi8vcHJv
YmxlbS82MDk1Mjg2Pi4KLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5h
ZGQoImltYWdlL3BuZyIpOwotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmct
PmFkZCgiaW1hZ2UvanBlZyIpOwotICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rp
bmctPmFkZCgiaW1hZ2UvZ2lmIik7Ci0jZW5kaWYKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzRm9yRW5jb2RpbmcgPXN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyNp
ZiBVU0UoQ0cpCisgICAgICAgIC8vIEZJWE1FOiBBZGQgV2luZG93cyBzdXBwb3J0IGZvciBhbGwg
dGhlIHN1cHBvcnRlZCBVVEkncyB3aGVuIGEgd2F5IHRvIGNvbnZlcnQgZnJvbSBNSU1FVHlwZSB0
byBVVEkgcmVsaWFibHkgaXMgZm91bmQuCisgICAgICAgIC8vIEZvciBub3csIG9ubHkgc3VwcG9y
dCBQTkcsIEpQRUcgYW5kIEdJRi4gU2VlIDxyZGFyOi8vcHJvYmxlbS82MDk1Mjg2Pi4KKyAgICAg
ICAgImltYWdlL3BuZyJfcywKKyAgICAgICAgImltYWdlL2pwZWciX3MsCisgICAgICAgICJpbWFn
ZS9naWYiX3MsCiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9wbmciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL2pwZWciKTsKLSAgICBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL3RpZmYiKTsKLSAgICBzdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL2JtcCIpOwotICAgIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvaWNvIik7CisgICAgICAgICJpbWFn
ZS9wbmciX3MsCisgICAgICAgICJpbWFnZS9qcGVnIl9zLAorICAgICAgICAiaW1hZ2UvdGlmZiJf
cywKKyAgICAgICAgImltYWdlL2JtcCJfcywKKyAgICAgICAgImltYWdlL2ljbyJfcywKICNlbGlm
IFVTRShDQUlSTykKLSAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQo
ImltYWdlL3BuZyIpOworICAgICAgICAiaW1hZ2UvcG5nIl9zLAogI2VuZGlmCi19Ci0KLXN0YXRp
YyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCkKLXsKLSAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNq
YXZhc2NyaXB0LW1pbWUtdHlwZQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1td
ID0gewotICAgICAgICAidGV4dC9qYXZhc2NyaXB0IiwKLSAgICAgICAgInRleHQvZWNtYXNjcmlw
dCIsCi0gICAgICAgICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKLSAgICAgICAgImFwcGxpY2F0
aW9uL2VjbWFzY3JpcHQiLAotICAgICAgICAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiwKLSAg
ICAgICAgImFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIsCi0gICAgICAgICJ0ZXh0L2phdmFzY3Jp
cHQxLjAiLAotICAgICAgICAidGV4dC9qYXZhc2NyaXB0MS4xIiwKLSAgICAgICAgInRleHQvamF2
YXNjcmlwdDEuMiIsCi0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjMiLAotICAgICAgICAidGV4
dC9qYXZhc2NyaXB0MS40IiwKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNSIsCi0gICAgICAg
ICJ0ZXh0L2pzY3JpcHQiLAotICAgICAgICAidGV4dC9saXZlc2NyaXB0IiwKLSAgICAgICAgInRl
eHQveC1qYXZhc2NyaXB0IiwKLSAgICAgICAgInRleHQveC1lY21hc2NyaXB0IgogICAgIH07Ci0K
LSAgICBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwotICAgIGZvciAoYXV0byogdHlwZSA6IHR5cGVzKQot
ICAgICAgICBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzLT5hZGQodHlwZSk7CisjZW5kaWYK
KyAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZzsKIH0KIAotc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVBERk1JTUVUeXBlcygpCitzdGF0aWMgY29uc3QgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1F
VHlwZXMoKQogewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVzW10gPSB7Ci0gICAgICAgICJh
cHBsaWNhdGlvbi9wZGYiLAotICAgICAgICAidGV4dC9wZGYiCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewor
ICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRp
bmcuaHRtbCNqYXZhc2NyaXB0LW1pbWUtdHlwZQorICAgICAgICAidGV4dC9qYXZhc2NyaXB0Il9z
LAorICAgICAgICAidGV4dC9lY21hc2NyaXB0Il9zLAorICAgICAgICAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCJfcywKKyAgICAgICAgImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQiX3MsCisgICAgICAg
ICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiX3MsCisgICAgICAgICJhcHBsaWNhdGlvbi94LWVj
bWFzY3JpcHQiX3MsCisgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjAiX3MsCisgICAgICAgICJ0
ZXh0L2phdmFzY3JpcHQxLjEiX3MsCisgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjIiX3MsCisg
ICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjMiX3MsCisgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQx
LjQiX3MsCisgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjUiX3MsCisgICAgICAgICJ0ZXh0L2pz
Y3JpcHQiX3MsCisgICAgICAgICJ0ZXh0L2xpdmVzY3JpcHQiX3MsCisgICAgICAgICJ0ZXh0L3gt
amF2YXNjcmlwdCJfcywKKyAgICAgICAgInRleHQveC1lY21hc2NyaXB0Il9zLAogICAgIH07Ci0K
LSAgICBwZGZNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD47Ci0gICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCi0gICAgICAgIHBkZk1JTUVU
eXBlcy0+YWRkKHR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVz
OwogfQogCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMo
KQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlc1tdID0gewotICAgICAgICAi
dGV4dC9odG1sIiwKLSAgICAgICAgInRleHQveG1sIiwKLSAgICAgICAgInRleHQveHNsIiwKLSAg
ICAgICAgInRleHQvcGxhaW4iLAotICAgICAgICAidGV4dC8iLAotICAgICAgICAiYXBwbGljYXRp
b24veG1sIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL3hodG1sK3htbCIsCitIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVk
Tm9uSW1hZ2VNSU1FVHlwZXMoKQoreworICAgIHN0YXRpYyBhdXRvIHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMg
PSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CisgICAgICAgICAgICAidGV4dC9odG1s
Il9zLAorICAgICAgICAgICAgInRleHQveG1sIl9zLAorICAgICAgICAgICAgInRleHQveHNsIl9z
LAorICAgICAgICAgICAgInRleHQvcGxhaW4iX3MsCisgICAgICAgICAgICAidGV4dC8iX3MsCisg
ICAgICAgICAgICAiYXBwbGljYXRpb24veG1sIl9zLAorICAgICAgICAgICAgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcywKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgImFwcGxp
Y2F0aW9uL3ZuZC53YXAueGh0bWwreG1sIiwKLSAgICAgICAgImFwcGxpY2F0aW9uL3Jzcyt4bWwi
LAotICAgICAgICAiYXBwbGljYXRpb24vYXRvbSt4bWwiLAorICAgICAgICAgICAgImFwcGxpY2F0
aW9uL3ZuZC53YXAueGh0bWwreG1sIl9zLAorICAgICAgICAgICAgImFwcGxpY2F0aW9uL3Jzcyt4
bWwiX3MsCisgICAgICAgICAgICAiYXBwbGljYXRpb24vYXRvbSt4bWwiX3MsCiAjZW5kaWYKLSAg
ICAgICAgImFwcGxpY2F0aW9uL2pzb24iLAotICAgICAgICAiaW1hZ2Uvc3ZnK3htbCIsCisgICAg
ICAgICAgICAiYXBwbGljYXRpb24vanNvbiJfcywKKyAgICAgICAgICAgICJpbWFnZS9zdmcreG1s
Il9zLAogI2lmIEVOQUJMRShGVFBESVIpCi0gICAgICAgICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJl
Y3RvcnkiLAorICAgICAgICAgICAgImFwcGxpY2F0aW9uL3gtZnRwLWRpcmVjdG9yeSJfcywKICNl
bmRpZgotICAgICAgICAibXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSIKKyAgICAgICAgICAgICJt
dWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIl9zLAogICAgICAgICAvLyBOb3RlOiBBZGRpbmcgYSBu
ZXcgdHlwZSBoZXJlIHdpbGwgcHJvYmFibHkgcmVuZGVyIGl0IGFzIEhUTUwuCiAgICAgICAgIC8v
IFRoaXMgY2FuIHJlc3VsdCBpbiBjcm9zcy1zaXRlIHNjcmlwdGluZyB2dWxuZXJhYmlsaXRpZXMu
Ci0gICAgfTsKKyAgICAgICAgfTsKKyAgICAgICAgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMu
YWRkKHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKS5iZWdpbigpLCBzdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGVzKCkuZW5kKCkpOworI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5B
QkxFKE1IVE1MKQorICAgICAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVN
SU1FVHlwZXMoc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpOworI2VuZGlmCisgICAgICAgIHJl
dHVybiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKKyAgICB9KCkpOworICAgIHJldHVybiBz
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKK30KIAotICAgIGlmICghc3VwcG9ydGVkSmF2YVNj
cmlwdE1JTUVUeXBlcykKLSAgICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZEphdmFTY3JpcHRNSU1F
VHlwZXMoKTsKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpCit7CisgICAgc3Rh
dGljIGNvbnN0IGF1dG8gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95
ZWQoW10geworICAgICAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiBzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKKyNpZiBFTkFCTEUoVklERU8pCisgICAgICAgIE1l
ZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyk7Cisj
ZW5kaWYKKyAgICAgICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworICAgIH0oKSk7
CisgICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworfQogCi0gICAgc3VwcG9ydGVk
Tm9uSW1hZ2VNSU1FVHlwZXMgPSBuZXcgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4geyAqc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyB9OwotICAgIGZvciAoYXV0
byYgdHlwZSA6IHR5cGVzKQotICAgICAgICBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy0+YWRk
KHR5cGUpOworY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IE1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBwZGZNSU1F
VHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CisgICAgICAgICJhcHBsaWNh
dGlvbi9wZGYiX3MsCisgICAgICAgICJ0ZXh0L3BkZiJfcywKKyAgICB9OworICAgIHJldHVybiBw
ZGZNSU1FVHlwZXM7Cit9CiAKLSNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRN
TCkKLSAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoKTsK
K2NvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlw
ZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gdW5z
dXBwb3J0ZWRUZXh0TUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewor
ICAgICAgICAidGV4dC9jYWxlbmRhciJfcywKKyAgICAgICAgInRleHQveC1jYWxlbmRhciJfcywK
KyAgICAgICAgInRleHQveC12Y2FsZW5kYXIiX3MsCisgICAgICAgICJ0ZXh0L3ZjYWxlbmRhciJf
cywKKyAgICAgICAgInRleHQvdmNhcmQiX3MsCisgICAgICAgICJ0ZXh0L3gtdmNhcmQiX3MsCisg
ICAgICAgICJ0ZXh0L2RpcmVjdG9yeSJfcywKKyAgICAgICAgInRleHQvbGRpZiJfcywKKyAgICAg
ICAgInRleHQvcWlmIl9zLAorICAgICAgICAidGV4dC94LXFpZiJfcywKKyAgICAgICAgInRleHQv
eC1jc3YiX3MsCisgICAgICAgICJ0ZXh0L3gtdmNmIl9zLAorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgICAgICAidGV4dC9ydGYiX3MsCisjZWxzZQorICAgICAgICAidGV4dC92bmQuc3Vu
LmoybWUuYXBwLWRlc2NyaXB0b3IiX3MsCiAjZW5kaWYKKyAgICB9OworICAgIHJldHVybiB1bnN1
cHBvcnRlZFRleHRNSU1FVHlwZXM7CiB9CiAKIHN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiog
dHlwZXNGb3JDb21tb25FeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCkBAIC0zOTIs
NDEgKzQxNyw2IEBAIFZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGkKICAg
ICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkTWVkaWFN
SU1FVHlwZXMoKQotewotICAgIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzID0gbmV3IEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwotI2lmIEVOQUJMRShWSURFTykKLSAg
ICBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVkVHlwZXMoKnN1cHBvcnRlZE1lZGlhTUlNRVR5cGVz
KTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZXNbXSA9IHsKLSAg
ICAgICAgInRleHQvY2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtY2FsZW5kYXIiX3MsCi0g
ICAgICAgICJ0ZXh0L3gtdmNhbGVuZGFyIl9zLAotICAgICAgICAidGV4dC92Y2FsZW5kYXIiX3Ms
Ci0gICAgICAgICJ0ZXh0L3ZjYXJkIl9zLAotICAgICAgICAidGV4dC94LXZjYXJkIl9zLAotICAg
ICAgICAidGV4dC9kaXJlY3RvcnkiX3MsCi0gICAgICAgICJ0ZXh0L2xkaWYiX3MsCi0gICAgICAg
ICJ0ZXh0L3FpZiJfcywKLSAgICAgICAgInRleHQveC1xaWYiX3MsCi0gICAgICAgICJ0ZXh0L3gt
Y3N2Il9zLAotICAgICAgICAidGV4dC94LXZjZiJfcywKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICAgICAgInRleHQvcnRmIl9zLAotI2Vsc2UKLSAgICAgICAgInRleHQvdm5kLnN1bi5q
Mm1lLmFwcC1kZXNjcmlwdG9yIl9zLAotI2VuZGlmCi0gICAgfTsKLQotICAgIHVuc3VwcG9ydGVk
VGV4dE1JTUVUeXBlcyA9IG5ldyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPjsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgdW5zdXBwb3J0ZWRU
ZXh0TUlNRVR5cGVzLT5hZGQodHlwZSk7Ci19Ci0KIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3Mg
PSBwYXRoLnJldmVyc2VGaW5kKCcuJyk7CkBAIC00NDMsOSArNDMzLDcgQEAgYm9vbCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTQogewogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICBy
ZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmNvbnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1F
VHlwZShtaW1lVHlwZSkpOworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNv
bnRhaW5zKGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSkpOwogfQogCiBib29sIE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKQEAgLTQ2MSwyNCArNDQ5LDEzIEBAIGJvb2wgTUlNRVR5cGVSZWdpc3Ry
eTo6aXNTdXBwb3J0ZWRJbWFnZVYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKLXsKLSAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKQotICAg
ICAgICBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gc3Vw
cG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+Y29udGFpbnMoZ2V0Tm9ybWFsaXplZE1JTUVU
eXBlKG1pbWVUeXBlKSk7Ci19Ci0KIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JF
bmNvZGluZykKLSAgICAgICAgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5j
b2RpbmcoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+
Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0Zv
ckVuY29kaW5nKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CkBAIC00OTQsOSArNDcxLDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEph
dmFTYwogICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7CiAgICAgfQogCi0gICAgaWYgKCFzdXBw
b3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVkTm9u
SW1hZ2VNaW1lVHlwZXMoKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
cy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkU3R5bGVTaGVldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBA
IC01MzksMTggKzUxNCwxNCBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkTm9u
SW1hCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpCi0gICAgICAgIGluaXRpYWxp
emVTdXBwb3J0ZWROb25JbWFnZU1pbWVUeXBlcygpOwotICAgIHJldHVybiBzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBzdXBwb3J0ZWRO
b25JbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAogYm9vbCBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE1lZGlhTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcykKLSAgICAgICAgaW5pdGlhbGl6ZVN1
cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5
cGVzLT5jb250YWlucyhtaW1lVHlwZSk7CisgICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5
cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkVGV4dFRyYWNrTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTU2
Miw5ICs1MzMsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0CiB7
CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplVW5zdXBw
b3J0ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
cy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiB1bnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNU
ZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTYyMiw5ICs1OTEsNyBAQCBi
b29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUoY29uCiB7CiAgICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghcGRmTUlNRVR5
cGVzKQotICAgICAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJuIHBkZk1J
TUVUeXBlcy0+Y29udGFpbnMobWltZVR5cGUpOworICAgIHJldHVybiBwZGZNSU1FVHlwZXMoKS5j
b250YWlucyhtaW1lVHlwZSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQb3N0U2Ny
aXB0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTY1MSw0OSArNjE4LDYgQEAg
Ym9vbCBNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUoYwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKLXsKLSAgICBp
ZiAoIXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzOwot
fQotCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcygpCi17Ci0g
ICAgaWYgKCFzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFs
aXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRlZEltYWdl
UmVzb3VyY2VNSU1FVHlwZXM7Ci19Ci0KLUhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cygpCi17Ci0gICAgaWYgKCFzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcykKLSAgICAgICAgaW5p
dGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCk7Ci0gICAgcmV0dXJuICpzdXBwb3J0
ZWROb25JbWFnZU1JTUVUeXBlczsKLX0KLQotY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzKCkKLXsKLSAgICBpZiAoIXN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKQotICAgICAgICBp
bml0aWFsaXplU3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKTsKLSAgICByZXR1cm4gKnN1cHBvcnRl
ZE1lZGlhTUlNRVR5cGVzOwotfQotCi0KLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQREZNSU1FVHlwZXMoKQotewot
ICAgIGlmICghcGRmTUlNRVR5cGVzKQotICAgICAgICBpbml0aWFsaXplUERGTUlNRVR5cGVzKCk7
Ci0gICAgcmV0dXJuICpwZGZNSU1FVHlwZXM7Ci19Ci0KLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXMoKQotewotICAgIGlmICghdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKQot
ICAgICAgICBpbml0aWFsaXplVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7Ci0gICAgcmV0dXJu
ICp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXM7Ci19Ci0KIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1J
TUVUeXBlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBkZWZh
dWx0TUlNRVR5cGUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIpKTsKQEAgLTcwMSw3ICs2MjUsNyBAQCBjb25zdCBTdHJpbmcmIGRlZmF1bHRNSU1FVHlw
ZSgpCiB9CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi1jb25zdCBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3lzdGVtUHJl
dmlld01JTUVUeXBlcygpCitjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcygpCiB7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+PiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0
PFN0cmluZz4gewogICAgICAgICAvLyBUaGUgb2ZmaWNpYWwgdHlwZTogaHR0cHM6Ly93d3cuaWFu
YS5vcmcvYXNzaWdubWVudHMvbWVkaWEtdHlwZXMvbW9kZWwvdm5kLnVzZHoremlwCkBAIC03MTcs
NyArNjQxLDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N5c3RlbVByZXZpZXdNSQogewog
ICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gZ2V0U3lzdGVtUHJldmlld01JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKKyAg
ICByZXR1cm4gc3lzdGVtUHJldmlld01JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0K
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5oCShyZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCw2IEBAIHB1YmxpYzoKICAg
ICAvLyBDaGVjayB0byBzZWUgaWYgYSBNSU1FIHR5cGUgaXMgc3VpdGFibGUgZm9yIGJlaW5nIGxv
YWRlZCBhcyBhbiBpbWFnZSwgaW5jbHVkaW5nIFNWRyBhbmQgVmlkZW8gKHdoZXJlIHN1cHBvcnRl
ZCkuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZVZpZGVv
T3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIC8vIENoZWNrIHRv
IHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJsZSBmb3IgYmVpbmcgbG9hZGVkIGFzIGFuIGlt
YWdlCi0gICAgLy8gZG9jdW1lbnQgaW4gYSBmcmFtZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKLQogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhIE1JTUUgdHlwZSBpcyBzdWl0YWJs
ZSBmb3IgYmVpbmcgZW5jb2RlZC4KICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApAQCAtMTA4LDE4ICsx
MDQsMTUgQEAgcHVibGljOgogICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBpcyBhZnRlciBtYW55IG90
aGVyIHRlc3RzIGFyZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAg
ICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNob3VsZCBub3QgaGF2ZSB0
aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZXMgb2YgdGhlc2UgZnVuY3Rpb25zLgogICAgIC8vIEZJ
WE1FOiBXb3VsZCBiZSBuaWNlIHRvIGZpbmQgYSB3YXkgdG8gYXZvaWQgZXhwb3NpbmcgdGhlc2Ug
c2V0cywgZXZlbiB3b3JzZSBleHBvc2luZyBub24tY29uc3QgcmVmZXJlbmNlcy4KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIGdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IGdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7Ci0gICAgY29uc3Qgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRTdXBwb3J0ZWRJbWFnZVJlc291
cmNlTUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnZXRTdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0YXRpYyBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2V0UERGTUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBnZXRVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHBkZk1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYg
dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+JiBnZXRTeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3Qgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCk7CiAjZW5kaWYKIAogICAgIC8vIEZJWE1F
OiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZlIHRoZSB3b3JkICJn
ZXQiIGluIHRoZSBuYW1lIG9mIHRoaXMgZnVuY3Rpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShyZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDcgKzgyLDcgQEAgUmVmUHRyPEltYWdlPiBJbWFnZTo6Y3JlYXRlKEltYWdlT2JzZXJ2ZQogCiBi
b29sIEltYWdlOjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIHJldHVy
biBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZSh0eXBl
KTsKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
KHR5cGUpOwogfSAKIAogYm9vbCBJbWFnZTo6aXNQREZSZXNvdXJjZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBVUkwmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAJKHJldmlzaW9uIDIzNzM2
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIEVuY29kZWREYXRhU3RhdHVz
IEltYWdlRGVjb2RlckNHOjplbmNvZGUKICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVz
OjpFcnJvcjsKIAogICAgIGNhc2Uga0NHSW1hZ2VTdGF0dXNJbmNvbXBsZXRlOiB7Ci0gICAgICAg
IGlmICghaXNBbGxvd2VkSW1hZ2VVVEkodXRpKSkKKyAgICAgICAgaWYgKCFpc1N1cHBvcnRJbWFn
ZVNvdXJjZVR5cGUodXRpKSkKICAgICAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6
RXJyb3I7CiAKICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVy
dGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2
ZURlY29kZXIuZ2V0KCksIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CkBAIC0yMTMs
NyArMjEzLDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyQ0c6OmVuY29kZQogICAg
IH0KIAogICAgIGNhc2Uga0NHSW1hZ2VTdGF0dXNDb21wbGV0ZToKLSAgICAgICAgaWYgKCFpc0Fs
bG93ZWRJbWFnZVVUSSh1dGkpKQorICAgICAgICBpZiAoIWlzU3VwcG9ydEltYWdlU291cmNlVHlw
ZSh1dGkpKQogICAgICAgICAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKIAog
ICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAko
cmV2aXNpb24gMjM3MzY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
VVRJUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1IYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRJbWFnZVVUSXMoKQor
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VUeXBlcygp
CiB7CiAgICAgLy8gQ0cgYXQgbGVhc3Qgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzdGFuZGFyZCBp
bWFnZSB0eXBlczoKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBz
X2FsbG93ZWRJbWFnZVVUSXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc3VwcG9ydGVkRGVmYXVsdElt
YWdlU291cmNlVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CiAgICAgICAg
ICJjb20uY29tcHVzZXJ2ZS5naWYiLAogICAgICAgICAiY29tLm1pY3Jvc29mdC5ibXAiLAogICAg
ICAgICAiY29tLm1pY3Jvc29mdC5jdXIiLApAQCAtNTQsMjUgKzU0LDI0IEBAIEhhc2hTZXQ8U3Ry
aW5nPiYgYWxsb3dlZEltYWdlVVRJcygpCiAgICAgfTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICAv
LyBCdXQgbWFrZSBzdXJlIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHJlYWxseSBzdXBwb3J0ZWQuCi0g
ICAgc3RhdGljIGJvb2wgY2hlY2tlZCA9IGZhbHNlOwotICAgIGlmICghY2hlY2tlZCkgewotICAg
ICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3lzdGVtSW1hZ2VVVElzID0gYWRvcHRDRihDR0lt
YWdlU291cmNlQ29weVR5cGVJZGVudGlmaWVycygpKTsKLSAgICAgICAgQ0ZJbmRleCBjb3VudCA9
IENGQXJyYXlHZXRDb3VudChzeXN0ZW1JbWFnZVVUSXMuZ2V0KCkpOwotICAgICAgICBmb3IgKGF1
dG8mIGltYWdlVVRJIDogc19hbGxvd2VkSW1hZ2VVVElzLmdldCgpKSB7Ci0gICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyA9IGltYWdlVVRJLmNyZWF0ZUNGU3RyaW5nKCk7
Ci0gICAgICAgICAgICBBU1NFUlQoQ0ZBcnJheUNvbnRhaW5zVmFsdWUoc3lzdGVtSW1hZ2VVVElz
LmdldCgpLCBDRlJhbmdlTWFrZSgwLCBjb3VudCksIHN0cmluZy5nZXQoKSkpOworICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IENHIHN1cHBvcnRzIHRoZW0uCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBzeXN0ZW1JbWFnZVNvdXJjZVR5cGVzID0gYWRvcHRDRihDR0lt
YWdlU291cmNlQ29weVR5cGVJZGVudGlmaWVycygpKTsKKyAgICAgICAgQ0ZJbmRleCBjb3VudCA9
IENGQXJyYXlHZXRDb3VudChzeXN0ZW1JbWFnZVNvdXJjZVR5cGVzLmdldCgpKTsKKyAgICAgICAg
Zm9yIChhdXRvJiBpbWFnZVNvdXJjZVR5cGUgOiBzdXBwb3J0ZWREZWZhdWx0SW1hZ2VTb3VyY2VU
eXBlcy5nZXQoKSkgeworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcg
PSBpbWFnZVNvdXJjZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIEFTU0VSVChD
RkFycmF5Q29udGFpbnNWYWx1ZShzeXN0ZW1JbWFnZVNvdXJjZVR5cGVzLmdldCgpLCBDRlJhbmdl
TWFrZSgwLCBjb3VudCksIHN0cmluZy5nZXQoKSkpOwogICAgICAgICB9Ci0gICAgICAgIGNoZWNr
ZWQgPSB0cnVlOwotICAgIH0KKyAgICB9KTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHNfYWxsb3dl
ZEltYWdlVVRJcy5nZXQoKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkRGVmYXVsdEltYWdlU291cmNl
VHlwZXM7CiB9CiAKLWJvb2wgaXNBbGxvd2VkSW1hZ2VVVEkoY29uc3QgU3RyaW5nJiBpbWFnZVVU
SSkKK2Jvb2wgaXNTdXBwb3J0SW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgaW1hZ2VTb3Vy
Y2VUeXBlKQogewotICAgIHJldHVybiAhaW1hZ2VVVEkuaXNFbXB0eSgpICYmIGFsbG93ZWRJbWFn
ZVVUSXMoKS5jb250YWlucyhpbWFnZVVUSSk7CisgICAgcmV0dXJuICFpbWFnZVNvdXJjZVR5cGUu
aXNFbXB0eSgpICYmIHN1cHBvcnRlZERlZmF1bHRJbWFnZVNvdXJjZVR5cGVzKCkuY29udGFpbnMo
aW1hZ2VTb3VyY2VUeXBlKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCShyZXZpc2lvbiAyMzczNjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaFNl
dDxTdHJpbmc+JiBhbGxvd2VkSW1hZ2VVVElzKCk7Ci1ib29sIGlzQWxsb3dlZEltYWdlVVRJKGNv
bnN0IFN0cmluZyYpOworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWREZWZhdWx0SW1h
Z2VTb3VyY2VUeXBlcygpOworYm9vbCBpc1N1cHBvcnRJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3Ry
aW5nJik7CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCShyZXZpc2lvbiAyMzczNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3IEBAIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gRklYTUU6IFdoeSBjYW4gd2UgYXNzZXJ0IHRoaXM/IEl0IGRvZXNuJ3Qgc2VlbSBs
aWtlIGl0J3MgZ3VhcmFudGVlZC4KLSAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5
cGUpKTsKKyAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKSk7CiAKICAgICBhdXRvIHR5cGVz
ID0gd3JpdGFibGVUeXBlc0ZvckltYWdlKCk7CiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5kYXRh
SW5XZWJBcmNoaXZlRm9ybWF0KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNzM2NykKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTgtMTAtMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDbGVhbnVwOiBNSU1FVHlwZVJlZ2lzdHJ5IGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLV2Vi
Vmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb250
ZW50UHJvdmlkZXJSZWdpc3RyeSBpbml0V2l0aENvbmZpZ3VyYXRpb246XSk6CisKIDIwMTgtMTAt
MjMgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIzNzI2MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM3MzY3KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTY4Miw3ICs1NjgyLDcgQEAgLSAoVUlWaWV3ICopX3ZpZXdGb3JGaW5kVUkKIAogLSAoQk9P
TClfaXNEaXNwbGF5aW5nUERGCiB7Ci0gICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IFdlYkNvcmU6
Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFBERk1JTUVUeXBlcygpKSB7CisgICAgZm9yIChhdXRvJiBt
aW1lVHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpKSB7CiAg
ICAgICAgIENsYXNzIHByb3ZpZGVyQ2xhc3MgPSBbW19jb25maWd1cmF0aW9uIF9jb250ZW50UHJv
dmlkZXJSZWdpc3RyeV0gcHJvdmlkZXJGb3JNSU1FVHlwZTptaW1lVHlwZV07CiAgICAgICAgIGlm
IChbX2N1c3RvbUNvbnRlbnRWaWV3IGlzS2luZE9mQ2xhc3M6cHJvdmlkZXJDbGFzc10pCiAgICAg
ICAgICAgICByZXR1cm4gWUVTOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnku
bW0JKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
V2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Mywx
NiArNTMsMTYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooVwogICAg
ICAgICByZXR1cm4gbmlsOwogCiAjaWYgRU5BQkxFKFdLUERGVklFVykKLSAgICBmb3IgKGF1dG8m
IG1pbWVUeXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UERGTUlNRVR5cGVzKCkp
CisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBk
Zk1JTUVUeXBlcygpKQogICAgICAgICBbc2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1BERlZpZXcg
Y2xhc3NdIGZvck1JTUVUeXBlOm1pbWVUeXBlXTsKICNlbGlmIEVOQUJMRShXS0xFR0FDWVBERlZJ
RVcpCi0gICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OmdldFBERk1JTUVUeXBlcygpKQorICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkKICAgICAgICAgW3NlbGYgcmVnaXN0ZXJQ
cm92aWRlcjpbV0tMZWdhY3lQREZWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07CiAj
ZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoY29uZmlndXJhdGlvbi5f
c3lzdGVtUHJldmlld0VuYWJsZWQpIHsKLSAgICAgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFN5c3RlbVByZXZpZXdNSU1FVHlwZXMoKSkKKyAg
ICAgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN5
c3RlbVByZXZpZXdNSU1FVHlwZXMoKSkKICAgICAgICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlk
ZXI6W1dLU3lzdGVtUHJldmlld1ZpZXcgY2xhc3NdIGZvck1JTUVUeXBlOm1pbWVUeXBlXTsKICAg
ICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIz
NzM2NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI1IEBACisyMDE4LTEwLTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW51cDogTUlNRVR5cGVSZWdpc3RyeSBm
dW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MDgzOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAq
IE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1Bhc3RlYm9hcmQg
X3dlYl93cml0ZVByb21pc2VkUlRGREZyb21BcmNoaXZlOmNvbnRhaW5zSW1hZ2U6XSk6CisgICAg
ICAgIFJlcGxhY2UgaXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoKSBieSBpc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGUoKQorICAgICAgICBiZWNhdXNlIHRoZXkgd2VyZSBpZGVudGljYWwu
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAg
KCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6CisgICAg
ICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10p
OgorICAgICAgICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlc10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2Vi
VmlldyBfdW5yZWdpc3RlclZpZXdDbGFzc0FuZFJlcHJlc2VudGF0aW9uQ2xhc3NGb3JNSU1FVHlw
ZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVnaXN0ZXJWaWV3Q2xhc3M6cmVwcmVzZW50YXRp
b25DbGFzczpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgrW1dlYlZpZXcgcmVnaXN0ZXJWaWV3
Q2xhc3M6cmVwcmVzZW50YXRpb25DbGFzczpmb3JNSU1FVHlwZTpdKToKKwogMjAxOC0xMC0yMyAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmYWxzZSBw
b3NpdGl2ZSBsZWFrcyB3aGVuIHVzaW5nIGN1c3RvbSAtaW5pdCBtZXRob2RzIHRoYXQgZG9uJ3Qg
c3RhcnQgd2l0aCAtaW5pdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHJldmlzaW9uIDIzNzM2NykKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTQsMTMgKzIxNCwxMyBAQCAtICh2b2lkKV93ZWJfd3JpdGVQcm9taXNl
ZFJURkRGcm9tQXJjaGl2CiAgICAgaWYgKGNvbnRhaW5zSW1hZ2UgJiYgW3N1YnJlc291cmNlcyBj
b3VudF0gPiAwKSB7CiAgICAgICAgIFdlYlJlc291cmNlICpzdWJyZXNvdXJjZSA9IFtzdWJyZXNv
dXJjZXMgb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgTlNTdHJpbmcgKnN1YnJlc291cmNlTUlN
RVR5cGUgPSBbc3VicmVzb3VyY2UgTUlNRVR5cGVdOwotICAgICAgICBpZiAoTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoc3VicmVzb3VyY2VNSU1FVHlw
ZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShzdWJyZXNv
dXJjZU1JTUVUeXBlKSkKKyAgICAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZShzdWJyZXNvdXJjZU1JTUVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHN1YnJlc291cmNlTUlNRVR5cGUpKQogICAgICAgICAg
ICAgcmVzb3VyY2UgPSBzdWJyZXNvdXJjZTsKICAgICB9CiAgICAgQVNTRVJUKHJlc291cmNlICE9
IG5pbCk7CiAgICAgCi0gICAgQVNTRVJUKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKFtyZXNvdXJjZSBNSU1FVHlwZV0p
IHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUoW3Jlc291cmNl
IE1JTUVUeXBlXSkpOwotICAgIGlmICghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5cGVdKSB8
fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNvdXJjZSBN
SU1FVHlwZV0pKQorICAgIEFTU0VSVCghY29udGFpbnNJbWFnZSB8fCBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUoW3Jlc291cmNlIE1JTUVUeXBlXSkgfHwgTUlNRVR5
cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5cGVd
KSk7CisgICAgaWYgKCFjb250YWluc0ltYWdlIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZShbcmVzb3VyY2UgTUlNRVR5cGVdKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKFtyZXNvdXJjZSBNSU1FVHlwZV0pKQogICAgICAg
ICBbc2VsZiBfd2ViX3dyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50OltyZXNvdXJjZSBf
ZmlsZVdyYXBwZXJSZXByZXNlbnRhdGlvbl1dOwogICAgIAogfQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0JKHJldmlzaW9uIDIzNzM2NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMjUgKzEwNCwy
NSBAQCArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiAKICsgKE5TQXJyYXkgKilzdXBw
b3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0
ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0U3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBOU0Fy
cmF5ICpzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3Mo
TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSkubGVha1JlZigpOwog
ICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlczsKIH0KIAogKyAoTlNBcnJh
eSAqKXN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnN0
YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKS5sZWFrUmVmKCk7
CisgICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0g
bmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcygpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMKIHsK
LSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBuZXdB
cnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gc3RhdGljU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBvcnRlZFRleHRNSU1F
VHlwZXMKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljVW5zdXBwb3J0ZWRUZXh0TUlNRVR5
cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRVbnN1cHBvcnRl
ZFRleHRNSU1FVHlwZXMoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNV
bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVn
aXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJu
IHN0YXRpY1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjM3MzY3KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDIwLDcgKzM0MjAsNyBAQCArICh2b2lkKV91bnJlZ2lzdGVyVmlld0NsYXNzQW5kUmVwcmVz
ZW50CiAgICAgLy8gRklYTUU6IFdlIGFsc28gbmVlZCB0byBtYWludGFpbiBNSU1FVHlwZSByZWdp
c3RyYXRpb25zICh3aGljaCBjYW4gYmUgZHluYW1pY2FsbHkgY2hhbmdlZCkKICAgICAvLyBpbiB0
aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBp
biBhIHNhZmUsIGxpbWl0ZWQgbWFubmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81
MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNj
ZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCi0gICAgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3Vw
cG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKS5yZW1vdmUoTUlNRVR5cGUpOworICAgIE1JTUVUeXBl
UmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkucmVtb3ZlKE1JTUVUeXBlKTsK
IH0KIAogKyAodm9pZClfcmVnaXN0ZXJWaWV3Q2xhc3M6KENsYXNzKXZpZXdDbGFzcyByZXByZXNl
bnRhdGlvbkNsYXNzOihDbGFzcylyZXByZXNlbnRhdGlvbkNsYXNzIGZvclVSTFNjaGVtZTooTlNT
dHJpbmcgKilVUkxTY2hlbWUKQEAgLTM0MzIsNyArMzQzMiw3IEBAICsgKHZvaWQpX3JlZ2lzdGVy
Vmlld0NsYXNzOihDbGFzcyl2aWV3Q2wKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSBy
ZWdpc3RyeS4gIEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFu
bmVyCiAgICAgLy8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJl
dmFtcGluZyBvZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1
c3RuZXNzCiAgICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1MVmlldyBjbGFzc10p
Ci0gICAgICAgIE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVz
KCkuYWRkKE1JTUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogICAgIAogICAgIC8vIFRoaXMgaXMgdXNl
ZCB0byBtYWtlIF9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSBmYXN0ZXIuCiAgICAg
Ly8gV2l0aG91dCB0aGlzIHNldCwgd2UnZCBoYXZlIHRvIGNyZWF0ZSB0aGUgTUlNRSB0eXBlIGVh
Y2ggdGltZS4KQEAgLTY5OTcsNyArNjk5Nyw3IEBAICsgKHZvaWQpcmVnaXN0ZXJWaWV3Q2xhc3M6
KENsYXNzKXZpZXdDbGEKICAgICAvLyBpbiB0aGUgV2ViQ29yZSBNSU1FVHlwZSByZWdpc3RyeS4g
IEZvciBub3cgd2UncmUgZG9pbmcgdGhpcyBpbiBhIHNhZmUsIGxpbWl0ZWQgbWFubmVyCiAgICAg
Ly8gdG8gZml4IDxyZGFyOi8vcHJvYmxlbS81MzcyOTg5PiAtIGEgZnV0dXJlIHJldmFtcGluZyBv
ZiB0aGUgZW50aXJlIHN5c3RlbSBpcyBuZWNjZXNhcnkgZm9yIGZ1dHVyZSByb2J1c3RuZXNzCiAg
ICAgaWYgKFt2aWV3Q2xhc3MgY2xhc3NdID09IFtXZWJIVE1MVmlldyBjbGFzc10pCi0gICAgICAg
IE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkuYWRkKE1J
TUVUeXBlKTsKKyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMoKS5hZGQoTUlNRVR5cGUpOwogfQogCiAtICh2b2lkKXNldEdyb3VwTmFtZTooTlNTdHJp
bmcgKilncm91cE5hbWUK
</data>

          </attachment>
      

    </bug>

</bugzilla>