<?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>179495</bug_id>
          
          <creation_ts>2017-11-09 11:27:52 -0800</creation_ts>
          <short_desc>AX: AOM: Implement string type properties</short_desc>
          <delta_ts>2017-11-16 18:24:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179255</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>179255</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nan Wang">n_wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>n_wang</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1369981</commentid>
    <comment_count>0</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-11-09 11:27:52 -0800</bug_when>
    <thetext>AOM Phase 1:
Implement all of the string type properties.

Spec: https://wicg.github.io/aom/spec/

&lt;rdar://problems/35077884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372779</commentid>
    <comment_count>1</comment_count>
      <attachid>327101</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-11-16 13:28:04 -0800</bug_when>
    <thetext>Created attachment 327101
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372843</commentid>
    <comment_count>2</comment_count>
      <attachid>327101</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-11-16 15:51:39 -0800</bug_when>
    <thetext>Comment on attachment 327101
patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2500
&gt; +    const AtomicString&amp; ariaPlaceholder = stringValueForProperty(AXPropertyName::Placeholder);

if this is still atomic why did the return type change?

&gt; Source/WebCore/accessibility/AccessibilityObject.h:704
&gt; +    const String ariaKeyShortcutsValue() const;

should we remove aria as a prefix since this does AOM and aria

&gt; Source/WebCore/accessibility/AccessibilityObject.h:985
&gt; +    virtual const String ariaLiveRegionRelevant() const { return nullAtom(); }

ditto about these method names with aria</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372853</commentid>
    <comment_count>3</comment_count>
      <attachid>327101</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-11-16 15:59:12 -0800</bug_when>
    <thetext>Comment on attachment 327101
patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2500
&gt;&gt; +    const AtomicString&amp; ariaPlaceholder = stringValueForProperty(AXPropertyName::Placeholder);
&gt; 
&gt; if this is still atomic why did the return type change?

Because stringValueForProperty() is not returning the reference, so here if we don&apos;t change it would be error that returning reference to local temporary object.
const AtomicString&amp; ariaPlaceholder = stringValueForProperty(AXPropertyName::Placeholder); is to prolong the lifetime of the String object within this function.
I tried to change stringValueForProperty() by returning a reference, but getting the string value that&apos;s being set from JS would hit the assertion where &quot;The atomic string comes from an other thread!&quot;

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.h:704
&gt;&gt; +    const String ariaKeyShortcutsValue() const;
&gt; 
&gt; should we remove aria as a prefix since this does AOM and aria

Ok

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.h:985
&gt;&gt; +    virtual const String ariaLiveRegionRelevant() const { return nullAtom(); }
&gt; 
&gt; ditto about these method names with aria

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372893</commentid>
    <comment_count>4</comment_count>
      <attachid>327129</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-11-16 16:52:28 -0800</bug_when>
    <thetext>Created attachment 327129
patch

Removed aria prefix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372938</commentid>
    <comment_count>5</comment_count>
      <attachid>327129</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-16 18:24:57 -0800</bug_when>
    <thetext>Comment on attachment 327129
patch

Clearing flags on attachment: 327129

Committed r224953: &lt;https://trac.webkit.org/changeset/224953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372939</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-16 18:24:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327101</attachid>
            <date>2017-11-16 13:28:04 -0800</date>
            <delta_ts>2017-11-16 16:52:28 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>44859</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDE3LTExLTE2ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFPTTogSW1wbGVtZW50IHN0cmlu
ZyB0eXBlIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3OTQ5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudGVkIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgdHlwZSBwcm9wZXJ0
aWVzIGZvciBBY2Nlc3NpYmlsaXR5CisgICAgICAgIE9iamVjdCBNb2RlbC4KKworICAgICAgICBU
ZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9BT00tc3RyaW5nLXByb3BlcnRpZXMuaHRtbAorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVhdGVkKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1ByZXNzZWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzQ2hlY2tlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmFsdWVEZXNjcmlwdGlvbiBjb25z
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUF1dG9Db21w
bGV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
QXV0b0NvbXBsZXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aW52YWxpZFN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFDdXJyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDdXJyZW50U3RhdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cm9sZURlc2NyaXB0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFLZXlTaG9ydGN1dHNW
YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwbGFj
ZWhvbGRlclZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6c29ydERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFIYXNQb3B1cCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUG9wdXBWYWx1ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFQcmVz
c2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoZWNr
Ym94T3JSYWRpb1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFyaWFQcmVzc2VkSXNQcmVzZW50IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFMaXZlUmVnaW9uUmVsZXZhbnQgY29uc3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvcmllbnRhdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGl2ZVJlZ2lvblN0YXR1
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
cmlhTGl2ZVJlZ2lvblJlbGV2YW50IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2libGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFyaWFBdHRyaWJ1dGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6aXNQcm9wZXJ0eVZhbHVlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2libGVOb2RlOjpub3RpZnlBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2libGVOb2RlOjphdXRvY29tcGxldGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJsZU5vZGU6OnNldEF1dG9jb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmxlTm9kZTo6Y2hlY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmxlTm9kZTo6c2V0Q2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6
Y3VycmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6c2V0Q3Vy
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6aGFzUG9wVXAgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OnNldEhhc1BvcFVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjppbnZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2libGVOb2RlOjpzZXRJbnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2libGVOb2RlOjprZXlTaG9ydGN1dHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJsZU5vZGU6OnNldEtleVNob3J0Y3V0cyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmxlTm9kZTo6bGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6
c2V0TGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6c2V0TGFiZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjpzZXRPcmllbnRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6cGxhY2Vob2xkZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OnNldFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2libGVOb2RlOjpwcmVzc2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2libGVOb2RlOjpzZXRQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVO
b2RlOjpyZWxldmFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6
c2V0UmVsZXZhbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OnJvbGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OnNldFJvbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OnJvbGVEZXNjcmlwdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6c2V0Um9sZURlc2NyaXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjpzb3J0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2libGVOb2RlOjpzZXRTb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
bGVOb2RlOjp2YWx1ZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5v
ZGU6OnNldFZhbHVlVGV4dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxlTm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhQcm9wZXJ0eUhhc2hUcmFpdHM6OmNvbnN0cnVjdERl
bGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWFByb3BlcnR5SGFzaFRyYWl0czo6aXNE
ZWxldGVkVmFsdWUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJsZU5vZGUuaWRs
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMTctMTEtMTYgIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBLZXlmcmFtZUVmZmVjdApJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CShyZXZpc2lvbiAyMjQ5MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpoYW5kbGVMaXZlUmVnaW9uQ3JlYQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwotICAgIFN0cmlu
ZyBsaXZlUmVnaW9uU3RhdHVzID0gZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhcmlhX2xpdmVBdHRyKTsKKyAgICBTdHJpbmcgbGl2ZVJlZ2lvblN0YXR1cyA9IEFjY2Vz
c2libGVOb2RlOjplZmZlY3RpdmVTdHJpbmdWYWx1ZUZvckVsZW1lbnQoKmVsZW1lbnQsIEFYUHJv
cGVydHlOYW1lOjpMaXZlKTsKICAgICBpZiAobGl2ZVJlZ2lvblN0YXR1cy5pc0VtcHR5KCkpIHsK
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUm9sZSA9IEFjY2Vzc2libGVOb2RlOjpl
ZmZlY3RpdmVTdHJpbmdWYWx1ZUZvckVsZW1lbnQoKmVsZW1lbnQsIEFYUHJvcGVydHlOYW1lOjpS
b2xlKTsKICAgICAgICAgaWYgKCFhcmlhUm9sZS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcAkocmV2aXNpb24gMjI0OTA1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1OCw3ICs2NTgs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1ByZXNzZWQoCiAKICAgICAvLyBJ
ZiB0aGlzIGlzIGFuIHRvZ2dsZSBidXR0b24sIGNoZWNrIHRoZSBhcmlhLXByZXNzZWQgYXR0cmli
dXRlIHJhdGhlciB0aGFuIG5vZGUoKS0+YWN0aXZlKCkKICAgICBpZiAoaXNUb2dnbGVCdXR0b24o
KSkKLSAgICAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJp
YnV0ZShhcmlhX3ByZXNzZWRBdHRyKSwgInRydWUiKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OlByZXNzZWQpLCAidHJ1ZSIpOwogCiAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY5MCw3ICs2OTAsNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojppc0NoZWNrZWQoCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAg
ICBpZiAodmFsaWRSb2xlICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJp
YnV0ZShhcmlhX2NoZWNrZWRBdHRyKSwgInRydWUiKSkKKyAgICBpZiAodmFsaWRSb2xlICYmIGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OkNoZWNrZWQpLCAidHJ1ZSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTgwMiw3ICs4MDIsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OnZhbHVlRGVzCiAgICAgaWYgKCFpc1JhbmdlQ29udHJvbCgpKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWV0ZXh0
QXR0cikuc3RyaW5nKCk7CisgICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OlZhbHVlVGV4dCk7CiB9CiAKIGZsb2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojp2YWx1ZUZvclJhbmdlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjI0OTA1KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY2NywxMiArMTY2NywxMiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYVJlYWRPbmx5CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9y
dHNBUklBQXV0b0NvbXBsZXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKGlzQ29tYm9Cb3goKSB8
fCBpc0FSSUFUZXh0Q29udHJvbCgpKSAmJiBoYXNBdHRyaWJ1dGUoYXJpYV9hdXRvY29tcGxldGVB
dHRyKTsKKyAgICByZXR1cm4gKGlzQ29tYm9Cb3goKSB8fCBpc0FSSUFUZXh0Q29udHJvbCgpKSAm
JiBoYXNQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QXV0b2NvbXBsZXRlKTsKIH0KIAogU3RyaW5n
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFBdXRvQ29tcGxldGVWYWx1ZSgpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvQ29tcGxldGUgPSBnZXRBdHRyaWJ1dGUoYXJpYV9h
dXRvY29tcGxldGVBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9Db21wbGV0ZSA9
IHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkF1dG9jb21wbGV0ZSk7CiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF1dG9Db21wbGV0ZSwgImlubGlu
ZSIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGF1dG9Db21wbGV0
ZSwgImxpc3QiKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdXRv
Q29tcGxldGUsICJib3RoIikpCkBAIC0yMDAwLDcgKzIwMDAsNyBAQCBTdHJpbmcgQWNjZXNzaWJp
bGl0eU9iamVjdDo6aW52YWxpZFN0YXR1CiAgICAgU3RyaW5nIHVuZGVmaW5lZFZhbHVlID0gQVND
SUlMaXRlcmFsKCJ1bmRlZmluZWQiKTsKIAogICAgIC8vIGFyaWEtaW52YWxpZCBjYW4gcmV0dXJu
IGZhbHNlIChkZWZhdWx0KSwgZ3JhbW1hciwgc3BlbGxpbmcsIG9yIHRydWUuCi0gICAgU3RyaW5n
IGFyaWFJbnZhbGlkID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGdldEF0dHJp
YnV0ZShhcmlhX2ludmFsaWRBdHRyKSk7CisgICAgU3RyaW5nIGFyaWFJbnZhbGlkID0gc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OkludmFsaWQpKTsKICAgICAKICAgICBpZiAoYXJpYUludmFsaWQuaXNFbXB0eSgp
KSB7CiAgICAgICAgIC8vIFdlIHNob3VsZCBleHBvc2UgaW52YWxpZCBzdGF0dXMgZm9yIGlucHV0
IHR5cGVzLgpAQCAtMjAyOCwxMyArMjAyOCwxMyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aW52YWxpZFN0YXR1CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklB
Q3VycmVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShhcmlhX2N1cnJlbnRB
dHRyKTsKKyAgICByZXR1cm4gaGFzUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkN1cnJlbnQpOwog
fQogIAogQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGUgQWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUN1cnJlbnRTdGF0ZSgpIGNvbnN0CiB7CiAgICAgLy8gYXJpYS1jdXJyZW50IGNhbiByZXR1
cm4gZmFsc2UgKGRlZmF1bHQpLCB0cnVlLCBwYWdlLCBzdGVwLCBsb2NhdGlvbiwgZGF0ZSBvciB0
aW1lLgotICAgIFN0cmluZyBjdXJyZW50U3RhdGVWYWx1ZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlcyhnZXRBdHRyaWJ1dGUoYXJpYV9jdXJyZW50QXR0cikpOworICAgIFN0cmlu
ZyBjdXJyZW50U3RhdGVWYWx1ZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhz
dHJpbmdWYWx1ZUZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDdXJyZW50KSk7CiAgICAgCiAg
ICAgLy8gSWYgImZhbHNlIiwgZW1wdHksIG9yIG1pc3NpbmcsIHJldHVybiBmYWxzZSBzdGF0ZS4K
ICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUuaXNFbXB0eSgpIHx8IGN1cnJlbnRTdGF0ZVZhbHVl
ID09ICJmYWxzZSIpCkBAIC0yMzk4LDcgKzIzOTgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Omhhc0hpZ2hsaWdodGluCiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpyb2xlRGVz
Y3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoZ2V0QXR0cmlidXRlKGFyaWFfcm9sZWRlc2NyaXB0aW9uQXR0cikpOworICAgIHJl
dHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoc3RyaW5nVmFsdWVGb3JQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uKSk7CiB9CiAgICAgCiBib29sIG5v
ZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUqIG5vZGUpCkBAIC0yNDQ2LDkgKzI0NDYsOSBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6CiAgICAgcmV0dXJuIGdldEF0
dHJpYnV0ZShkYXRldGltZUF0dHIpOwogfQogICAgIAotY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhS2V5U2hvcnRjdXRzVmFsdWUoKSBjb25zdAorY29uc3QgU3Ry
aW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFLZXlTaG9ydGN1dHNWYWx1ZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX2tleXNob3J0Y3V0c0F0dHIpOworICAgIHJl
dHVybiBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpLZXlTaG9ydGN1dHMp
OwogfQogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50KCkgY29uc3QKQEAg
LTI0OTEsMTMgKzI0OTEsMTMgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1ZhbHVlQXV0
b2ZpbAogICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkuaXNBdXRv
RmlsbGVkKCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdDo6
cGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0Citjb25zdCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6cGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBw
bGFjZWhvbGRlciA9IGdldEF0dHJpYnV0ZShwbGFjZWhvbGRlckF0dHIpOwogICAgIGlmICghcGxh
Y2Vob2xkZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXI7CiAgICAgCi0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUGxhY2Vob2xkZXIgPSBnZXRBdHRyaWJ1dGUoYXJp
YV9wbGFjZWhvbGRlckF0dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYVBsYWNlaG9s
ZGVyID0gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXIp
OwogICAgIGlmICghYXJpYVBsYWNlaG9sZGVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFy
aWFQbGFjZWhvbGRlcjsKICAgICAKQEAgLTI1MjYsMTcgKzI1MjYsMTcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFBdAogICAgICAgICB8fCBoYXNBdHRyaWJ1dGUoYXJp
YV9hdG9taWNBdHRyKQogICAgICAgICB8fCBoYXNBdHRyaWJ1dGUoYXJpYV9idXN5QXR0cikKICAg
ICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfY29udHJvbHNBdHRyKQotICAgICAgICB8fCBoYXNB
dHRyaWJ1dGUoYXJpYV9jdXJyZW50QXR0cikKKyAgICAgICAgfHwgaGFzUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OkN1cnJlbnQpCiAgICAgICAgIHx8IGhhc0F0dHJpYnV0ZShhcmlhX2Rlc2NyaWJl
ZGJ5QXR0cikKICAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfZGV0YWlsc0F0dHIpCiAgICAg
ICAgIHx8IGhhc0F0dHJpYnV0ZShhcmlhX2Rpc2FibGVkQXR0cikKICAgICAgICAgfHwgaGFzQXR0
cmlidXRlKGFyaWFfZXJyb3JtZXNzYWdlQXR0cikKICAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFy
aWFfZmxvd3RvQXR0cikKLSAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfaGFzcG9wdXBBdHRy
KQotICAgICAgICB8fCBoYXNBdHRyaWJ1dGUoYXJpYV9pbnZhbGlkQXR0cikKKyAgICAgICAgfHwg
aGFzUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhhc1BvcFVwKQorICAgICAgICB8fCBoYXNQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6SW52YWxpZCkKICAgICAgICAgfHwgaGFzUHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkxhYmVsKQogICAgICAgICB8fCBoYXNBdHRyaWJ1dGUoYXJpYV9sYWJlbGxl
ZGJ5QXR0cikKLSAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfcmVsZXZhbnRBdHRyKTsKKyAg
ICAgICAgfHwgaGFzUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbGV2YW50KTsKIH0KICAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChjb25z
dCBBdG9taWNTdHJpbmcmIGxpdmVSZWdpb25TdGF0dXMpCkBAIC0yNTk4LDcgKzI1OTgsNyBAQCBB
Y2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBBY2Nlc3NpYmlsaXR5CiAgICAgaWYgKHJvbGUgIT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlSb2xl
OjpDb2x1bW5IZWFkZXIpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlv
bjo6SW52YWxpZDsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc29ydEF0dHJpYnV0ZSA9IGdl
dEF0dHJpYnV0ZShhcmlhX3NvcnRBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNvcnRB
dHRyaWJ1dGUgPSBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTb3J0KTsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc29ydEF0dHJpYnV0ZSwgImFz
Y2VuZGluZyIpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246OkFz
Y2VuZGluZzsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc29ydEF0dHJp
YnV0ZSwgImRlc2NlbmRpbmciKSkKQEAgLTI2MjEsMTIgKzI2MjEsMTIgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdXBwb3J0c1JhbmdlVgogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzdXBwb3J0c0FSSUFIYXNQb3B1cCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc0F0dHJp
YnV0ZShhcmlhX2hhc3BvcHVwQXR0cikgfHwgaXNDb21ib0JveCgpOworICAgIHJldHVybiBoYXNQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUG9wVXApIHx8IGlzQ29tYm9Cb3goKTsKIH0KIAog
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFQb3B1cFZhbHVlKCkgY29uc3QKIHsKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGhhc1BvcHVwID0gZ2V0QXR0cmlidXRlKGFyaWFfaGFzcG9w
dXBBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGhhc1BvcHVwID0gc3RyaW5nVmFsdWVG
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGFzUG9wVXApOwogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShoYXNQb3B1cCwgInRydWUiKQogICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShoYXNQb3B1cCwgImRpYWxvZyIpCiAgICAgICAgIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhhc1BvcHVwLCAiZ3JpZCIpCkBAIC0yNjg1LDcg
KzI2ODUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsYXNzTGlzdChWZWN0CiAKIGJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBUHJlc3NlZCgpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBleHBhbmRlZCA9IGdldEF0dHJpYnV0ZShhcmlhX3ByZXNz
ZWRBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV4cGFuZGVkID0gc3RyaW5nVmFsdWVG
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UHJlc3NlZCk7CiAgICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGV4cGFuZGVkLCAiZmFsc2UiKTsKIH0KICAgICAKQEAgLTI3NDUsNyAr
Mjc0NSw3IEBAIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBBY2Nlc3NpYmlsaXR5T2IKICAgICAv
LyBJZiBpdCdzIGEgdG9nZ2xlIGJ1dHRvbiwgdGhlIGFyaWEtcHJlc3NlZCBhdHRyaWJ1dGUgaXMg
Y29uc3VsdGVkLgogCiAgICAgaWYgKGlzVG9nZ2xlQnV0dG9uKCkpIHsKLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBhcmlhUHJlc3NlZCA9IGdldEF0dHJpYnV0ZShhcmlhX3ByZXNzZWRBdHRy
KTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUHJlc3NlZCA9IHN0cmluZ1ZhbHVl
Rm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlByZXNzZWQpOwogICAgICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYVByZXNzZWQsICJ0cnVlIikpCiAgICAgICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjsKICAgICAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFQcmVzc2VkLCAibWl4ZWQiKSkKQEAgLTI3NTMs
NyArMjc1Myw3IEBAIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSBBY2Nlc3NpYmlsaXR5T2IKICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOwogICAgIH0KICAgICAK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlc3VsdCA9IGdldEF0dHJpYnV0ZShhcmlhX2NoZWNr
ZWRBdHRyKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlc3VsdCA9IHN0cmluZ1ZhbHVlRm9y
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNoZWNrZWQpOwogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShyZXN1bHQsICJ0cnVlIikpCiAgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5QnV0dG9uU3RhdGU6Ok9uOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShyZXN1bHQsICJtaXhlZCIpKSB7CkBAIC0zMTI5LDcgKzMxMjksNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3Q6Om5vdGlmeUlmSWdub3JlCiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYVByZXNzZWRJc1ByZXNlbnQoKSBjb25zdAogewotICAgIHJldHVybiAhZ2V0QXR0cmli
dXRlKGFyaWFfcHJlc3NlZEF0dHIpLmlzRW1wdHkoKTsKKyAgICByZXR1cm4gIXN0cmluZ1ZhbHVl
Rm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlByZXNzZWQpLmlzRW1wdHkoKTsKIH0KIAogVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6dGV4dEl0ZXJhdG9yQmVoYXZp
b3JGb3JUZXh0UmFuZ2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDIyNDkwNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MDEsNyArNzAxLDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlBUklB
Q3VycmVudFN0YXRlIGFyaWFDdXJyZW50U3RhdGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXJpYUN1
cnJlbnRWYWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNBUklBQ3VycmVudCgpIGNvbnN0
OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUtleVNob3J0Y3V0c1ZhbHVlKCkgY29uc3Q7
CisgICAgY29uc3QgU3RyaW5nIGFyaWFLZXlTaG9ydGN1dHNWYWx1ZSgpIGNvbnN0OwogICAgIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGlnbm9y
ZWQgd2hlbiB0aGVyZSdzIGEgbW9kYWwgZGlhbG9nIGRpc3BsYXllZC4KICAgICBib29sIGlnbm9y
ZWRGcm9tQVJJQU1vZGFsUHJlc2VuY2UoKSBjb25zdDsKQEAgLTc4Miw3ICs3ODIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAg
ICB2aXJ0dWFsIFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUo
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGxh
Y2Vob2xkZXJWYWx1ZSgpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyBwbGFjZWhvbGRlclZhbHVl
KCkgY29uc3Q7CiAgICAgYm9vbCBhY2Nlc3NpYmxlTmFtZURlcml2ZXNGcm9tQ29udGVudCgpIGNv
bnN0OwogICAgIAogICAgIC8vIEFiYnJldmlhdGlvbnMKQEAgLTk4Miw3ICs5ODIsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0luc2lkZUFSSUFMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0g
dHJ1ZSkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXJpYUxpdmVSZWdpb25BbmNl
c3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3Qg
U3RyaW5nIGFyaWFMaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
LSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUxpdmVSZWdpb25SZWxldmFudCgp
IGNvbnN0IHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBh
cmlhTGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QgeyByZXR1cm4gbnVsbEF0b20oKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBhcmlhTGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgc3RhdGljIGNvbnN0IFN0cmluZyBkZWZhdWx0TGl2ZVJlZ2lvblN0YXR1c0ZvclJvbGUoQWNj
ZXNzaWJpbGl0eVJvbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMjQ5
MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODQxLDcgKzI4NDEsNyBAQCBBY2Nlc3NpYmls
aXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAKIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlv
biBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBhcmlhT3JpZW50YXRpb24gPSBnZXRBdHRyaWJ1dGUoYXJpYV9v
cmllbnRhdGlvbkF0dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYU9yaWVudGF0aW9u
ID0gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6T3JpZW50YXRpb24pOwog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhT3JpZW50YXRpb24sICJo
b3Jpem9udGFsIikpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246Okhv
cml6b250YWw7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmll
bnRhdGlvbiwgInZlcnRpY2FsIikpCkBAIC0zMjU1LDcgKzMyNTUsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmNhbkhhdmVDCiAKIGNvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphcmlhTGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBsaXZlUmVnaW9uU3RhdHVzID0gZ2V0QXR0cmlidXRlKGFyaWFfbGl2ZUF0
dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGl2ZVJlZ2lvblN0YXR1cyA9IHN0cmluZ1Zh
bHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpdmUpOwogICAgIC8vIFRoZXNlIHJvbGVz
IGhhdmUgaW1wbGljaXQgbGl2ZSByZWdpb24gc3RhdHVzLgogICAgIGlmIChsaXZlUmVnaW9uU3Rh
dHVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRMaXZlUmVnaW9uU3RhdHVzRm9y
Um9sZShyb2xlVmFsdWUoKSk7CkBAIC0zMjYzLDE0ICszMjYzLDEzIEBAIGNvbnN0IFN0cmluZyBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjoKICAgICByZXR1cm4gbGl2ZVJlZ2lvblN0YXR1czsK
IH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojphcmlh
TGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QKK2NvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphcmlhTGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QKIHsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBkZWZhdWx0TGl2ZVJlZ2lvblJlbGV2
YW50KCJhZGRpdGlvbnMgdGV4dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVsZXZhbnQgPSBnZXRBdHRyaWJ1dGUoYXJpYV9y
ZWxldmFudEF0dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVsZXZhbnQgPSBzdHJpbmdW
YWx1ZUZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZWxldmFudCk7CiAKICAgICAvLyBEZWZh
dWx0IGFyaWEtcmVsZXZhbnQgPSAiYWRkaXRpb25zIHRleHQiLgogICAgIGlmIChyZWxldmFudC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBkZWZhdWx0TGl2ZVJlZ2lvblJlbGV2YW50OworICAg
ICAgICByZXR1cm4gImFkZGl0aW9ucyB0ZXh0IjsKICAgICAKICAgICByZXR1cm4gcmVsZXZhbnQ7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMjI0OTA1KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIEVTcGVhayBzcGVha1Byb3Bl
cnR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFyaWFMaXZlUmVn
aW9uU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlh
TGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgU3RyaW5nIGFy
aWFMaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGFyaWFMaXZl
UmVnaW9uQXRvbWljKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdCBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxl
Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmxlTm9kZS5jcHAJKHJldmlzaW9uIDIyNDkwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJsZU5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSwy
MiBAQCBzdGF0aWMgQVJJQUF0dHJpYnV0ZU1hcCYgYXJpYUF0dHJpYnV0ZU1hCiAgICAgICAgICAg
ICBBWFByb3BlcnR5TmFtZSBuYW1lOwogICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBhcmlhQXR0
cmlidXRlOwogICAgICAgICB9IGF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAgIHsgQVhQcm9w
ZXJ0eU5hbWU6OkF1dG9jb21wbGV0ZSwgYXJpYV9hdXRvY29tcGxldGVBdHRyIH0sCisgICAgICAg
ICAgICB7IEFYUHJvcGVydHlOYW1lOjpDaGVja2VkLCBhcmlhX2NoZWNrZWRBdHRyIH0sCisgICAg
ICAgICAgICB7IEFYUHJvcGVydHlOYW1lOjpDdXJyZW50LCBhcmlhX2N1cnJlbnRBdHRyIH0sCisg
ICAgICAgICAgICB7IEFYUHJvcGVydHlOYW1lOjpIYXNQb3BVcCwgYXJpYV9oYXNwb3B1cEF0dHIg
fSwKKyAgICAgICAgICAgIHsgQVhQcm9wZXJ0eU5hbWU6OkludmFsaWQsIGFyaWFfaW52YWxpZEF0
dHIgfSwKKyAgICAgICAgICAgIHsgQVhQcm9wZXJ0eU5hbWU6OktleVNob3J0Y3V0cywgYXJpYV9r
ZXlzaG9ydGN1dHNBdHRyIH0sCiAgICAgICAgICAgICB7IEFYUHJvcGVydHlOYW1lOjpMYWJlbCwg
YXJpYV9sYWJlbEF0dHIgfSwKLSAgICAgICAgICAgIHsgQVhQcm9wZXJ0eU5hbWU6OlJvbGUsIHJv
bGVBdHRyIH0KKyAgICAgICAgICAgIHsgQVhQcm9wZXJ0eU5hbWU6OkxpdmUsIGFyaWFfbGl2ZUF0
dHIgfSwKKyAgICAgICAgICAgIHsgQVhQcm9wZXJ0eU5hbWU6Ok9yaWVudGF0aW9uLCBhcmlhX29y
aWVudGF0aW9uQXR0ciB9LAorICAgICAgICAgICAgeyBBWFByb3BlcnR5TmFtZTo6UGxhY2Vob2xk
ZXIsIGFyaWFfcGxhY2Vob2xkZXJBdHRyIH0sCisgICAgICAgICAgICB7IEFYUHJvcGVydHlOYW1l
OjpQcmVzc2VkLCBhcmlhX3ByZXNzZWRBdHRyIH0sCisgICAgICAgICAgICB7IEFYUHJvcGVydHlO
YW1lOjpSZWxldmFudCwgYXJpYV9yZWxldmFudEF0dHIgfSwKKyAgICAgICAgICAgIHsgQVhQcm9w
ZXJ0eU5hbWU6OlJvbGUsIHJvbGVBdHRyIH0sCisgICAgICAgICAgICB7IEFYUHJvcGVydHlOYW1l
OjpSb2xlRGVzY3JpcHRpb24sIGFyaWFfcm9sZWRlc2NyaXB0aW9uQXR0ciB9LAorICAgICAgICAg
ICAgeyBBWFByb3BlcnR5TmFtZTo6U29ydCwgYXJpYV9zb3J0QXR0ciB9LAorICAgICAgICAgICAg
eyBBWFByb3BlcnR5TmFtZTo6VmFsdWVUZXh0LCBhcmlhX3ZhbHVldGV4dEF0dHIgfQogICAgICAg
ICB9OwogICAgICAgICBBUklBQXR0cmlidXRlTWFwIG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBh
dHRyaWJ1dGUgOiBhdHRyaWJ1dGVzKQpAQCAtNTksOCArNzMsMjEgQEAgc3RhdGljIEFSSUFBdHRy
aWJ1dGVNYXAmIGFyaWFBdHRyaWJ1dGVNYQogc3RhdGljIGJvb2wgaXNQcm9wZXJ0eVZhbHVlU3Ry
aW5nKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBzd2l0Y2ggKHByb3BlcnR5
TmFtZSkgeworICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OkF1dG9jb21wbGV0ZToKKyAgICBjYXNl
IEFYUHJvcGVydHlOYW1lOjpDaGVja2VkOgorICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OkN1cnJl
bnQ6CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SGFzUG9wVXA6CisgICAgY2FzZSBBWFByb3Bl
cnR5TmFtZTo6SW52YWxpZDoKICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpMYWJlbDoKKyAgICBj
YXNlIEFYUHJvcGVydHlOYW1lOjpMaXZlOgorICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6Ok9yaWVu
dGF0aW9uOgorICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyOgorICAgIGNhc2Ug
QVhQcm9wZXJ0eU5hbWU6OlByZXNzZWQ6CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6UmVsZXZh
bnQ6CiAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6Um9sZToKKyAgICBjYXNlIEFYUHJvcGVydHlO
YW1lOjpSb2xlRGVzY3JpcHRpb246CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6U29ydDoKKyAg
ICBjYXNlIEFYUHJvcGVydHlOYW1lOjpWYWx1ZVRleHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExOSwxNiArMTQ2LDg3IEBA
IHZvaWQgQWNjZXNzaWJsZU5vZGU6OnNldFN0cmluZ1Byb3BlcnR5KGMKICAgICBtX3Byb3BlcnR5
TWFwLnNldChwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKIH0KIAotU3RyaW5nIEFjY2Vzc2libGVOb2Rl
Ojpyb2xlKCkgY29uc3QKK3ZvaWQgQWNjZXNzaWJsZU5vZGU6Om5vdGlmeUF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKLSAgICByZXR1cm4gc3Ry
aW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6OlJvbGUp
OworICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1fb3duZXJFbGVtZW50LmRvY3VtZW50
KCkuYXhPYmplY3RDYWNoZSgpKQorICAgICAgICBjYWNoZS0+aGFuZGxlQXR0cmlidXRlQ2hhbmdl
ZChuYW1lLCAmbV9vd25lckVsZW1lbnQpOwogfQogCi12b2lkIEFjY2Vzc2libGVOb2RlOjpzZXRS
b2xlKGNvbnN0IFN0cmluZyYgcm9sZSkKK1N0cmluZyBBY2Nlc3NpYmxlTm9kZTo6YXV0b2NvbXBs
ZXRlKCkgY29uc3QKIHsKLSAgICBzZXRTdHJpbmdQcm9wZXJ0eShyb2xlLCBBWFByb3BlcnR5TmFt
ZTo6Um9sZSk7Ci0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbV9vd25lckVsZW1lbnQu
ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkpCi0gICAgICAgIGNhY2hlLT5oYW5kbGVBdHRyaWJ1
dGVDaGFuZ2VkKHJvbGVBdHRyLCAmbV9vd25lckVsZW1lbnQpOworICAgIHJldHVybiBzdHJpbmdW
YWx1ZUZvclByb3BlcnR5KG1fb3duZXJFbGVtZW50LCBBWFByb3BlcnR5TmFtZTo6QXV0b2NvbXBs
ZXRlKTsKK30KKwordm9pZCBBY2Nlc3NpYmxlTm9kZTo6c2V0QXV0b2NvbXBsZXRlKGNvbnN0IFN0
cmluZyYgYXV0b2NvbXBsZXRlKQoreworICAgIHNldFN0cmluZ1Byb3BlcnR5KGF1dG9jb21wbGV0
ZSwgQVhQcm9wZXJ0eU5hbWU6OkF1dG9jb21wbGV0ZSk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hh
bmdlZChhcmlhX2F1dG9jb21wbGV0ZUF0dHIpOworfQorCitTdHJpbmcgQWNjZXNzaWJsZU5vZGU6
OmNoZWNrZWQoKSBjb25zdAoreworICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KG1f
b3duZXJFbGVtZW50LCBBWFByb3BlcnR5TmFtZTo6Q2hlY2tlZCk7Cit9CisKK3ZvaWQgQWNjZXNz
aWJsZU5vZGU6OnNldENoZWNrZWQoY29uc3QgU3RyaW5nJiBjaGVja2VkKQoreworICAgIHNldFN0
cmluZ1Byb3BlcnR5KGNoZWNrZWQsIEFYUHJvcGVydHlOYW1lOjpDaGVja2VkKTsKKyAgICBub3Rp
ZnlBdHRyaWJ1dGVDaGFuZ2VkKGFyaWFfY2hlY2tlZEF0dHIpOworfQorCitTdHJpbmcgQWNjZXNz
aWJsZU5vZGU6OmN1cnJlbnQoKSBjb25zdAoreworICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvclBy
b3BlcnR5KG1fb3duZXJFbGVtZW50LCBBWFByb3BlcnR5TmFtZTo6Q3VycmVudCk7Cit9CisKK3Zv
aWQgQWNjZXNzaWJsZU5vZGU6OnNldEN1cnJlbnQoY29uc3QgU3RyaW5nJiBjdXJyZW50KQorewor
ICAgIHNldFN0cmluZ1Byb3BlcnR5KGN1cnJlbnQsIEFYUHJvcGVydHlOYW1lOjpDdXJyZW50KTsK
KyAgICBub3RpZnlBdHRyaWJ1dGVDaGFuZ2VkKGFyaWFfY3VycmVudEF0dHIpOworfQorCitTdHJp
bmcgQWNjZXNzaWJsZU5vZGU6Omhhc1BvcFVwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RyaW5n
VmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6Okhhc1BvcFVw
KTsKK30KKwordm9pZCBBY2Nlc3NpYmxlTm9kZTo6c2V0SGFzUG9wVXAoY29uc3QgU3RyaW5nJiBo
YXNQb3BVcCkKK3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eShoYXNQb3BVcCwgQVhQcm9wZXJ0eU5h
bWU6Okhhc1BvcFVwKTsKKyAgICBub3RpZnlBdHRyaWJ1dGVDaGFuZ2VkKGFyaWFfaGFzcG9wdXBB
dHRyKTsKK30KKworU3RyaW5nIEFjY2Vzc2libGVOb2RlOjppbnZhbGlkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQcm9wZXJ0
eU5hbWU6OkludmFsaWQpOworfQorCit2b2lkIEFjY2Vzc2libGVOb2RlOjpzZXRJbnZhbGlkKGNv
bnN0IFN0cmluZyYgaW52YWxpZCkKK3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eShpbnZhbGlkLCBB
WFByb3BlcnR5TmFtZTo6SW52YWxpZCk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hhbmdlZChhcmlh
X2ludmFsaWRBdHRyKTsKK30KKworU3RyaW5nIEFjY2Vzc2libGVOb2RlOjprZXlTaG9ydGN1dHMo
KSBjb25zdAoreworICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KG1fb3duZXJFbGVt
ZW50LCBBWFByb3BlcnR5TmFtZTo6S2V5U2hvcnRjdXRzKTsKK30KKwordm9pZCBBY2Nlc3NpYmxl
Tm9kZTo6c2V0S2V5U2hvcnRjdXRzKGNvbnN0IFN0cmluZyYga2V5U2hvcnRjdXRzKQoreworICAg
IHNldFN0cmluZ1Byb3BlcnR5KGtleVNob3J0Y3V0cywgQVhQcm9wZXJ0eU5hbWU6OktleVNob3J0
Y3V0cyk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hhbmdlZChhcmlhX2tleXNob3J0Y3V0c0F0dHIp
OworfQorCitTdHJpbmcgQWNjZXNzaWJsZU5vZGU6OmxpdmUoKSBjb25zdAoreworICAgIHJldHVy
biBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KG1fb3duZXJFbGVtZW50LCBBWFByb3BlcnR5TmFtZTo6
TGl2ZSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJsZU5vZGU6OnNldExpdmUoY29uc3QgU3RyaW5nJiBs
aXZlKQoreworICAgIHNldFN0cmluZ1Byb3BlcnR5KGxpdmUsIEFYUHJvcGVydHlOYW1lOjpMaXZl
KTsKKyAgICBub3RpZnlBdHRyaWJ1dGVDaGFuZ2VkKGFyaWFfbGl2ZUF0dHIpOwogfQogCiBTdHJp
bmcgQWNjZXNzaWJsZU5vZGU6OmxhYmVsKCkgY29uc3QKQEAgLTEzOSw4ICsyMzcsOTUgQEAgU3Ry
aW5nIEFjY2Vzc2libGVOb2RlOjpsYWJlbCgpIGNvbnN0CiB2b2lkIEFjY2Vzc2libGVOb2RlOjpz
ZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIHNldFN0cmluZ1Byb3BlcnR5KGxh
YmVsLCBBWFByb3BlcnR5TmFtZTo6TGFiZWwpOwotICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNo
ZSA9IG1fb3duZXJFbGVtZW50LmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpKQotICAgICAgICBj
YWNoZS0+aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChhcmlhX2xhYmVsQXR0ciwgJm1fb3duZXJFbGVt
ZW50KTsKKyAgICBub3RpZnlBdHRyaWJ1dGVDaGFuZ2VkKGFyaWFfbGFiZWxBdHRyKTsKK30KKwor
U3RyaW5nIEFjY2Vzc2libGVOb2RlOjpvcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkobV9vd25lckVsZW1lbnQsIEFYUHJvcGVydHlOYW1lOjpP
cmllbnRhdGlvbik7Cit9CisKK3ZvaWQgQWNjZXNzaWJsZU5vZGU6OnNldE9yaWVudGF0aW9uKGNv
bnN0IFN0cmluZyYgb3JpZW50YXRpb24pCit7CisgICAgc2V0U3RyaW5nUHJvcGVydHkob3JpZW50
YXRpb24sIEFYUHJvcGVydHlOYW1lOjpPcmllbnRhdGlvbik7CisgICAgbm90aWZ5QXR0cmlidXRl
Q2hhbmdlZChhcmlhX29yaWVudGF0aW9uQXR0cik7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmxlTm9k
ZTo6cGxhY2Vob2xkZXIoKSBjb25zdAoreworICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvclByb3Bl
cnR5KG1fb3duZXJFbGVtZW50LCBBWFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXIpOworfQorCit2
b2lkIEFjY2Vzc2libGVOb2RlOjpzZXRQbGFjZWhvbGRlcihjb25zdCBTdHJpbmcmIHBsYWNlaG9s
ZGVyKQoreworICAgIHNldFN0cmluZ1Byb3BlcnR5KHBsYWNlaG9sZGVyLCBBWFByb3BlcnR5TmFt
ZTo6UGxhY2Vob2xkZXIpOworICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQoYXJpYV9wbGFjZWhv
bGRlckF0dHIpOworfQorCitTdHJpbmcgQWNjZXNzaWJsZU5vZGU6OnByZXNzZWQoKSBjb25zdAor
eworICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KG1fb3duZXJFbGVtZW50LCBBWFBy
b3BlcnR5TmFtZTo6UHJlc3NlZCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJsZU5vZGU6OnNldFByZXNz
ZWQoY29uc3QgU3RyaW5nJiBwcmVzc2VkKQoreworICAgIHNldFN0cmluZ1Byb3BlcnR5KHByZXNz
ZWQsIEFYUHJvcGVydHlOYW1lOjpQcmVzc2VkKTsKKyAgICBub3RpZnlBdHRyaWJ1dGVDaGFuZ2Vk
KGFyaWFfcHJlc3NlZEF0dHIpOworfQorCitTdHJpbmcgQWNjZXNzaWJsZU5vZGU6OnJlbGV2YW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxl
bWVudCwgQVhQcm9wZXJ0eU5hbWU6OlJlbGV2YW50KTsKK30KKwordm9pZCBBY2Nlc3NpYmxlTm9k
ZTo6c2V0UmVsZXZhbnQoY29uc3QgU3RyaW5nJiByZWxldmFudCkKK3sKKyAgICBzZXRTdHJpbmdQ
cm9wZXJ0eShyZWxldmFudCwgQVhQcm9wZXJ0eU5hbWU6OlJlbGV2YW50KTsKKyAgICBub3RpZnlB
dHRyaWJ1dGVDaGFuZ2VkKGFyaWFfcmVsZXZhbnRBdHRyKTsKK30KKworU3RyaW5nIEFjY2Vzc2li
bGVOb2RlOjpyb2xlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0
eShtX293bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6OlJvbGUpOworfQorCit2b2lkIEFjY2Vz
c2libGVOb2RlOjpzZXRSb2xlKGNvbnN0IFN0cmluZyYgcm9sZSkKK3sKKyAgICBzZXRTdHJpbmdQ
cm9wZXJ0eShyb2xlLCBBWFByb3BlcnR5TmFtZTo6Um9sZSk7CisgICAgbm90aWZ5QXR0cmlidXRl
Q2hhbmdlZChyb2xlQXR0cik7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmxlTm9kZTo6cm9sZURlc2Ny
aXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShtX293
bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbik7Cit9CisKK3ZvaWQg
QWNjZXNzaWJsZU5vZGU6OnNldFJvbGVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIHJvbGVEZXNj
cmlwdGlvbikKK3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eShyb2xlRGVzY3JpcHRpb24sIEFYUHJv
cGVydHlOYW1lOjpSb2xlRGVzY3JpcHRpb24pOworICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQo
YXJpYV9yb2xlZGVzY3JpcHRpb25BdHRyKTsKK30KKworU3RyaW5nIEFjY2Vzc2libGVOb2RlOjpz
b3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVy
RWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6OlNvcnQpOworfQorCit2b2lkIEFjY2Vzc2libGVOb2Rl
OjpzZXRTb3J0KGNvbnN0IFN0cmluZyYgc29ydCkKK3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eShz
b3J0LCBBWFByb3BlcnR5TmFtZTo6U29ydCk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hhbmdlZChh
cmlhX3NvcnRBdHRyKTsKK30KKworU3RyaW5nIEFjY2Vzc2libGVOb2RlOjp2YWx1ZVRleHQoKSBj
b25zdAoreworICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KG1fb3duZXJFbGVtZW50
LCBBWFByb3BlcnR5TmFtZTo6VmFsdWVUZXh0KTsKK30KKwordm9pZCBBY2Nlc3NpYmxlTm9kZTo6
c2V0VmFsdWVUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWVUZXh0KQoreworICAgIHNldFN0cmluZ1By
b3BlcnR5KHZhbHVlVGV4dCwgQVhQcm9wZXJ0eU5hbWU6OlZhbHVlVGV4dCk7CisgICAgbm90aWZ5
QXR0cmlidXRlQ2hhbmdlZChhcmlhX3ZhbHVldGV4dEF0dHIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2libGVO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmxlTm9kZS5oCShyZXZpc2lvbiAyMjQ5MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2libGVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDIyIEBAIHR5
cGVkZWYgVmFyaWFudDxTdHJpbmcsIGJvb2wsIGludD4gUHJvcGUKIAogZW51bSBjbGFzcyBBWFBy
b3BlcnR5TmFtZSB7CiAgICAgTm9uZSwKKyAgICBBdXRvY29tcGxldGUsCisgICAgQ2hlY2tlZCwK
KyAgICBDdXJyZW50LAorICAgIEhhc1BvcFVwLAorICAgIEludmFsaWQsCisgICAgS2V5U2hvcnRj
dXRzLAorICAgIExhYmVsLAorICAgIExpdmUsCisgICAgT3JpZW50YXRpb24sCisgICAgUGxhY2Vo
b2xkZXIsCisgICAgUHJlc3NlZCwKKyAgICBSZWxldmFudCwKICAgICBSb2xlLAotICAgIExhYmVs
CisgICAgUm9sZURlc2NyaXB0aW9uLAorICAgIFNvcnQsCisgICAgVmFsdWVUZXh0CiB9OwogCiBz
dHJ1Y3QgQVhQcm9wZXJ0eUhhc2hUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPEFYUHJv
cGVydHlOYW1lPiB7CkBAIC00OSwxMSArNjMsMTEgQEAgc3RydWN0IEFYUHJvcGVydHlIYXNoVHJh
aXRzIDogV1RGOjpHZW5lcgogICAgIHN0YXRpYyBBWFByb3BlcnR5TmFtZSBlbXB0eVZhbHVlKCkg
eyByZXR1cm4gQVhQcm9wZXJ0eU5hbWU6Ok5vbmU7IH07CiAgICAgc3RhdGljIHZvaWQgY29uc3Ry
dWN0RGVsZXRlZFZhbHVlKEFYUHJvcGVydHlOYW1lJiBzbG90KQogICAgIHsKLSAgICAgICAgc2xv
dCA9IEFYUHJvcGVydHlOYW1lOjpOb25lOworICAgICAgICBzbG90ID0gc3RhdGljX2Nhc3Q8QVhQ
cm9wZXJ0eU5hbWU+KHN0YXRpY19jYXN0PGludD4oQVhQcm9wZXJ0eU5hbWU6Ok5vbmUpIC0gMSk7
CiAgICAgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKEFYUHJvcGVydHlOYW1lIHZh
bHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlID09IEFYUHJvcGVydHlOYW1lOjpOb25l
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkgPT0gc3RhdGljX2Nhc3Q8
aW50PihBWFByb3BlcnR5TmFtZTo6Tm9uZSkgLSAxOwogICAgIH0KIH07CiAKQEAgLTcxLDE2ICs4
NSw2MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBlZmZlY3RpdmVTdHJpbmdW
YWx1ZUZvckVsZW1lbnQoRWxlbWVudCYsIEFYUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9v
bCBoYXNQcm9wZXJ0eShFbGVtZW50JiwgQVhQcm9wZXJ0eU5hbWUpOwogCi0gICAgU3RyaW5nIHJv
bGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFJvbGUoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5n
IGF1dG9jb21wbGV0ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0QXV0b2NvbXBsZXRlKGNvbnN0IFN0
cmluZyYpOworCisgICAgU3RyaW5nIGNoZWNrZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldENoZWNr
ZWQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgY3VycmVudCgpIGNvbnN0OworICAgIHZv
aWQgc2V0Q3VycmVudChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBoYXNQb3BVcCgpIGNv
bnN0OworICAgIHZvaWQgc2V0SGFzUG9wVXAoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcg
aW52YWxpZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SW52YWxpZChjb25zdCBTdHJpbmcmKTsKKwor
ICAgIFN0cmluZyBrZXlTaG9ydGN1dHMoKSBjb25zdDsKKyAgICB2b2lkIHNldEtleVNob3J0Y3V0
cyhjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBsaXZlKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRMaXZlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKIAorICAgIFN0cmluZyBvcmllbnRhdGlvbigp
IGNvbnN0OworICAgIHZvaWQgc2V0T3JpZW50YXRpb24oY29uc3QgU3RyaW5nJik7CisKKyAgICBT
dHJpbmcgcGxhY2Vob2xkZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0
IFN0cmluZyYpOworCisgICAgU3RyaW5nIHByZXNzZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBy
ZXNzZWQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcmVsZXZhbnQoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFJlbGV2YW50KGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHJvbGUoKSBj
b25zdDsKKyAgICB2b2lkIHNldFJvbGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcm9s
ZURlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSb2xlRGVzY3JpcHRpb24oY29uc3Qg
U3RyaW5nJik7CisKKyAgICBTdHJpbmcgc29ydCgpIGNvbnN0OworICAgIHZvaWQgc2V0U29ydChj
b25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyB2YWx1ZVRleHQoKSBjb25zdDsKKyAgICB2b2lk
IHNldFZhbHVlVGV4dChjb25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgUHJvcGVydHlWYWx1ZVZhcmlhbnQgdmFsdWVGb3JQcm9wZXJ0eShFbGVtZW50JiwgQVhQcm9w
ZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgc3RyaW5nVmFsdWVGb3JQcm9wZXJ0
eShFbGVtZW50JiwgQVhQcm9wZXJ0eU5hbWUpOwogICAgIHZvaWQgc2V0U3RyaW5nUHJvcGVydHko
Y29uc3QgU3RyaW5nJiwgQVhQcm9wZXJ0eU5hbWUpOworICAgIAorICAgIHZvaWQgbm90aWZ5QXR0
cmlidXRlQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJik7CiAKICAgICBFbGVt
ZW50JiBtX293bmVyRWxlbWVudDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmxlTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmxlTm9kZS5pZGwJKHJldmlzaW9uIDIyNDkwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJsZU5vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNywyMCBAQAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogICAgIEVuYWJsZWRB
dFJ1bnRpbWU9QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsLAogXSBpbnRlcmZhY2UgQWNjZXNzaWJs
ZU5vZGUgewotICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IHJvbGU7CisgICAgYXR0cmlidXRlIERP
TVN0cmluZz8gYXV0b2NvbXBsZXRlOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGNoZWNrZWQ7
CisgICAgYXR0cmlidXRlIERPTVN0cmluZz8gY3VycmVudDsKKyAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nPyBoYXNQb3BVcDsKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBpbnZhbGlkOworICAgIGF0
dHJpYnV0ZSBET01TdHJpbmc/IGtleVNob3J0Y3V0czsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
PyBsYWJlbDsKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBsaXZlOworICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmc/IG9yaWVudGF0aW9uOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IHBsYWNlaG9s
ZGVyOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IHByZXNzZWQ7CisgICAgYXR0cmlidXRlIERP
TVN0cmluZz8gcmVsZXZhbnQ7CisgICAgYXR0cmlidXRlIERPTVN0cmluZz8gcm9sZTsKKyAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nPyByb2xlRGVzY3JpcHRpb247CisgICAgYXR0cmlidXRlIERPTVN0
cmluZz8gc29ydDsKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyB2YWx1ZVRleHQ7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlzaW9uIDIyNDkw
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTg0LDYgKzMxODQsMTggQEAg
LSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSJdKQogICAg
ICAgICByZXR1cm4gbV9vYmplY3QtPmdldEF0dHJpYnV0ZShpZEF0dHIpOwogICAgIAorICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEF1dG9jb21wbGV0ZVZhbHVlIl0p
CisgICAgICAgIHJldHVybiBtX29iamVjdC0+YXJpYUF1dG9Db21wbGV0ZVZhbHVlKCk7CisgICAg
CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYSGFzUG9wVXBWYWx1
ZSJdKQorICAgICAgICByZXR1cm4gbV9vYmplY3QtPmFyaWFQb3B1cFZhbHVlKCk7CisgICAgCisg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYS2V5U2hvcnRjdXRzVmFs
dWUiXSkKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5hcmlhS2V5U2hvcnRjdXRzVmFsdWUoKTsK
KyAgICAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBUklBUHJl
c3NlZElzUHJlc2VudCJdKQorICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Om1fb2JqZWN0LT5hcmlhUHJlc3NlZElzUHJlc2VudCgpXTsKKyAgICAKICAgICBpZiAobV9vYmpl
Y3QtPmlzV2ViQXJlYSgpICYmIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoQXR0cmlidXRlXSkKICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+cHJldmVudEtleWJv
YXJkRE9NRXZlbnREaXNwYXRjaCgpXTsKICAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDkwNSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE3LTExLTE2ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6
IEFPTTogSW1wbGVtZW50IHN0cmluZyB0eXBlIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTQ5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmls
aXR5LW9iamVjdC1tb2RlbC5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FPTS1z
dHJpbmctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL0FPTS1zdHJpbmctcHJvcGVydGllcy5odG1sOiBBZGRlZC4KKwogMjAxNy0xMS0x
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU2VydmljZSBX
b3JrZXIgZmV0Y2ggc2hvdWxkIGhhbmRsZSBlbXB0eSByZXNwb25zZXMKSW5kZXg6IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1vYmplY3QtbW9kZWwuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktb2JqZWN0LW1v
ZGVsLmh0bWwJKHJldmlzaW9uIDIyNDkwNSkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YWNjZXNzaWJpbGl0eS1vYmplY3QtbW9kZWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcg
KzExMSw2IEBACiAgICAgICAgICAgICB2YXIgYnV0dG9uMiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJidXR0b24yIik7CiAgICAgICAgICAgICBidXR0b24yLnBhcmVudEVsZW1lbnQucmVtb3Zl
Q2hpbGQoYnV0dG9uMik7CiAgICAgICAgIH0pKCk7Ci0gICAgICAgIGdjKCk7CiAgICAgICAgIHNo
b3VsZEJlKCJhb21SZW1vdmVkQnV0dG9uLnJvbGUiLCAiJ2NoZWNrYm94JyIpOwogICAgIH0KICAg
ICAKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL0FPTS1zdHJpbmctcHJvcGVy
dGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvQU9NLXN0cmluZy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9BT00tc3RyaW5nLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzUgQEAKKworVGhpcyB0ZXN0cyBz
dHJpbmcgdHlwZSBBY2Nlc3NpYmlsaXR5IE9iamVjdCBNb2RlbCBwcm9wZXJ0aWVzLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitBdXRvY29tcGxldGUgc3VwcG9ydAorUEFTUyBu
b2RlLmFjY2Vzc2libGVOb2RlLmF1dG9jb21wbGV0ZSBpcyAiaW5saW5lIgorUEFTUyBheE5vZGUu
c3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQXV0b2NvbXBsZXRlVmFsdWUnKSBpcyAiaW5saW5lIgor
CitDaGVja2VkIHN1cHBvcnQKK1BBU1MgYXhOb2RlLmlzQ2hlY2tlZCBpcyBmYWxzZQorUEFTUyBu
b2RlLmFjY2Vzc2libGVOb2RlLmNoZWNrZWQgaXMgInRydWUiCitQQVNTIGF4Tm9kZS5pc0NoZWNr
ZWQgaXMgdHJ1ZQorCitDdXJyZW50IHN1cHBvcnQKK1BBU1MgYXhOb2RlLnN0cmluZ0F0dHJpYnV0
ZVZhbHVlKCdBWEFSSUFDdXJyZW50JykgaXMgImZhbHNlIgorUEFTUyBjdXJyZW50LmFjY2Vzc2li
bGVOb2RlLmN1cnJlbnQgaXMgInBhZ2UiCitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1
ZSgnQVhBUklBQ3VycmVudCcpIGlzICJwYWdlIgorCitIYXNQb3BVcCBzdXBwb3J0CitQQVNTIGF4
Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhIYXNQb3BVcFZhbHVlJykgaXMgImZhbHNlIgor
UEFTUyBub2RlLmFjY2Vzc2libGVOb2RlLmhhc1BvcFVwIGlzICJkaWFsb2ciCitQQVNTIGF4Tm9k
ZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhIYXNQb3BVcFZhbHVlJykgaXMgImRpYWxvZyIKKwor
SW52YWxpZCBzdXBwb3J0CitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhJbnZh
bGlkJykgaXMgImZhbHNlIgorUEFTUyBub2RlLmFjY2Vzc2libGVOb2RlLmludmFsaWQgaXMgImdy
YW1tYXIiCitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhJbnZhbGlkJykgaXMg
ImdyYW1tYXIiCisKK0tleVNob3J0Y3V0cyBzdXBwb3J0CitQQVNTIG5vZGUuYWNjZXNzaWJsZU5v
ZGUua2V5U2hvcnRjdXRzIGlzICJDdHJsK0YiCitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVW
YWx1ZSgnQVhLZXlTaG9ydGN1dHNWYWx1ZScpIGlzICJDdHJsK0YiCisKK0xpdmUgc3VwcG9ydAor
UEFTUyBheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJQUxpdmUnKSBpcyAiIgorUEFT
UyBub2RlLmFjY2Vzc2libGVOb2RlLmxpdmUgaXMgInBvbGl0ZSIKK1BBU1MgYXhOb2RlLnN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFMaXZlJykgaXMgInBvbGl0ZSIKKworT3JpZW50YXRpb24g
c3VwcG9ydAorUEFTUyBheE5vZGUub3JpZW50YXRpb24gaXMgIkFYT3JpZW50YXRpb246IEFYSG9y
aXpvbnRhbE9yaWVudGF0aW9uIgorUEFTUyBub2RlLmFjY2Vzc2libGVOb2RlLm9yaWVudGF0aW9u
IGlzICJ2ZXJ0aWNhbCIKK1BBU1MgYXhOb2RlLm9yaWVudGF0aW9uIGlzICJBWE9yaWVudGF0aW9u
OiBBWFZlcnRpY2FsT3JpZW50YXRpb24iCisKK1BsYWNlaG9sZGVyIHN1cHBvcnQKK1BBU1MgYXhO
b2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWFBsYWNlaG9sZGVyVmFsdWUnKSBpcyAiIgorUEFT
UyBub2RlLmFjY2Vzc2libGVOb2RlLnBsYWNlaG9sZGVyIGlzICJ0ZXN0IHBsYWNlaG9sZGVyIgor
UEFTUyBheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYUGxhY2Vob2xkZXJWYWx1ZScpIGlz
ICJ0ZXN0IHBsYWNlaG9sZGVyIgorCitQcmVzc2VkIHN1cHBvcnQKK1BBU1MgYXhOb2RlLmJvb2xB
dHRyaWJ1dGVWYWx1ZSgnQVhBUklBUHJlc3NlZElzUHJlc2VudCcpIGlzIGZhbHNlCitQQVNTIG5v
ZGUuYWNjZXNzaWJsZU5vZGUucHJlc3NlZCBpcyAidHJ1ZSIKK1BBU1MgYXhOb2RlLmJvb2xBdHRy
aWJ1dGVWYWx1ZSgnQVhBUklBUHJlc3NlZElzUHJlc2VudCcpIGlzIHRydWUKKworUmVsZXZhbnQg
c3VwcG9ydAorUEFTUyBheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJQVJlbGV2YW50
JykgaXMgImFkZGl0aW9ucyB0ZXh0IgorUEFTUyBub2RlLmFjY2Vzc2libGVOb2RlLnJlbGV2YW50
IGlzICJhZGRpdGlvbnMiCitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhBUklB
UmVsZXZhbnQnKSBpcyAiYWRkaXRpb25zIgorCitSb2xlRGVzY3JpcHRpb24gc3VwcG9ydAorUEFT
UyBheE5vZGUucm9sZURlc2NyaXB0aW9uIGlzICJBWFJvbGVEZXNjcmlwdGlvbjogYnV0dG9uIgor
UEFTUyBub2RlLmFjY2Vzc2libGVOb2RlLnJvbGVEZXNjcmlwdGlvbiBpcyAidGVzdCBidXR0b24i
CitQQVNTIGF4Tm9kZS5yb2xlRGVzY3JpcHRpb24gaXMgIkFYUm9sZURlc2NyaXB0aW9uOiB0ZXN0
IGJ1dHRvbiIKKworU29ydCBzdXBwb3J0CitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1
ZSgnQVhTb3J0RGlyZWN0aW9uJykgaXMgIkFYVW5rbm93blNvcnREaXJlY3Rpb24iCitQQVNTIG5v
ZGUuYWNjZXNzaWJsZU5vZGUuc29ydCBpcyAiYXNjZW5kaW5nIgorUEFTUyBheE5vZGUuc3RyaW5n
QXR0cmlidXRlVmFsdWUoJ0FYU29ydERpcmVjdGlvbicpIGlzICJBWEFzY2VuZGluZ1NvcnREaXJl
Y3Rpb24iCisKK1ZhbHVlVGV4dCBzdXBwb3J0CitQQVNTIGF4Tm9kZS52YWx1ZURlc2NyaXB0aW9u
IGlzICJBWFZhbHVlRGVzY3JpcHRpb246ICIKK1BBU1Mgbm9kZS5hY2Nlc3NpYmxlTm9kZS52YWx1
ZVRleHQgaXMgIkZpdmUiCitQQVNTIGF4Tm9kZS52YWx1ZURlc2NyaXB0aW9uIGlzICJBWFZhbHVl
RGVzY3JpcHRpb246IEZpdmUiCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L0FPTS1zdHJpbmctcHJvcGVydGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FPTS1zdHJpbmctcHJvcGVydGllcy5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL0FPTS1zdHJpbmctcHJvcGVydGllcy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgcm9sZT0iY29tYm9i
b3giIGlkPSJhdXRvY29tcGxldGUiPjwvZGl2PgorPGRpdiByb2xlPSJjaGVja2JveCIgaWQ9ImNo
ZWNrZWQiPjwvZGl2PgorPGRpdiByb2xlPSJ0YWIiIGlkPSJjdXJyZW50Ij48L2Rpdj4KKzxkaXYg
cm9sZT0iYnV0dG9uIiBpZD0iaGFzUG9wVXAiPjwvZGl2PgorPGRpdiByb2xlPSJ0ZXh0Ym94IiBp
ZD0iaW52YWxpZCI+PC9kaXY+Cis8ZGl2IHJvbGU9ImJ1dHRvbiIgaWQ9ImtleVNob3J0Y3V0cyI+
PC9kaXY+Cis8ZGl2IHJvbGU9ImJhbm5lciIgaWQ9ImxpdmUiPjwvZGl2PgorPGRpdiByb2xlPSJz
bGlkZXIiIGlkPSJvcmllbnRhdGlvbiI+PC9kaXY+Cis8aW5wdXQgaWQ9InBsYWNlaG9sZGVyIj4K
KzxkaXYgcm9sZT0ic3dpdGNoIiBpZD0icHJlc3NlZCI+PC9kaXY+Cis8ZGl2IHJvbGU9ImJhbm5l
ciIgaWQ9InJlbGV2YW50Ij48L2Rpdj4KKzxkaXYgcm9sZT0iYnV0dG9uIiBpZD0icm9sZURlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgcm9sZT0iY29sdW1uaGVhZGVyIiBpZD0ic29ydCI+PC9kaXY+
Cis8ZGl2IHJvbGU9InNsaWRlciIgaWQ9InZhbHVlVGV4dCI+PC9kaXY+CisKKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgc3RyaW5nIHR5cGUgQWNjZXNzaWJpbGl0eSBPYmplY3Qg
TW9kZWwgcHJvcGVydGllcy4iKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CisgICAgICAgIHZhciBub2RlOworICAgICAgICB2YXIgYXhOb2RlOworCisgICAgICAg
IHRlc3RBdXRvY29tcGxldGUoKTsKKyAgICAgICAgdGVzdENoZWNrZWQoKTsKKyAgICAgICAgdGVz
dEN1cnJlbnQoKTsKKyAgICAgICAgdGVzdEhhc1BvcFVwKCk7CisgICAgICAgIHRlc3RJbnZhbGlk
KCk7CisgICAgICAgIHRlc3RLZXlTaG9ydGN1dHMoKTsKKyAgICAgICAgdGVzdExpdmUoKTsKKyAg
ICAgICAgdGVzdE9yaWVudGF0aW9uKCk7CisgICAgICAgIHRlc3RQbGFjZWhvbGRlcigpOworICAg
ICAgICB0ZXN0UHJlc3NlZCgpOworICAgICAgICB0ZXN0UmVsZXZhbnQoKTsKKyAgICAgICAgdGVz
dFJvbGVEZXNjcmlwdGlvbigpOworICAgICAgICB0ZXN0U29ydCgpOworICAgICAgICB0ZXN0VmFs
dWVUZXh0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdEF1dG9jb21wbGV0ZSgpIHsKKyAg
ICAgICAgZGVidWcoIlxuQXV0b2NvbXBsZXRlIHN1cHBvcnQiKTsKKyAgICAgICAgbm9kZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJhdXRvY29tcGxldGUiKTsKKyAgICAgICAgYXhOb2RlID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhdXRvY29tcGxl
dGUiKTsKKyAgICAgICAgbm9kZS5hY2Nlc3NpYmxlTm9kZS5hdXRvY29tcGxldGUgPSAiaW5saW5l
IjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJub2RlLmFjY2Vzc2libGVOb2RlLmF1
dG9jb21wbGV0ZSIsICJpbmxpbmUiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJh
eE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQXV0b2NvbXBsZXRlVmFsdWUnKSIsICJpbmxp
bmUiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0Q2hlY2tlZCgpIHsKKyAgICAgICAgZGVi
dWcoIlxuQ2hlY2tlZCBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2hlY2tlZCIpOworICAgICAgICBheE5vZGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNoZWNrZWQiKTsKKyAgICAgICAgc2hvdWxkQmVG
YWxzZSgiYXhOb2RlLmlzQ2hlY2tlZCIpOworICAgICAgICBub2RlLmFjY2Vzc2libGVOb2RlLmNo
ZWNrZWQgPSAidHJ1ZSI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibm9kZS5hY2Nl
c3NpYmxlTm9kZS5jaGVja2VkIiwgInRydWUiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJheE5v
ZGUuaXNDaGVja2VkIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdEN1cnJlbnQoKSB7Cisg
ICAgICAgIGRlYnVnKCJcbkN1cnJlbnQgc3VwcG9ydCIpOworICAgICAgICBub2RlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImN1cnJlbnQiKTsKKyAgICAgICAgYXhOb2RlID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjdXJyZW50Iik7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFS
SUFDdXJyZW50JykiLCAiZmFsc2UiKTsKKyAgICAgICAgbm9kZS5hY2Nlc3NpYmxlTm9kZS5jdXJy
ZW50ID0gInBhZ2UiOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnJlbnQuYWNj
ZXNzaWJsZU5vZGUuY3VycmVudCIsICJwYWdlIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFDdXJyZW50JykiLCAicGFn
ZSIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RIYXNQb3BVcCgpIHsKKyAgICAgICAgZGVi
dWcoIlxuSGFzUG9wVXAgc3VwcG9ydCIpOworICAgICAgICBub2RlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImhhc1BvcFVwIik7CisgICAgICAgIGF4Tm9kZSA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiaGFzUG9wVXAiKTsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYSGFzUG9wVXBW
YWx1ZScpIiwgImZhbHNlIik7CisgICAgICAgIG5vZGUuYWNjZXNzaWJsZU5vZGUuaGFzUG9wVXAg
PSAiZGlhbG9nIjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJub2RlLmFjY2Vzc2li
bGVOb2RlLmhhc1BvcFVwIiwgImRpYWxvZyIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhIYXNQb3BVcFZhbHVlJykiLCAiZGlh
bG9nIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdEludmFsaWQoKSB7CisgICAgICAgIGRl
YnVnKCJcbkludmFsaWQgc3VwcG9ydCIpOworICAgICAgICBub2RlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImludmFsaWQiKTsKKyAgICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJpbnZhbGlkIik7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEludmFsaWQnKSIs
ICJmYWxzZSIpOworICAgICAgICBub2RlLmFjY2Vzc2libGVOb2RlLmludmFsaWQgPSAiZ3JhbW1h
ciI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibm9kZS5hY2Nlc3NpYmxlTm9kZS5p
bnZhbGlkIiwgImdyYW1tYXIiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJheE5v
ZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYSW52YWxpZCcpIiwgImdyYW1tYXIiKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0S2V5U2hvcnRjdXRzKCkgeworICAgICAgICBkZWJ1ZygiXG5L
ZXlTaG9ydGN1dHMgc3VwcG9ydCIpOworICAgICAgICBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImtleVNob3J0Y3V0cyIpOworICAgICAgICBheE5vZGUgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImtleVNob3J0Y3V0cyIpOworICAgICAgICBu
b2RlLmFjY2Vzc2libGVOb2RlLmtleVNob3J0Y3V0cyA9ICJDdHJsK0YiOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIm5vZGUuYWNjZXNzaWJsZU5vZGUua2V5U2hvcnRjdXRzIiwgIkN0
cmwrRiIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdBdHRy
aWJ1dGVWYWx1ZSgnQVhLZXlTaG9ydGN1dHNWYWx1ZScpIiwgIkN0cmwrRiIpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHRlc3RMaXZlKCkgeworICAgICAgICBkZWJ1ZygiXG5MaXZlIHN1cHBvcnQi
KTsKKyAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaXZlIik7CisgICAg
ICAgIGF4Tm9kZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgibGl2ZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdB
dHRyaWJ1dGVWYWx1ZSgnQVhBUklBTGl2ZScpIiwgIiIpOworICAgICAgICBub2RlLmFjY2Vzc2li
bGVOb2RlLmxpdmUgPSAicG9saXRlIjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJu
b2RlLmFjY2Vzc2libGVOb2RlLmxpdmUiLCAicG9saXRlIik7CisgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFMaXZlJykiLCAi
cG9saXRlIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdE9yaWVudGF0aW9uKCkgeworICAg
ICAgICBkZWJ1ZygiXG5PcmllbnRhdGlvbiBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgib3JpZW50YXRpb24iKTsKKyAgICAgICAgYXhOb2RlID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJvcmllbnRhdGlvbiIp
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImF4Tm9kZS5vcmllbnRhdGlvbiIsICJB
WE9yaWVudGF0aW9uOiBBWEhvcml6b250YWxPcmllbnRhdGlvbiIpOworICAgICAgICBub2RlLmFj
Y2Vzc2libGVOb2RlLm9yaWVudGF0aW9uID0gInZlcnRpY2FsIjsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJub2RlLmFjY2Vzc2libGVOb2RlLm9yaWVudGF0aW9uIiwgInZlcnRpY2Fs
Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiYXhOb2RlLm9yaWVudGF0aW9uIiwg
IkFYT3JpZW50YXRpb246IEFYVmVydGljYWxPcmllbnRhdGlvbiIpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHRlc3RQbGFjZWhvbGRlcigpIHsKKyAgICAgICAgZGVidWcoIlxuUGxhY2Vob2xkZXIg
c3VwcG9ydCIpOworICAgICAgICBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsYWNl
aG9sZGVyIik7CisgICAgICAgIGF4Tm9kZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgicGxhY2Vob2xkZXIiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYUGxhY2Vob2xkZXJWYWx1ZScp
IiwgIiIpOworICAgICAgICBub2RlLmFjY2Vzc2libGVOb2RlLnBsYWNlaG9sZGVyID0gInRlc3Qg
cGxhY2Vob2xkZXIiOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm5vZGUuYWNjZXNz
aWJsZU5vZGUucGxhY2Vob2xkZXIiLCAidGVzdCBwbGFjZWhvbGRlciIpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhQbGFjZWhv
bGRlclZhbHVlJykiLCAidGVzdCBwbGFjZWhvbGRlciIpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHRlc3RQcmVzc2VkKCkgeworICAgICAgICBkZWJ1ZygiXG5QcmVzc2VkIHN1cHBvcnQiKTsKKyAg
ICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcmVzc2VkIik7CisgICAgICAg
IGF4Tm9kZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
cHJlc3NlZCIpOworICAgICAgICBzaG91bGRCZUZhbHNlKCJheE5vZGUuYm9vbEF0dHJpYnV0ZVZh
bHVlKCdBWEFSSUFQcmVzc2VkSXNQcmVzZW50JykiKTsKKyAgICAgICAgbm9kZS5hY2Nlc3NpYmxl
Tm9kZS5wcmVzc2VkID0gInRydWUiOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm5v
ZGUuYWNjZXNzaWJsZU5vZGUucHJlc3NlZCIsICJ0cnVlIik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiYXhOb2RlLmJvb2xBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBUHJlc3NlZElzUHJlc2VudCcpIik7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFJlbGV2YW50KCkgeworICAgICAgICBkZWJ1Zygi
XG5SZWxldmFudCBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVsZXZhbnQiKTsKKyAgICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJyZWxldmFudCIpOworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBUmVsZXZhbnQn
KSIsICJhZGRpdGlvbnMgdGV4dCIpOworICAgICAgICBub2RlLmFjY2Vzc2libGVOb2RlLnJlbGV2
YW50ID0gImFkZGl0aW9ucyI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibm9kZS5h
Y2Nlc3NpYmxlTm9kZS5yZWxldmFudCIsICJhZGRpdGlvbnMiKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJQVJlbGV2YW50
JykiLCAiYWRkaXRpb25zIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFJvbGVEZXNjcmlw
dGlvbigpIHsKKyAgICAgICAgZGVidWcoIlxuUm9sZURlc2NyaXB0aW9uIHN1cHBvcnQiKTsKKyAg
ICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb2xlRGVzY3JpcHRpb24iKTsK
KyAgICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJyb2xlRGVzY3JpcHRpb24iKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJheE5vZGUucm9sZURlc2NyaXB0aW9uIiwgIkFYUm9sZURlc2NyaXB0aW9uOiBidXR0b24iKTsK
KyAgICAgICAgbm9kZS5hY2Nlc3NpYmxlTm9kZS5yb2xlRGVzY3JpcHRpb24gPSAidGVzdCBidXR0
b24iOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm5vZGUuYWNjZXNzaWJsZU5vZGUu
cm9sZURlc2NyaXB0aW9uIiwgInRlc3QgYnV0dG9uIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiYXhOb2RlLnJvbGVEZXNjcmlwdGlvbiIsICJBWFJvbGVEZXNjcmlwdGlvbjogdGVz
dCBidXR0b24iKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0U29ydCgpIHsKKyAgICAgICAg
ZGVidWcoIlxuU29ydCBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic29ydCIpOworICAgICAgICBheE5vZGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInNvcnQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYU29ydERpcmVjdGlvbicpIiwg
IkFYVW5rbm93blNvcnREaXJlY3Rpb24iKTsKKyAgICAgICAgbm9kZS5hY2Nlc3NpYmxlTm9kZS5z
b3J0ID0gImFzY2VuZGluZyI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibm9kZS5h
Y2Nlc3NpYmxlTm9kZS5zb3J0IiwgImFzY2VuZGluZyIpOworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhTb3J0RGlyZWN0aW9uJyki
LCAiQVhBc2NlbmRpbmdTb3J0RGlyZWN0aW9uIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dFZhbHVlVGV4dCgpIHsKKyAgICAgICAgZGVidWcoIlxuVmFsdWVUZXh0IHN1cHBvcnQiKTsKKyAg
ICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2YWx1ZVRleHQiKTsKKyAgICAg
ICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ2YWx1ZVRleHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJheE5vZGUudmFs
dWVEZXNjcmlwdGlvbiIsICJBWFZhbHVlRGVzY3JpcHRpb246ICIpOworICAgICAgICBub2RlLmFj
Y2Vzc2libGVOb2RlLnZhbHVlVGV4dCA9ICJGaXZlIjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJub2RlLmFjY2Vzc2libGVOb2RlLnZhbHVlVGV4dCIsICJGaXZlIik7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiYXhOb2RlLnZhbHVlRGVzY3JpcHRpb24iLCAiQVhWYWx1
ZURlc2NyaXB0aW9uOiBGaXZlIik7CisgICAgfQorCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327129</attachid>
            <date>2017-11-16 16:52:28 -0800</date>
            <delta_ts>2017-11-16 18:24:57 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>76100</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDk0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzOCBAQAorMjAxNy0xMS0xNiAgTmFuIFdh
bmcgIDxuX3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBBT006IEltcGxlbWVudCBzdHJp
bmcgdHlwZSBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzk0OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnRlZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHR5cGUgcHJvcGVy
dGllcyBmb3IgQWNjZXNzaWJpbGl0eQorICAgICAgICBPYmplY3QgTW9kZWwuCisKKyAgICAgICAg
VGVzdDogYWNjZXNzaWJpbGl0eS9tYWMvQU9NLXN0cmluZy1wcm9wZXJ0aWVzLmh0bWwKKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpoYW5kbGVMaXZlUmVnaW9uQ3JlYXRlZCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1ByZXNzZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzQ2hlY2tlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmFsdWVEZXNjcmlwdGlv
biBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0
eU9iamVjdFNlYXJjaE1hdGNoQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c0F1dG9Db21wbGV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphdXRvQ29tcGxldGVWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnZhbGlkU3RhdHVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQ3VycmVudCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjdXJyZW50U3RhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y3VycmVudFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnJvbGVE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjprZXlTaG9ydGN1dHNWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpwbGFjZWhvbGRlclZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5zaWRlTGl2ZVJlZ2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVnaW9uQW5jZXN0b3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBQXR0cmli
dXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBw
b3J0c0xpdmVSZWdpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c29ydERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzdXBwb3J0c0hhc1BvcHVwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6Omhhc1BvcHVwVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc2VkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXNzZWRJc1ByZXNl
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YnV0dG9u
Um9sZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNBUklBQXV0b0NvbXBsZXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFBdXRvQ29tcGxldGVWYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FS
SUFDdXJyZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFDdXJyZW50U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUN1cnJlbnRWYWx1ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhS2V5U2hvcnRj
dXRzVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNJbnNpZGVBUklBTGl2ZVJlZ2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGl2ZVJlZ2lvbkFuY2VzdG9yIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1
cHBvcnRzQVJJQUxpdmVSZWdpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklBSGFzUG9wdXAgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVBvcHVwVmFsdWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
c3VwcG9ydHNBUklBUHJlc3NlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUHJlc3NlZElzUHJlc2VudCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNQb3B1cCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVnaW9uU3RhdHVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25SZWxldmFu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXZlUmVn
aW9uQXRvbWljIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFyaWFIYXNQb3B1cCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphcmlhTGl2ZVJlZ2lvblN0YXR1cyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGl2ZVJlZ2lvblJlbGV2YW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFyaWFMaXZlUmVnaW9uQXRvbWljIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUG9wdXAgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6b3JpZW50
YXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6bGl2ZVJlZ2lvblN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpsaXZlUmVnaW9uUmVsZXZhbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhSGFz
UG9wdXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YXJpYUxpdmVSZWdpb25TdGF0dXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxpdmVSZWdpb25SZWxl
dmFudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphcmlhTGl2ZVJlZ2lvbkF0b21pYyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmlh
QXR0cmlidXRlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUHJvcGVydHlWYWx1ZVN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6bm90aWZ5QXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6YXV0b2NvbXBsZXRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjpzZXRBdXRvY29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OmNoZWNrZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OnNldENoZWNrZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJsZU5vZGU6OmN1cnJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJsZU5vZGU6OnNldEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5v
ZGU6Omhhc1BvcFVwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjpz
ZXRIYXNQb3BVcCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6aW52YWxpZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6c2V0SW52YWxpZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6a2V5U2hvcnRjdXRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjpzZXRLZXlTaG9ydGN1dHMpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OmxpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJsZU5vZGU6OnNldExpdmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJs
ZU5vZGU6OnNldExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjpvcmll
bnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6c2V0T3Jp
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OnBsYWNlaG9sZGVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjpzZXRQbGFjZWhvbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6cHJlc3NlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6c2V0UHJlc3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6cmVsZXZhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJsZU5vZGU6OnNldFJlbGV2YW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2libGVOb2RlOjpyb2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2Rl
OjpzZXRSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2libGVOb2RlOjpyb2xlRGVzY3Jp
cHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJsZU5vZGU6OnNldFJvbGVE
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6c29ydCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6c2V0U29ydCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmxlTm9kZTo6dmFsdWVUZXh0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2libGVOb2RlOjpzZXRWYWx1ZVRleHQpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJsZU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFYUHJvcGVydHlIYXNo
VHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QVhQcm9w
ZXJ0eUhhc2hUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2libGVOb2RlLmlkbDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVj
dENhY2hlQXRrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0
Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZVdyYXBwZXJBdGsuY3BwOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldEF0dHJp
YnV0ZXMpOgorICAgICAgICAoYXRrUm9sZSk6CisgICAgICAgIChzZXRBdGtTdGF0ZVNldEZyb21D
b3JlT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUhhc1BvcHVwXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBUklBTGl2ZVJlZ2lvblN0YXR1c10pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QVJJQVJl
bGV2YW50U3RhdHVzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlBUklBTGl2ZVJlZ2lvbklzQXRvbWljXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlTdXBwb3J0c0FSSUFQcmVzc2Vk
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlBUklBQ3VycmVudFN0YXR1c10pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6
CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyk6CisKIDIwMTct
MTEtMTYgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjIyNDE3OSk6IGxheWVyIGZsdXNoIG5vdyByZXF1aXJlcyBzeW5jIElQ
QyB0byBjb21wdXRlIHVuZG8vcmVkbyBhdmFpbGFiaWxpdHkgaW4gRWRpdG9yU3RhdGUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2
aXNpb24gMjI0ODkzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6aGFuZGxlTGl2ZVJlZ2lvbkNyZWEKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKLSAgICBTdHJpbmcgbGl2
ZVJlZ2lvblN0YXR1cyA9IGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
YXJpYV9saXZlQXR0cik7CisgICAgU3RyaW5nIGxpdmVSZWdpb25TdGF0dXMgPSBBY2Nlc3NpYmxl
Tm9kZTo6ZWZmZWN0aXZlU3RyaW5nVmFsdWVGb3JFbGVtZW50KCplbGVtZW50LCBBWFByb3BlcnR5
TmFtZTo6TGl2ZSk7CiAgICAgaWYgKGxpdmVSZWdpb25TdGF0dXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYVJvbGUgPSBBY2Nlc3NpYmxlTm9kZTo6ZWZmZWN0
aXZlU3RyaW5nVmFsdWVGb3JFbGVtZW50KCplbGVtZW50LCBBWFByb3BlcnR5TmFtZTo6Um9sZSk7
CiAgICAgICAgIGlmICghYXJpYVJvbGUuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAJ
KHJldmlzaW9uIDIyNDg5MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hpbGRyZW5DaAogICAgICAgICAvLyBTb21l
dGltZXMgdGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG1hbnkgdGltZXMgd2l0aGluIGEgc2hv
cnQgcGVyaW9kIG9mIHRpbWUsIGxlYWRpbmcgdG8gcG9zdGluZyB0b28gbWFueSBBWExpdmVSZWdp
b25DaGFuZ2VkCiAgICAgICAgIC8vIG5vdGlmaWNhdGlvbnMuIFRvIGZpeCB0aGlzLCB3ZSB1c2Vk
IGEgdGltZXIgdG8gbWFrZSBzdXJlIHdlIG9ubHkgcG9zdCBvbmUgbm90aWZpY2F0aW9uIGZvciB0
aGUgY2hpbGRyZW4gY2hhbmdlcyB3aXRoaW4gYSBwcmUtZGVmaW5lZAogICAgICAgICAvLyB0aW1l
IGludGVydmFsLgotICAgICAgICBpZiAocGFyZW50LT5zdXBwb3J0c0FSSUFMaXZlUmVnaW9uKCkp
CisgICAgICAgIGlmIChwYXJlbnQtPnN1cHBvcnRzTGl2ZVJlZ2lvbigpKQogICAgICAgICAgICAg
Y2FjaGUtPnBvc3RMaXZlUmVnaW9uQ2hhbmdlTm90aWZpY2F0aW9uKHBhcmVudCk7CiAgICAgICAg
IAogICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgYW4gQVJJQSB0ZXh0IGNvbnRyb2wsIG5v
dGlmeSB0aGUgQVQgb2YgY2hhbmdlcy4KQEAgLTY1OCw3ICs2NTgsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc1ByZXNzZWQoCiAKICAgICAvLyBJZiB0aGlzIGlzIGFuIHRvZ2ds
ZSBidXR0b24sIGNoZWNrIHRoZSBhcmlhLXByZXNzZWQgYXR0cmlidXRlIHJhdGhlciB0aGFuIG5v
ZGUoKS0+YWN0aXZlKCkKICAgICBpZiAoaXNUb2dnbGVCdXR0b24oKSkKLSAgICAgICAgcmV0dXJu
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJpYnV0ZShhcmlhX3ByZXNzZWRB
dHRyKSwgInRydWUiKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlByZXNzZWQpLCAidHJ1
ZSIpOwogCiAgICAgaWYgKCFpczxFbGVtZW50Pigqbm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY5MCw3ICs2OTAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0No
ZWNrZWQoCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBpZiAodmFsaWRSb2xlICYm
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2NoZWNrZWRB
dHRyKSwgInRydWUiKSkKKyAgICBpZiAodmFsaWRSb2xlICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNoZWNrZWQp
LCAidHJ1ZSIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAg
LTgwMiw3ICs4MDIsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnZhbHVlRGVz
CiAgICAgaWYgKCFpc1JhbmdlQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWV0ZXh0QXR0cikuc3RyaW5nKCk7Cisg
ICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZhbHVlVGV4
dCk7CiB9CiAKIGZsb2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2YWx1ZUZvclJhbmdlKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjI0ODkzKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEwLDcgKzIxMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXQK
ICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc0xpc3QoKTsKICAgICAgICAgCiAgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpMaXZlUmVnaW9uOgotICAgICAgICByZXR1cm4gYXhPYmpl
Y3QtPnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKTsKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5z
dXBwb3J0c0xpdmVSZWdpb24oKTsKICAgICAgICAgCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5OjpNaXNzcGVsbGVkV29yZDoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5oYXNNaXNz
cGVsbGluZygpOwpAQCAtMTY2NSwxNCArMTY2NSwxNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9i
amVjdDo6YXJpYVJlYWRPbmx5CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX3JlYWRvbmx5
QXR0cikuc3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAotYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFBdXRvQ29tcGxldGUoKSBjb25zdAorYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0F1dG9Db21wbGV0ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIChpc0NvbWJvQm94KCkgfHwgaXNBUklBVGV4dENvbnRyb2woKSkgJiYgaGFzQXR0cmli
dXRlKGFyaWFfYXV0b2NvbXBsZXRlQXR0cik7CisgICAgcmV0dXJuIChpc0NvbWJvQm94KCkgfHwg
aXNBUklBVGV4dENvbnRyb2woKSkgJiYgaGFzUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkF1dG9j
b21wbGV0ZSk7CiB9CiAKLVN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQXV0b0NvbXBs
ZXRlVmFsdWUoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmF1dG9Db21wbGV0
ZVZhbHVlKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9Db21wbGV0ZSA9
IGdldEF0dHJpYnV0ZShhcmlhX2F1dG9jb21wbGV0ZUF0dHIpOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgYXV0b0NvbXBsZXRlID0gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6QXV0b2NvbXBsZXRlKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
YXV0b0NvbXBsZXRlLCAiaW5saW5lIikKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoYXV0b0NvbXBsZXRlLCAibGlzdCIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGF1dG9Db21wbGV0ZSwgImJvdGgiKSkKQEAgLTIwMDAsNyArMjAwMCw3
IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnZhbGlkU3RhdHUKICAgICBTdHJpbmcg
dW5kZWZpbmVkVmFsdWUgPSBBU0NJSUxpdGVyYWwoInVuZGVmaW5lZCIpOwogCiAgICAgLy8gYXJp
YS1pbnZhbGlkIGNhbiByZXR1cm4gZmFsc2UgKGRlZmF1bHQpLCBncmFtbWFyLCBzcGVsbGluZywg
b3IgdHJ1ZS4KLSAgICBTdHJpbmcgYXJpYUludmFsaWQgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKGFyaWFfaW52YWxpZEF0dHIpKTsKKyAgICBTdHJpbmcg
YXJpYUludmFsaWQgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoc3RyaW5nVmFs
dWVGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW52YWxpZCkpOwogICAgIAogICAgIGlmIChh
cmlhSW52YWxpZC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIGV4cG9zZSBpbnZh
bGlkIHN0YXR1cyBmb3IgaW5wdXQgdHlwZXMuCkBAIC0yMDI2LDUyICsyMDI2LDUyIEBAIFN0cmlu
ZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnZhbGlkU3RhdHUKICAgICByZXR1cm4gdHJ1ZVZhbHVl
OwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUN1cnJlbnQoKSBj
b25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0N1cnJlbnQoKSBjb25zdAog
ewotICAgIHJldHVybiBoYXNBdHRyaWJ1dGUoYXJpYV9jdXJyZW50QXR0cik7CisgICAgcmV0dXJu
IGhhc1Byb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDdXJyZW50KTsKIH0KICAKLUFjY2Vzc2liaWxp
dHlBUklBQ3VycmVudFN0YXRlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDdXJyZW50U3RhdGUo
KSBjb25zdAorQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
dXJyZW50U3RhdGUoKSBjb25zdAogewogICAgIC8vIGFyaWEtY3VycmVudCBjYW4gcmV0dXJuIGZh
bHNlIChkZWZhdWx0KSwgdHJ1ZSwgcGFnZSwgc3RlcCwgbG9jYXRpb24sIGRhdGUgb3IgdGltZS4K
LSAgICBTdHJpbmcgY3VycmVudFN0YXRlVmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoZ2V0QXR0cmlidXRlKGFyaWFfY3VycmVudEF0dHIpKTsKKyAgICBTdHJpbmcgY3Vy
cmVudFN0YXRlVmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoc3RyaW5n
VmFsdWVGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q3VycmVudCkpOwogICAgIAogICAgIC8v
IElmICJmYWxzZSIsIGVtcHR5LCBvciBtaXNzaW5nLCByZXR1cm4gZmFsc2Ugc3RhdGUuCiAgICAg
aWYgKGN1cnJlbnRTdGF0ZVZhbHVlLmlzRW1wdHkoKSB8fCBjdXJyZW50U3RhdGVWYWx1ZSA9PSAi
ZmFsc2UiKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZh
bHNlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6RmFsc2U7CiAg
ICAgCiAgICAgaWYgKGN1cnJlbnRTdGF0ZVZhbHVlID09ICJwYWdlIikKLSAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpQYWdlOworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6UGFnZTsKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUg
PT0gInN0ZXAiKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6
OlN0ZXA7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlOjpTdGVwOwog
ICAgIGlmIChjdXJyZW50U3RhdGVWYWx1ZSA9PSAibG9jYXRpb24iKQotICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkxvY2F0aW9uOworICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6TG9jYXRpb247CiAgICAgaWYgKGN1cnJlbnRTdGF0
ZVZhbHVlID09ICJkYXRlIikKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVu
dFN0YXRlOjpEYXRlOworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6
RGF0ZTsKICAgICBpZiAoY3VycmVudFN0YXRlVmFsdWUgPT0gInRpbWUiKQotICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU7CisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlOjpUaW1lOwogICAgIAogICAgIC8vIEFueSB2YWx1ZSBu
b3QgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgInRydWUiLgotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6
VHJ1ZTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6VHJ1ZTsKIH0KIAot
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDdXJyZW50VmFsdWUoKSBjb25zdAorU3Ry
aW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmN1cnJlbnRWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgc3dp
dGNoIChhcmlhQ3VycmVudFN0YXRlKCkpIHsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3Vy
cmVudFN0YXRlOjpGYWxzZToKKyAgICBzd2l0Y2ggKGN1cnJlbnRTdGF0ZSgpKSB7CisgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlOjpGYWxzZToKICAgICAgICAgcmV0dXJuICJmYWxz
ZSI7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6UGFnZToKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGU6OlBhZ2U6CiAgICAgICAgIHJldHVybiAicGFn
ZSI7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6U3RlcDoKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGU6OlN0ZXA6CiAgICAgICAgIHJldHVybiAic3Rl
cCI7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6TG9jYXRpb246Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlOjpMb2NhdGlvbjoKICAgICAgICAgcmV0
dXJuICJsb2NhdGlvbiI7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6
VGltZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGU6OlRpbWU6CiAgICAgICAg
IHJldHVybiAidGltZSI7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6
RGF0ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGU6OkRhdGU6CiAgICAgICAg
IHJldHVybiAiZGF0ZSI7CiAgICAgZGVmYXVsdDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklB
Q3VycmVudFN0YXRlOjpUcnVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6
VHJ1ZToKICAgICAgICAgcmV0dXJuICJ0cnVlIjsKICAgICB9CiB9CkBAIC0yMzk4LDcgKzIzOTgs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0hpZ2hsaWdodGluCiAKIFN0cmluZyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpyb2xlRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVy
biBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKGFyaWFfcm9s
ZWRlc2NyaXB0aW9uQXR0cikpOworICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um9sZURlc2Ny
aXB0aW9uKSk7CiB9CiAgICAgCiBib29sIG5vZGVIYXNQcmVzZW50YXRpb25Sb2xlKE5vZGUqIG5v
ZGUpCkBAIC0yNDQ2LDkgKzI0NDYsOSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEFjY2Vzc2liaWxp
dHlPYmplY3Q6CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShkYXRldGltZUF0dHIpOwogfQogICAg
IAotY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhS2V5U2hvcnRj
dXRzVmFsdWUoKSBjb25zdAorY29uc3QgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmtleVNo
b3J0Y3V0c1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfa2V5
c2hvcnRjdXRzQXR0cik7CisgICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OktleVNob3J0Y3V0cyk7CiB9CiAKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmVsZW1lbnQoKSBjb25zdApAQCAtMjQ5MSw1MiArMjQ5MSw1MiBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsCiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKS5pc0F1dG9GaWxsZWQoKTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5n
JiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwbGFjZWhvbGRlclZhbHVlKCkgY29uc3QKK2NvbnN0IFN0
cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwbGFjZWhvbGRlclZhbHVlKCkgY29uc3QKIHsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHBsYWNlaG9sZGVyID0gZ2V0QXR0cmlidXRlKHBsYWNlaG9s
ZGVyQXR0cik7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBwbGFjZWhvbGRlcjsKICAgICAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFQbGFjZWhv
bGRlciA9IGdldEF0dHJpYnV0ZShhcmlhX3BsYWNlaG9sZGVyQXR0cik7CisgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhcmlhUGxhY2Vob2xkZXIgPSBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpQbGFjZWhvbGRlcik7CiAgICAgaWYgKCFhcmlhUGxhY2Vob2xkZXIuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gYXJpYVBsYWNlaG9sZGVyOwogICAgIAogICAgIHJldHVybiBu
dWxsQXRvbSgpOwogfQogICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0luc2lkZUFS
SUFMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc0luc2lkZUxpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGFyaWFMaXZlUmVnaW9uQW5jZXN0b3IoZXhjbHVkZUlmT2ZmKTsKKyAgICByZXR1
cm4gbGl2ZVJlZ2lvbkFuY2VzdG9yKGV4Y2x1ZGVJZk9mZik7CiB9CiAgICAgCi1BY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGl2ZVJlZ2lvbkFuY2VzdG9yKGJv
b2wgZXhjbHVkZUlmT2ZmKSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eU9iamVjdDo6bGl2ZVJlZ2lvbkFuY2VzdG9yKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAogewog
ICAgIHJldHVybiBjb25zdF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihBY2Nlc3NpYmlsaXR5
T2JqZWN0OjptYXRjaGVkUGFyZW50KCp0aGlzLCB0cnVlLCBbZXhjbHVkZUlmT2ZmXSAoY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAgIHJldHVybiBvYmplY3Quc3Vw
cG9ydHNBUklBTGl2ZVJlZ2lvbihleGNsdWRlSWZPZmYpOworICAgICAgICByZXR1cm4gb2JqZWN0
LnN1cHBvcnRzTGl2ZVJlZ2lvbihleGNsdWRlSWZPZmYpOwogICAgIH0pKTsKIH0KIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3QKIHsKICAg
ICAvLyBUaGlzIHJldHVybnMgd2hldGhlciB0aGUgZWxlbWVudCBzdXBwb3J0cyBhbnkgZ2xvYmFs
IEFSSUEgYXR0cmlidXRlcy4KLSAgICByZXR1cm4gc3VwcG9ydHNBUklBTGl2ZVJlZ2lvbigpCisg
ICAgcmV0dXJuIHN1cHBvcnRzTGl2ZVJlZ2lvbigpCiAgICAgICAgIHx8IHN1cHBvcnRzQVJJQURy
YWdnaW5nKCkKICAgICAgICAgfHwgc3VwcG9ydHNBUklBRHJvcHBpbmcoKQogICAgICAgICB8fCBz
dXBwb3J0c0FSSUFPd25zKCkKICAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfYXRvbWljQXR0
cikKICAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfYnVzeUF0dHIpCiAgICAgICAgIHx8IGhh
c0F0dHJpYnV0ZShhcmlhX2NvbnRyb2xzQXR0cikKLSAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFy
aWFfY3VycmVudEF0dHIpCisgICAgICAgIHx8IGhhc1Byb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpD
dXJyZW50KQogICAgICAgICB8fCBoYXNBdHRyaWJ1dGUoYXJpYV9kZXNjcmliZWRieUF0dHIpCiAg
ICAgICAgIHx8IGhhc0F0dHJpYnV0ZShhcmlhX2RldGFpbHNBdHRyKQogICAgICAgICB8fCBoYXNB
dHRyaWJ1dGUoYXJpYV9kaXNhYmxlZEF0dHIpCiAgICAgICAgIHx8IGhhc0F0dHJpYnV0ZShhcmlh
X2Vycm9ybWVzc2FnZUF0dHIpCiAgICAgICAgIHx8IGhhc0F0dHJpYnV0ZShhcmlhX2Zsb3d0b0F0
dHIpCi0gICAgICAgIHx8IGhhc0F0dHJpYnV0ZShhcmlhX2hhc3BvcHVwQXR0cikKLSAgICAgICAg
fHwgaGFzQXR0cmlidXRlKGFyaWFfaW52YWxpZEF0dHIpCisgICAgICAgIHx8IGhhc1Byb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpIYXNQb3BVcCkKKyAgICAgICAgfHwgaGFzUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OkludmFsaWQpCiAgICAgICAgIHx8IGhhc1Byb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpMYWJlbCkKICAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpCi0g
ICAgICAgIHx8IGhhc0F0dHJpYnV0ZShhcmlhX3JlbGV2YW50QXR0cik7CisgICAgICAgIHx8IGhh
c1Byb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZWxldmFudCk7CiB9CiAgICAgCiBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBsaXZlUmVnaW9uU3RhdHVzKQpAQCAtMjU0NCwxMCArMjU0NCwxMCBAQCBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmxpdmVSZWdpb25TdGF0CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGxpdmVSZWdpb25TdGF0dXMsICJwb2xpdGUiKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShsaXZlUmVnaW9uU3RhdHVzLCAiYXNzZXJ0aXZlIik7CiB9CiAg
ICAgCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oYm9v
bCBleGNsdWRlSWZPZmYpIGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRz
TGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZikgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGxpdmVSZWdpb25TdGF0dXMgPSBhcmlhTGl2ZVJlZ2lvblN0YXR1cygpOwotICAgIHJl
dHVybiBleGNsdWRlSWZPZmYgPyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGxpdmVSZWdpb25T
dGF0dXMpIDogIWxpdmVSZWdpb25TdGF0dXMuaXNFbXB0eSgpOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlID0gbGl2ZVJlZ2lvblN0YXR1cygpOworICAgIHJl
dHVybiBleGNsdWRlSWZPZmYgPyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGxpdmVSZWdpb25T
dGF0dXNWYWx1ZSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1wdHkoKTsKIH0KIAogQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxp
dHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTI1OTgsNyArMjU5OCw3
IEBAIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uIEFjY2Vzc2liaWxpdHkKICAgICBpZiAocm9s
ZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OkNvbHVtbkhlYWRlcikKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uOjpJbnZhbGlkOwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3J0QXR0cmlidXRl
ID0gZ2V0QXR0cmlidXRlKGFyaWFfc29ydEF0dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
c29ydEF0dHJpYnV0ZSA9IHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNv
cnQpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzb3J0QXR0cmlidXRl
LCAiYXNjZW5kaW5nIikpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlv
bjo6QXNjZW5kaW5nOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzb3J0
QXR0cmlidXRlLCAiZGVzY2VuZGluZyIpKQpAQCAtMjYxOSwxNCArMjYxOSwxNCBAQCBib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzUmFuZ2VWCiAgICAgICAgIHx8IGlzQXR0YWNobWVu
dEVsZW1lbnQoKTsKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNB
UklBSGFzUG9wdXAoKSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0hh
c1BvcHVwKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzQXR0cmlidXRlKGFyaWFfaGFzcG9wdXBB
dHRyKSB8fCBpc0NvbWJvQm94KCk7CisgICAgcmV0dXJuIGhhc1Byb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpIYXNQb3BVcCkgfHwgaXNDb21ib0JveCgpOwogfQogCi1TdHJpbmcgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYVBvcHVwVmFsdWUoKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6Omhhc1BvcHVwVmFsdWUoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaGFz
UG9wdXAgPSBnZXRBdHRyaWJ1dGUoYXJpYV9oYXNwb3B1cEF0dHIpOworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgaGFzUG9wdXAgPSBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpIYXNQb3BVcCk7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhhc1Bv
cHVwLCAidHJ1ZSIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhh
c1BvcHVwLCAiZGlhbG9nIikKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaGFzUG9wdXAsICJncmlkIikKQEAgLTI2ODMsOSArMjY4Myw5IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6Y2xhc3NMaXN0KFZlY3QKICAgICAgICAgY2xhc3NMaXN0LmFwcGVuZChsaXN0
Lml0ZW0oaykuc3RyaW5nKCkpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBv
cnRzQVJJQVByZXNzZWQoKSBjb25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0
c1ByZXNzZWQoKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXhwYW5kZWQgPSBn
ZXRBdHRyaWJ1dGUoYXJpYV9wcmVzc2VkQXR0cik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBl
eHBhbmRlZCA9IHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlByZXNzZWQp
OwogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShleHBhbmRlZCwgInRy
dWUiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShleHBhbmRlZCwgImZhbHNlIik7
CiB9CiAgICAgCkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUg
QWNjZXNzaWJpbGl0eU9iCiAgICAgLy8gSWYgaXQncyBhIHRvZ2dsZSBidXR0b24sIHRoZSBhcmlh
LXByZXNzZWQgYXR0cmlidXRlIGlzIGNvbnN1bHRlZC4KIAogICAgIGlmIChpc1RvZ2dsZUJ1dHRv
bigpKSB7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYVByZXNzZWQgPSBnZXRBdHRy
aWJ1dGUoYXJpYV9wcmVzc2VkQXR0cik7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJp
YVByZXNzZWQgPSBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpQcmVzc2Vk
KTsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFQcmVzc2Vk
LCAidHJ1ZSIpKQogICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6
T247CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhUHJlc3Nl
ZCwgIm1peGVkIikpCkBAIC0yNzUzLDcgKzI3NTMsNyBAQCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3Rh
dGUgQWNjZXNzaWJpbGl0eU9iCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QnV0dG9uU3Rh
dGU6Ok9mZjsKICAgICB9CiAgICAgCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiByZXN1bHQgPSBn
ZXRBdHRyaWJ1dGUoYXJpYV9jaGVja2VkQXR0cik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBy
ZXN1bHQgPSBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDaGVja2VkKTsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdWx0LCAidHJ1ZSIpKQog
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbjsKICAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdWx0LCAibWl4ZWQiKSkgewpAQCAtMzEyNyw5
ICszMTI3LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpub3RpZnlJZklnbm9yZQogICAg
IH0KIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUHJlc3NlZElzUHJlc2VudCgp
IGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXNzZWRJc1ByZXNlbnQoKSBjb25z
dAogewotICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0dHIpLmlzRW1wdHko
KTsKKyAgICByZXR1cm4gIXN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlBy
ZXNzZWQpLmlzRW1wdHkoKTsKIH0KIAogVGV4dEl0ZXJhdG9yQmVoYXZpb3IgQWNjZXNzaWJpbGl0
eU9iamVjdDo6dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSBjb25zdApAQCAtMzE0
OSw5ICszMTQ5LDkgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU9iamVjdDo6Ygog
ewogICAgIC8vIElmIGFyaWEtcHJlc3NlZCBpcyBwcmVzZW50LCB0aGVuIGl0IHNob3VsZCBiZSBl
eHBvc2VkIGFzIGEgdG9nZ2xlIGJ1dHRvbi4KICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi93
YWktYXJpYS9zdGF0ZXNfYW5kX3Byb3BlcnRpZXMjYXJpYS1wcmVzc2VkCi0gICAgaWYgKGFyaWFQ
cmVzc2VkSXNQcmVzZW50KCkpCisgICAgaWYgKHByZXNzZWRJc1ByZXNlbnQoKSkKICAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247Ci0gICAgaWYgKGFyaWFIYXNQ
b3B1cCgpKQorICAgIGlmIChoYXNQb3B1cCgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJvbGU6OlBvcFVwQnV0dG9uOwogICAgIC8vIFdlIGRvbid0IGNvbnRlbXBsYXRlIEFjY2Vzc2li
aWxpdHlSb2xlOjpSYWRpb0J1dHRvbiwgYXMgaXQgZGVwZW5kcyBvbiB0aGUgaW5wdXQKICAgICAv
LyB0eXBlLgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDIyNDg5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYs
NyArNDc2LDcgQEAgc3RydWN0IEFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWEgewogZW51
bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVjdFR5cGUgeyBTdWJzY3JpcHQsIFN1
cGVyc2NyaXB0IH07CiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRPYmpl
Y3RUeXBlIHsgUHJlU3Vic2NyaXB0LCBQcmVTdXBlcnNjcmlwdCwgUG9zdFN1YnNjcmlwdCwgUG9z
dFN1cGVyc2NyaXB0IH07CiAKLWVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3Rh
dGUgeyBGYWxzZSwgVHJ1ZSwgUGFnZSwgU3RlcCwgTG9jYXRpb24sIERhdGUsIFRpbWUgfTsKK2Vu
dW0gY2xhc3MgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZSB7IEZhbHNlLCBUcnVlLCBQYWdlLCBT
dGVwLCBMb2NhdGlvbiwgRGF0ZSwgVGltZSB9OwogICAgIAogYm9vbCBub2RlSGFzUHJlc2VudGF0
aW9uUm9sZShOb2RlKik7CiAgICAgCkBAIC02ODMsMTMgKzY4MywxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
OwogICAgIHZvaWQgYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGFyaWFIYXNQb3B1cCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIGFyaWFQb3B1cFZhbHVlKCkgY29uc3Q7
Ci0gICAgYm9vbCBzdXBwb3J0c0FSSUFIYXNQb3B1cCgpIGNvbnN0OwotICAgIGJvb2wgYXJpYVBy
ZXNzZWRJc1ByZXNlbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUG9wdXAoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIFN0cmluZyBoYXNQb3B1cFZhbHVlKCkgY29uc3Q7Cisg
ICAgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3Q7CisgICAgYm9vbCBwcmVzc2VkSXNQcmVz
ZW50KCkgY29uc3Q7CiAgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdDsKICAgICBTdHJp
bmcgaW52YWxpZFN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9ydHNBUklBUHJlc3NlZCgp
IGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBw
b3J0c0V4cGFuZGVkKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0NoZWNrZWQoKSBjb25zdDsK
ICAgICBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbiBzb3J0RGlyZWN0aW9uKCkgY29uc3Q7CkBA
IC02OTgsMTAgKzY5OCwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVu
dGlmaWVyQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgdm9pZCBjbGFzc0xpc3QoVmVjdG9yPFN0cmlu
Zz4mKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBjb25zdDsK
LSAgICBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRTdGF0ZSBhcmlhQ3VycmVudFN0YXRlKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIGFyaWFDdXJyZW50VmFsdWUoKSBjb25zdDsKLSAgICBib29sIHN1cHBv
cnRzQVJJQUN1cnJlbnQoKSBjb25zdDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFLZXlT
aG9ydGN1dHNWYWx1ZSgpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGUgY3Vy
cmVudFN0YXRlKCkgY29uc3Q7CisgICAgU3RyaW5nIGN1cnJlbnRWYWx1ZSgpIGNvbnN0OworICAg
IGJvb2wgc3VwcG9ydHNDdXJyZW50KCkgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nIGtleVNob3J0
Y3V0c1ZhbHVlKCkgY29uc3Q7CiAgICAgCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYg
dGhlIG9iamVjdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIHRoZXJlJ3MgYSBtb2RhbCBkaWFsb2cg
ZGlzcGxheWVkLgogICAgIGJvb2wgaWdub3JlZEZyb21BUklBTW9kYWxQcmVzZW5jZSgpIGNvbnN0
OwpAQCAtNzgyLDcgKzc4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFMYWJlbGVkQnlB
dHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5n
IGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3Q7CisgICAgY29u
c3QgU3RyaW5nIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdDsKICAgICBib29sIGFjY2Vzc2libGVO
YW1lRGVyaXZlc0Zyb21Db250ZW50KCkgY29uc3Q7CiAgICAgCiAgICAgLy8gQWJicmV2aWF0aW9u
cwpAQCAtOTc4LDEyICs5NzgsMTIgQEAgcHVibGljOgogICAgIHZvaWQgYXJpYVRyZWVJdGVtQ29u
dGVudChBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICAKICAgICAvLyBBUklBIGxp
dmUtcmVnaW9uIGZlYXR1cmVzLgotICAgIGJvb2wgc3VwcG9ydHNBUklBTGl2ZVJlZ2lvbihib29s
IGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0OwotICAgIGJvb2wgaXNJbnNpZGVBUklBTGl2ZVJl
Z2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGFyaWFMaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBhcmlhTGl2ZVJlZ2lvblN0YXR1cygpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGFyaWFMaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCB7IHJldHVybiBudWxsQXRvbSgpOyB9Ci0g
ICAgdmlydHVhbCBib29sIGFyaWFMaXZlUmVnaW9uQXRvbWljKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9mZiA9IHRy
dWUpIGNvbnN0OworICAgIGJvb2wgaXNJbnNpZGVMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2Zm
ID0gdHJ1ZSkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGl2ZVJlZ2lvbkFuY2Vz
dG9yKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBT
dHJpbmcgbGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAg
dmlydHVhbCBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QgeyByZXR1cm4g
bnVsbEF0b20oKTsgfQorICAgIHZpcnR1YWwgYm9vbCBsaXZlUmVnaW9uQXRvbWljKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVnaW9uU3Rh
dHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSk7CiAgICAgc3RhdGljIGJvb2wgbGl2ZVJlZ2lv
blN0YXR1c0lzRW5hYmxlZChjb25zdCBBdG9taWNTdHJpbmcmKTsKQEAgLTk5Myw4ICs5OTMsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFSZWFkT25seSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgU3RyaW5nIGFyaWFSZWFkT25seVZhbHVlKCkgY29uc3Q7CiAKLSAgICBib29sIHN1cHBv
cnRzQVJJQUF1dG9Db21wbGV0ZSgpIGNvbnN0OwotICAgIFN0cmluZyBhcmlhQXV0b0NvbXBsZXRl
VmFsdWUoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzQXV0b0NvbXBsZXRlKCkgY29uc3Q7Cisg
ICAgU3RyaW5nIGF1dG9Db21wbGV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBzdXBw
b3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDIyNDg5MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDYsOSArMTAw
Niw5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGFzVGV4dEEKICAgICByZXR1
cm4gYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpLmxlbmd0aCgpOwogfQogICAgIAotYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhSGFzUG9wdXAoKSBjb25zdAorYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNQb3B1cCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
ICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcmlhUG9wdXBWYWx1ZSgpLCAiZmFsc2Ui
KTsKKyAgICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhhc1BvcHVwVmFs
dWUoKSwgImZhbHNlIik7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3Vw
cG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCAKQEAgLTI2NDEsNyArMjY0MSw3IEBAIEFjY2Vzc2li
aWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmoKICAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSb2xlOjpTdGF0aWNUZXh0OwogICAgIGlmIChjc3NCb3ggJiYgY3NzQm94LT5pc0ltYWdl
KCkpIHsKICAgICAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAg
ICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9u
IDogQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjsKKyAgICAgICAgICAgIHJldHVybiBoYXNQb3B1
cCgpID8gQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uIDogQWNjZXNzaWJpbGl0eVJvbGU6
OkJ1dHRvbjsKICAgICAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U1ZHUm9vdDsKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlS
b2xlOjpJbWFnZTsKQEAgLTI4NDEsNyArMjg0MSw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmoKIAogQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGFyaWFPcmllbnRhdGlvbiA9IGdldEF0dHJpYnV0ZShhcmlhX29yaWVudGF0aW9uQXR0
cik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhT3JpZW50YXRpb24gPSBzdHJpbmdWYWx1
ZUZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpPcmllbnRhdGlvbik7CiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFPcmllbnRhdGlvbiwgImhvcml6b250YWwiKSkK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDsKICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU9yaWVudGF0aW9uLCAidmVy
dGljYWwiKSkKQEAgLTI5NjQsNyArMjk2NCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dGV4dENoYW4KICAgICAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgCi0gICAgICAgIGlmIChwYXJlbnQtPnN1cHBvcnRzQVJJQUxpdmVSZWdpb24o
KSkKKyAgICAgICAgaWYgKHBhcmVudC0+c3VwcG9ydHNMaXZlUmVnaW9uKCkpCiAgICAgICAgICAg
ICBjYWNoZS0+cG9zdExpdmVSZWdpb25DaGFuZ2VOb3RpZmljYXRpb24ocGFyZW50KTsKIAogICAg
ICAgICBpZiAocGFyZW50LT5pc05vbk5hdGl2ZVRleHRDb250cm9sKCkpCkBAIC0zMjUzLDkgKzMy
NTMsOSBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhbkhhdmVDCiAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4oKTsKIH0KIAotY29u
c3QgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9uU3RhdHVz
KCkgY29uc3QKK2NvbnN0IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpsaXZlUmVn
aW9uU3RhdHVzKCkgY29uc3QKIHsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxpdmVSZWdpb25T
dGF0dXMgPSBnZXRBdHRyaWJ1dGUoYXJpYV9saXZlQXR0cik7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBsaXZlUmVnaW9uU3RhdHVzID0gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6TGl2ZSk7CiAgICAgLy8gVGhlc2Ugcm9sZXMgaGF2ZSBpbXBsaWNpdCBsaXZlIHJlZ2lv
biBzdGF0dXMuCiAgICAgaWYgKGxpdmVSZWdpb25TdGF0dXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZGVmYXVsdExpdmVSZWdpb25TdGF0dXNGb3JSb2xlKHJvbGVWYWx1ZSgpKTsKQEAgLTMy
NjMsMTkgKzMyNjMsMTggQEAgY29uc3QgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OgogICAgIHJldHVybiBsaXZlUmVnaW9uU3RhdHVzOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcm
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25z
dAorY29uc3QgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmxpdmVSZWdpb25SZWxl
dmFudCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0
cmluZz4gZGVmYXVsdExpdmVSZWdpb25SZWxldmFudCgiYWRkaXRpb25zIHRleHQiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJl
bGV2YW50ID0gZ2V0QXR0cmlidXRlKGFyaWFfcmVsZXZhbnRBdHRyKTsKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHJlbGV2YW50ID0gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6UmVsZXZhbnQpOwogCiAgICAgLy8gRGVmYXVsdCBhcmlhLXJlbGV2YW50ID0gImFkZGl0aW9u
cyB0ZXh0Ii4KICAgICBpZiAocmVsZXZhbnQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZGVm
YXVsdExpdmVSZWdpb25SZWxldmFudDsKKyAgICAgICAgcmV0dXJuICJhZGRpdGlvbnMgdGV4dCI7
CiAgICAgCiAgICAgcmV0dXJuIHJlbGV2YW50OwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9uQXRvbWljKCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6bGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhdG9taWMgPSBnZXRBdHRyaWJ1dGUoYXJpYV9hdG9taWNBdHRyKTsKICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXRvbWljLCAidHJ1ZSIpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDIyNDg5MykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzEsNyArMTcxLDcgQEAgcHVibGljOgogICAgIEludFJlY3QgYm91bmRzRm9yUmVjdHMoTGF5b3V0
UmVjdCYsIExheW91dFJlY3QmLCBSZWZQdHI8UmFuZ2U+KSBjb25zdDsKICAgICB2b2lkIHNldFNl
bGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIGlzVmlzaWJsZVBvc2l0aW9uUmFuZ2VJbkRpZmZlcmVu
dERvY3VtZW50KGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7Ci0gICAgYm9vbCBh
cmlhSGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0IG92ZXJyaWRlOwpAQCAt
Mjc2LDkgKzI3Niw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgRVNwZWFrIHNwZWFrUHJvcGVydHko
KSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICBjb25zdCBTdHJpbmcgYXJpYUxpdmVSZWdpb25T
dGF0dXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFMaXZl
UmVnaW9uUmVsZXZhbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGFyaWFMaXZlUmVnaW9u
QXRvbWljKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0
dXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBTdHJpbmcgbGl2ZVJlZ2lvblJlbGV2YW50
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBsaXZlUmVnaW9uQXRvbWljKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaW5o
ZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJsZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJsZU5vZGUuY3BwCShyZXZpc2lvbiAy
MjQ4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2libGVOb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsMjIgQEAgc3RhdGljIEFSSUFBdHRyaWJ1dGVN
YXAmIGFyaWFBdHRyaWJ1dGVNYQogICAgICAgICAgICAgQVhQcm9wZXJ0eU5hbWUgbmFtZTsKICAg
ICAgICAgICAgIFF1YWxpZmllZE5hbWUgYXJpYUF0dHJpYnV0ZTsKICAgICAgICAgfSBhdHRyaWJ1
dGVzW10gPSB7CisgICAgICAgICAgICB7IEFYUHJvcGVydHlOYW1lOjpBdXRvY29tcGxldGUsIGFy
aWFfYXV0b2NvbXBsZXRlQXR0ciB9LAorICAgICAgICAgICAgeyBBWFByb3BlcnR5TmFtZTo6Q2hl
Y2tlZCwgYXJpYV9jaGVja2VkQXR0ciB9LAorICAgICAgICAgICAgeyBBWFByb3BlcnR5TmFtZTo6
Q3VycmVudCwgYXJpYV9jdXJyZW50QXR0ciB9LAorICAgICAgICAgICAgeyBBWFByb3BlcnR5TmFt
ZTo6SGFzUG9wVXAsIGFyaWFfaGFzcG9wdXBBdHRyIH0sCisgICAgICAgICAgICB7IEFYUHJvcGVy
dHlOYW1lOjpJbnZhbGlkLCBhcmlhX2ludmFsaWRBdHRyIH0sCisgICAgICAgICAgICB7IEFYUHJv
cGVydHlOYW1lOjpLZXlTaG9ydGN1dHMsIGFyaWFfa2V5c2hvcnRjdXRzQXR0ciB9LAogICAgICAg
ICAgICAgeyBBWFByb3BlcnR5TmFtZTo6TGFiZWwsIGFyaWFfbGFiZWxBdHRyIH0sCi0gICAgICAg
ICAgICB7IEFYUHJvcGVydHlOYW1lOjpSb2xlLCByb2xlQXR0ciB9CisgICAgICAgICAgICB7IEFY
UHJvcGVydHlOYW1lOjpMaXZlLCBhcmlhX2xpdmVBdHRyIH0sCisgICAgICAgICAgICB7IEFYUHJv
cGVydHlOYW1lOjpPcmllbnRhdGlvbiwgYXJpYV9vcmllbnRhdGlvbkF0dHIgfSwKKyAgICAgICAg
ICAgIHsgQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyLCBhcmlhX3BsYWNlaG9sZGVyQXR0ciB9
LAorICAgICAgICAgICAgeyBBWFByb3BlcnR5TmFtZTo6UHJlc3NlZCwgYXJpYV9wcmVzc2VkQXR0
ciB9LAorICAgICAgICAgICAgeyBBWFByb3BlcnR5TmFtZTo6UmVsZXZhbnQsIGFyaWFfcmVsZXZh
bnRBdHRyIH0sCisgICAgICAgICAgICB7IEFYUHJvcGVydHlOYW1lOjpSb2xlLCByb2xlQXR0ciB9
LAorICAgICAgICAgICAgeyBBWFByb3BlcnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uLCBhcmlhX3Jv
bGVkZXNjcmlwdGlvbkF0dHIgfSwKKyAgICAgICAgICAgIHsgQVhQcm9wZXJ0eU5hbWU6OlNvcnQs
IGFyaWFfc29ydEF0dHIgfSwKKyAgICAgICAgICAgIHsgQVhQcm9wZXJ0eU5hbWU6OlZhbHVlVGV4
dCwgYXJpYV92YWx1ZXRleHRBdHRyIH0KICAgICAgICAgfTsKICAgICAgICAgQVJJQUF0dHJpYnV0
ZU1hcCBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgYXR0cmlidXRlIDogYXR0cmlidXRlcykKQEAg
LTU5LDggKzczLDIxIEBAIHN0YXRpYyBBUklBQXR0cmlidXRlTWFwJiBhcmlhQXR0cmlidXRlTWEK
IHN0YXRpYyBib29sIGlzUHJvcGVydHlWYWx1ZVN0cmluZyhBWFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eU5hbWUpIHsKKyAgICBjYXNlIEFYUHJvcGVy
dHlOYW1lOjpBdXRvY29tcGxldGU6CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6Q2hlY2tlZDoK
KyAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpDdXJyZW50OgorICAgIGNhc2UgQVhQcm9wZXJ0eU5h
bWU6Okhhc1BvcFVwOgorICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OkludmFsaWQ6CiAgICAgY2Fz
ZSBBWFByb3BlcnR5TmFtZTo6TGFiZWw6CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6TGl2ZToK
KyAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpPcmllbnRhdGlvbjoKKyAgICBjYXNlIEFYUHJvcGVy
dHlOYW1lOjpQbGFjZWhvbGRlcjoKKyAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpQcmVzc2VkOgor
ICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlJlbGV2YW50OgogICAgIGNhc2UgQVhQcm9wZXJ0eU5h
bWU6OlJvbGU6CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uOgorICAg
IGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlNvcnQ6CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6VmFs
dWVUZXh0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTksMTYgKzE0Niw4NyBAQCB2b2lkIEFjY2Vzc2libGVOb2RlOjpzZXRT
dHJpbmdQcm9wZXJ0eShjCiAgICAgbV9wcm9wZXJ0eU1hcC5zZXQocHJvcGVydHlOYW1lLCB2YWx1
ZSk7CiB9CiAKLVN0cmluZyBBY2Nlc3NpYmxlTm9kZTo6cm9sZSgpIGNvbnN0Cit2b2lkIEFjY2Vz
c2libGVOb2RlOjpub3RpZnlBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWUmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkobV9vd25l
ckVsZW1lbnQsIEFYUHJvcGVydHlOYW1lOjpSb2xlKTsKKyAgICBpZiAoQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBtX293bmVyRWxlbWVudC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkKKyAgICAg
ICAgY2FjaGUtPmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgJm1fb3duZXJFbGVtZW50KTsK
IH0KIAotdm9pZCBBY2Nlc3NpYmxlTm9kZTo6c2V0Um9sZShjb25zdCBTdHJpbmcmIHJvbGUpCitT
dHJpbmcgQWNjZXNzaWJsZU5vZGU6OmF1dG9jb21wbGV0ZSgpIGNvbnN0CiB7Ci0gICAgc2V0U3Ry
aW5nUHJvcGVydHkocm9sZSwgQVhQcm9wZXJ0eU5hbWU6OlJvbGUpOwotICAgIGlmIChBWE9iamVj
dENhY2hlKiBjYWNoZSA9IG1fb3duZXJFbGVtZW50LmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgp
KQotICAgICAgICBjYWNoZS0+aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChyb2xlQXR0ciwgJm1fb3du
ZXJFbGVtZW50KTsKKyAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxl
bWVudCwgQVhQcm9wZXJ0eU5hbWU6OkF1dG9jb21wbGV0ZSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJs
ZU5vZGU6OnNldEF1dG9jb21wbGV0ZShjb25zdCBTdHJpbmcmIGF1dG9jb21wbGV0ZSkKK3sKKyAg
ICBzZXRTdHJpbmdQcm9wZXJ0eShhdXRvY29tcGxldGUsIEFYUHJvcGVydHlOYW1lOjpBdXRvY29t
cGxldGUpOworICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQoYXJpYV9hdXRvY29tcGxldGVBdHRy
KTsKK30KKworU3RyaW5nIEFjY2Vzc2libGVOb2RlOjpjaGVja2VkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5h
bWU6OkNoZWNrZWQpOworfQorCit2b2lkIEFjY2Vzc2libGVOb2RlOjpzZXRDaGVja2VkKGNvbnN0
IFN0cmluZyYgY2hlY2tlZCkKK3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eShjaGVja2VkLCBBWFBy
b3BlcnR5TmFtZTo6Q2hlY2tlZCk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hhbmdlZChhcmlhX2No
ZWNrZWRBdHRyKTsKK30KKworU3RyaW5nIEFjY2Vzc2libGVOb2RlOjpjdXJyZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQ
cm9wZXJ0eU5hbWU6OkN1cnJlbnQpOworfQorCit2b2lkIEFjY2Vzc2libGVOb2RlOjpzZXRDdXJy
ZW50KGNvbnN0IFN0cmluZyYgY3VycmVudCkKK3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eShjdXJy
ZW50LCBBWFByb3BlcnR5TmFtZTo6Q3VycmVudCk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hhbmdl
ZChhcmlhX2N1cnJlbnRBdHRyKTsKK30KKworU3RyaW5nIEFjY2Vzc2libGVOb2RlOjpoYXNQb3BV
cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkobV9vd25lckVs
ZW1lbnQsIEFYUHJvcGVydHlOYW1lOjpIYXNQb3BVcCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJsZU5v
ZGU6OnNldEhhc1BvcFVwKGNvbnN0IFN0cmluZyYgaGFzUG9wVXApCit7CisgICAgc2V0U3RyaW5n
UHJvcGVydHkoaGFzUG9wVXAsIEFYUHJvcGVydHlOYW1lOjpIYXNQb3BVcCk7CisgICAgbm90aWZ5
QXR0cmlidXRlQ2hhbmdlZChhcmlhX2hhc3BvcHVwQXR0cik7Cit9CisKK1N0cmluZyBBY2Nlc3Np
YmxlTm9kZTo6aW52YWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yUHJv
cGVydHkobV9vd25lckVsZW1lbnQsIEFYUHJvcGVydHlOYW1lOjpJbnZhbGlkKTsKK30KKwordm9p
ZCBBY2Nlc3NpYmxlTm9kZTo6c2V0SW52YWxpZChjb25zdCBTdHJpbmcmIGludmFsaWQpCit7Cisg
ICAgc2V0U3RyaW5nUHJvcGVydHkoaW52YWxpZCwgQVhQcm9wZXJ0eU5hbWU6OkludmFsaWQpOwor
ICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQoYXJpYV9pbnZhbGlkQXR0cik7Cit9CisKK1N0cmlu
ZyBBY2Nlc3NpYmxlTm9kZTo6a2V5U2hvcnRjdXRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3Ry
aW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6OktleVNo
b3J0Y3V0cyk7Cit9CisKK3ZvaWQgQWNjZXNzaWJsZU5vZGU6OnNldEtleVNob3J0Y3V0cyhjb25z
dCBTdHJpbmcmIGtleVNob3J0Y3V0cykKK3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eShrZXlTaG9y
dGN1dHMsIEFYUHJvcGVydHlOYW1lOjpLZXlTaG9ydGN1dHMpOworICAgIG5vdGlmeUF0dHJpYnV0
ZUNoYW5nZWQoYXJpYV9rZXlzaG9ydGN1dHNBdHRyKTsKK30KKworU3RyaW5nIEFjY2Vzc2libGVO
b2RlOjpsaXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eSht
X293bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6OkxpdmUpOworfQorCit2b2lkIEFjY2Vzc2li
bGVOb2RlOjpzZXRMaXZlKGNvbnN0IFN0cmluZyYgbGl2ZSkKK3sKKyAgICBzZXRTdHJpbmdQcm9w
ZXJ0eShsaXZlLCBBWFByb3BlcnR5TmFtZTo6TGl2ZSk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hh
bmdlZChhcmlhX2xpdmVBdHRyKTsKIH0KIAogU3RyaW5nIEFjY2Vzc2libGVOb2RlOjpsYWJlbCgp
IGNvbnN0CkBAIC0xMzksOCArMjM3LDk1IEBAIFN0cmluZyBBY2Nlc3NpYmxlTm9kZTo6bGFiZWwo
KSBjb25zdAogdm9pZCBBY2Nlc3NpYmxlTm9kZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJl
bCkKIHsKICAgICBzZXRTdHJpbmdQcm9wZXJ0eShsYWJlbCwgQVhQcm9wZXJ0eU5hbWU6OkxhYmVs
KTsKLSAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBtX293bmVyRWxlbWVudC5kb2N1bWVu
dCgpLmF4T2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgY2FjaGUtPmhhbmRsZUF0dHJpYnV0ZUNoYW5n
ZWQoYXJpYV9sYWJlbEF0dHIsICZtX293bmVyRWxlbWVudCk7CisgICAgbm90aWZ5QXR0cmlidXRl
Q2hhbmdlZChhcmlhX2xhYmVsQXR0cik7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmxlTm9kZTo6b3Jp
ZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvclByb3BlcnR5KG1f
b3duZXJFbGVtZW50LCBBWFByb3BlcnR5TmFtZTo6T3JpZW50YXRpb24pOworfQorCit2b2lkIEFj
Y2Vzc2libGVOb2RlOjpzZXRPcmllbnRhdGlvbihjb25zdCBTdHJpbmcmIG9yaWVudGF0aW9uKQor
eworICAgIHNldFN0cmluZ1Byb3BlcnR5KG9yaWVudGF0aW9uLCBBWFByb3BlcnR5TmFtZTo6T3Jp
ZW50YXRpb24pOworICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQoYXJpYV9vcmllbnRhdGlvbkF0
dHIpOworfQorCitTdHJpbmcgQWNjZXNzaWJsZU5vZGU6OnBsYWNlaG9sZGVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQcm9w
ZXJ0eU5hbWU6OlBsYWNlaG9sZGVyKTsKK30KKwordm9pZCBBY2Nlc3NpYmxlTm9kZTo6c2V0UGxh
Y2Vob2xkZXIoY29uc3QgU3RyaW5nJiBwbGFjZWhvbGRlcikKK3sKKyAgICBzZXRTdHJpbmdQcm9w
ZXJ0eShwbGFjZWhvbGRlciwgQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyKTsKKyAgICBub3Rp
ZnlBdHRyaWJ1dGVDaGFuZ2VkKGFyaWFfcGxhY2Vob2xkZXJBdHRyKTsKK30KKworU3RyaW5nIEFj
Y2Vzc2libGVOb2RlOjpwcmVzc2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RyaW5nVmFsdWVG
b3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6OlByZXNzZWQpOworfQor
Cit2b2lkIEFjY2Vzc2libGVOb2RlOjpzZXRQcmVzc2VkKGNvbnN0IFN0cmluZyYgcHJlc3NlZCkK
K3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eShwcmVzc2VkLCBBWFByb3BlcnR5TmFtZTo6UHJlc3Nl
ZCk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hhbmdlZChhcmlhX3ByZXNzZWRBdHRyKTsKK30KKwor
U3RyaW5nIEFjY2Vzc2libGVOb2RlOjpyZWxldmFudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0
cmluZ1ZhbHVlRm9yUHJvcGVydHkobV9vd25lckVsZW1lbnQsIEFYUHJvcGVydHlOYW1lOjpSZWxl
dmFudCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJsZU5vZGU6OnNldFJlbGV2YW50KGNvbnN0IFN0cmlu
ZyYgcmVsZXZhbnQpCit7CisgICAgc2V0U3RyaW5nUHJvcGVydHkocmVsZXZhbnQsIEFYUHJvcGVy
dHlOYW1lOjpSZWxldmFudCk7CisgICAgbm90aWZ5QXR0cmlidXRlQ2hhbmdlZChhcmlhX3JlbGV2
YW50QXR0cik7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmxlTm9kZTo6cm9sZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkobV9vd25lckVsZW1lbnQsIEFYUHJvcGVy
dHlOYW1lOjpSb2xlKTsKK30KKwordm9pZCBBY2Nlc3NpYmxlTm9kZTo6c2V0Um9sZShjb25zdCBT
dHJpbmcmIHJvbGUpCit7CisgICAgc2V0U3RyaW5nUHJvcGVydHkocm9sZSwgQVhQcm9wZXJ0eU5h
bWU6OlJvbGUpOworICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQocm9sZUF0dHIpOworfQorCitT
dHJpbmcgQWNjZXNzaWJsZU5vZGU6OnJvbGVEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkobV9vd25lckVsZW1lbnQsIEFYUHJvcGVydHlOYW1l
OjpSb2xlRGVzY3JpcHRpb24pOworfQorCit2b2lkIEFjY2Vzc2libGVOb2RlOjpzZXRSb2xlRGVz
Y3JpcHRpb24oY29uc3QgU3RyaW5nJiByb2xlRGVzY3JpcHRpb24pCit7CisgICAgc2V0U3RyaW5n
UHJvcGVydHkocm9sZURlc2NyaXB0aW9uLCBBWFByb3BlcnR5TmFtZTo6Um9sZURlc2NyaXB0aW9u
KTsKKyAgICBub3RpZnlBdHRyaWJ1dGVDaGFuZ2VkKGFyaWFfcm9sZWRlc2NyaXB0aW9uQXR0cik7
Cit9CisKK1N0cmluZyBBY2Nlc3NpYmxlTm9kZTo6c29ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkobV9vd25lckVsZW1lbnQsIEFYUHJvcGVydHlOYW1lOjpT
b3J0KTsKK30KKwordm9pZCBBY2Nlc3NpYmxlTm9kZTo6c2V0U29ydChjb25zdCBTdHJpbmcmIHNv
cnQpCit7CisgICAgc2V0U3RyaW5nUHJvcGVydHkoc29ydCwgQVhQcm9wZXJ0eU5hbWU6OlNvcnQp
OworICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQoYXJpYV9zb3J0QXR0cik7Cit9CisKK1N0cmlu
ZyBBY2Nlc3NpYmxlTm9kZTo6dmFsdWVUZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RyaW5n
VmFsdWVGb3JQcm9wZXJ0eShtX293bmVyRWxlbWVudCwgQVhQcm9wZXJ0eU5hbWU6OlZhbHVlVGV4
dCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJsZU5vZGU6OnNldFZhbHVlVGV4dChjb25zdCBTdHJpbmcm
IHZhbHVlVGV4dCkKK3sKKyAgICBzZXRTdHJpbmdQcm9wZXJ0eSh2YWx1ZVRleHQsIEFYUHJvcGVy
dHlOYW1lOjpWYWx1ZVRleHQpOworICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQoYXJpYV92YWx1
ZXRleHRBdHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJsZU5vZGUuaAkocmV2aXNpb24gMjI0ODkz
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmxlTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw4ICs0MCwyMiBAQCB0eXBlZGVmIFZhcmlhbnQ8U3RyaW5nLCBib29s
LCBpbnQ+IFByb3BlCiAKIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgewogICAgIE5vbmUsCisg
ICAgQXV0b2NvbXBsZXRlLAorICAgIENoZWNrZWQsCisgICAgQ3VycmVudCwKKyAgICBIYXNQb3BV
cCwKKyAgICBJbnZhbGlkLAorICAgIEtleVNob3J0Y3V0cywKKyAgICBMYWJlbCwKKyAgICBMaXZl
LAorICAgIE9yaWVudGF0aW9uLAorICAgIFBsYWNlaG9sZGVyLAorICAgIFByZXNzZWQsCisgICAg
UmVsZXZhbnQsCiAgICAgUm9sZSwKLSAgICBMYWJlbAorICAgIFJvbGVEZXNjcmlwdGlvbiwKKyAg
ICBTb3J0LAorICAgIFZhbHVlVGV4dAogfTsKIAogc3RydWN0IEFYUHJvcGVydHlIYXNoVHJhaXRz
IDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxBWFByb3BlcnR5TmFtZT4gewpAQCAtNDksMTEgKzYz
LDExIEBAIHN0cnVjdCBBWFByb3BlcnR5SGFzaFRyYWl0cyA6IFdURjo6R2VuZXIKICAgICBzdGF0
aWMgQVhQcm9wZXJ0eU5hbWUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEFYUHJvcGVydHlOYW1lOjpO
b25lOyB9OwogICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShBWFByb3BlcnR5
TmFtZSYgc2xvdCkKICAgICB7Ci0gICAgICAgIHNsb3QgPSBBWFByb3BlcnR5TmFtZTo6Tm9uZTsK
KyAgICAgICAgc2xvdCA9IHN0YXRpY19jYXN0PEFYUHJvcGVydHlOYW1lPihzdGF0aWNfY2FzdDxp
bnQ+KEFYUHJvcGVydHlOYW1lOjpOb25lKSAtIDEpOwogICAgIH0KICAgICBzdGF0aWMgYm9vbCBp
c0RlbGV0ZWRWYWx1ZShBWFByb3BlcnR5TmFtZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biB2YWx1ZSA9PSBBWFByb3BlcnR5TmFtZTo6Tm9uZTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4odmFsdWUpID09IHN0YXRpY19jYXN0PGludD4oQVhQcm9wZXJ0eU5hbWU6Ok5vbmUp
IC0gMTsKICAgICB9CiB9OwogCkBAIC03MSwxNiArODUsNjAgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgZWZmZWN0aXZlU3RyaW5nVmFsdWVGb3JFbGVtZW50KEVsZW1lbnQmLCBB
WFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIGJvb2wgaGFzUHJvcGVydHkoRWxlbWVudCYsIEFY
UHJvcGVydHlOYW1lKTsKIAotICAgIFN0cmluZyByb2xlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRS
b2xlKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBhdXRvY29tcGxldGUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldEF1dG9jb21wbGV0ZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBjaGVj
a2VkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGVja2VkKGNvbnN0IFN0cmluZyYpOworCisgICAg
U3RyaW5nIGN1cnJlbnQoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnQoY29uc3QgU3RyaW5n
Jik7CisKKyAgICBTdHJpbmcgaGFzUG9wVXAoKSBjb25zdDsKKyAgICB2b2lkIHNldEhhc1BvcFVw
KGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIGludmFsaWQoKSBjb25zdDsKKyAgICB2b2lk
IHNldEludmFsaWQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcga2V5U2hvcnRjdXRzKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRLZXlTaG9ydGN1dHMoY29uc3QgU3RyaW5nJik7CisKKyAgICBT
dHJpbmcgbGl2ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TGl2ZShjb25zdCBTdHJpbmcmKTsKIAog
ICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5n
Jik7CiAKKyAgICBTdHJpbmcgb3JpZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldE9yaWVu
dGF0aW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHBsYWNlaG9sZGVyKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRQbGFjZWhvbGRlcihjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBw
cmVzc2VkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcmVzc2VkKGNvbnN0IFN0cmluZyYpOworCisg
ICAgU3RyaW5nIHJlbGV2YW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZWxldmFudChjb25zdCBT
dHJpbmcmKTsKKworICAgIFN0cmluZyByb2xlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSb2xlKGNv
bnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0OworICAg
IHZvaWQgc2V0Um9sZURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHNv
cnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNvcnQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJp
bmcgdmFsdWVUZXh0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRWYWx1ZVRleHQoY29uc3QgU3RyaW5n
Jik7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IFByb3BlcnR5VmFsdWVWYXJpYW50IHZh
bHVlRm9yUHJvcGVydHkoRWxlbWVudCYsIEFYUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yUHJvcGVydHkoRWxlbWVudCYsIEFYUHJvcGVydHlOYW1l
KTsKICAgICB2b2lkIHNldFN0cmluZ1Byb3BlcnR5KGNvbnN0IFN0cmluZyYsIEFYUHJvcGVydHlO
YW1lKTsKKyAgICAKKyAgICB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6UXVhbGlmaWVkTmFtZSYpOwogCiAgICAgRWxlbWVudCYgbV9vd25lckVsZW1lbnQ7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJsZU5vZGUuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJsZU5vZGUuaWRs
CShyZXZpc2lvbiAyMjQ4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2libGVOb2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsMjAgQEAKICAgICBTa2lw
VlRhYmxlVmFsaWRhdGlvbiwKICAgICBFbmFibGVkQXRSdW50aW1lPUFjY2Vzc2liaWxpdHlPYmpl
Y3RNb2RlbCwKIF0gaW50ZXJmYWNlIEFjY2Vzc2libGVOb2RlIHsKLSAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nPyByb2xlOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGF1dG9jb21wbGV0ZTsKKyAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBjaGVja2VkOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/
IGN1cnJlbnQ7CisgICAgYXR0cmlidXRlIERPTVN0cmluZz8gaGFzUG9wVXA7CisgICAgYXR0cmli
dXRlIERPTVN0cmluZz8gaW52YWxpZDsKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBrZXlTaG9y
dGN1dHM7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gbGFiZWw7CisgICAgYXR0cmlidXRlIERP
TVN0cmluZz8gbGl2ZTsKKyAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBvcmllbnRhdGlvbjsKKyAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBwbGFjZWhvbGRlcjsKKyAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nPyBwcmVzc2VkOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IHJlbGV2YW50OworICAgIGF0
dHJpYnV0ZSBET01TdHJpbmc/IHJvbGU7CisgICAgYXR0cmlidXRlIERPTVN0cmluZz8gcm9sZURl
c2NyaXB0aW9uOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IHNvcnQ7CisgICAgYXR0cmlidXRl
IERPTVN0cmluZz8gdmFsdWVUZXh0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCShyZXZpc2lvbiAyMjQ4
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2EKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFYQ3Vy
cmVudENoYW5nZWQ6Ci0gICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShheE9i
amVjdCwgQVRLX1NUQVRFX0FDVElWRSwgY29yZU9iamVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgpICE9
IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpGYWxzZSk7CisgICAgICAgIGF0a19vYmpl
Y3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShheE9iamVjdCwgQVRLX1NUQVRFX0FDVElWRSwgY29yZU9i
amVjdC0+Y3VycmVudFN0YXRlKCkgIT0gQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6RmFsc2Up
OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQVhSb3dFeHBhbmRlZDoKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAJKHJldmlzaW9uIDIyNDg5MykKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDk5LDE0ICs0OTksMTQgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCog
d2Via2l0QWNjZXNzaWJsZQogICAgIGlmICghcGxhY2Vob2xkZXIuaXNFbXB0eSgpKQogICAgICAg
ICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChhdHRyaWJ1dGVTZXQsICJwbGFj
ZWhvbGRlci10ZXh0IiwgcGxhY2Vob2xkZXIudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBpZiAoY29y
ZU9iamVjdC0+c3VwcG9ydHNBUklBQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIGF0dHJpYnV0ZVNl
dCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgImF1dG9jb21wbGV0ZSIsIGNv
cmVPYmplY3QtPmFyaWFBdXRvQ29tcGxldGVWYWx1ZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlm
IChjb3JlT2JqZWN0LT5zdXBwb3J0c0F1dG9Db21wbGV0ZSgpKQorICAgICAgICBhdHRyaWJ1dGVT
ZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChhdHRyaWJ1dGVTZXQsICJhdXRvY29tcGxldGUiLCBj
b3JlT2JqZWN0LT5hdXRvQ29tcGxldGVWYWx1ZSgpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgaWYg
KGNvcmVPYmplY3QtPnN1cHBvcnRzQVJJQUhhc1BvcHVwKCkpCi0gICAgICAgIGF0dHJpYnV0ZVNl
dCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgImhhc3BvcHVwIiwgY29yZU9i
amVjdC0+YXJpYVBvcHVwVmFsdWUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoY29yZU9iamVj
dC0+c3VwcG9ydHNIYXNQb3B1cCgpKQorICAgICAgICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0
dHJpYnV0ZVNldChhdHRyaWJ1dGVTZXQsICJoYXNwb3B1cCIsIGNvcmVPYmplY3QtPmhhc1BvcHVw
VmFsdWUoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGlmIChjb3JlT2JqZWN0LT5zdXBwb3J0c0FS
SUFDdXJyZW50KCkpCi0gICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KGF0dHJpYnV0ZVNldCwgImN1cnJlbnQiLCBjb3JlT2JqZWN0LT5hcmlhQ3VycmVudFZhbHVlKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKGNvcmVPYmplY3QtPnN1cHBvcnRzQ3VycmVudCgpKQor
ICAgICAgICBhdHRyaWJ1dGVTZXQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChhdHRyaWJ1dGVTZXQs
ICJjdXJyZW50IiwgY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkudXRmOCgpLmRhdGEoKSk7CiAK
ICAgICAvLyBUaGUgQ29yZSBBQU0gc3RhdGVzIHRoYXQgYW4gZXhwbGljaXRseS1zZXQgdmFsdWUg
c2hvdWxkIGJlIGV4cG9zZWQsIGluY2x1ZGluZyAibm9uZSIuCiAgICAgaWYgKGNvcmVPYmplY3Qt
Pmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfc29ydEF0dHIpKSB7CkBAIC01NjUsMTAgKzU2
NSwxMCBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlCiAgICAgICAg
IGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgInJvbGVk
ZXNjcmlwdGlvbiIsIHJvbGVEZXNjcmlwdGlvbi51dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIFdl
IG5lZWQgdG8gZXhwb3NlIHRoZSBsaXZlIHJlZ2lvbiBhdHRyaWJ1dGVzIGV2ZW4gaWYgdGhlIGxp
dmUgcmVnaW9uIGlzIGN1cnJlbnRseSBkaXNhYmxlZC9vZmYuCi0gICAgaWYgKGF1dG8gbGl2ZUNv
bnRhaW5lciA9IGNvcmVPYmplY3QtPmFyaWFMaXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7Ci0g
ICAgICAgIFN0cmluZyBsaXZlU3RhdHVzID0gbGl2ZUNvbnRhaW5lci0+YXJpYUxpdmVSZWdpb25T
dGF0dXMoKTsKLSAgICAgICAgU3RyaW5nIHJlbGV2YW50ID0gbGl2ZUNvbnRhaW5lci0+YXJpYUxp
dmVSZWdpb25SZWxldmFudCgpOwotICAgICAgICBib29sIGlzQXRvbWljID0gbGl2ZUNvbnRhaW5l
ci0+YXJpYUxpdmVSZWdpb25BdG9taWMoKTsKKyAgICBpZiAoYXV0byBsaXZlQ29udGFpbmVyID0g
Y29yZU9iamVjdC0+bGl2ZVJlZ2lvbkFuY2VzdG9yKGZhbHNlKSkgeworICAgICAgICBTdHJpbmcg
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKKyAgICAgICAg
U3RyaW5nIHJlbGV2YW50ID0gbGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Cisg
ICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29udGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7
CiAgICAgICAgIFN0cmluZyBsaXZlUm9sZSA9IHJvbGVTdHJpbmcuaXNFbXB0eSgpID8gY29tcHV0
ZWRSb2xlU3RyaW5nIDogcm9sZVN0cmluZzsKIAogICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhl
IENvcmUgQUFNLCB3ZSBuZWVkIHRvIGV4cG9zZSB0aGUgYWJvdmUgcHJvcGVydGllcyB3aXRoICJj
b250YWluZXItIiBwcmVmaXhlZApAQCAtNTg3LDcgKzU4Nyw3IEBAIHN0YXRpYyBBdGtBdHRyaWJ1
dGVTZXQqIHdlYmtpdEFjY2Vzc2libGUKICAgICAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRv
QXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgInJlbGV2YW50IiwgcmVsZXZhbnQudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAoaXNBdG9taWMpCiAgICAgICAgICAgICAgICAgYXR0
cmlidXRlU2V0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAiYXRvbWljIiwg
InRydWUiKTsKLSAgICAgICAgfSBlbHNlIGlmICghaXNBdG9taWMgJiYgY29yZU9iamVjdC0+YXJp
YUxpdmVSZWdpb25BdG9taWMoKSkKKyAgICAgICAgfSBlbHNlIGlmICghaXNBdG9taWMgJiYgY29y
ZU9iamVjdC0+bGl2ZVJlZ2lvbkF0b21pYygpKQogICAgICAgICAgICAgYXR0cmlidXRlU2V0ID0g
YWRkVG9BdGtBdHRyaWJ1dGVTZXQoYXR0cmlidXRlU2V0LCAiYXRvbWljIiwgInRydWUiKTsKICAg
ICB9CiAKQEAgLTYwMiw3ICs2MDIsNyBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRB
Y2Nlc3NpYmxlCiAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KGF0
dHJpYnV0ZVNldCwgImdyYWJiZWQiLCAiZmFsc2UiKTsKIAogICAgIC8vIFRoZSBDb3JlIEFBTSBz
dGF0ZXMgdGhlIGF1dGhvci1wcm92aWRlZCB2YWx1ZSBzaG91bGQgYmUgZXhwb3NlZCBhcy1pcy4K
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtleVNob3J0Y3V0cyA9IGNvcmVPYmplY3QtPmFyaWFL
ZXlTaG9ydGN1dHNWYWx1ZSgpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYga2V5U2hvcnRjdXRz
ID0gY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCiAgICAgICAgIGF0dHJpYnV0ZVNldCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KGF0dHJpYnV0ZVNldCwgImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0cy5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIApAQCAtNjg3LDcgKzY4Nyw3IEBAIHN0YXRpYyBBdGtSb2xlIGF0a1JvbGUo
QWNjZXNzaWJpbGl0eU9iamUKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXaW5kb3c6CiAg
ICAgICAgIHJldHVybiBBVEtfUk9MRV9XSU5ET1c7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6UG9wVXBCdXR0b246Ci0gICAgICAgIHJldHVybiBjb3JlT2JqZWN0LT5hcmlhSGFzUG9wdXAo
KSA/IEFUS19ST0xFX1BVU0hfQlVUVE9OIDogQVRLX1JPTEVfQ09NQk9fQk9YOworICAgICAgICBy
ZXR1cm4gY29yZU9iamVjdC0+aGFzUG9wdXAoKSA/IEFUS19ST0xFX1BVU0hfQlVUVE9OIDogQVRL
X1JPTEVfQ09NQk9fQk9YOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkNvbWJvQm94Ogog
ICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ09NQk9fQk9YOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVJvbGU6OlNwbGl0R3JvdXA6CkBAIC05MzAsNyArOTMwLDcgQEAgc3RhdGljIHZvaWQgc2V0QXRr
U3RhdGVTZXRGcm9tQ29yZU9iamVjdAogCiAgICAgLy8gUGxlYXNlIGtlZXAgdGhlIHN0YXRlIGxp
c3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCiAgICAgaWYgKChpc0xpc3RCb3hPcHRpb24gJiYgY29y
ZU9iamVjdC0+aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpKQotICAgICAgICB8fCBjb3JlT2JqZWN0
LT5hcmlhQ3VycmVudFN0YXRlKCkgIT0gQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3RhdGU6OkZh
bHNlKQorICAgICAgICB8fCBjb3JlT2JqZWN0LT5jdXJyZW50U3RhdGUoKSAhPSBBY2Nlc3NpYmls
aXR5Q3VycmVudFN0YXRlOjpGYWxzZSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUo
c3RhdGVTZXQsIEFUS19TVEFURV9BQ1RJVkUpOwogCiAgICAgaWYgKGNvcmVPYmplY3QtPmlzQnVz
eSgpKQpAQCAtOTc3LDcgKzk3Nyw3IEBAIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJvbUNv
cmVPYmplY3QKICAgICBlbHNlIGlmIChjb3JlT2JqZWN0LT5vcmllbnRhdGlvbigpID09IEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbjo6VmVydGljYWwpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRk
X3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfVkVSVElDQUwpOwogCi0gICAgaWYgKGNvcmVPYmpl
Y3QtPmFyaWFIYXNQb3B1cCgpKQorICAgIGlmIChjb3JlT2JqZWN0LT5oYXNQb3B1cCgpKQogICAg
ICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0hBU19QT1BV
UCk7CiAKICAgICBpZiAoY29yZU9iamVjdC0+aXNJbmRldGVybWluYXRlKCkpCkBAIC0xMDQ2LDcg
KzEwNDYsNyBAQCBzdGF0aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0CiAKICAg
ICAvLyBUT0RPOiBBVEtfU1RBVEVfU0VOU0lUSVZFCiAKLSAgICBpZiAoY29yZU9iamVjdC0+c3Vw
cG9ydHNBUklBQXV0b0NvbXBsZXRlKCkgJiYgY29yZU9iamVjdC0+YXJpYUF1dG9Db21wbGV0ZVZh
bHVlKCkgIT0gIm5vbmUiKQorICAgIGlmIChjb3JlT2JqZWN0LT5zdXBwb3J0c0F1dG9Db21wbGV0
ZSgpICYmIGNvcmVPYmplY3QtPmF1dG9Db21wbGV0ZVZhbHVlKCkgIT0gIm5vbmUiKQogICAgICAg
ICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX1NVUFBPUlRTX0FV
VE9DT01QTEVUSU9OKTsKIAogICAgIGlmIChjb3JlT2JqZWN0LT5pc1Zpc2l0ZWQoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyMjQ4OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIC0gKEJP
T0wpYWNjZXNzaWJpbGl0eUhhc1BvcHVwCiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2li
aWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIHJldHVybiBtX29iamVj
dC0+YXJpYUhhc1BvcHVwKCk7CisgICAgcmV0dXJuIG1fb2JqZWN0LT5oYXNQb3B1cCgpOwogfQog
CiAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlMYW5ndWFnZQpAQCAtMjg4MCw3ICsyODgwLDcg
QEAgLSAoTlNTdHJpbmcgKilhY2Nlc3NpYmlsaXR5QVJJQUxpdmVSZWdpbwogICAgIGlmICghW3Nl
bGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICByZXR1cm4gbV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uU3RhdHVzKCk7CisgICAgcmV0dXJuIG1f
b2JqZWN0LT5saXZlUmVnaW9uU3RhdHVzKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopYWNjZXNzaWJp
bGl0eUFSSUFSZWxldmFudFN0YXR1cwpAQCAtMjg4OCw3ICsyODg4LDcgQEAgLSAoTlNTdHJpbmcg
KilhY2Nlc3NpYmlsaXR5QVJJQVJlbGV2YW50UwogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nl
c3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0dXJuIG1f
b2JqZWN0LT5hcmlhTGl2ZVJlZ2lvblJlbGV2YW50KCk7CisgICAgcmV0dXJuIG1fb2JqZWN0LT5s
aXZlUmVnaW9uUmVsZXZhbnQoKTsKIH0KIAogLSAoQk9PTClhY2Nlc3NpYmlsaXR5QVJJQUxpdmVS
ZWdpb25Jc0F0b21pYwpAQCAtMjg5Niw3ICsyODk2LDcgQEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5
QVJJQUxpdmVSZWdpb25Jc0F0bwogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbF0pCiAgICAgICAgIHJldHVybiBOTzsKICAgICAKLSAgICByZXR1cm4gbV9vYmplY3QtPmFy
aWFMaXZlUmVnaW9uQXRvbWljKCk7CisgICAgcmV0dXJuIG1fb2JqZWN0LT5saXZlUmVnaW9uQXRv
bWljKCk7CiB9CiAKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eVN1cHBvcnRzQVJJQVByZXNzZWQKQEAg
LTI5MDQsNyArMjkwNCw3IEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eVN1cHBvcnRzQVJJQVByZXNz
ZWQKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgCi0gICAgcmV0dXJuIG1fb2JqZWN0LT5zdXBwb3J0c0FSSUFQcmVzc2Vk
KCk7CisgICAgcmV0dXJuIG1fb2JqZWN0LT5zdXBwb3J0c1ByZXNzZWQoKTsKIH0KIAogLSAoQk9P
TClhY2Nlc3NpYmlsaXR5SXNQcmVzc2VkCkBAIC0yOTY4LDIwICsyOTY4LDIwIEBAIC0gKE5TU3Ry
aW5nICopYWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50U3QKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJl
QWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIHN3aXRj
aCAobV9vYmplY3QtPmFyaWFDdXJyZW50U3RhdGUoKSkgewotICAgIGNhc2UgQWNjZXNzaWJpbGl0
eUFSSUFDdXJyZW50U3RhdGU6OkZhbHNlOgorICAgIHN3aXRjaCAobV9vYmplY3QtPmN1cnJlbnRT
dGF0ZSgpKSB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlOjpGYWxzZToKICAg
ICAgICAgcmV0dXJuIEAiZmFsc2UiOwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50
U3RhdGU6OlBhZ2U6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlOjpQYWdlOgog
ICAgICAgICByZXR1cm4gQCJwYWdlIjsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklBQ3VycmVu
dFN0YXRlOjpTdGVwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUN1cnJlbnRTdGF0ZTo6U3RlcDoK
ICAgICAgICAgcmV0dXJuIEAic3RlcCI7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5QVJJQUN1cnJl
bnRTdGF0ZTo6TG9jYXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Q3VycmVudFN0YXRlOjpM
b2NhdGlvbjoKICAgICAgICAgcmV0dXJuIEAibG9jYXRpb24iOwotICAgIGNhc2UgQWNjZXNzaWJp
bGl0eUFSSUFDdXJyZW50U3RhdGU6OlRpbWU6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Q3VycmVu
dFN0YXRlOjpUaW1lOgogICAgICAgICByZXR1cm4gQCJ0aW1lIjsKLSAgICBjYXNlIEFjY2Vzc2li
aWxpdHlBUklBQ3VycmVudFN0YXRlOjpEYXRlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eUN1cnJl
bnRTdGF0ZTo6RGF0ZToKICAgICAgICAgcmV0dXJuIEAiZGF0ZSI7Ci0gICAgY2FzZSBBY2Nlc3Np
YmlsaXR5QVJJQUN1cnJlbnRTdGF0ZTo6VHJ1ZToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlDdXJy
ZW50U3RhdGU6OlRydWU6CiAgICAgICAgIHJldHVybiBAInRydWUiOwogICAgIH0KIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAyMjQ4OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgLSAo
TlNBcnJheSopYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaQogICAgIGlmIChpczxBY2Nlc3Np
YmlsaXR5VGFibGU+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigq
bV9vYmplY3QpLmlzRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSAmJiBkb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGU+KCptX29iamVjdCkuc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSkKICAg
ICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0
dHJpYnV0ZV07CiAgICAgCi0gICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0c0FSSUFMaXZlUmVnaW9u
KCkpIHsKKyAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzTGl2ZVJlZ2lvbigpKSB7CiAgICAgICAg
IFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBTGl2ZUF0dHJpYnV0ZV07
CiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBUmVsZXZh
bnRBdHRyaWJ1dGVdOwogICAgIH0KQEAgLTEyMDIsNyArMTIwMiw3IEBAIC0gKE5TQXJyYXkqKWFk
ZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmkKICAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGVdOwogICAgIAogICAgIC8vIElm
IGFuIG9iamVjdCBpcyBhIGNoaWxkIG9mIGEgbGl2ZSByZWdpb24sIHRoZW4gYWRkIHRoZXNlCi0g
ICAgaWYgKG1fb2JqZWN0LT5pc0luc2lkZUFSSUFMaXZlUmVnaW9uKCkpCisgICAgaWYgKG1fb2Jq
ZWN0LT5pc0luc2lkZUxpdmVSZWdpb24oKSkKICAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eUFSSUFBdG9taWNBdHRyaWJ1dGVdOwogICAgIC8vIEFsbCBvYmplY3Rz
IHNob3VsZCBleHBvc2UgdGhlIEFSSUEgYnVzeSBhdHRyaWJ1dGUgKEFSSUEgMS4xIHdpdGggSVNT
VUUtNTM4KS4KICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RWxlbWVu
dEJ1c3lBdHRyaWJ1dGVdOwpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgLSAoTlNBcnJheSopYWRkaXRp
b25hbEFjY2Vzc2liaWxpdHlBdHRyaQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOwogICAgIH0KICAgICAKLSAgICBpZiAobV9v
YmplY3QtPmFyaWFIYXNQb3B1cCgpKQorICAgIGlmIChtX29iamVjdC0+aGFzUG9wdXAoKSkKICAg
ICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhhc1BvcHVwQXR0cmli
dXRlXTsKICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzTWF0aFJvb3QoKSkgewpAQCAtMTY2MSw3
ICsxNjYxLDcgQEAgLSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCiAgICAg
ICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBbb2JqZWN0QXR0cmlidXRlcyBhcnJheUJ5QWRkaW5nT2Jq
ZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQXR0cmlidXRlc107CiAgICAgCiAgICAgLy8gT25seSBl
eHBvc2UgQVhBUklBQ3VycmVudCBhdHRyaWJ1dGUgd2hlbiB0aGUgZWxlbWVudCBpcyBzZXQgdG8g
YmUgY3VycmVudCBpdGVtLgotICAgIGlmIChtX29iamVjdC0+YXJpYUN1cnJlbnRTdGF0ZSgpICE9
IEFjY2Vzc2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpGYWxzZSkKKyAgICBpZiAobV9vYmplY3Qt
PmN1cnJlbnRTdGF0ZSgpICE9IEFjY2Vzc2liaWxpdHlDdXJyZW50U3RhdGU6OkZhbHNlKQogICAg
ICAgICBvYmplY3RBdHRyaWJ1dGVzID0gW29iamVjdEF0dHJpYnV0ZXMgYXJyYXlCeUFkZGluZ09i
amVjdHNGcm9tQXJyYXk6QFsgTlNBY2Nlc3NpYmlsaXR5QVJJQUN1cnJlbnRBdHRyaWJ1dGUgXV07
CiAgICAgCiAgICAgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZXM7CkBAIC0yOTc5LDcgKzI5NzksNyBA
QCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmlzU2VsZWN0ZWQoKV07CiAgICAg
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5
QVJJQUN1cnJlbnRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPmFyaWFDdXJy
ZW50VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5jdXJyZW50VmFsdWUoKTsKICAg
ICAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxp
dHlTZXJ2ZXNBc1RpdGxlRm9yVUlFbGVtZW50c0F0dHJpYnV0ZV0gJiYgbV9vYmplY3QtPmlzTWVu
dUJ1dHRvbigpKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHVpRWxlbWVudCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+KCptX29iamVjdCkubWVudUZvck1lbnVC
dXR0b24oKTsKQEAgLTMwOTEsNyArMzA5MSw3IEBAIC0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTooTlNTdHIKICAgICAgICAgcmV0dXJuIEAobV9vYmplY3QtPmlzVmFsdWVBdXRvZmls
bGVkKCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlIYXNQb3B1cEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6bV9vYmplY3QtPmFyaWFIYXNQb3B1cCgpXTsKKyAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+aGFzUG9wdXAoKV07CiAKICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURhdGV0aW1lVmFs
dWVBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gbV9vYmplY3QtPmRhdGV0aW1lQXR0cmlidXRl
VmFsdWUoKTsKQEAgLTMxMDEsMTEgKzMxMDEsMTEgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOihOU1N0cgogICAgIAogICAgIC8vIEFSSUEgTGl2ZSByZWdpb24gYXR0cmlidXRl
cy4KICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUFSSUFMaXZlQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5hcmlhTGl2ZVJl
Z2lvblN0YXR1cygpOworICAgICAgICByZXR1cm4gbV9vYmplY3QtPmxpdmVSZWdpb25TdGF0dXMo
KTsKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUFSSUFSZWxldmFudEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBtX29iamVjdC0+YXJpYUxp
dmVSZWdpb25SZWxldmFudCgpOworICAgICAgICByZXR1cm4gbV9vYmplY3QtPmxpdmVSZWdpb25S
ZWxldmFudCgpOwogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5QVJJQUF0b21pY0F0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uQXRvbWljKCldOworICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5saXZlUmVnaW9uQXRv
bWljKCldOwogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5RWxlbWVudEJ1c3lBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc0J1c3koKV07CiAgICAgCkBAIC0zMTg0LDYgKzMxODQs
MTggQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSJd
KQogICAgICAgICByZXR1cm4gbV9vYmplY3QtPmdldEF0dHJpYnV0ZShpZEF0dHIpOwogICAgIAor
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEF1dG9jb21wbGV0ZVZh
bHVlIl0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKTsKKyAg
ICAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhIYXNQb3BVcFZh
bHVlIl0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+aGFzUG9wdXBWYWx1ZSgpOworICAgIAor
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEtleVNob3J0Y3V0c1Zh
bHVlIl0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKKyAg
ICAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBUklBUHJlc3Nl
ZElzUHJlc2VudCJdKQorICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1f
b2JqZWN0LT5wcmVzc2VkSXNQcmVzZW50KCldOworICAgIAogICAgIGlmIChtX29iamVjdC0+aXNX
ZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQogICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5wcmV2ZW50S2V5Ym9hcmRET01F
dmVudERpc3BhdGNoKCldOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJldmlzaW9uIDIyNDg5MykK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzYxLDI2ICsxNzYxLDI2IEBAIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkFjY2Vzc2kKICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlZE5v
ZGVJZHMtPmFkZEl0ZW0ocHVzaE5vZGVQYXRoVG9Gcm9udGVuZChjb250cm9sbGVkRWxlbWVudCkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBzd2l0Y2ggKGF4T2Jq
ZWN0LT5hcmlhQ3VycmVudFN0YXRlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eUFSSUFDdXJyZW50U3RhdGU6OkZhbHNlOgorICAgICAgICAgICAgc3dpdGNoIChheE9iamVjdC0+
Y3VycmVudFN0YXRlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUN1cnJlbnRT
dGF0ZTo6RmFsc2U6CiAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVudDo6RmFsc2U7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklB
Q3VycmVudFN0YXRlOjpQYWdlOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Q3VycmVu
dFN0YXRlOjpQYWdlOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OlBhZ2U7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklB
Q3VycmVudFN0YXRlOjpTdGVwOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Q3VycmVu
dFN0YXRlOjpTdGVwOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJlbnQ6OlN0ZXA7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlBUklB
Q3VycmVudFN0YXRlOjpMb2NhdGlvbjoKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eUN1
cnJlbnRTdGF0ZTo6TG9jYXRpb246CiAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllczo6Q3VycmVudDo6
TG9jYXRpb247CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpEYXRlOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Q3VycmVudFN0YXRlOjpEYXRlOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJl
bnQ6OkRhdGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpUaW1lOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Q3VycmVudFN0YXRlOjpUaW1lOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJl
bnQ6OlRpbWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlBUklBQ3VycmVudFN0YXRlOjpUcnVlOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Q3VycmVudFN0YXRlOjpUcnVlOgogICAgICAgICAgICAgICAgIGN1cnJlbnRTdGF0ZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkN1cnJl
bnQ6OlRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xODI0
LDExICsxODI0LDExIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2kK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbGFiZWwgPSBheE9iamVjdC0+Y29tcHV0ZWRMYWJl
bCgpOwogCi0gICAgICAgICAgICBpZiAoYXhPYmplY3QtPnN1cHBvcnRzQVJJQUxpdmVSZWdpb24o
KSkgeworICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5zdXBwb3J0c0xpdmVSZWdpb24oKSkgewog
ICAgICAgICAgICAgICAgIHN1cHBvcnRzTGl2ZVJlZ2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgbGl2ZVJlZ2lvbkF0b21pYyA9IGF4T2JqZWN0LT5hcmlhTGl2ZVJlZ2lvbkF0b21pYygpOwor
ICAgICAgICAgICAgICAgIGxpdmVSZWdpb25BdG9taWMgPSBheE9iamVjdC0+bGl2ZVJlZ2lvbkF0
b21pYygpOwogCi0gICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudEF0dHJWYWx1ZSA9
IGF4T2JqZWN0LT5hcmlhTGl2ZVJlZ2lvblJlbGV2YW50KCk7CisgICAgICAgICAgICAgICAgU3Ry
aW5nIGFyaWFSZWxldmFudEF0dHJWYWx1ZSA9IGF4T2JqZWN0LT5saXZlUmVnaW9uUmVsZXZhbnQo
KTsKICAgICAgICAgICAgICAgICBpZiAoIWFyaWFSZWxldmFudEF0dHJWYWx1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgZW51bSB2YWx1ZXMgcmF0aGVy
IHRoYW4gc3RyaW5ncyBvbmNlIHVuYmxvY2tlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMzM3MTEK
ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudEFkZGl0aW9ucyA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6TGl2ZVJlZ2lvblJlbGV2YW50OjpBZGRpdGlvbnMpOwpA
QCAtMTg1Miw3ICsxODUyLDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNj
ZXNzaQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgU3RyaW5nIGFyaWFMaXZlID0gYXhPYmplY3QtPmFyaWFMaXZlUmVnaW9uU3RhdHVz
KCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFMaXZlID0gYXhPYmplY3QtPmxpdmVSZWdp
b25TdGF0dXMoKTsKICAgICAgICAgICAgICAgICBpZiAoYXJpYUxpdmUgPT0gImFzc2VydGl2ZSIp
CiAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25TdGF0dXMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzOjpMaXZlUmVnaW9uU3RhdHVzOjpBc3Nl
cnRpdmU7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJpYUxpdmUgPT0gInBvbGl0ZSIpCkBA
IC0xODc1LDcgKzE4NzUsNyBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nl
c3NpCiAgICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0g
YXhPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpKQogICAgICAgICAgICAgICAgIHBhcmVu
dE5vZGUgPSBwYXJlbnRPYmplY3QtPm5vZGUoKTsKIAotICAgICAgICAgICAgc3VwcG9ydHNQcmVz
c2VkID0gYXhPYmplY3QtPmFyaWFQcmVzc2VkSXNQcmVzZW50KCk7CisgICAgICAgICAgICBzdXBw
b3J0c1ByZXNzZWQgPSBheE9iamVjdC0+cHJlc3NlZElzUHJlc2VudCgpOwogICAgICAgICAgICAg
aWYgKHN1cHBvcnRzUHJlc3NlZCkKICAgICAgICAgICAgICAgICBwcmVzc2VkID0gYXhPYmplY3Qt
PmlzUHJlc3NlZCgpOwogICAgICAgICAgICAgCkBAIC0xOTAzLDcgKzE5MDMsNyBAQCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpCiAgICAgICAgICAgICBoaWVyYXJjaGlj
YWxMZXZlbCA9IGF4T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBsZXZlbCA9IGhpZXJhcmNoaWNhbExldmVsID8gaGllcmFyY2hpY2FsTGV2ZWwg
OiBoZWFkaW5nTGV2ZWw7Ci0gICAgICAgICAgICBpc1BvcHVwQnV0dG9uID0gYXhPYmplY3QtPmlz
UG9wVXBCdXR0b24oKSB8fCBheE9iamVjdC0+YXJpYUhhc1BvcHVwKCk7CisgICAgICAgICAgICBp
c1BvcHVwQnV0dG9uID0gYXhPYmplY3QtPmlzUG9wVXBCdXR0b24oKSB8fCBheE9iamVjdC0+aGFz
UG9wdXAoKTsKICAgICAgICAgfQogICAgIH0KICAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDg5
MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDE3LTExLTE2ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QVg6IEFPTTogSW1wbGVtZW50IHN0cmluZyB0eXBlIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTQ5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hY2Nlc3Np
YmlsaXR5LW9iamVjdC1tb2RlbC5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FP
TS1zdHJpbmctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvbWFjL0FPTS1zdHJpbmctcHJvcGVydGllcy5odG1sOiBBZGRlZC4KKwogMjAxNy0x
MS0xNSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtHVEtdIGFjY2Vz
c2liaWxpdHkvYWNjZXNzaWJpbGl0eS1vYmplY3QtbW9kZWwuaHRtbCBmYWlscwpJbmRleDogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW9iamVjdC1tb2RlbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1vYmpl
Y3QtbW9kZWwuaHRtbAkocmV2aXNpb24gMjI0ODkzKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9hY2Nlc3NpYmlsaXR5LW9iamVjdC1tb2RlbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsNyArMTExLDYgQEAKICAgICAgICAgICAgIHZhciBidXR0b24yID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImJ1dHRvbjIiKTsKICAgICAgICAgICAgIGJ1dHRvbjIucGFyZW50RWxlbWVudC5y
ZW1vdmVDaGlsZChidXR0b24yKTsKICAgICAgICAgfSkoKTsKLSAgICAgICAgZ2MoKTsKICAgICAg
ICAgc2hvdWxkQmUoImFvbVJlbW92ZWRCdXR0b24ucm9sZSIsICInY2hlY2tib3gnIik7CiAgICAg
fQogICAgIApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvQU9NLXN0cmluZy1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9BT00tc3RyaW5nLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL0FPTS1zdHJpbmctcHJvcGVydGll
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorCitUaGlzIHRl
c3RzIHN0cmluZyB0eXBlIEFjY2Vzc2liaWxpdHkgT2JqZWN0IE1vZGVsIHByb3BlcnRpZXMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK0F1dG9jb21wbGV0ZSBzdXBwb3J0CitQ
QVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUuYXV0b2NvbXBsZXRlIGlzICJpbmxpbmUiCitQQVNTIGF4
Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhBdXRvY29tcGxldGVWYWx1ZScpIGlzICJpbmxp
bmUiCisKK0NoZWNrZWQgc3VwcG9ydAorUEFTUyBheE5vZGUuaXNDaGVja2VkIGlzIGZhbHNlCitQ
QVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUuY2hlY2tlZCBpcyAidHJ1ZSIKK1BBU1MgYXhOb2RlLmlz
Q2hlY2tlZCBpcyB0cnVlCisKK0N1cnJlbnQgc3VwcG9ydAorUEFTUyBheE5vZGUuc3RyaW5nQXR0
cmlidXRlVmFsdWUoJ0FYQVJJQUN1cnJlbnQnKSBpcyAiZmFsc2UiCitQQVNTIGN1cnJlbnQuYWNj
ZXNzaWJsZU5vZGUuY3VycmVudCBpcyAicGFnZSIKK1BBU1MgYXhOb2RlLnN0cmluZ0F0dHJpYnV0
ZVZhbHVlKCdBWEFSSUFDdXJyZW50JykgaXMgInBhZ2UiCisKK0hhc1BvcFVwIHN1cHBvcnQKK1BB
U1MgYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEhhc1BvcFVwVmFsdWUnKSBpcyAiZmFs
c2UiCitQQVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUuaGFzUG9wVXAgaXMgImRpYWxvZyIKK1BBU1Mg
YXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEhhc1BvcFVwVmFsdWUnKSBpcyAiZGlhbG9n
IgorCitJbnZhbGlkIHN1cHBvcnQKK1BBU1MgYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdB
WEludmFsaWQnKSBpcyAiZmFsc2UiCitQQVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUuaW52YWxpZCBp
cyAiZ3JhbW1hciIKK1BBU1MgYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEludmFsaWQn
KSBpcyAiZ3JhbW1hciIKKworS2V5U2hvcnRjdXRzIHN1cHBvcnQKK1BBU1Mgbm9kZS5hY2Nlc3Np
YmxlTm9kZS5rZXlTaG9ydGN1dHMgaXMgIkN0cmwrRiIKK1BBU1MgYXhOb2RlLnN0cmluZ0F0dHJp
YnV0ZVZhbHVlKCdBWEtleVNob3J0Y3V0c1ZhbHVlJykgaXMgIkN0cmwrRiIKKworTGl2ZSBzdXBw
b3J0CitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBTGl2ZScpIGlzICIi
CitQQVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUubGl2ZSBpcyAicG9saXRlIgorUEFTUyBheE5vZGUu
c3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJQUxpdmUnKSBpcyAicG9saXRlIgorCitPcmllbnRh
dGlvbiBzdXBwb3J0CitQQVNTIGF4Tm9kZS5vcmllbnRhdGlvbiBpcyAiQVhPcmllbnRhdGlvbjog
QVhIb3Jpem9udGFsT3JpZW50YXRpb24iCitQQVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUub3JpZW50
YXRpb24gaXMgInZlcnRpY2FsIgorUEFTUyBheE5vZGUub3JpZW50YXRpb24gaXMgIkFYT3JpZW50
YXRpb246IEFYVmVydGljYWxPcmllbnRhdGlvbiIKKworUGxhY2Vob2xkZXIgc3VwcG9ydAorUEFT
UyBheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYUGxhY2Vob2xkZXJWYWx1ZScpIGlzICIi
CitQQVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUucGxhY2Vob2xkZXIgaXMgInRlc3QgcGxhY2Vob2xk
ZXIiCitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhQbGFjZWhvbGRlclZhbHVl
JykgaXMgInRlc3QgcGxhY2Vob2xkZXIiCisKK1ByZXNzZWQgc3VwcG9ydAorUEFTUyBheE5vZGUu
Ym9vbEF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFQcmVzc2VkSXNQcmVzZW50JykgaXMgZmFsc2UKK1BB
U1Mgbm9kZS5hY2Nlc3NpYmxlTm9kZS5wcmVzc2VkIGlzICJ0cnVlIgorUEFTUyBheE5vZGUuYm9v
bEF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFQcmVzc2VkSXNQcmVzZW50JykgaXMgdHJ1ZQorCitSZWxl
dmFudCBzdXBwb3J0CitQQVNTIGF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBUmVs
ZXZhbnQnKSBpcyAiYWRkaXRpb25zIHRleHQiCitQQVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUucmVs
ZXZhbnQgaXMgImFkZGl0aW9ucyIKK1BBU1MgYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdB
WEFSSUFSZWxldmFudCcpIGlzICJhZGRpdGlvbnMiCisKK1JvbGVEZXNjcmlwdGlvbiBzdXBwb3J0
CitQQVNTIGF4Tm9kZS5yb2xlRGVzY3JpcHRpb24gaXMgIkFYUm9sZURlc2NyaXB0aW9uOiBidXR0
b24iCitQQVNTIG5vZGUuYWNjZXNzaWJsZU5vZGUucm9sZURlc2NyaXB0aW9uIGlzICJ0ZXN0IGJ1
dHRvbiIKK1BBU1MgYXhOb2RlLnJvbGVEZXNjcmlwdGlvbiBpcyAiQVhSb2xlRGVzY3JpcHRpb246
IHRlc3QgYnV0dG9uIgorCitTb3J0IHN1cHBvcnQKK1BBU1MgYXhOb2RlLnN0cmluZ0F0dHJpYnV0
ZVZhbHVlKCdBWFNvcnREaXJlY3Rpb24nKSBpcyAiQVhVbmtub3duU29ydERpcmVjdGlvbiIKK1BB
U1Mgbm9kZS5hY2Nlc3NpYmxlTm9kZS5zb3J0IGlzICJhc2NlbmRpbmciCitQQVNTIGF4Tm9kZS5z
dHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhTb3J0RGlyZWN0aW9uJykgaXMgIkFYQXNjZW5kaW5nU29y
dERpcmVjdGlvbiIKKworVmFsdWVUZXh0IHN1cHBvcnQKK1BBU1MgYXhOb2RlLnZhbHVlRGVzY3Jp
cHRpb24gaXMgIkFYVmFsdWVEZXNjcmlwdGlvbjogIgorUEFTUyBub2RlLmFjY2Vzc2libGVOb2Rl
LnZhbHVlVGV4dCBpcyAiRml2ZSIKK1BBU1MgYXhOb2RlLnZhbHVlRGVzY3JpcHRpb24gaXMgIkFY
VmFsdWVEZXNjcmlwdGlvbjogRml2ZSIKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvQU9NLXN0cmluZy1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvQU9NLXN0cmluZy1wcm9wZXJ0aWVzLmh0bWwJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvQU9NLXN0cmluZy1wcm9wZXJ0
aWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTAgQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmls
aXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiByb2xlPSJj
b21ib2JveCIgaWQ9ImF1dG9jb21wbGV0ZSI+PC9kaXY+Cis8ZGl2IHJvbGU9ImNoZWNrYm94IiBp
ZD0iY2hlY2tlZCI+PC9kaXY+Cis8ZGl2IHJvbGU9InRhYiIgaWQ9ImN1cnJlbnQiPjwvZGl2Pgor
PGRpdiByb2xlPSJidXR0b24iIGlkPSJoYXNQb3BVcCI+PC9kaXY+Cis8ZGl2IHJvbGU9InRleHRi
b3giIGlkPSJpbnZhbGlkIj48L2Rpdj4KKzxkaXYgcm9sZT0iYnV0dG9uIiBpZD0ia2V5U2hvcnRj
dXRzIj48L2Rpdj4KKzxkaXYgcm9sZT0iYmFubmVyIiBpZD0ibGl2ZSI+PC9kaXY+Cis8ZGl2IHJv
bGU9InNsaWRlciIgaWQ9Im9yaWVudGF0aW9uIj48L2Rpdj4KKzxpbnB1dCBpZD0icGxhY2Vob2xk
ZXIiPgorPGRpdiByb2xlPSJzd2l0Y2giIGlkPSJwcmVzc2VkIj48L2Rpdj4KKzxkaXYgcm9sZT0i
YmFubmVyIiBpZD0icmVsZXZhbnQiPjwvZGl2PgorPGRpdiByb2xlPSJidXR0b24iIGlkPSJyb2xl
RGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiByb2xlPSJjb2x1bW5oZWFkZXIiIGlkPSJzb3J0Ij48
L2Rpdj4KKzxkaXYgcm9sZT0ic2xpZGVyIiBpZD0idmFsdWVUZXh0Ij48L2Rpdj4KKworPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4K
KyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBzdHJpbmcgdHlwZSBBY2Nlc3NpYmlsaXR5IE9i
amVjdCBNb2RlbCBwcm9wZXJ0aWVzLiIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKKyAgICAgICAgdmFyIG5vZGU7CisgICAgICAgIHZhciBheE5vZGU7CisKKyAg
ICAgICAgdGVzdEF1dG9jb21wbGV0ZSgpOworICAgICAgICB0ZXN0Q2hlY2tlZCgpOworICAgICAg
ICB0ZXN0Q3VycmVudCgpOworICAgICAgICB0ZXN0SGFzUG9wVXAoKTsKKyAgICAgICAgdGVzdElu
dmFsaWQoKTsKKyAgICAgICAgdGVzdEtleVNob3J0Y3V0cygpOworICAgICAgICB0ZXN0TGl2ZSgp
OworICAgICAgICB0ZXN0T3JpZW50YXRpb24oKTsKKyAgICAgICAgdGVzdFBsYWNlaG9sZGVyKCk7
CisgICAgICAgIHRlc3RQcmVzc2VkKCk7CisgICAgICAgIHRlc3RSZWxldmFudCgpOworICAgICAg
ICB0ZXN0Um9sZURlc2NyaXB0aW9uKCk7CisgICAgICAgIHRlc3RTb3J0KCk7CisgICAgICAgIHRl
c3RWYWx1ZVRleHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0QXV0b2NvbXBsZXRlKCkg
eworICAgICAgICBkZWJ1ZygiXG5BdXRvY29tcGxldGUgc3VwcG9ydCIpOworICAgICAgICBub2Rl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImF1dG9jb21wbGV0ZSIpOworICAgICAgICBheE5v
ZGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImF1dG9j
b21wbGV0ZSIpOworICAgICAgICBub2RlLmFjY2Vzc2libGVOb2RlLmF1dG9jb21wbGV0ZSA9ICJp
bmxpbmUiOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm5vZGUuYWNjZXNzaWJsZU5v
ZGUuYXV0b2NvbXBsZXRlIiwgImlubGluZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhBdXRvY29tcGxldGVWYWx1ZScpIiwg
ImlubGluZSIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDaGVja2VkKCkgeworICAgICAg
ICBkZWJ1ZygiXG5DaGVja2VkIHN1cHBvcnQiKTsKKyAgICAgICAgbm9kZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaGVja2VkIik7CisgICAgICAgIGF4Tm9kZSA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2hlY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJheE5vZGUuaXNDaGVja2VkIik7CisgICAgICAgIG5vZGUuYWNjZXNzaWJsZU5v
ZGUuY2hlY2tlZCA9ICJ0cnVlIjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJub2Rl
LmFjY2Vzc2libGVOb2RlLmNoZWNrZWQiLCAidHJ1ZSIpOworICAgICAgICBzaG91bGRCZVRydWUo
ImF4Tm9kZS5pc0NoZWNrZWQiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0Q3VycmVudCgp
IHsKKyAgICAgICAgZGVidWcoIlxuQ3VycmVudCBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY3VycmVudCIpOworICAgICAgICBheE5vZGUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImN1cnJlbnQiKTsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUo
J0FYQVJJQUN1cnJlbnQnKSIsICJmYWxzZSIpOworICAgICAgICBub2RlLmFjY2Vzc2libGVOb2Rl
LmN1cnJlbnQgPSAicGFnZSI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3VycmVu
dC5hY2Nlc3NpYmxlTm9kZS5jdXJyZW50IiwgInBhZ2UiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJQUN1cnJlbnQnKSIs
ICJwYWdlIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdEhhc1BvcFVwKCkgeworICAgICAg
ICBkZWJ1ZygiXG5IYXNQb3BVcCBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaGFzUG9wVXAiKTsKKyAgICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJoYXNQb3BVcCIpOworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhIYXNQ
b3BVcFZhbHVlJykiLCAiZmFsc2UiKTsKKyAgICAgICAgbm9kZS5hY2Nlc3NpYmxlTm9kZS5oYXNQ
b3BVcCA9ICJkaWFsb2ciOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm5vZGUuYWNj
ZXNzaWJsZU5vZGUuaGFzUG9wVXAiLCAiZGlhbG9nIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEhhc1BvcFVwVmFsdWUnKSIs
ICJkaWFsb2ciKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0SW52YWxpZCgpIHsKKyAgICAg
ICAgZGVidWcoIlxuSW52YWxpZCBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaW52YWxpZCIpOworICAgICAgICBheE5vZGUgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImludmFsaWQiKTsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYSW52YWxp
ZCcpIiwgImZhbHNlIik7CisgICAgICAgIG5vZGUuYWNjZXNzaWJsZU5vZGUuaW52YWxpZCA9ICJn
cmFtbWFyIjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJub2RlLmFjY2Vzc2libGVO
b2RlLmludmFsaWQiLCAiZ3JhbW1hciIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhJbnZhbGlkJykiLCAiZ3JhbW1hciIpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RLZXlTaG9ydGN1dHMoKSB7CisgICAgICAgIGRlYnVn
KCJcbktleVNob3J0Y3V0cyBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgia2V5U2hvcnRjdXRzIik7CisgICAgICAgIGF4Tm9kZSA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgia2V5U2hvcnRjdXRzIik7CisgICAg
ICAgIG5vZGUuYWNjZXNzaWJsZU5vZGUua2V5U2hvcnRjdXRzID0gIkN0cmwrRiI7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibm9kZS5hY2Nlc3NpYmxlTm9kZS5rZXlTaG9ydGN1dHMi
LCAiQ3RybCtGIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiYXhOb2RlLnN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKCdBWEtleVNob3J0Y3V0c1ZhbHVlJykiLCAiQ3RybCtGIik7CisgICAg
fQorCisgICAgZnVuY3Rpb24gdGVzdExpdmUoKSB7CisgICAgICAgIGRlYnVnKCJcbkxpdmUgc3Vw
cG9ydCIpOworICAgICAgICBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpdmUiKTsK
KyAgICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJsaXZlIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiYXhOb2RlLnN0
cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFMaXZlJykiLCAiIik7CisgICAgICAgIG5vZGUuYWNj
ZXNzaWJsZU5vZGUubGl2ZSA9ICJwb2xpdGUiOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIm5vZGUuYWNjZXNzaWJsZU5vZGUubGl2ZSIsICJwb2xpdGUiKTsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJheE5vZGUuc3RyaW5nQXR0cmlidXRlVmFsdWUoJ0FYQVJJQUxpdmUn
KSIsICJwb2xpdGUiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0T3JpZW50YXRpb24oKSB7
CisgICAgICAgIGRlYnVnKCJcbk9yaWVudGF0aW9uIHN1cHBvcnQiKTsKKyAgICAgICAgbm9kZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcmllbnRhdGlvbiIpOworICAgICAgICBheE5vZGUg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm9yaWVudGF0
aW9uIik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiYXhOb2RlLm9yaWVudGF0aW9u
IiwgIkFYT3JpZW50YXRpb246IEFYSG9yaXpvbnRhbE9yaWVudGF0aW9uIik7CisgICAgICAgIG5v
ZGUuYWNjZXNzaWJsZU5vZGUub3JpZW50YXRpb24gPSAidmVydGljYWwiOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIm5vZGUuYWNjZXNzaWJsZU5vZGUub3JpZW50YXRpb24iLCAidmVy
dGljYWwiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJheE5vZGUub3JpZW50YXRp
b24iLCAiQVhPcmllbnRhdGlvbjogQVhWZXJ0aWNhbE9yaWVudGF0aW9uIik7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gdGVzdFBsYWNlaG9sZGVyKCkgeworICAgICAgICBkZWJ1ZygiXG5QbGFjZWhv
bGRlciBzdXBwb3J0Iik7CisgICAgICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGxhY2Vob2xkZXIiKTsKKyAgICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJwbGFjZWhvbGRlciIpOworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhQbGFjZWhvbGRlclZh
bHVlJykiLCAiIik7CisgICAgICAgIG5vZGUuYWNjZXNzaWJsZU5vZGUucGxhY2Vob2xkZXIgPSAi
dGVzdCBwbGFjZWhvbGRlciI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibm9kZS5h
Y2Nlc3NpYmxlTm9kZS5wbGFjZWhvbGRlciIsICJ0ZXN0IHBsYWNlaG9sZGVyIik7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWFBs
YWNlaG9sZGVyVmFsdWUnKSIsICJ0ZXN0IHBsYWNlaG9sZGVyIik7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdFByZXNzZWQoKSB7CisgICAgICAgIGRlYnVnKCJcblByZXNzZWQgc3VwcG9ydCIp
OworICAgICAgICBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByZXNzZWQiKTsKKyAg
ICAgICAgYXhOb2RlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJwcmVzc2VkIik7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImF4Tm9kZS5ib29sQXR0cmli
dXRlVmFsdWUoJ0FYQVJJQVByZXNzZWRJc1ByZXNlbnQnKSIpOworICAgICAgICBub2RlLmFjY2Vz
c2libGVOb2RlLnByZXNzZWQgPSAidHJ1ZSI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygibm9kZS5hY2Nlc3NpYmxlTm9kZS5wcmVzc2VkIiwgInRydWUiKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJheE5vZGUuYm9vbEF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFQcmVzc2VkSXNQcmVzZW50
JykiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0UmVsZXZhbnQoKSB7CisgICAgICAgIGRl
YnVnKCJcblJlbGV2YW50IHN1cHBvcnQiKTsKKyAgICAgICAgbm9kZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZWxldmFudCIpOworICAgICAgICBheE5vZGUgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJlbGV2YW50Iik7CisgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWEFSSUFSZWxl
dmFudCcpIiwgImFkZGl0aW9ucyB0ZXh0Iik7CisgICAgICAgIG5vZGUuYWNjZXNzaWJsZU5vZGUu
cmVsZXZhbnQgPSAiYWRkaXRpb25zIjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJu
b2RlLmFjY2Vzc2libGVOb2RlLnJlbGV2YW50IiwgImFkZGl0aW9ucyIpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBUmVs
ZXZhbnQnKSIsICJhZGRpdGlvbnMiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0Um9sZURl
c2NyaXB0aW9uKCkgeworICAgICAgICBkZWJ1ZygiXG5Sb2xlRGVzY3JpcHRpb24gc3VwcG9ydCIp
OworICAgICAgICBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvbGVEZXNjcmlwdGlv
biIpOworICAgICAgICBheE5vZGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInJvbGVEZXNjcmlwdGlvbiIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImF4Tm9kZS5yb2xlRGVzY3JpcHRpb24iLCAiQVhSb2xlRGVzY3JpcHRpb246IGJ1dHRv
biIpOworICAgICAgICBub2RlLmFjY2Vzc2libGVOb2RlLnJvbGVEZXNjcmlwdGlvbiA9ICJ0ZXN0
IGJ1dHRvbiI7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibm9kZS5hY2Nlc3NpYmxl
Tm9kZS5yb2xlRGVzY3JpcHRpb24iLCAidGVzdCBidXR0b24iKTsKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJheE5vZGUucm9sZURlc2NyaXB0aW9uIiwgIkFYUm9sZURlc2NyaXB0aW9u
OiB0ZXN0IGJ1dHRvbiIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RTb3J0KCkgeworICAg
ICAgICBkZWJ1ZygiXG5Tb3J0IHN1cHBvcnQiKTsKKyAgICAgICAgbm9kZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzb3J0Iik7CisgICAgICAgIGF4Tm9kZSA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgic29ydCIpOworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImF4Tm9kZS5zdHJpbmdBdHRyaWJ1dGVWYWx1ZSgnQVhTb3J0RGlyZWN0aW9u
JykiLCAiQVhVbmtub3duU29ydERpcmVjdGlvbiIpOworICAgICAgICBub2RlLmFjY2Vzc2libGVO
b2RlLnNvcnQgPSAiYXNjZW5kaW5nIjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJu
b2RlLmFjY2Vzc2libGVOb2RlLnNvcnQiLCAiYXNjZW5kaW5nIik7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiYXhOb2RlLnN0cmluZ0F0dHJpYnV0ZVZhbHVlKCdBWFNvcnREaXJlY3Rp
b24nKSIsICJBWEFzY2VuZGluZ1NvcnREaXJlY3Rpb24iKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biB0ZXN0VmFsdWVUZXh0KCkgeworICAgICAgICBkZWJ1ZygiXG5WYWx1ZVRleHQgc3VwcG9ydCIp
OworICAgICAgICBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZhbHVlVGV4dCIpOwor
ICAgICAgICBheE5vZGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoInZhbHVlVGV4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImF4Tm9k
ZS52YWx1ZURlc2NyaXB0aW9uIiwgIkFYVmFsdWVEZXNjcmlwdGlvbjogIik7CisgICAgICAgIG5v
ZGUuYWNjZXNzaWJsZU5vZGUudmFsdWVUZXh0ID0gIkZpdmUiOworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIm5vZGUuYWNjZXNzaWJsZU5vZGUudmFsdWVUZXh0IiwgIkZpdmUiKTsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJheE5vZGUudmFsdWVEZXNjcmlwdGlvbiIsICJB
WFZhbHVlRGVzY3JpcHRpb246IEZpdmUiKTsKKyAgICB9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>