<?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>163113</bug_id>
          
          <creation_ts>2016-10-07 09:09:03 -0700</creation_ts>
          <short_desc>Support InputEvent.data for the new InputEvent spec</short_desc>
          <delta_ts>2016-10-10 13:28:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>163112</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1237603</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-07 09:09:03 -0700</bug_when>
    <thetext>See https://www.w3.org/TR/input-events/ and https://www.w3.org/TR/uievents/ for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237928</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-07 20:42:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/28681935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238035</commentid>
    <comment_count>2</comment_count>
      <attachid>291032</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-08 18:10:58 -0700</bug_when>
    <thetext>Created attachment 291032
Test patch (not for review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238169</commentid>
    <comment_count>3</comment_count>
      <attachid>291060</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-09 21:53:06 -0700</bug_when>
    <thetext>Created attachment 291060
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238234</commentid>
    <comment_count>4</comment_count>
      <attachid>291060</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 01:32:31 -0700</bug_when>
    <thetext>Comment on attachment 291060
First pass

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

&gt; Source/WebCore/dom/InputEvent.h:35
&gt;  struct InputEventInit : public UIEventInit {

No need for &quot;public&quot; here.

&gt; Source/WebCore/dom/InputEvent.h:42
&gt; +    static Ref&lt;InputEvent&gt; create(const AtomicString&amp; eventType, const String&amp; inputType, bool canBubble, bool cancelable, DOMWindow* view, String data = String(), int detail = 0)

Argument type should be const String&amp; or perhaps String&amp;&amp;. Default can be { } rather than String(). But also, I am not sure we want default argument values here.

&gt; Source/WebCore/dom/InputEvent.h:52
&gt; +    InputEvent(const AtomicString&amp; eventType, const String&amp; inputType, bool canBubble, bool cancelable, DOMWindow*, String data, int detail);

Argument type should be const String&amp; or perhaps String&amp;&amp;.

&gt; Source/WebCore/dom/InputEvent.h:59
&gt;      String inputType() const { return m_inputType; }

Return type should be const String&amp;.

&gt; Source/WebCore/dom/InputEvent.h:60
&gt; +    String data() const { return m_data; }

Return type should be const String&amp;.

&gt; Source/WebCore/dom/Node.h:528
&gt; +    virtual void dispatchInputEvent(const String&amp; inputType, String data = String());

This function should not be virtual. There are no overrides of it.

As with most functions that dispatch an event to an event target, this function should not be a member function. Instead it should go where it is being used, perhaps in Editor.cpp, and likely the argument type can be something like Element&amp; rather than Node&amp;.

The new argument to this function should be const String&amp; rather than String. Or possibly String&amp;&amp; depending on how it is used.

The default can be written { } rather than String(). That’s what we use in most new call sites like this one.

&gt; Source/WebCore/editing/CompositeEditCommand.h:118
&gt; +    virtual String inputEventData() const { return String(); }

Can use { } rather than String() to return a null string.

&gt; Source/WebCore/editing/EditCommand.cpp:148
&gt; +    if (auto* frame = m_document-&gt;frame())
&gt; +        return frame-&gt;selection().selection().isInTextAreaOrTextInput();
&gt; +
&gt; +    return false;

WebKit code calls for early return style, which means the error case is the return, not the main case. Or you could use &amp;&amp;:

    auto* frame = m_document-&gt;frame();
    return frame &amp;&amp; frame-&gt;selection().selection().isInTextAreaOrTextInput();

&gt; Source/WebCore/editing/Editor.cpp:114
&gt; +static bool dispatchBeforeInputEvent(Element&amp; element, const AtomicString&amp; inputType, String data = String())

The new argument to this function should be const String&amp; rather than String. Or possibly String&amp;&amp; depending on how it is used.

The default can be written { } rather than String(). That’s what we use in most new call sites like this one.

&gt; Source/WebCore/editing/Editor.cpp:1046
&gt; +static bool dispatchBeforeInputEvents(RefPtr&lt;Element&gt; startRoot, RefPtr&lt;Element&gt; endRoot, const AtomicString&amp; inputTypeName, String data = String())

The new argument to this function should be const String&amp; rather than String. Or possibly String&amp;&amp; depending on how it is used.

The default can be written { } rather than String(). That’s what we use in most new call sites like this one.

&gt; Source/WebCore/editing/Editor.cpp:1056
&gt; +static void dispatchInputEvents(RefPtr&lt;Element&gt; startRoot, RefPtr&lt;Element&gt; endRoot, const AtomicString&amp; inputTypeName, String data = String())

The new argument to this function should be const String&amp; rather than String. Or possibly String&amp;&amp; depending on how it is used.

The default can be written { } rather than String(). That’s what we use in most new call sites like this one.

&gt; Source/WebCore/editing/ReplaceRangeWithTextCommand.h:40
&gt; +    String inputEventData() const final;

I suggest making this override private rather than putting it in the public. I don’t think anyone needs to call this non-polymorphically.

&gt; Source/WebCore/editing/SpellingCorrectionCommand.h:41
&gt; +    String inputEventData() const final;

I suggest making this override private rather than putting it in the public. I don’t think anyone needs to call this non-polymorphically.

&gt; Source/WebCore/editing/VisibleSelection.cpp:671
&gt; +    Node* container = start().containerNode();

I suggest using auto* here. The type will be ContainerNode*, I think, not Node*, and that might even lead to slightly more efficient code.

&gt; Source/WebCore/editing/VisibleSelection.h:108
&gt; +    bool isInTextAreaOrTextInput() const;

Can we put all of this logic into TypingCommand::isEditingTextAreaOrTextInput() and local helper functions if needed? We can always move the function here if someone else needs it, but I’d suggest keeping this concept all in one place for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238385</commentid>
    <comment_count>5</comment_count>
      <attachid>291123</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-10 10:58:41 -0700</bug_when>
    <thetext>Created attachment 291123
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238410</commentid>
    <comment_count>6</comment_count>
      <attachid>291123</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 11:32:38 -0700</bug_when>
    <thetext>Comment on attachment 291123
Patch for landing

Clearing flags on attachment: 291123

Committed r207010: &lt;http://trac.webkit.org/changeset/207010&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238445</commentid>
    <comment_count>7</comment_count>
      <attachid>291123</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 12:21:06 -0700</bug_when>
    <thetext>Comment on attachment 291123
Patch for landing

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

&gt; Source/WebCore/html/HTMLFormControlElement.cpp:329
&gt; +    HTMLElement::dispatchInputEvent();

This is a peculiar line of code. It should just call dispatchInputEvent, not HTMLElement::dispatchInputEvent, which is a peculiar way to write the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238475</commentid>
    <comment_count>8</comment_count>
      <attachid>291123</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-10-10 13:05:25 -0700</bug_when>
    <thetext>Comment on attachment 291123
Patch for landing

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

&gt;&gt; Source/WebCore/html/HTMLFormControlElement.cpp:329
&gt;&gt; +    HTMLElement::dispatchInputEvent();
&gt; 
&gt; This is a peculiar line of code. It should just call dispatchInputEvent, not HTMLElement::dispatchInputEvent, which is a peculiar way to write the same thing.

Good catch. I will address this in a followup: https://bugs.webkit.org/show_bug.cgi?id=163236</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291032</attachid>
            <date>2016-10-08 18:10:58 -0700</date>
            <delta_ts>2016-10-09 21:53:04 -0700</delta_ts>
            <desc>Test patch (not for review)</desc>
            <filename>bug-163113-20161008180740.patch</filename>
            <type>text/plain</type>
            <size>83454</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUwMTY0NjZmNmY3ZmYw
YzMxOTk4N2VmMGY5NWNmNzlmODc5NDk0NS4uYTNjNWIxNDNiYTMzOGJiZjM1MGE5MzY3OTM1MzFl
YWFmY2NmODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxNi0xMC0wOSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IElu
cHV0RXZlbnQuZGF0YSBmb3IgdGhlIG5ldyBJbnB1dEV2ZW50IHNwZWMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzExMworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjg2ODE5MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW50cm9kdWNlcyBJbnB1dEV2ZW50LmRhdGEsIGEgc3RyaW5nIGF0dHJpYnV0
ZSB0aGF0LCBpZiBub24tbnVsbCwgaW5kaWNhdGVzIHRoZSB0ZXh0IHRvIGJlIGluc2VydGVkIGJ5
IGFuIGlucHV0CisgICAgICAgIGV2ZW50LiBGb3IgdGV4dCBhcmVhcyBhbmQgdGV4dCBpbnB1dHMs
IHRoZSAnaW5zZXJ0VGV4dCcsICdpbnNlcnRGcm9tUGFzdGUnLCAnaW5zZXJ0RnJvbURyb3AnLCBh
bmQKKyAgICAgICAgJ2luc2VydFJlcGxhY2VtZW50VGV4dCcgaW5wdXQgdHlwZXMgc2hvdWxkIGNh
dXNlIHN1YnNlcXVlbnQgYGlucHV0YCBhbmQgYGJlZm9yZWlucHV0YCBldmVudHMgdG8gaGF2ZSBu
b24tbnVsbAorICAgICAgICBkYXRhLiBIb3dldmVyLCBmb3IgY29udGVudGVkaXRhYmxlIGFyZWFz
LCBvbmx5ICdpbnNlcnRUZXh0JyBsZWFkcyB0byBoYXZpbmcgZGF0YSBpbiByZXN1bHRpbmcgSW5w
dXRFdmVudHMuCisKKyAgICAgICAgVG8gaW1wbGVtZW50IHRoaXMsIHdlIGludHJvZHVjZSBhIG5l
dyB2aXJ0dWFsIG1ldGhvZCwgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnREYXRhLCB3
aGljaCBnaXZlcworICAgICAgICBjb21wb3NpdGUgZWRpdGluZyBjb21tYW5kcyB0aGUgY2hhbmNl
IHRvIHZlbmQgYSBkYXRhIHN0cmluZyBmb3IgaW5wdXQgZXZlbnRzIHRoZXkgbWlnaHQgZmlyZSAo
YnkgZGVmYXVsdCwgdGhpcworICAgICAgICBpcyBudWxsKS4KKworICAgICAgICBUZXN0czogZmFz
dC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLWRhdGEuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9ldmVudHMvaW5wdXQtZXZlbnRzLXR5cGluZy1kYXRhLmh0bWwKKworICAgICAgICAqIGRvbS9J
bnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RXZlbnQ6OklucHV0RXZlbnQp
OgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50Lmg6CisgICAgICAgICogZG9tL0lucHV0RXZlbnQu
aWRsOgorCisgICAgICAgIEN1cnJlbnRseSwgb3VyIElucHV0RXZlbnRJbml0IHN0cnVjdCBpcyB3
cm9uZy4gQWNjb3JkaW5nIHRvIHRoZSBVSS1FdmVudHMgc3BlYyBhdCB3d3cudzMub3JnL1RSL3Vp
ZXZlbnRzLywgdGhlCisgICAgICAgIGluaXQgc3RydWN0IGZvciBhbiBJbnB1dEV2ZW50IHNob3Vs
ZCBjb250YWluIGEgZGF0YSBzdHJpbmcgKGFkZGVkIGluIHRoaXMgcGF0Y2gpIGFzIHdlbGwgYXMg
YW4gaXNDb21wb3NpbmcgZmxhZworICAgICAgICAodG8gYmUgYWRkZWQgaW4gYSBmdXR1cmUgcGF0
Y2ggYWxvbmcgd2l0aCBjb21wb3NpdGlvbiBzdXBwb3J0KS4gV2hpbGUgYWRkaW5nIHN1cHBvcnQg
Zm9yIHRoZSBkYXRhIGF0dHJpYnV0ZSwgd2UKKyAgICAgICAgdHdlYWsgdGhlIElucHV0RXZlbnQg
SURMIGFuZCBoZWFkZXJzIHNsaWdodGx5IHRvIGFkanVzdCBmb3IgdGhpcy4KKworICAgICAgICAq
IGRvbS9JbnB1dEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RXZlbnQ6OklucHV0
RXZlbnQpOgorICAgICAgICAqIGRvbS9JbnB1dEV2ZW50Lmg6CisgICAgICAgICogZG9tL0lucHV0
RXZlbnQuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmRpc3BhdGNoSW5wdXRFdmVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAg
KiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlRWRpdENvbW1hbmQ6OnNob3VsZFN0b3BDYXJldEJsaW5raW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRD
b21tYW5kOjppc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRp
c3BhdGNoQmVmb3JlSW5wdXRFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hJbnB1
dEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndpbGxBcHBseUVkaXRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OndpbGxVbmFwcGx5RWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuYXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3aWxsUmVh
cHBseUVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKToK
KyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRh
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oOgorICAg
ICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhKToKKyAgICAgICAg
KiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhKToKKyAgICAgICAgKiBlZGl0aW5nL1Nw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OlR5cGluZ0Nv
bW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNv
bW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dFJ1bldp
dGhvdXROZXdsaW5lcyk6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmg6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
c2libGVTZWxlY3Rpb246OmlzSW5UZXh0QXJlYU9yVGV4dElucHV0KToKKworICAgICAgICBJbnRy
b2R1Y2VzIGEgaGVscGVyIHVzZWQgYnkgY29tcG9zaXRlIGVkaXQgY29tbWFuZHMgdG8gZGV0ZXJt
aW5lIHdoZXRoZXIgd2UgYXJlIGVkaXRpbmcgYSB0ZXh0IGZpZWxkIG9yIHRleHQKKyAgICAgICAg
YXJlYS4gVXNlcyB0aGUgc3RhcnQgcG9zaXRpb24gaW4gY29tcHV0aW5nIHRoaXMuCisKKyAgICAg
ICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKworMjAxNi0xMC0wOCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IElucHV0RXZl
bnQuaW5wdXRUeXBlIGZvciB0aGUgbmV3IElucHV0RXZlbnQgc3BlYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDI1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yODY1ODA5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIHRoZSBpbnB1dFR5cGUgYXR0cmlidXRlIG9mIElu
cHV0RXZlbnQuIFRvIGRvIHRoaXMsIHdlIGludHJvZHVjZSBhIGhlbHBlciB0bworICAgICAgICBt
YXAgRWRpdEFjdGlvbnMgdG8gaW5wdXRUeXBlIG5hbWVzLCBhbmQgYWxzbyBzcGxpdCBvdXQgYW1i
aWd1b3VzIEVkaXRBY3Rpb25zIChzdWNoIGFzCisgICAgICAgIEVkaXRBY3Rpb25UeXBpbmcpIGlu
dG8gbW9yZSBzcGVjaWZpYyBzdWJ0eXBlcyAoc3VjaCBhcyBFZGl0QWN0aW9uVHlwaW5nRGVsZXRl
QmFja3dhcmQsCisgICAgICAgIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRQYXJhZ3JhcGgsIGV0Yy4p
LCBlYWNoIG9mIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGFuIGlucHV0VHlwZS4KKworICAgICAgICBJ
biBwbGFjZXMgd2hlcmUgd2UgY3JlYXRlIENvbXBvc2l0ZUVkaXRDb21tYW5kcywgd2Ugbm93IHBh
c3MgaW4gdGhlc2Ugc3BlY2lmaWMgRWRpdEFjdGlvbnMKKyAgICAgICAgd2hlcmUgYXBwcm9wcmlh
dGUsIGFuZCB3aGVuIGRpc3BhdGNoaW5nIGBiZWZvcmVpbnB1dGAgYW5kIGBpbnB1dGAgZXZlbnRz
LCB3ZSBhc2sgdGhlCisgICAgICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kIGZvciBpdHMgaW5wdXQg
dHlwZSBuYW1lLCB3aGljaCBpdCBkZXJpdmVzIGZyb20gaXRzIGVkaXRpbmdBY3Rpb24uCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWJpdS5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1jdXQuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtcGFzdGUuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtdHlwaW5n
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LXVu
ZG8uaHRtbAorCisgICAgICAgICogZG9tL0lucHV0RXZlbnQuaDoKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaElucHV0RXZlbnQpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnRUeXBlTmFt
ZSk6CisKKyAgICAgICAgQWxsb3dzIGEgQ29tcG9zaXRlRWRpdENvbW1hbmQgdG8gc3BlY2lmeSB0
aGUgaW5wdXRUeXBlIGl0cyBjb3JyZXNwb25kaW5nIGBiZWZvcmVpbnB1dGAgYW5kIGBpbnB1dGAg
ZXZlbnRzCisgICAgICAgIHNob3VsZCBoYXZlLgorCisgICAgICAgICogZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6
OnNob3VsZFN0b3BDYXJldEJsaW5raW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRBY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmlucHV0VHlwZU5hbWVGb3JFZGl0aW5nQWN0aW9uKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjp3aWxsQXBwbHlFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3aWxs
VW5hcHBseUVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmFwcGxpZWRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2lsbFJlYXBwbHlFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZSk6CisgICAgICAgICogZWRpdGlu
Zy9JbnNlcnRMaXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29t
bWFuZDo6ZWRpdGluZ0FjdGlvbik6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFu
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OnByZXNlcnZlc1R5cGlu
Z1N0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpc3RDb21tYW5kOjpl
ZGl0aW5nQWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VSYW5nZVdp
dGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlUmFuZ2VXaXRoVGV4
dENvbW1hbmQ6OlJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZCk6CisgICAgICAgICogZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQ6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQpOgorICAgICAg
ICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplZGl0QWN0
aW9uRm9yVHlwaW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpU
eXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmlucHV0RXZl
bnRUeXBlTmFtZSk6CisKKyAgICAgICAgVGhlIGVkaXRpbmdBY3Rpb24oKSBvZiBhIFR5cGluZ0Nv
bW1hbmQgaXMgdGhlIGZpcnN0IGVkaXRpbmcgYWN0aW9uIHRoZSBUeXBpbmdDb21tYW5kIHdhcyBp
bml0aWFsaXplZCB1c2luZy4KKyAgICAgICAgU2luY2Ugc3Vic2VxdWVudCB0eXBpbmcgY29tbWFu
ZHMgdXBkYXRlIHRoZSBsYXN0IG9wZW4gdHlwaW5nIGNvbW1hbmQsIHdlIG92ZXJyaWRlIGlucHV0
RXZlbnRUeXBlTmFtZSBoZXJlIHRvCisgICAgICAgIHVzZSB0aGUgbGFzdCB1cGRhdGVkIGVkaXRp
bmcgYWN0aW9uIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0IChpbml0aWFsKSBlZGl0aW5nIGFjdGlv
bi4KKworICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3Bl
bkNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dFJ1
bldpdGhvdXROZXdsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3IpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
OgorCiAyMDE2LTEwLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFN1cHBvcnQgb25iZWZvcmVpbnB1dCBldmVudCBoYW5kbGluZyBmb3IgdGhlIG5l
dyBJbnB1dEV2ZW50IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiZDlhMzFlODg4YThkYjNlYjM2
NjFkMzQ4YzBhNmViOTE0OTI1OGEzLi5hZDExODU2YjZiYjAyZDNiZDc3YzFlMjkwNDc5OWYwMTkz
ZDk3MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMTAtMDggIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBJ
bnB1dEV2ZW50LmlucHV0VHlwZSBmb3IgdGhlIG5ldyBJbnB1dEV2ZW50IHNwZWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzAyNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjg2NTgwOTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWNjb3VudHMgZm9yIHNvbWUgY2hhbmdlcyB0byB0aGUgRWRpdEFj
dGlvbiBlbnVtIGluIG5hbWVGb3JFZGl0QWN0aW9uLiBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cKKyAg
ICAgICAgZW50cnkgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKHVuZG9OYW1lRm9yRWRpdEFjdGlvbik6CisK
IDIwMTYtMTAtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dLMSBNYWNdIEZpeCByZXBhaW50cyBvZiBmaXhlZC1iYWNrZ3JvdW5kIGVsZW1lbnRz
IGluIGxheWVyLWJhY2tlZCBXZWJWaWV3cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDlkYzNhNjIyYTBh
ZTRmMjMzMTFjMGM4NzU5N2ZjZGJhOGU4MTMzOTIuLjZkOWQ5YTllZDBlYmMwMWU1NWNlOGZmOWJh
NWRlY2E4YTE1MTE2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0x
MC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBT
dXBwb3J0IElucHV0RXZlbnQuaW5wdXRUeXBlIGZvciB0aGUgbmV3IElucHV0RXZlbnQgc3BlYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDI1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODY1ODA5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHA6CisgICAgICAgICh1bmRvTmFtZUZvckVkaXRBY3Rpb24pOgorCiAyMDE2LTEwLTA0ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dW0RpcmVj
dDJEXSBDb25uZWN0IFdlYkNvcmUvV2ViS2l0IERyYXdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5YjBjMzFi
MjU5ZmU4NWYzZDUxNTc1YTI5OGJiYzFjOGUwMDdkNTkxLi5lODlhZTQyOTQ3NzMxZDllNmEyNTYy
YmVkYWNjMWZlNDYyM2JmMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAt
MDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgU3Vw
cG9ydCBJbnB1dEV2ZW50LmlucHV0VHlwZSBmb3IgdGhlIG5ldyBJbnB1dEV2ZW50IHNwZWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzAyNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjg2NTgwOTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjb3VudHMgZm9yIHNvbWUgY2hhbmdlcyB0byB0aGUg
RWRpdEFjdGlvbiBlbnVtIGluIG5hbWVGb3JFZGl0QWN0aW9uLiBTb21lIGZvcm1lciBlZGl0Cisg
ICAgICAgIGFjdGlvbnMsIHN1Y2ggYXMgRWRpdEFjdGlvblR5cGluZywgaGF2ZSBiZWVuIHNwbGl0
IG91dCBpbnRvIGl0cyBtb3JlIHNwZWNpZmljIHN1YnR5cGVzLAorICAgICAgICBzbyB3ZSBwcmVz
ZXJ2ZSBzaGlwcGluZyBiZWhhdmlvciBieSB0cmVhdGluZyBhbGwgb2YgdGhlIG5ldyBzdWJ0eXBl
cyB0aGUgc2FtZSB3YXkgYXMgdGhlCisgICAgICAgIG9yaWdpbmFsIHR5cGUuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRDb21tYW5kUHJveHk6Om5hbWVGb3JFZGl0QWN0aW9uKToKKwogMjAxNi0xMC0wNyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2Yg
QVBJOjpTZXNzaW9uIGFuZCBXS1Nlc3Npb25SZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbnB1dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcApp
bmRleCBlODdiMzFmYjA0OTBjZjFlOTM4MGM5ZmMzOTNkNmE3OWRlYzk3NjQxLi5kNDRmOGYwZGUy
ZjA3ODRiZjEzZmVmZmJjNzUyN2FiN2MzYWFlMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vSW5wdXRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQu
Y3BwCkBAIC0zNCwxNSArMzQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnB1dEV2
ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93
KiB2aWV3LCBpbnQgZGV0YWlsKQorSW5wdXRFdmVudDo6SW5wdXRFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgT3B0aW9uYWw8U3RyaW5nPiBkYXRh
LCBpbnQgZGV0YWlsKQogICAgIDogVUlFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2Vs
YWJsZSwgdmlldywgZGV0YWlsKQogICAgICwgbV9pbnB1dFR5cGUoaW5wdXRUeXBlKQorICAgICwg
bV9kYXRhKGRhdGEpCiB7CiB9CiAKIElucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IElucHV0RXZlbnRJbml0JiBpbml0aWFsaXplcikKICAg
ICA6IFVJRXZlbnQoZXZlbnRUeXBlLCBpbml0aWFsaXplcikKLSAgICAsIG1faW5wdXRUeXBlKGlu
aXRpYWxpemVyLmlucHV0VHlwZSkKKyAgICAsIG1faW5wdXRUeXBlKGVtcHR5U3RyaW5nKCkpCisg
ICAgLCBtX2RhdGEoaW5pdGlhbGl6ZXIuZGF0YSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50
LmgKaW5kZXggYTY1ZDMzMmFjNmI2MDNmZDBkOTIyNGU5ZTAxMDhhYmQyMDk0YjM4Zi4uZjQ2Njkz
MWY2OWM2NGFkMjg3YTk0YjhkM2E3YTYxYWJiNWI5ZmJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0lucHV0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVu
dC5oCkBAIC0zMywxNCArMzMsMTUgQEAgY2xhc3MgRE9NV2luZG93OwogY2xhc3MgRGF0YVRyYW5z
ZmVyOwogCiBzdHJ1Y3QgSW5wdXRFdmVudEluaXQgOiBwdWJsaWMgVUlFdmVudEluaXQgewotICAg
IFN0cmluZyBpbnB1dFR5cGU7CisgICAgU3RyaW5nIGRhdGE7CisgICAgYm9vbCBpc0NvbXBvc2lu
ZzsKIH07CiAKIGNsYXNzIElucHV0RXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9v
bCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBkZXRhaWwpCisgICAgc3RhdGljIFJl
ZjxJbnB1dEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0
IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01X
aW5kb3cqIHZpZXcsIE9wdGlvbmFsPFN0cmluZz4gZGF0YSA9IE51bGxvcHQsIGludCBkZXRhaWwg
PSAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVu
dFR5cGUsIGlucHV0VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5wdXRFdmVudChldmVudFR5cGUsIGlucHV0
VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkYXRhLCBkZXRhaWwpKTsKICAgICB9
CiAKICAgICBzdGF0aWMgUmVmPElucHV0RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5wdXRFdmVudEluaXQmIGluaXRpYWxpemVyKQpAQCAt
NDgsMTcgKzQ5LDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5w
dXRFdmVudCh0eXBlLCBpbml0aWFsaXplcikpOwogICAgIH0KIAotICAgIElucHV0RXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqLCBpbnQgZGV0YWlsKTsKKyAg
ICBJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93Kiwg
T3B0aW9uYWw8U3RyaW5nPiBkYXRhLCBpbnQgZGV0YWlsKTsKICAgICBJbnB1dEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBJbnB1dEV2ZW50SW5pdCYpOwogCiAgICAg
dmlydHVhbCB+SW5wdXRFdmVudCgpIHsgfQogCiAgICAgYm9vbCBpc0lucHV0RXZlbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRl
cmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbnB1dEV2ZW50SW50ZXJmYWNlVHlwZTsgfQot
ICAgIFN0cmluZyBpbnB1dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2lucHV0VHlwZS5zdHJpbmco
KTsgfQorICAgIFN0cmluZyBpbnB1dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2lucHV0VHlwZTsg
fQorICAgIFN0cmluZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhID8gbV9kYXRhLnZhbHVl
ICgpIDogU3RyaW5nKCk7IH0KIAogcHJpdmF0ZToKLSAgICBBdG9taWNTdHJpbmcgbV9pbnB1dFR5
cGU7CisgICAgU3RyaW5nIG1faW5wdXRUeXBlOworICAgIE9wdGlvbmFsPFN0cmluZz4gbV9kYXRh
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0lucHV0RXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaWRs
CmluZGV4IGE0MjJiOTdlZGMxNDRhMmUxYjc1ZjM3OTEyN2ExZjY4ODkzNDhiM2MuLmI0YTA2NGQx
NDAxZTcwNjMzNWJjYThlYThlODMxYTcxZTRmODg2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbnB1dEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVu
dC5pZGwKQEAgLTI2LDUgKzI2LDYgQEAKIFsKICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50
CiBdIGludGVyZmFjZSBJbnB1dEV2ZW50IDogVUlFdmVudCB7Ci0gICAgW0luaXRpYWxpemVkQnlF
dmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlucHV0VHlwZTsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlucHV0VHlwZTsKKyAgICBbSW5pdGlh
bGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmc/IGRh
dGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDI0YzQwOTE3YjlhODYxZWJmMmNhMmVhYmYzZjQ5
ZjdlZWVkN2Y5ZGQuLmYzOTA2YWU2NDU4OWM2NzIwMDE4YmJmMGI0NThiNmNmNzZlMmNkYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTIyMDIsMTEgKzIyMDIsMTEgQEAgYm9vbCBOb2RlOjpkaXNwYXRj
aEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKICAgICByZXR1cm4gIWJl
Zm9yZUxvYWRFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQogCi12b2lkIE5vZGU6OmRpc3Bh
dGNoSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZSkKK3ZvaWQgTm9kZTo6
ZGlzcGF0Y2hJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBPcHRpb25hbDxTdHJp
bmc+IGRhdGEpCiB7CiAgICAgYXV0byogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7
CiAgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5pbnB1dEV2ZW50c0VuYWJsZWQoKSkKLSAg
ICAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChJbnB1dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVsdFZp
ZXcoKSwgMCkpOworICAgICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KElucHV0RXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVlLCBmYWxzZSwgZG9jdW1l
bnQoKS5kZWZhdWx0VmlldygpLCBkYXRhKSk7CiAgICAgZWxzZQogICAgICAgICBkaXNwYXRjaFNj
b3BlZEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlucHV0RXZlbnQsIHRydWUsIGZh
bHNlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5NjY0ZGY3NzE1MmIzYTBhYzk1NThkZWVjMTY2ZTlj
ODc3NjE2ZWM3Li42NDZmNjM5ZDY2NzJjZjRiMGZjMjdmZWI0YzhmYmFiY2UxZDIxNzgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTUyNSw3ICs1MjUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpc3BhdGNo
QmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFR5cGUpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBpbnB1dFR5
cGUsIE9wdGlvbmFsPFN0cmluZz4gZGF0YSA9IE51bGxvcHQpOwogCiAgICAgLy8gUGVyZm9ybSB0
aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGFuIGV2ZW50LgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDYxZmExZjZkOWFlODUzMDU5YjY4MDc2M2VkOTg3NWI4
NWE4MmFhZDguLmZjMDg1MGYxM2EwYzliZjg4ZGM5YmI2ZjBiMjQ5NTBmODc5MTZlMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0z
MjYsMTMgKzMyNiwyMyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseSgpCiB7CiAg
ICAgaWYgKCFlbmRpbmdTZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7CiAg
ICAgICAgIHN3aXRjaCAoZWRpdGluZ0FjdGlvbigpKSB7Ci0gICAgICAgIGNhc2UgRWRpdEFjdGlv
blR5cGluZzoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlU2VsZWN0aW9uOgor
ICAgICAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVCYWNrd2FyZDoKKyAgICAgICAgY2Fz
ZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlRm9yd2FyZDoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9u
VHlwaW5nRGVsZXRlV29yZEJhY2t3YXJkOgorICAgICAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdE
ZWxldGVXb3JkRm9yd2FyZDoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlTGlu
ZUJhY2t3YXJkOgorICAgICAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVMaW5lRm9yd2Fy
ZDoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0VGV4dDoKKyAgICAgICAgY2Fz
ZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0TGluZUJyZWFrOgorICAgICAgICBjYXNlIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRQYXJhZ3JhcGg6CiAgICAgICAgIGNhc2UgRWRpdEFjdGlvblBhc3RlOgog
ICAgICAgICBjYXNlIEVkaXRBY3Rpb25EcmFnOgogICAgICAgICBjYXNlIEVkaXRBY3Rpb25TZXRX
cml0aW5nRGlyZWN0aW9uOgogICAgICAgICBjYXNlIEVkaXRBY3Rpb25DdXQ6CiAgICAgICAgIGNh
c2UgRWRpdEFjdGlvblVuc3BlY2lmaWVkOgogICAgICAgICBjYXNlIEVkaXRBY3Rpb25JbnNlcnQ6
CisgICAgICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50OgogICAgICAgICBjYXNl
IEVkaXRBY3Rpb25EZWxldGU6CiAgICAgICAgIGNhc2UgRWRpdEFjdGlvbkRpY3RhdGlvbjoKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzk5LDYgKzQwOSwxMSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpzZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcihib29sKQogewog
fQogCitTdHJpbmcgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnRUeXBlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGlucHV0VHlwZU5hbWVGb3JFZGl0aW5nQWN0aW9uKGVkaXRpbmdB
Y3Rpb24oKSk7Cit9CisKIC8vCiAvLyBzdWdhcnktc3dlZXQgY29udmVuaWVuY2UgZnVuY3Rpb25z
IHRvIGhlbHAgY3JlYXRlIGFuZCBhcHBseSBlZGl0IGNvbW1hbmRzIGluIGNvbXBvc2l0ZSBjb21t
YW5kcwogLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
aAppbmRleCAxNDdkMjc0MWE1NWVhODZkM2FlNDVkMzRiNWVhNGZhNWMwMzNmMWE4Li5iN2UyOWQ4
NTNiMDQ4YTQ3NTU1ZjJiYWNiN2NkOWYxNjg0ZDBjMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC0xMTQsNiArMTE0LDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRv
cihib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcENhcmV0QmxpbmtpbmcoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBTdHJpbmcgaW5wdXRFdmVudFR5cGVO
YW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IGlucHV0RXZlbnREYXRh
KCkgY29uc3QgeyByZXR1cm4gTnVsbG9wdDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
Q29tcG9zaXRlRWRpdENvbW1hbmQoRG9jdW1lbnQmLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVu
c3BlY2lmaWVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaAppbmRleCA2ZWYzNTA2
NDEyOGUwOGQ1ZTc3OGI2YzBiNmY5YTk0NWU4ZDQ1YWNiLi5iYTNjYzU0MjBlZWQxMTg1MWY2Yzdl
OWY4YTEzNjhhMWE2ODM0ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRBY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaApAQCAt
MzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdHlwZWRlZiBlbnVtIHsKICAg
ICAgICAgRWRpdEFjdGlvblVuc3BlY2lmaWVkLAogICAgICAgICBFZGl0QWN0aW9uSW5zZXJ0LAor
ICAgICAgICBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQsCiAgICAgICAgIEVkaXRBY3Rpb25T
ZXRDb2xvciwKICAgICAgICAgRWRpdEFjdGlvblNldEJhY2tncm91bmRDb2xvciwKICAgICAgICAg
RWRpdEFjdGlvblR1cm5PZmZLZXJuaW5nLApAQCAtNjMsMTEgKzY0LDIxIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgRWRpdEFjdGlvblBhc3RlLAogICAgICAgICBFZGl0QWN0aW9uUGFz
dGVGb250LAogICAgICAgICBFZGl0QWN0aW9uUGFzdGVSdWxlciwKLSAgICAgICAgRWRpdEFjdGlv
blR5cGluZywKKyAgICAgICAgRWRpdEFjdGlvblR5cGluZ0RlbGV0ZVNlbGVjdGlvbiwKKyAgICAg
ICAgRWRpdEFjdGlvblR5cGluZ0RlbGV0ZUJhY2t3YXJkLAorICAgICAgICBFZGl0QWN0aW9uVHlw
aW5nRGVsZXRlRm9yd2FyZCwKKyAgICAgICAgRWRpdEFjdGlvblR5cGluZ0RlbGV0ZVdvcmRCYWNr
d2FyZCwKKyAgICAgICAgRWRpdEFjdGlvblR5cGluZ0RlbGV0ZVdvcmRGb3J3YXJkLAorICAgICAg
ICBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlTGluZUJhY2t3YXJkLAorICAgICAgICBFZGl0QWN0aW9u
VHlwaW5nRGVsZXRlTGluZUZvcndhcmQsCisgICAgICAgIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRU
ZXh0LAorICAgICAgICBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0TGluZUJyZWFrLAorICAgICAgICBF
ZGl0QWN0aW9uVHlwaW5nSW5zZXJ0UGFyYWdyYXBoLAogICAgICAgICBFZGl0QWN0aW9uQ3JlYXRl
TGluaywKICAgICAgICAgRWRpdEFjdGlvblVubGluaywKICAgICAgICAgRWRpdEFjdGlvbkZvcm1h
dEJsb2NrLAotICAgICAgICBFZGl0QWN0aW9uSW5zZXJ0TGlzdCwKKyAgICAgICAgRWRpdEFjdGlv
bkluc2VydE9yZGVyZWRMaXN0LAorICAgICAgICBFZGl0QWN0aW9uSW5zZXJ0VW5vcmRlcmVkTGlz
dCwKICAgICAgICAgRWRpdEFjdGlvbkluZGVudCwKICAgICAgICAgRWRpdEFjdGlvbk91dGRlbnQK
ICAgICB9IEVkaXRBY3Rpb247ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNw
cAppbmRleCA1NDUzODhmZjk4ZjdiMzBmNDRkMzVjMWYxN2I2NmM3ZDgyZDQxNzk0Li44NDA5MDJm
ZmQxMzNhNTAwZmU3NmYwMjQ4YmVmZTZjODdlODY2Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRDb21tYW5kLmNwcApAQCAtMzgsNiArMzgsNjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitTdHJpbmcgaW5wdXRUeXBlTmFtZUZvckVkaXRpbmdBY3Rpb24oRWRpdEFjdGlvbiBhY3Rp
b24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNlIEVkaXRBY3Rpb25KdXN0aWZ5
OgorICAgIGNhc2UgRWRpdEFjdGlvbkFsaWduTGVmdDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiZm9ybWF0SnVzdGlmeUxlZnQiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25BbGlnblJpZ2h0
OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmb3JtYXRKdXN0aWZ5UmlnaHQiKTsKKyAg
ICBjYXNlIEVkaXRBY3Rpb25DZW50ZXI6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZv
cm1hdEp1c3RpZnlDZW50ZXIiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25TdWJzY3JpcHQ6CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImZvcm1hdFN1YnNjcmlwdCIpOworICAgIGNhc2UgRWRp
dEFjdGlvblN1cGVyc2NyaXB0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmb3JtYXRT
dXBlcnNjcmlwdCIpOworICAgIGNhc2UgRWRpdEFjdGlvblVuZGVybGluZToKKyAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0VW5kZXJsaW5lIik7CisgICAgY2FzZSBFZGl0QWN0aW9u
RHJhZzoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGVsZXRlQnlEcmFnIik7CisgICAg
Y2FzZSBFZGl0QWN0aW9uQ3V0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkZWxldGVC
eUN1dCIpOworICAgIGNhc2UgRWRpdEFjdGlvbkJvbGQ6CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoImZvcm1hdEJvbGQiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25JdGFsaWNzOgorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmb3JtYXRJdGFsaWMiKTsKKyAgICBjYXNlIEVkaXRBY3Rp
b25QYXN0ZToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW5zZXJ0RnJvbVBhc3RlIik7
CisgICAgY2FzZSBFZGl0QWN0aW9uRGVsZXRlOgorICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0Rl
bGV0ZVNlbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGVsZXRlQ29udGVu
dCIpOworICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0RlbGV0ZUJhY2t3YXJkOgorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJkZWxldGVDb250ZW50QmFja3dhcmQiKTsKKyAgICBjYXNlIEVk
aXRBY3Rpb25UeXBpbmdEZWxldGVGb3J3YXJkOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJkZWxldGVDb250ZW50Rm9yd2FyZCIpOworICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0RlbGV0
ZVdvcmRCYWNrd2FyZDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGVsZXRlV29yZEJh
Y2t3YXJkIik7CisgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlV29yZEZvcndhcmQ6Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImRlbGV0ZVdvcmRGb3J3YXJkIik7CisgICAgY2Fz
ZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlTGluZUJhY2t3YXJkOgorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJkZWxldGVIYXJkTGluZUJhY2t3YXJkIik7CisgICAgY2FzZSBFZGl0QWN0aW9u
VHlwaW5nRGVsZXRlTGluZUZvcndhcmQ6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImRl
bGV0ZUhhcmRMaW5lRm9yd2FyZCIpOworICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydDoKKyAgICBj
YXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRUZXh0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJpbnNlcnRUZXh0Iik7CisgICAgY2FzZSBFZGl0QWN0aW9uSW5zZXJ0UmVwbGFjZW1lbnQ6
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImluc2VydFJlcGxhY2VtZW50VGV4dCIpOwor
ICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydExpbmVCcmVhazoKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiaW5zZXJ0TGluZUJyZWFrIik7CisgICAgY2FzZSBFZGl0QWN0aW9uVHlw
aW5nSW5zZXJ0UGFyYWdyYXBoOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJpbnNlcnRQ
YXJhZ3JhcGgiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25JbnNlcnRPcmRlcmVkTGlzdDoKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW5zZXJ0T3JkZXJlZExpc3QiKTsKKyAgICBjYXNlIEVk
aXRBY3Rpb25JbnNlcnRVbm9yZGVyZWRMaXN0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJpbnNlcnRVbm9yZGVyZWRMaXN0Iik7CisgICAgY2FzZSBFZGl0QWN0aW9uSW5kZW50OgorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmb3JtYXRJbmRlbnQiKTsKKyAgICBjYXNlIEVkaXRB
Y3Rpb25PdXRkZW50OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmb3JtYXRPdXRkZW50
Iik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgfQor
fQorCiBFZGl0Q29tbWFuZDo6RWRpdENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24pCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9l
ZGl0aW5nQWN0aW9uKGVkaXRpbmdBY3Rpb24pCkBAIC03Nyw2ICsxNDAsMTQgQEAgc3RhdGljIGlu
bGluZSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uKiBjb21wb3NpdGlvbklmUG9zc2libGUoRWRpdENv
bW1hbmQqIGNvbW1hbmQKICAgICByZXR1cm4gdG9Db21wb3NpdGVFZGl0Q29tbWFuZChjb21tYW5k
KS0+Y29tcG9zaXRpb24oKTsKIH0KIAorYm9vbCBFZGl0Q29tbWFuZDo6aXNFZGl0aW5nVGV4dEFy
ZWFPclRleHRJbnB1dCgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9kb2N1bWVu
dC0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5pc0luVGV4dEFyZWFPclRleHRJbnB1dCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2
b2lkIEVkaXRDb21tYW5kOjpzZXRTdGFydGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzKQogewogICAgIGZvciAoRWRpdENvbW1hbmQqIGNtZCA9IHRoaXM7IDsgY21kID0gY21k
LT5tX3BhcmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29t
bWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCmluZGV4IGQxNjU3
ZjMwMTczZmI2OTM3ZDM1NDU5ZTg3ZWMzODk1YzQxNDk5NDQuLjAxYTMxYTczZDlhMTkxNjhjOGY5
MjEwZmIzNzQ1NTBkYzY0OTEyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgK
QEAgLTQxLDEzICs0MSwxNSBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKIAorU3RyaW5nIGlucHV0VHlwZU5hbWVGb3JFZGl0aW5nQWN0aW9uKEVkaXRBY3Rp
b24pOworCiBjbGFzcyBFZGl0Q29tbWFuZCA6IHB1YmxpYyBSZWZDb3VudGVkPEVkaXRDb21tYW5k
PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RWRpdENvbW1hbmQoKTsKIAogICAgIHZvaWQgc2V0
UGFyZW50KENvbXBvc2l0ZUVkaXRDb21tYW5kKik7CiAKLSAgICBFZGl0QWN0aW9uIGVkaXRpbmdB
Y3Rpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNv
bnN0OwogCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0aW5nU2VsZWN0aW9uOyB9CiAgICAgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRpbmdTZWxlY3Rp
b247IH0KQEAgLTcwLDYgKzcyLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0U3RhcnRpbmdT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKIAorICAgIGJv
b2wgaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpIGNvbnN0OworCiAgICAgdm9pZCBwb3N0
VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oQVhUZXh0RWRpdFR5
cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggMDMxMDBmODBjZWY0MTg1Mjc5ZDNjYjE1MGY2MTFkNzBlYzAw
OTE4ZC4uZWVkODE1ZmM4ZTMwYzA5MTM1NDExZDY3MTg2MWM0MTFlOTM4ZTVmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTExLDEzICsxMTEsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgYm9vbCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFR5cGUpCitzdGF0aWMgYm9vbCBkaXNw
YXRjaEJlZm9yZUlucHV0RXZlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnB1dFR5cGUsIE9wdGlvbmFsPFN0cmluZz4gZGF0YSkKIHsKICAgICBhdXRvKiBzZXR0aW5n
cyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpOwogICAgIGlmICghc2V0dGluZ3MgfHwg
IXNldHRpbmdzLT5pbnB1dEV2ZW50c0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBhdXRvIGV2ZW50ID0gSW5wdXRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5iZWZvcmVp
bnB1dEV2ZW50LCBpbnB1dFR5cGUsIHRydWUsIHRydWUsIGVsZW1lbnQuZG9jdW1lbnQoKS5kZWZh
dWx0VmlldygpLCAwKTsKKyAgICBhdXRvIGV2ZW50ID0gSW5wdXRFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5iZWZvcmVpbnB1dEV2ZW50LCBpbnB1dFR5cGUsIHRydWUsIHRydWUsIGVsZW1lbnQu
ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBkYXRhKTsKICAgICBlbGVtZW50LmRpc3BhdGNoU2Nv
cGVkRXZlbnQoZXZlbnQpOwogCiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgp
OwpAQCAtMTAzOSwyMiArMTAzOSwyMiBAQCBzdGF0aWMgdm9pZCBub3RpZnlUZXh0RnJvbUNvbnRy
b2xzKEVsZW1lbnQqIHN0YXJ0Um9vdCwgRWxlbWVudCogZW5kUm9vdCkKICAgICAgICAgZW5kaW5n
VGV4dENvbnRyb2wtPmRpZEVkaXRJbm5lclRleHRWYWx1ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBk
aXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKFJlZlB0cjxFbGVtZW50PiBzdGFydFJvb3QsIFJlZlB0
cjxFbGVtZW50PiBlbmRSb290LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZU5hbWUpCitz
dGF0aWMgYm9vbCBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKFJlZlB0cjxFbGVtZW50PiBzdGFy
dFJvb3QsIFJlZlB0cjxFbGVtZW50PiBlbmRSb290LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0
VHlwZU5hbWUsIE9wdGlvbmFsPFN0cmluZz4gZGF0YSkKIHsKICAgICBib29sIGNvbnRpbnVlV2l0
aERlZmF1bHRCZWhhdmlvciA9IHRydWU7CiAgICAgaWYgKHN0YXJ0Um9vdCkKLSAgICAgICAgY29u
dGludWVXaXRoRGVmYXVsdEJlaGF2aW9yICY9IGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCgqc3Rh
cnRSb290LCBpbnB1dFR5cGVOYW1lKTsKKyAgICAgICAgY29udGludWVXaXRoRGVmYXVsdEJlaGF2
aW9yICY9IGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCgqc3RhcnRSb290LCBpbnB1dFR5cGVOYW1l
LCBkYXRhKTsKICAgICBpZiAoZW5kUm9vdCAmJiBlbmRSb290ICE9IHN0YXJ0Um9vdCkKLSAgICAg
ICAgY29udGludWVXaXRoRGVmYXVsdEJlaGF2aW9yICY9IGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVu
dCgqZW5kUm9vdCwgaW5wdXRUeXBlTmFtZSk7CisgICAgICAgIGNvbnRpbnVlV2l0aERlZmF1bHRC
ZWhhdmlvciAmPSBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoKmVuZFJvb3QsIGlucHV0VHlwZU5h
bWUsIGRhdGEpOwogICAgIHJldHVybiBjb250aW51ZVdpdGhEZWZhdWx0QmVoYXZpb3I7CiB9CiAK
LXN0YXRpYyB2b2lkIGRpc3BhdGNoSW5wdXRFdmVudHMoUmVmUHRyPEVsZW1lbnQ+IHN0YXJ0Um9v
dCwgUmVmUHRyPEVsZW1lbnQ+IGVuZFJvb3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBl
TmFtZSkKK3N0YXRpYyB2b2lkIGRpc3BhdGNoSW5wdXRFdmVudHMoUmVmUHRyPEVsZW1lbnQ+IHN0
YXJ0Um9vdCwgUmVmUHRyPEVsZW1lbnQ+IGVuZFJvb3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5w
dXRUeXBlTmFtZSwgT3B0aW9uYWw8U3RyaW5nPiBkYXRhKQogewogICAgIGlmIChzdGFydFJvb3Qp
Ci0gICAgICAgIHN0YXJ0Um9vdC0+ZGlzcGF0Y2hJbnB1dEV2ZW50KGlucHV0VHlwZU5hbWUpOwor
ICAgICAgICBzdGFydFJvb3QtPmRpc3BhdGNoSW5wdXRFdmVudChpbnB1dFR5cGVOYW1lLCBkYXRh
KTsKICAgICBpZiAoZW5kUm9vdCAmJiBlbmRSb290ICE9IHN0YXJ0Um9vdCkKLSAgICAgICAgZW5k
Um9vdC0+ZGlzcGF0Y2hJbnB1dEV2ZW50KGlucHV0VHlwZU5hbWUpOworICAgICAgICBlbmRSb290
LT5kaXNwYXRjaElucHV0RXZlbnQoaW5wdXRUeXBlTmFtZSwgZGF0YSk7CiB9CiAKIGJvb2wgRWRp
dG9yOjp3aWxsQXBwbHlFZGl0aW5nKENvbXBvc2l0ZUVkaXRDb21tYW5kJiBjb21tYW5kKSBjb25z
dApAQCAtMTA2Myw3ICsxMDYzLDcgQEAgYm9vbCBFZGl0b3I6OndpbGxBcHBseUVkaXRpbmcoQ29t
cG9zaXRlRWRpdENvbW1hbmQmIGNvbW1hbmQpIGNvbnN0CiAgICAgaWYgKCFjb21wb3NpdGlvbikK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2
ZW50cyhjb21wb3NpdGlvbi0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0
aW9uLT5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGVtcHR5U3RyaW5nKCkpOworICAgIHJl
dHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLT5zdGFydGluZ1Jvb3RF
ZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24tPmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQo
KSwgY29tbWFuZC5pbnB1dEV2ZW50VHlwZU5hbWUoKSwgY29tbWFuZC5pbnB1dEV2ZW50RGF0YSgp
KTsKIH0KIAogdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8Q29tcG9zaXRl
RWRpdENvbW1hbmQ+IGNtZCkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHZvaWQgRWRpdG9yOjphcHBs
aWVkRWRpdGluZyhQYXNzUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5kPiBjbWQpCiAgICAgRnJh
bWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucyA9IGNtZC0+aXNEaWN0YXRp
b25Db21tYW5kKCkgPyBGcmFtZVNlbGVjdGlvbjo6RGljdGF0aW9uVHJpZ2dlcmVkIDogMDsKICAg
ICAKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBvcHRpb25z
KTsKLSAgICBkaXNwYXRjaElucHV0RXZlbnRzKGNvbXBvc2l0aW9uLT5zdGFydGluZ1Jvb3RFZGl0
YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24tPmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwg
ZW1wdHlTdHJpbmcoKSk7CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi0+c3Rh
cnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLT5lbmRpbmdSb290RWRpdGFi
bGVFbGVtZW50KCksIGNtZC0+aW5wdXRFdmVudFR5cGVOYW1lKCksIGNtZC0+aW5wdXRFdmVudERh
dGEoKSk7CiAKICAgICB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAgICAgCkBAIC0x
MTA3LDcgKzExMDcsNyBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxD
b21wb3NpdGVFZGl0Q29tbWFuZD4gY21kKQogCiBib29sIEVkaXRvcjo6d2lsbFVuYXBwbHlFZGl0
aW5nKGNvbnN0IEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewot
ICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5n
Um9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVt
ZW50KCksIGVtcHR5U3RyaW5nKCkpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyIsIE51bGxvcHQpOwog
fQogCiB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEVkaXRDb21tYW5k
Q29tcG9zaXRpb24+IGNtZCkKQEAgLTExMTgsNyArMTExOCw3IEBAIHZvaWQgRWRpdG9yOjp1bmFw
cGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4gY21kKQogCiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY21kLT5zdGFydGluZ1NlbGVjdGlvbigp
KTsKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNl
bGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSk7Ci0gICAgZGlzcGF0Y2hJbnB1
dEV2ZW50cyhjbWQtPnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjbWQtPmVuZGluZ1Jv
b3RFZGl0YWJsZUVsZW1lbnQoKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgZGlzcGF0Y2hJbnB1dEV2
ZW50cyhjbWQtPnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjbWQtPmVuZGluZ1Jvb3RF
ZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlVbmRvIiwgTnVsbG9wdCk7CiAKICAgICB1cGRhdGVF
ZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTExMzIsNyArMTEzMiw3IEBAIHZvaWQgRWRp
dG9yOjp1bmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4g
Y21kKQogCiBib29sIEVkaXRvcjo6d2lsbFJlYXBwbHlFZGl0aW5nKGNvbnN0IEVkaXRDb21tYW5k
Q29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVybiBkaXNwYXRjaEJl
Zm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgp
LCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGVtcHR5U3RyaW5nKCkp
OworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0
aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVF
bGVtZW50KCksICJoaXN0b3J5UmVkbyIsIE51bGxvcHQpOwogfQogCiB2b2lkIEVkaXRvcjo6cmVh
cHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kQ29tcG9zaXRpb24+IGNtZCkKQEAg
LTExNDMsNyArMTE0Myw3IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQ
dHI8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4gY21kKQogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBu
ZXdTZWxlY3Rpb24oY21kLT5lbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9u
QWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxl
Y3Rpb25PcHRpb25zKCkpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY21kLT5zdGFydGluZ1Jv
b3RFZGl0YWJsZUVsZW1lbnQoKSwgY21kLT5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGVt
cHR5U3RyaW5nKCkpOworICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY21kLT5zdGFydGluZ1Jvb3RF
ZGl0YWJsZUVsZW1lbnQoKSwgY21kLT5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0
b3J5UmVkbyIsIE51bGxvcHQpOwogICAgIAogICAgIHVwZGF0ZUVkaXRvclVJTm93SWZTY2hlZHVs
ZWQoKTsKIApAQCAtMzA5Myw4ICszMDkzLDkgQEAgdm9pZCBFZGl0b3I6OmNvbXB1dGVBbmRTZXRU
eXBpbmdTdHlsZShFZGl0aW5nU3R5bGUmIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3QKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFN0cmluZyBpbnB1dFR5cGVOYW1lID0gaW5wdXRU
eXBlTmFtZUZvckVkaXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbik7CiAgICAgYXV0byogZWxlbWVu
dCA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgp
OwotICAgIGlmIChlbGVtZW50ICYmICFkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQoKmVsZW1lbnQs
IGVtcHR5U3RyaW5nKCkpKQorICAgIGlmIChlbGVtZW50ICYmICFkaXNwYXRjaEJlZm9yZUlucHV0
RXZlbnQoKmVsZW1lbnQsIGlucHV0VHlwZU5hbWUsIE51bGxvcHQpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgdHlwaW5nIHN0eWxlLgpAQCAtMzExMSw3
ICszMTEyLDcgQEAgdm9pZCBFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShFZGl0aW5n
U3R5bGUmIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3QKICAgICAgICAgYXBwbHlDb21tYW5k
KEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgYmxvY2tTdHlsZS5nZXQoKSwg
ZWRpdGluZ0FjdGlvbikpOwogCiAgICAgaWYgKGVsZW1lbnQpCi0gICAgICAgIGVsZW1lbnQtPmRp
c3BhdGNoSW5wdXRFdmVudChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgZWxlbWVudC0+ZGlzcGF0
Y2hJbnB1dEV2ZW50KGlucHV0VHlwZU5hbWUpOwogCiAgICAgLy8gU2V0IHRoZSByZW1haW5pbmcg
c3R5bGUgYXMgdGhlIHR5cGluZyBzdHlsZS4KICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFR5
cGluZ1N0eWxlKHR5cGluZ1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aXN0Q29tbWFuZC5jcHAKaW5kZXggNjQxZWEwMWVhZjBkNWVmMjYwZTI5ZGVjZTljMzBlNmJjNDYw
ODRmYy4uMDYwY2E4YmFjNGY0ZjYzMWQ3MDc0YjRkMTcxMTc0MTllMTQxYzYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKQEAgLTE5Myw2ICsxOTMs
MTEgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgZG9BcHBseUZvclNp
bmdsZVBhcmFncmFwaChmYWxzZSwgbGlzdFRhZywgZW5kaW5nU2VsZWN0aW9uKCkuZmlyc3RSYW5n
ZSgpLmdldCgpKTsKIH0KIAorRWRpdEFjdGlvbiBJbnNlcnRMaXN0Q29tbWFuZDo6ZWRpdGluZ0Fj
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBPcmRlcmVkTGlzdCA/IEVkaXRB
Y3Rpb25JbnNlcnRPcmRlcmVkTGlzdCA6IEVkaXRBY3Rpb25JbnNlcnRVbm9yZGVyZWRMaXN0Owor
fQorCiB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5Rm9yU2luZ2xlUGFyYWdyYXBoKGJv
b2wgZm9yY2VDcmVhdGVMaXN0LCBjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSYgbGlzdFRhZywgUmFu
Z2UqIGN1cnJlbnRTZWxlY3Rpb24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBwcm9kdWNl
IHVuZXhwZWN0ZWQgcmVzdWx0cyBmb3IgYSBzZWxlY3Rpb24gdGhhdCBzdGFydHMganVzdCBiZWZv
cmUgYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFu
ZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oCmluZGV4IGQ5
MzhjMzRkZWRkMzhjZDczODExM2UyZDAxYmU0MjEyMmYwMzNkNWQuLjY3YzVkNWNlYWM0OWIxYTI2
MDQ4MmZjMDFmZTJhMmUzZTU3NzRlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGlzdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dExpc3RDb21tYW5kLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MUXVhbGlmaWVkTmFtZTsKIAotY2xhc3MgSW5zZXJ0
TGlzdENvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgeworY2xhc3MgSW5zZXJ0
TGlzdENvbW1hbmQgZmluYWwgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgewogcHVibGlj
OgogICAgIGVudW0gVHlwZSB7IE9yZGVyZWRMaXN0LCBVbm9yZGVyZWRMaXN0IH07CiAKQEAgLTQ0
LDEzICs0NCwxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPEhUTUxFbGVtZW50PiBp
bnNlcnRMaXN0KERvY3VtZW50JiwgVHlwZSk7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHByZXNl
cnZlc1R5cGluZ1N0eWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgcHJlc2Vy
dmVzVHlwaW5nU3R5bGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6
CiAgICAgSW5zZXJ0TGlzdENvbW1hbmQoRG9jdW1lbnQmLCBUeXBlKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkb0FwcGx5KCk7Ci0gICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBj
b25zdCB7IHJldHVybiBFZGl0QWN0aW9uSW5zZXJ0TGlzdDsgfQorICAgIHZvaWQgZG9BcHBseSgp
IGZpbmFsOworICAgIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IGZpbmFsOwogCiAg
ICAgSFRNTEVsZW1lbnQqIGZpeE9ycGhhbmVkTGlzdENoaWxkKE5vZGUqKTsKICAgICBib29sIHNl
bGVjdGlvbkhhc0xpc3RPZlR5cGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBj
b25zdCBRdWFsaWZpZWROYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKaW5kZXggNDM1ZWY0NzA4ZTZhYTQyY2Zh
YTViNjk3ODQ4ZDUyNGZjMjY2NjU4MC4uZTUxZjUxZjYyNWQxMzNjYTdlZGJhZTgxNTk1NjdjMTMz
OTM3MjVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VX
aXRoVGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJh
bmdlV2l0aFRleHRDb21tYW5kLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OlJlcGxhY2VSYW5nZVdpdGhUZXh0
Q29tbWFuZChSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkLCBjb25zdCBTdHJpbmcmIHRl
eHQpCi0gICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChyYW5nZVRvQmVSZXBsYWNlZC0+c3RhcnRD
b250YWluZXIoKS5kb2N1bWVudCgpKQorICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQocmFuZ2VU
b0JlUmVwbGFjZWQtPnN0YXJ0Q29udGFpbmVyKCkuZG9jdW1lbnQoKSwgRWRpdEFjdGlvbkluc2Vy
dFJlcGxhY2VtZW50KQogICAgICwgbV9yYW5nZVRvQmVSZXBsYWNlZChyYW5nZVRvQmVSZXBsYWNl
ZCkKICAgICAsIG1fdGV4dCh0ZXh0KQogewpAQCAtNjUsNCArNjUsMTIgQEAgdm9pZCBSZXBsYWNl
UmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9z
aXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShm
cmFnbWVudCksIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlLCBFZGl0QWN0aW9u
UGFzdGUpKTsKIH0KIAorT3B0aW9uYWw8U3RyaW5nPiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1h
bmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKK3sKKyAgICBpZiAoaXNFZGl0aW5nVGV4dEFyZWFP
clRleHRJbnB1dCgpKQorICAgICAgICByZXR1cm4gbV90ZXh0OworCisgICAgcmV0dXJuIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdp
dGhUZXh0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQuaAppbmRleCA2YzQ5OWYyMDQ4NjYzMjdmMDI5MmFiODM1MTIzOGVhNzg3OWE0
MmVhLi4yYWM1ZWJhODFhZjNjOWEyYzVmM2I5M2Q3ZjE1MmE4N2RjMDc4ZDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmgK
QEAgLTM3LDYgKzM3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQocmFuZ2VUb0JlUmVwbGFjZWQsIHRleHQpKTsKICAg
ICB9CiAKKyAgICBPcHRpb25hbDxTdHJpbmc+IGlucHV0RXZlbnREYXRhKCkgY29uc3QgZmluYWw7
CisKIHByaXZhdGU6CiAgICAgUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kKFJlZlB0cjxSYW5n
ZT4gcmFuZ2VUb0JlUmVwbGFjZWQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiAgICAgdm9pZCBkb0Fw
cGx5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDI0YTc3MDRjYzI5OTUzMTRiYmNlN2M0OTM5MTNkNDNi
NjExMTliODYuLjlhMGE1ZGU1ZTk1MThmZTBhYmY1YjI2YTNlZGQ4Njg5MjY5Yzk2MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CkBAIC0xMjU0LDYgKzEyNTQsMTcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9B
cHBseSgpCiAgICAgY29tcGxldGVIVE1MUmVwbGFjZW1lbnQobGFzdFBvc2l0aW9uVG9TZWxlY3Qp
OwogfQogCitPcHRpb25hbDxTdHJpbmc+IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnB1dEV2
ZW50RGF0YSgpIGNvbnN0Cit7CisgICAgV1RGTG9nQWx3YXlzKCI8V0s+OiBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGEiKTsKKyAgICBXVEZMb2dBbHdheXMoIjxXSz46ICAg
ICBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkgPSAlcyIsIGlzRWRpdGluZ1RleHRBcmVh
T3JUZXh0SW5wdXQoKSA/ICJZRVMiIDogIk5PIik7CisKKyAgICBpZiAoaXNFZGl0aW5nVGV4dEFy
ZWFPclRleHRJbnB1dCgpKQorICAgICAgICByZXR1cm4gbV9kb2N1bWVudEZyYWdtZW50LT50ZXh0
Q29udGVudCgpOworCisgICAgcmV0dXJuIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2ZW50
RGF0YSgpOworfQorCiBib29sIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpzaG91bGRSZW1vdmVF
bmRCUihOb2RlKiBlbmRCUiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBvcmlnaW5hbFZpc1Bvc0Jl
Zm9yZUVuZEJSKQogewogICAgIGlmICghZW5kQlIgfHwgIWVuZEJSLT5pbkRvY3VtZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKaW5k
ZXggMDhhODEwZTM0NWFlZmFjMGJmM2ZkYmQzNGVjOWFmMDQxZjg1ZjhhYy4uNTNmMDU1ZmUwZmRk
ZTk5NWJjZGE1ODEyZDdiNGViNTg5N2I4ODQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50JiwgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+JiYsIENvbW1hbmRPcHRpb25zLCBFZGl0QWN0aW9uKTsKIAorICAg
IE9wdGlvbmFsPFN0cmluZz4gaW5wdXRFdmVudERhdGEoKSBjb25zdCBmaW5hbDsKICAgICB2aXJ0
dWFsIHZvaWQgZG9BcHBseSgpOwogCiAgICAgY2xhc3MgSW5zZXJ0ZWROb2RlcyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApp
bmRleCAyMzI1ZTc3YzZjZTdhMjMwZmIyNWEyMjEyM2RlMjU1Y2Q3NzgxYTIxLi45NzQ5MjZmNThi
OGQ3ZGUxOGY3MTgyMTAxOTk5OTk2NGUwZTExNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpTcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZUNvcnJlY3RlZCwg
Y29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQotICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQocmFu
Z2VUb0JlQ29ycmVjdGVkLT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkpCisgICAgOiBDb21w
b3NpdGVFZGl0Q29tbWFuZChyYW5nZVRvQmVDb3JyZWN0ZWQtPnN0YXJ0Q29udGFpbmVyKCkuZG9j
dW1lbnQoKSwgRWRpdEFjdGlvbkluc2VydFJlcGxhY2VtZW50KQogICAgICwgbV9yYW5nZVRvQmVD
b3JyZWN0ZWQocmFuZ2VUb0JlQ29ycmVjdGVkKQogICAgICwgbV9zZWxlY3Rpb25Ub0JlQ29ycmVj
dGVkKCptX3JhbmdlVG9CZUNvcnJlY3RlZCkKICAgICAsIG1fY29ycmVjdGlvbihjb3JyZWN0aW9u
KQpAQCAtMTExLDYgKzExMSwxNCBAQCB2b2lkIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmRv
QXBwbHkoKQogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShmcmFnbWVudCksIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpNYXRjaFN0eWxlLCBFZGl0QWN0aW9uUGFzdGUpKTsKIH0KIAorT3B0aW9uYWw8
U3RyaW5nPiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0
Cit7CisgICAgaWYgKGlzRWRpdGluZ1RleHRBcmVhT3JUZXh0SW5wdXQoKSkKKyAgICAgICAgcmV0
dXJuIG1fY29ycmVjdGlvbjsKKworICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5w
dXRFdmVudERhdGEoKTsKK30KKwogYm9vbCBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjpzaG91
bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZC5oCmluZGV4IDI0ODgyNTMyYjViOWZkMjIxZTQ5YWZkOWE3NGI2M2FkMWVkNmY1MjcuLmU1
NTE3ZjU3YjFhNGJjYjY5MjM1NDVjNGE4NTA1YmE0ZGE4ZDgwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oCkBAIC0zNyw2ICsz
Nyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQocmFuZ2VUb0JlQ29ycmVjdGVkLCBjb3JyZWN0aW9uKSk7CiAg
ICAgfQorCisgICAgT3B0aW9uYWw8U3RyaW5nPiBpbnB1dEV2ZW50RGF0YSgpIGNvbnN0IGZpbmFs
OworCiBwcml2YXRlOgogICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQoUGFzc1JlZlB0cjxS
YW5nZT4gcmFuZ2VUb0JlQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pOwogICAg
IHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5jcHAKaW5kZXggMTQxMjcxMTM1NDFkMGFkNzI0MDg1MzAyYTc5MzQ3YTBjZTQzMmY1Yi4u
YzE2YzEyODAzOTRlMDJiNWEzMjIwMzBhZmRmZjNmMTA5ZDY1ZmYwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC03NiwxMCArNzYsNDEgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBTdHJpbmcmIG1fdGV4dDsKIH07CiAKK3N0YXRpYyBpbmxpbmUgRWRpdEFjdGlv
biBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChUeXBpbmdDb21tYW5kOjpFVHlwaW5nQ29tbWFu
ZCBjb21tYW5kLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgc3dpdGNoIChj
b21tYW5kKSB7CisgICAgY2FzZSBUeXBpbmdDb21tYW5kOjpEZWxldGVTZWxlY3Rpb246CisgICAg
ICAgIHJldHVybiBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlU2VsZWN0aW9uOworICAgIGNhc2UgVHlw
aW5nQ29tbWFuZDo6RGVsZXRlS2V5OiB7CisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBXb3Jk
R3JhbnVsYXJpdHkpCisgICAgICAgICAgICByZXR1cm4gRWRpdEFjdGlvblR5cGluZ0RlbGV0ZVdv
cmRCYWNrd2FyZDsKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSkKKyAg
ICAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlTGluZUJhY2t3YXJkOworICAg
ICAgICByZXR1cm4gRWRpdEFjdGlvblR5cGluZ0RlbGV0ZUJhY2t3YXJkOworICAgIH0KKyAgICBj
YXNlIFR5cGluZ0NvbW1hbmQ6OkZvcndhcmREZWxldGVLZXk6CisgICAgICAgIGlmIChncmFudWxh
cml0eSA9PSBXb3JkR3JhbnVsYXJpdHkpCisgICAgICAgICAgICByZXR1cm4gRWRpdEFjdGlvblR5
cGluZ0RlbGV0ZVdvcmRGb3J3YXJkOworICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gTGluZUJv
dW5kYXJ5KQorICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVMaW5lRm9y
d2FyZDsKKyAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVGb3J3YXJkOworICAg
IGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0VGV4dDoKKyAgICAgICAgcmV0dXJuIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRUZXh0OworICAgIGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0TGluZUJy
ZWFrOgorICAgICAgICByZXR1cm4gRWRpdEFjdGlvblR5cGluZ0luc2VydExpbmVCcmVhazsKKyAg
ICBjYXNlIFR5cGluZ0NvbW1hbmQ6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvcjoKKyAgICBjYXNl
IFR5cGluZ0NvbW1hbmQ6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudDoK
KyAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRQYXJhZ3JhcGg7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb25VbnNwZWNpZmllZDsKKyAgICB9Cit9CisK
IFR5cGluZ0NvbW1hbmQ6OlR5cGluZ0NvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5n
Q29tbWFuZCBjb21tYW5kVHlwZSwgY29uc3QgU3RyaW5nICZ0ZXh0VG9JbnNlcnQsIE9wdGlvbnMg
b3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBl
IGNvbXBvc2l0aW9uVHlwZSkKLSAgICA6IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChkb2N1bWVu
dCwgRWRpdEFjdGlvblR5cGluZykKKyAgICA6IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChkb2N1
bWVudCwgZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5cGUsIGdyYW51bGFyaXR5
KSkKICAgICAsIG1fY29tbWFuZFR5cGUoY29tbWFuZFR5cGUpCiAgICAgLCBtX3RleHRUb0luc2Vy
dCh0ZXh0VG9JbnNlcnQpCisgICAgLCBtX2N1cnJlbnRUZXh0VG9JbnNlcnQodGV4dFRvSW5zZXJ0
KQogICAgICwgbV9vcGVuRm9yTW9yZVR5cGluZyh0cnVlKQogICAgICwgbV9zZWxlY3RJbnNlcnRl
ZFRleHQob3B0aW9ucyAmIFNlbGVjdEluc2VydGVkVGV4dCkKICAgICAsIG1fc21hcnREZWxldGUo
b3B0aW9ucyAmIFNtYXJ0RGVsZXRlKQpAQCAtOTAsNiArMTIxLDcgQEAgVHlwaW5nQ29tbWFuZDo6
VHlwaW5nQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5kIGNvbW1hbmRU
eXBlLCBjb24KICAgICAsIG1fc2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Iob3B0
aW9ucyAmIFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKQogICAgICwgbV9zaG91bGRQcmV2
ZW50U3BlbGxDaGVja2luZyhvcHRpb25zICYgUHJldmVudFNwZWxsQ2hlY2tpbmcpCiB7CisgICAg
bV9jdXJyZW50VHlwaW5nRWRpdEFjdGlvbiA9IGVkaXRpbmdBY3Rpb24oKTsKICAgICB1cGRhdGVQ
cmVzZXJ2ZXNUeXBpbmdTdHlsZShtX2NvbW1hbmRUeXBlKTsKIH0KIApAQCAtMzA4LDYgKzM0MCwx
OSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCitTdHJpbmcgVHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudFR5cGVOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaW5wdXRUeXBlTmFtZUZvckVkaXRpbmdBY3Rpb24obV9jdXJyZW50
VHlwaW5nRWRpdEFjdGlvbik7Cit9CisKK09wdGlvbmFsPFN0cmluZz4gVHlwaW5nQ29tbWFuZDo6
aW5wdXRFdmVudERhdGEoKSBjb25zdAoreworICAgIGlmIChtX2N1cnJlbnRUeXBpbmdFZGl0QWN0
aW9uID09IEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRUZXh0KQorICAgICAgICByZXR1cm4gbV9jdXJy
ZW50VGV4dFRvSW5zZXJ0OworCisgICAgcmV0dXJuIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1
dEV2ZW50RGF0YSgpOworfQorCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRpZEFwcGx5Q29tbWFuZCgp
CiB7CiAgICAgLy8gVHlwaW5nQ29tbWFuZHMgaGFuZGxlIGFwcGxpZWQgZWRpdGluZyBzZXBhcmF0
ZWx5IChzZWUgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKS4KQEAgLTM2
OCwxMyArNDEzLDEzIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgIH0KIH0KIAotYm9vbCBUeXBp
bmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCwgVGV4
dEdyYW51bGFyaXR5KQorYm9vbCBUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29t
bWFuZChFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKG1faXNIYW5kbGluZ0luaXRpYWxU
eXBpbmdDb21tYW5kKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIEZJWE1FOiBVc2Ug
dGhlIG5ld2x5IGFkZGVkIHR5cGluZyBjb21tYW5kIGFuZCBncmFudWxhcml0eSB0byBlbnN1cmUg
dGhhdCBhbiBJbnB1dEV2ZW50IHdpdGggdGhlCi0gICAgLy8gY29ycmVjdCBpbnB1dFR5cGUgaXMg
ZGlzcGF0Y2hlZC4KKyAgICBtX2N1cnJlbnRUZXh0VG9JbnNlcnQgPSB0ZXh0OworICAgIG1fY3Vy
cmVudFR5cGluZ0VkaXRBY3Rpb24gPSBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5k
VHlwZSwgZ3JhbnVsYXJpdHkpOwogICAgIHJldHVybiBmcmFtZSgpLmVkaXRvcigpLndpbGxBcHBs
eUVkaXRpbmcoKnRoaXMpOwogfQogCkBAIC00MTksMTEgKzQ2NCwxMSBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6Omluc2VydFRleHRBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KGNvbnN0IFN0cmluZyAmdGV4
dCwgYm9vbCBzZQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHRSdW5XaXRob3V0TmV3
bGluZXMoY29uc3QgU3RyaW5nICZ0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkKIHsKLSAg
ICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRleHQsIENoYXJhY3Rlckdy
YW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRl
eHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVmUHRyPEluc2VydFRleHRDb21tYW5kPiBjb21tYW5kID0gSW5zZXJ0VGV4dENvbW1hbmQ6OmNy
ZWF0ZShkb2N1bWVudCgpLCB0ZXh0LCBzZWxlY3RJbnNlcnRlZFRleHQsCi0gICAgICAgIG1fY29t
cG9zaXRpb25UeXBlID09IFRleHRDb21wb3NpdGlvbk5vbmUgPyBJbnNlcnRUZXh0Q29tbWFuZDo6
UmViYWxhbmNlTGVhZGluZ0FuZFRyYWlsaW5nV2hpdGVzcGFjZXMgOiBJbnNlcnRUZXh0Q29tbWFu
ZDo6UmViYWxhbmNlQWxsV2hpdGVzcGFjZXMsIEVkaXRBY3Rpb25UeXBpbmcpOworICAgICAgICBt
X2NvbXBvc2l0aW9uVHlwZSA9PSBUZXh0Q29tcG9zaXRpb25Ob25lID8gSW5zZXJ0VGV4dENvbW1h
bmQ6OlJlYmFsYW5jZUxlYWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2VzIDogSW5zZXJ0VGV4dENv
bW1hbmQ6OlJlYmFsYW5jZUFsbFdoaXRlc3BhY2VzLCBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0VGV4
dCk7CiAKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShjb21tYW5kLCBlbmRpbmdTZWxlY3Rp
b24oKSk7CiAKQEAgLTQ1OCw3ICs1MDMsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBh
cmFncmFwaFNlcGFyYXRvcigpCiAgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJ
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IsIFBhcmFncmFwaEdyYW51bGFyaXR5KSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9yQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGZhbHNlLCBmYWxzZSwgRWRpdEFjdGlv
blR5cGluZykpOworICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rp
b25UeXBpbmdJbnNlcnRQYXJhZ3JhcGgpKTsKICAgICB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQo
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuaAppbmRleCAxNTY4NGJkMzg1NDc3MDI3Y2MwODJmNzAwNzYzMzc5NWE5OGE5MTY3
Li40MzI2Y2I2ZmRlNWVmMzViYjBlNjUyMzljYTRhNGYxM2QxZTgzMjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaApAQCAtMTA0LDIyICsxMDQsMjUgQEAgcHJpdmF0ZToK
IAogICAgIHN0YXRpYyBSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmRJZlN0
aWxsT3BlbkZvclR5cGluZyhGcmFtZSYpOwogCi0gICAgdm9pZCBkb0FwcGx5KCk7Ci0gICAgYm9v
bCBpc1R5cGluZ0NvbW1hbmQoKSBjb25zdDsKLSAgICBib29sIHByZXNlcnZlc1R5cGluZ1N0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZXNUeXBpbmdTdHlsZTsgfQotICAgIGJvb2wgc2hv
dWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoKSBjb25zdAorICAgIHZvaWQgZG9BcHBs
eSgpIGZpbmFsOworICAgIGJvb2wgaXNUeXBpbmdDb21tYW5kKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBwcmVzZXJ2ZXNUeXBpbmdTdHlsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJlc2Vy
dmVzVHlwaW5nU3R5bGU7IH0KKyAgICBib29sIHNob3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5k
aWNhdG9yKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1RvcExldmVsQ29t
bWFuZCgpKTsKICAgICAgICAgcmV0dXJuIG1fc2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRp
Y2F0b3I7CiAgICAgfQotICAgIHZvaWQgc2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRp
Y2F0b3IoYm9vbCByZXRhaW4pIHsgbV9zaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRv
ciA9IHJldGFpbjsgfQotICAgIGJvb2wgc2hvdWxkU3RvcENhcmV0QmxpbmtpbmcoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbklu
ZGljYXRvcihib29sIHJldGFpbikgZmluYWwgeyBtX3Nob3VsZFJldGFpbkF1dG9jb3JyZWN0aW9u
SW5kaWNhdG9yID0gcmV0YWluOyB9CisgICAgYm9vbCBzaG91bGRTdG9wQ2FyZXRCbGlua2luZygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHNldFNob3VsZFByZXZlbnRT
cGVsbENoZWNraW5nKGJvb2wgcHJldmVudCkgeyBtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5n
ID0gcHJldmVudDsgfQogCisgICAgU3RyaW5nIGlucHV0RXZlbnRUeXBlTmFtZSgpIGNvbnN0IGZp
bmFsOworICAgIE9wdGlvbmFsPFN0cmluZz4gaW5wdXRFdmVudERhdGEoKSBjb25zdCBmaW5hbDsK
KwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNlbGVjdGlvbklmRGlmZmVyZW50RnJvbUN1cnJlbnRT
ZWxlY3Rpb24oVHlwaW5nQ29tbWFuZCosIEZyYW1lKik7CiAKICAgICB2b2lkIHVwZGF0ZVByZXNl
cnZlc1R5cGluZ1N0eWxlKEVUeXBpbmdDb21tYW5kKTsKLSAgICBib29sIHdpbGxBZGRUeXBpbmdU
b09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kLCBUZXh0R3JhbnVsYXJpdHkpOworICAgIGJvb2wg
d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQsIFRleHRHcmFudWxhcml0
eSwgY29uc3QgU3RyaW5nJiA9IGVtcHR5U3RyaW5nKCkpOwogICAgIHZvaWQgbWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kKTsKICAgICB2b2lkIHR5cGluZ0FkZGVkVG9P
cGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCk7CiAgICAgYm9vbCBtYWtlRWRpdGFibGVSb290RW1w
dHkoKTsKQEAgLTEzMCwxMSArMTMzLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnRBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KCk7CiAg
ICAgdm9pZCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KCk7
CiAKLSAgICBib29sIHdpbGxBcHBseUNvbW1hbmQoKTsKLSAgICB2b2lkIGRpZEFwcGx5Q29tbWFu
ZCgpOworICAgIGJvb2wgd2lsbEFwcGx5Q29tbWFuZCgpIGZpbmFsOworICAgIHZvaWQgZGlkQXBw
bHlDb21tYW5kKCkgZmluYWw7CiAKICAgICBFVHlwaW5nQ29tbWFuZCBtX2NvbW1hbmRUeXBlOwor
ICAgIEVkaXRBY3Rpb24gbV9jdXJyZW50VHlwaW5nRWRpdEFjdGlvbjsKICAgICBTdHJpbmcgbV90
ZXh0VG9JbnNlcnQ7CisgICAgU3RyaW5nIG1fY3VycmVudFRleHRUb0luc2VydDsKICAgICBib29s
IG1fb3BlbkZvck1vcmVUeXBpbmc7CiAgICAgYm9vbCBtX3NlbGVjdEluc2VydGVkVGV4dDsKICAg
ICBib29sIG1fc21hcnREZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2Vs
ZWN0aW9uLmNwcAppbmRleCBiODg1YjlkYmZmMTM2NzNjZjEwNzE5NjQ3NWY5NmM0MTc3MDE4MTRi
Li4zODIyMTJmMzI4MmRkNDg1ODIyNWQ3YjdiMGE2YzYwYzlkMzQ4M2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUg
Imh0bWxlZGl0aW5nLmgiCkBAIC02NjUsNiArNjY2LDI2IEBAIE5vZGUqIFZpc2libGVTZWxlY3Rp
b246Om5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCkgY29uc3QKICAgICByZXR1cm4gc3Rh
cnQoKS5kZXByZWNhdGVkTm9kZSgpID8gc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLT5ub25Cb3Vu
ZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpIDogbnVsbHB0cjsKIH0KIAorYm9vbCBWaXNpYmxlU2Vs
ZWN0aW9uOjppc0luVGV4dEFyZWFPclRleHRJbnB1dCgpIGNvbnN0Cit7CisgICAgTm9kZSogY29u
dGFpbmVyID0gc3RhcnQoKS5jb250YWluZXJOb2RlKCk7CisgICAgaWYgKCFjb250YWluZXIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVsZW1lbnQqIGFuY2VzdG9yID0gY29udGFpbmVy
LT5zaGFkb3dIb3N0KCk7CisgICAgaWYgKCFhbmNlc3RvcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCphbmNlc3RvcikpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCphbmNlc3Rvcikp
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqYW5jZXN0b3IpLmlz
VGV4dCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisKIGJvb2wgVmlzaWJsZVNlbGVjdGlv
bjo6aXNJblBhc3N3b3JkRmllbGQoKSBjb25zdAogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KiB0ZXh0Q29udHJvbCA9IGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChzdGFydCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKaW5kZXggZmFhYWY4NzUz
OWQ5YTllMTAxMzA3YzE0NjQ3MzJiYTI1OWQwMGNhYy4uNTI2YmQ4MDQ1ZWVmODVlODZhMjFmY2Mz
Y2UwZjA2Mzc0YjVjMTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0
aW9uLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgLy8gU2hhZG93Um9vdCBub2Rl
IGZvciBuZXcgc2hhZG93IHRyZWVzLCBvciAwIGZvciBub24tc2hhZG93IHRyZWVzLgogICAgIE5v
ZGUqIG5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCkgY29uc3Q7CiAKKyAgICBib29sIGlz
SW5UZXh0QXJlYU9yVGV4dElucHV0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c0luUGFzc3dvcmRGaWVsZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCmluZGV4IGY4MjYyZThhN2Q4Mzk1MTBlMDhmZTE4ZDgzZGM2ZmUyMmIzYmZhZTAuLjc4MmYz
Yzg3ZGY2NTA3MjA0NzVmOTI0MzFjMDYzM2VkZjc0YjVhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTU2Myw2ICs1
NjMsNyBAQCBzdGF0aWMgTlNTdHJpbmcqIHVuZG9OYW1lRm9yRWRpdEFjdGlvbihFZGl0QWN0aW9u
IGVkaXRBY3Rpb24pCiAgICAgc3dpdGNoIChlZGl0QWN0aW9uKSB7CiAgICAgICAgIGNhc2UgRWRp
dEFjdGlvblVuc3BlY2lmaWVkOiByZXR1cm4gbmlsOwogICAgICAgICBjYXNlIEVkaXRBY3Rpb25J
bnNlcnQ6IHJldHVybiBuaWw7CisgICAgICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJlcGxhY2Vt
ZW50OiByZXR1cm4gbmlsOwogICAgICAgICBjYXNlIEVkaXRBY3Rpb25TZXRDb2xvcjogcmV0dXJu
IFVJX1NUUklOR19LRVlfSU5URVJOQUwoIlNldCBDb2xvciIsICJTZXQgQ29sb3IgKFVuZG8gYWN0
aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICAgICAgY2FzZSBFZGl0QWN0aW9u
U2V0QmFja2dyb3VuZENvbG9yOiByZXR1cm4gVUlfU1RSSU5HX0tFWV9JTlRFUk5BTCgiU2V0IEJh
Y2tncm91bmQgQ29sb3IiLCAiU2V0IEJhY2tncm91bmQgQ29sb3IgKFVuZG8gYWN0aW9uIG5hbWUp
IiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHVybk9mZktl
cm5pbmc6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJUdXJuIE9mZiBLZXJuaW5nIiwg
IlR1cm4gT2ZmIEtlcm5pbmcgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUi
KTsKQEAgLTU5MiwxMCArNTkzLDIyIEBAIHN0YXRpYyBOU1N0cmluZyogdW5kb05hbWVGb3JFZGl0
QWN0aW9uKEVkaXRBY3Rpb24gZWRpdEFjdGlvbikKICAgICAgICAgY2FzZSBFZGl0QWN0aW9uUGFz
dGU6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJQYXN0ZSIsICJQYXN0ZSAoVW5kbyBh
Y3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgICAgICBjYXNlIEVkaXRBY3Rp
b25QYXN0ZUZvbnQ6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJQYXN0ZSBGb250Iiwg
IlBhc3RlIEZvbnQgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAg
ICAgICAgY2FzZSBFZGl0QWN0aW9uUGFzdGVSdWxlcjogcmV0dXJuIFVJX1NUUklOR19LRVlfSU5U
RVJOQUwoIlBhc3RlIFJ1bGVyIiwgIlBhc3RlIFJ1bGVyIChVbmRvIGFjdGlvbiBuYW1lKSIsICJV
bmRvIGFjdGlvbiBuYW1lIik7Ci0gICAgICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZzogcmV0dXJu
IFVJX1NUUklOR19LRVlfSU5URVJOQUwoIlR5cGluZyIsICJUeXBpbmcgKFVuZG8gYWN0aW9uIG5h
bWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5n
RGVsZXRlU2VsZWN0aW9uOgorICAgICAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVCYWNr
d2FyZDoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlRm9yd2FyZDoKKyAgICAg
ICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlV29yZEJhY2t3YXJkOgorICAgICAgICBjYXNl
IEVkaXRBY3Rpb25UeXBpbmdEZWxldGVXb3JkRm9yd2FyZDoKKyAgICAgICAgY2FzZSBFZGl0QWN0
aW9uVHlwaW5nRGVsZXRlTGluZUJhY2t3YXJkOgorICAgICAgICBjYXNlIEVkaXRBY3Rpb25UeXBp
bmdEZWxldGVMaW5lRm9yd2FyZDoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0
VGV4dDoKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0TGluZUJyZWFrOgorICAg
ICAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRQYXJhZ3JhcGg6CisgICAgICAgICAgICBy
ZXR1cm4gVUlfU1RSSU5HX0tFWV9JTlRFUk5BTCgiVHlwaW5nIiwgIlR5cGluZyAoVW5kbyBhY3Rp
b24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgICAgICBjYXNlIEVkaXRBY3Rpb25D
cmVhdGVMaW5rOiByZXR1cm4gVUlfU1RSSU5HX0tFWV9JTlRFUk5BTCgiQ3JlYXRlIExpbmsiLCAi
Q3JlYXRlIExpbmsgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAg
ICAgICAgY2FzZSBFZGl0QWN0aW9uVW5saW5rOiByZXR1cm4gVUlfU1RSSU5HX0tFWV9JTlRFUk5B
TCgiVW5saW5rIiwgIlVubGluayAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFt
ZSIpOwotICAgICAgICBjYXNlIEVkaXRBY3Rpb25JbnNlcnRMaXN0OiByZXR1cm4gVUlfU1RSSU5H
X0tFWV9JTlRFUk5BTCgiSW5zZXJ0IExpc3QiLCAiSW5zZXJ0IExpc3QgKFVuZG8gYWN0aW9uIG5h
bWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKKyAgICAgICAgY2FzZSBFZGl0QWN0aW9uSW5zZXJ0
T3JkZXJlZExpc3Q6CisgICAgICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFVub3JkZXJlZExpc3Q6
CisgICAgICAgICAgICByZXR1cm4gVUlfU1RSSU5HX0tFWV9JTlRFUk5BTCgiSW5zZXJ0IExpc3Qi
LCAiSW5zZXJ0IExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsK
ICAgICAgICAgY2FzZSBFZGl0QWN0aW9uRm9ybWF0QmxvY2s6IHJldHVybiBVSV9TVFJJTkdfS0VZ
X0lOVEVSTkFMKCJGb3JtYXR0aW5nIiwgIkZvcm1hdCBCbG9jayAoVW5kbyBhY3Rpb24gbmFtZSki
LCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgICAgICBjYXNlIEVkaXRBY3Rpb25JbmRlbnQ6IHJl
dHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJJbmRlbnQiLCAiSW5kZW50IChVbmRvIGFjdGlv
biBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CiAgICAgICAgIGNhc2UgRWRpdEFjdGlvbk91
dGRlbnQ6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJPdXRkZW50IiwgIk91dGRlbnQg
KFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDJh
YWM3MTQ3NjgwODBlMWU3YzVjZWU0NTVmMDEzZDllNDU1NTU2M2EuLjQyZmU1NTFiY2YyYjkzMzNj
OTMwYmVmNjQ0ZThmZmUxYjZlYmVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNTYzLDcgKzU2Myw5IEBAIFVM
T05HIFdlYkVkaXRvclVuZG9Db21tYW5kOjpSZWxlYXNlKCkKIHN0YXRpYyBTdHJpbmcgdW5kb05h
bWVGb3JFZGl0QWN0aW9uKEVkaXRBY3Rpb24gZWRpdEFjdGlvbikKIHsKICAgICBzd2l0Y2ggKGVk
aXRBY3Rpb24pIHsKLSAgICBjYXNlIEVkaXRBY3Rpb25VbnNwZWNpZmllZDogcmV0dXJuIFN0cmlu
ZygpOworICAgIGNhc2UgRWRpdEFjdGlvblVuc3BlY2lmaWVkOgorICAgIGNhc2UgRWRpdEFjdGlv
bkluc2VydFJlcGxhY2VtZW50OgorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgY2FzZSBF
ZGl0QWN0aW9uU2V0Q29sb3I6IHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiU2V0IENvbG9yIiwg
IlNldCBDb2xvciAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAg
IGNhc2UgRWRpdEFjdGlvblNldEJhY2tncm91bmRDb2xvcjogcmV0dXJuIFdFQl9VSV9TVFJJTkdf
S0VZKCJTZXQgQmFja2dyb3VuZCBDb2xvciIsICJTZXQgQmFja2dyb3VuZCBDb2xvciAoVW5kbyBh
Y3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgIGNhc2UgRWRpdEFjdGlvblR1
cm5PZmZLZXJuaW5nOiByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIlR1cm4gT2ZmIEtlcm5pbmci
LCAiVHVybiBPZmYgS2VybmluZyAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFt
ZSIpOwpAQCAtNTk1LDEwICs1OTcsMjIgQEAgc3RhdGljIFN0cmluZyB1bmRvTmFtZUZvckVkaXRB
Y3Rpb24oRWRpdEFjdGlvbiBlZGl0QWN0aW9uKQogICAgIGNhc2UgRWRpdEFjdGlvblBhc3RlOiBy
ZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIlBhc3RlIiwgIlBhc3RlIChVbmRvIGFjdGlvbiBuYW1l
KSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CiAgICAgY2FzZSBFZGl0QWN0aW9uUGFzdGVGb250OiBy
ZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIlBhc3RlIEZvbnQiLCAiUGFzdGUgRm9udCAoVW5kbyBh
Y3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgIGNhc2UgRWRpdEFjdGlvblBh
c3RlUnVsZXI6IHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiUGFzdGUgUnVsZXIiLCAiUGFzdGUg
UnVsZXIgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKLSAgICBjYXNl
IEVkaXRBY3Rpb25UeXBpbmc6IHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiVHlwaW5nIiwgIlR5
cGluZyAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOworICAgIGNhc2Ug
RWRpdEFjdGlvblR5cGluZ0RlbGV0ZVNlbGVjdGlvbjoKKyAgICBjYXNlIEVkaXRBY3Rpb25UeXBp
bmdEZWxldGVCYWNrd2FyZDoKKyAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVGb3J3YXJk
OgorICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0RlbGV0ZVdvcmRCYWNrd2FyZDoKKyAgICBjYXNl
IEVkaXRBY3Rpb25UeXBpbmdEZWxldGVXb3JkRm9yd2FyZDoKKyAgICBjYXNlIEVkaXRBY3Rpb25U
eXBpbmdEZWxldGVMaW5lQmFja3dhcmQ6CisgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRl
TGluZUZvcndhcmQ6CisgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0VGV4dDoKKyAgICBj
YXNlIEVkaXRBY3Rpb25UeXBpbmdJbnNlcnRMaW5lQnJlYWs6CisgICAgY2FzZSBFZGl0QWN0aW9u
VHlwaW5nSW5zZXJ0UGFyYWdyYXBoOgorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVko
IlR5cGluZyIsICJUeXBpbmcgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUi
KTsKICAgICBjYXNlIEVkaXRBY3Rpb25DcmVhdGVMaW5rOiByZXR1cm4gV0VCX1VJX1NUUklOR19L
RVkoIkNyZWF0ZSBMaW5rIiwgIkNyZWF0ZSBMaW5rIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRv
IGFjdGlvbiBuYW1lIik7CiAgICAgY2FzZSBFZGl0QWN0aW9uVW5saW5rOiByZXR1cm4gV0VCX1VJ
X1NUUklOR19LRVkoIlVubGluayIsICJVbmxpbmsgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8g
YWN0aW9uIG5hbWUiKTsKLSAgICBjYXNlIEVkaXRBY3Rpb25JbnNlcnRMaXN0OiByZXR1cm4gV0VC
X1VJX1NUUklOR19LRVkoIkluc2VydCBMaXN0IiwgIkluc2VydCBMaXN0IChVbmRvIGFjdGlvbiBu
YW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CisgICAgY2FzZSBFZGl0QWN0aW9uSW5zZXJ0VW5v
cmRlcmVkTGlzdDoKKyAgICBjYXNlIEVkaXRBY3Rpb25JbnNlcnRPcmRlcmVkTGlzdDoKKyAgICAg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKCJJbnNlcnQgTGlzdCIsICJJbnNlcnQgTGlzdCAo
VW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgIGNhc2UgRWRpdEFj
dGlvbkZvcm1hdEJsb2NrOiByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIkZvcm1hdHRpbmciLCAi
Rm9ybWF0IEJsb2NrIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CiAg
ICAgY2FzZSBFZGl0QWN0aW9uSW5kZW50OiByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIkluZGVu
dCIsICJJbmRlbnQgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAg
ICBjYXNlIEVkaXRBY3Rpb25PdXRkZW50OiByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIk91dGRl
bnQiLCAiT3V0ZGVudCAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCmlu
ZGV4IDkxYjY5OWFmNTg0ZTkyMzkwNzU2NzNlY2Y4N2M2MzQ4ODhhNjgxMWIuLmEzYTI5ZjE1ODc2
ZDdlZjQyMWI3NmNmNThlMGRmMzljOTJiMGEzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAKQEAgLTc2LDYgKzc2LDggQEAgU3RyaW5n
IFdlYkVkaXRDb21tYW5kUHJveHk6Om5hbWVGb3JFZGl0QWN0aW9uKEVkaXRBY3Rpb24gZWRpdEFj
dGlvbikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGNhc2UgRWRpdEFjdGlvbkluc2Vy
dDoKICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydFJl
cGxhY2VtZW50OgorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgY2FzZSBFZGl0QWN0aW9u
U2V0Q29sb3I6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiU2V0IENvbG9yIiwg
IlNldCBDb2xvciAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAg
IGNhc2UgRWRpdEFjdGlvblNldEJhY2tncm91bmRDb2xvcjoKQEAgLTE0MiwxMyArMTQ0LDIzIEBA
IFN0cmluZyBXZWJFZGl0Q29tbWFuZFByb3h5OjpuYW1lRm9yRWRpdEFjdGlvbihFZGl0QWN0aW9u
IGVkaXRBY3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiUGFzdGUgRm9u
dCIsICJQYXN0ZSBGb250IChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7
CiAgICAgY2FzZSBFZGl0QWN0aW9uUGFzdGVSdWxlcjoKICAgICAgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkdfS0VZKCJQYXN0ZSBSdWxlciIsICJQYXN0ZSBSdWxlciAoVW5kbyBhY3Rpb24gbmFtZSki
LCAiVW5kbyBhY3Rpb24gbmFtZSIpOwotICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZzoKKyAgICBj
YXNlIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVTZWxlY3Rpb246CisgICAgY2FzZSBFZGl0QWN0aW9u
VHlwaW5nRGVsZXRlQmFja3dhcmQ6CisgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlRm9y
d2FyZDoKKyAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmdEZWxldGVXb3JkQmFja3dhcmQ6CisgICAg
Y2FzZSBFZGl0QWN0aW9uVHlwaW5nRGVsZXRlV29yZEZvcndhcmQ6CisgICAgY2FzZSBFZGl0QWN0
aW9uVHlwaW5nRGVsZXRlTGluZUJhY2t3YXJkOgorICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0Rl
bGV0ZUxpbmVGb3J3YXJkOgorICAgIGNhc2UgRWRpdEFjdGlvblR5cGluZ0luc2VydFRleHQ6Cisg
ICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nSW5zZXJ0TGluZUJyZWFrOgorICAgIGNhc2UgRWRpdEFj
dGlvblR5cGluZ0luc2VydFBhcmFncmFwaDoKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdf
S0VZKCJUeXBpbmciLCAiVHlwaW5nIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBu
YW1lIik7CiAgICAgY2FzZSBFZGl0QWN0aW9uQ3JlYXRlTGluazoKICAgICAgICAgcmV0dXJuIFdF
Ql9VSV9TVFJJTkdfS0VZKCJDcmVhdGUgTGluayIsICJDcmVhdGUgTGluayAoVW5kbyBhY3Rpb24g
bmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgIGNhc2UgRWRpdEFjdGlvblVubGluazoK
ICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKCJVbmxpbmsiLCAiVW5saW5rIChVbmRv
IGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7Ci0gICAgY2FzZSBFZGl0QWN0aW9u
SW5zZXJ0TGlzdDoKKyAgICBjYXNlIEVkaXRBY3Rpb25JbnNlcnRVbm9yZGVyZWRMaXN0OgorICAg
IGNhc2UgRWRpdEFjdGlvbkluc2VydE9yZGVyZWRMaXN0OgogICAgICAgICByZXR1cm4gV0VCX1VJ
X1NUUklOR19LRVkoIkluc2VydCBMaXN0IiwgIkluc2VydCBMaXN0IChVbmRvIGFjdGlvbiBuYW1l
KSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CiAgICAgY2FzZSBFZGl0QWN0aW9uRm9ybWF0QmxvY2s6
CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiRm9ybWF0dGluZyIsICJGb3JtYXQg
QmxvY2sgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5
YTBmNGU1NzQwMzAwYTI0NjdmN2Q1OGU1MzA3MzgyYzc5NTMzOWIxLi40ZmQyNTUzZjc4MTNjMmM4
MWIyNDYxYjE1ZGFmZThkOTBiNTZhMWM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTYtMTAt
MDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgU3Vw
cG9ydCBJbnB1dEV2ZW50LmRhdGEgZm9yIHRoZSBuZXcgSW5wdXRFdmVudCBzcGVjCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxMTMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI4NjgxOTM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZHMgMiBuZXcgbGF5b3V0IHRlc3RzIHZlcmlmeWluZyB0aGUg
ZGF0YSBhdHRyaWJ1dGUgb2YgYGJlZm9yZWlucHV0YCBhbmQgYGlucHV0YCBldmVudHMgd2hlbiB0
eXBpbmcsIHBhc3RpbmcsCisgICAgICAgIGFuZCBzZWxlY3RpbmcgY2FuZGlkYXRlIHJlcGxhY2Vt
ZW50cyBpbiBwbGFpbiB0ZXh0IGFuZCBjb250ZW50ZWRpdGFibGUgYXJlYXMuCisKKyAgICAgICAg
QWxzbyB0d2Vha3MgYW4gZXhpc3RpbmcgdGVzdCB0byBlbnN1cmUgdGhhdCBgZGF0YWAgaXMgYW4g
YXR0cmlidXRlIG9mIGFuIElucHV0RXZlbnQuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pbnB1
dC1ldmVudHMtZmlyZWQtd2hlbi10eXBpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5cGluZy5odG1sOgorICAgICAgICAqIGZh
c3QvZXZlbnRzL2lucHV0LWV2ZW50cy1wYXN0ZS1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLWRhdGEuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXR5cGluZy1kYXRhLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXR5cGluZy1k
YXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4
cGVjdGF0aW9uczoKKworMjAxNi0xMC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IElucHV0RXZlbnQuaW5wdXRUeXBlIGZvciB0aGUg
bmV3IElucHV0RXZlbnQgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzMDI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODY1ODA5Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyBs
YXlvdXQgdGVzdHMgdG8gY2hlY2sgdGhhdCB2YXJpb3VzIGFjdGlvbnMsIHN1Y2ggYXMgY3V0dGlu
ZywgcGFzdGluZyBhbmQgdW5kb2luZyBjYW4KKyAgICAgICAgYmUgcHJldmVudGVkIHZpYSB0aGUg
SW5wdXRFdmVudCBmaXJlZCBpbiBhIGBiZWZvcmVjaGFuZ2VgIGhhbmRsZXIuCisKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1iaXUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1iaXUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtY3V0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXBy
ZXZlbnQtY3V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1
dC1wcmV2ZW50LXBhc3RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvYmVmb3JlLWlucHV0LXByZXZlbnQtcGFzdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtdHlwaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtdHlwaW5nLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LXVuZG8t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQt
cHJldmVudC11bmRvLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0
b3IvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNi0xMC0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtYXJrIGEgdGVzdCBhcyBm
YWlsaW5nIG9uIGlPUyBzaW11bGF0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LWJpdS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1iaXUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY3NDA2ODAzYWQ3OWZiNTRhNWIxZWQ0ZGU0OTlkOGJmNDZkOWU5MmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1iaXUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVG8gbWFudWFsbHkgdGVzdCB0aGlzLCB0dXJu
IG9uIGJvbGQsIGl0YWxpYyBhbmQgdW5kZXJsaW5lIHZpYSB0aGUgY29udGV4dCBtZW51LCBhbmQg
dGhlbiB0eXBlIHNvbWUgdGV4dCBpbnRvIHRoZSBjb250ZW50ZWRpdGFibGUuIFRoZSB0ZXh0IHNo
b3VsZCBiZSBpdGFsaWNpemVkIGFuZCB1bmRlcmxpbmVkLCBidXQgbm90IGJvbGQuCisKK2FmdGVy
IHR5cGluZzoKK3wgImFiYyIKK3wgPGk+Cit8ICAgPHU+Cit8ICAgICAiZGVmPCNzZWxlY3Rpb24t
Y2FyZXQ+IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0
LXByZXZlbnQtYml1Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQt
cHJldmVudC1iaXUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjU5MzcyY2Q2YzhmNGJjOWJhNzU3NDk5MjVm
ZDk1YWY5NmNjMDUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
YmVmb3JlLWlucHV0LXByZXZlbnQtYml1Lmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxkaXYgaWQ9ImVkaXRhYmxlIiBjb250ZW50ZWRp
dGFibGUgb25iZWZvcmVpbnB1dD1oYW5kbGVCZWZvcmVJbnB1dChldmVudCk+PC9kaXY+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBNYXJrdXAuZGVz
Y3JpcHRpb24oYFRvIG1hbnVhbGx5IHRlc3QgdGhpcywgdHVybiBvbiBib2xkLCBpdGFsaWMgYW5k
IHVuZGVybGluZSB2aWEgdGhlIGNvbnRleHQgbWVudSwgYW5kIHRoZW4gdHlwZSBzb21lIHRleHQg
aW50byB0aGUgY29udGVudGVkaXRhYmxlLiBUaGUgdGV4dCBzaG91bGQgYmUgaXRhbGljaXplZCBh
bmQgdW5kZXJsaW5lZCwgYnV0IG5vdCBib2xkLmApOworCisgICAgICAgIChmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LmV2ZW50U2VuZGVy
IHx8ICF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbnB1dEV2ZW50c0VuYWJsZWQodHJ1ZSk7Cisg
ICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZWRpdGFibGUiKS5mb2N1cygpOwor
CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJhIiwgW10pOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiYiIsIFtdKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oImMiLCBbXSk7CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIlRv
Z2dsZUJvbGQiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIlRvZ2dsZUl0
YWxpYyIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiVG9nZ2xlVW5kZXJs
aW5lIik7CisKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImQiLCBbXSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlIiwgW10pOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigiZiIsIFtdKTsKKyAgICAgICAgICAgIE1hcmt1cC5kdW1wKCJlZGl0YWJs
ZSIsICJhZnRlciB0eXBpbmciKTsKKworICAgICAgICB9KSgpOworCisgICAgICAgIGZ1bmN0aW9u
IGhhbmRsZUJlZm9yZUlucHV0KGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZl
bnQuaW5wdXRUeXBlID09PSAiZm9ybWF0Qm9sZCIpCisgICAgICAgICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9ib2R5PgorCis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJl
dmVudC1jdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmVmb3JlLWlu
cHV0LXByZXZlbnQtY3V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODliYWYxNjNhYTU4ZTE2
YmI3MzU3MTM0ZDQxODllMDZiMmQxODY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtY3V0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE5IEBACitUbyBtYW51YWxseSB0ZXN0IHRoaXMsIHNlbGVjdCB0aGUgdGV4dCBpbiB0aGUg
aW5wdXQgYW5kIGF0dGVtcHQgdG8gY3V0LiBUaGUgdmFsdWUgb2YgdGhlIGlucHV0IHNob3VsZCBu
b3QgY2hhbmdlLgorCitpbml0aWFsIHZhbHVlOgorfCAgIDxzaGFkb3c6cm9vdD4KK3wgICAgIDxk
aXY+Cit8ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0icGxhaW50ZXh0LW9ubHkiCit8ICAgICAgICJo
ZWxsb3dvcmxkIgorCithZnRlciBwcmV2ZW50ZWQgY3V0OgorfCAgIDxzaGFkb3c6cm9vdD4KK3wg
ICAgIDxkaXY+Cit8ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0icGxhaW50ZXh0LW9ubHkiCit8ICAg
ICAgICJoZWxsb3dvcmxkIgorCithZnRlciBhbGxvd2VkIGN1dDoKK3wgICA8c2hhZG93OnJvb3Q+
Cit8ICAgICA8ZGl2PgorfCAgICAgICBjb250ZW50ZWRpdGFibGU9InBsYWludGV4dC1vbmx5Igor
fCAgICAgICA8YnI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
aW5wdXQtcHJldmVudC1jdXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1p
bnB1dC1wcmV2ZW50LWN1dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YjRiNGY2ZTg4ZWNjMTZkMDAyMjll
Zjk1MDJlMjVjZDI0MTQyYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1jdXQuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgICAgPGlucHV0IGlkPSJmaWVsZCIgb25mb2N1
cz1oYW5kbGVGb2N1cygpIHZhbHVlPSJoZWxsb3dvcmxkIiBvbmJlZm9yZWlucHV0PWhhbmRsZUJl
Zm9yZUlucHV0KGV2ZW50KT48L2Rpdj4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBNYXJr
dXAuZGVzY3JpcHRpb24oYFRvIG1hbnVhbGx5IHRlc3QgdGhpcywgc2VsZWN0IHRoZSB0ZXh0IGlu
IHRoZSBpbnB1dCBhbmQgYXR0ZW1wdCB0byBjdXQuIFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgc2hv
dWxkIG5vdCBjaGFuZ2UuYCk7CisKKyAgICAgICAgdmFyIGFsbG93Q3V0ID0gZmFsc2U7CisgICAg
ICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAh
d2luZG93LmV2ZW50U2VuZGVyIHx8ICF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbnB1dEV2ZW50
c0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZmll
bGQiKS5mb2N1cygpOworICAgICAgICB9KSgpOworCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUJl
Zm9yZUlucHV0KGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYWxsb3dDdXQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBl
ID09PSAiZGVsZXRlQnlDdXQiKQorICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYW5kbGVGb2N1cygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNmaWVsZCIpLnNlbGVjdCgp
OworICAgICAgICAgICAgTWFya3VwLmR1bXAoImZpZWxkIiwgImluaXRpYWwgdmFsdWUiKTsKKwor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiQ3V0Iik7CisgICAgICAgICAgICBN
YXJrdXAuZHVtcCgiZmllbGQiLCAiYWZ0ZXIgcHJldmVudGVkIGN1dCIpOworCisgICAgICAgICAg
ICBhbGxvd0N1dCA9IHRydWU7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJD
dXQiKTsKKyAgICAgICAgICAgIE1hcmt1cC5kdW1wKCJmaWVsZCIsICJhZnRlciBhbGxvd2VkIGN1
dCIpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1wYXN0ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVu
dC1wYXN0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg2MGJlODU5YTZkNTQ1NTIxMmYyYThm
OWU0NzdkM2ExNDU1ZDZkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LXBhc3RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2
IEBACitUbyBtYW51YWxseSB0ZXN0IHRoaXMsIGNvcHkgYW55IHRleHQgYW5kIHRyeSB0byBwYXN0
ZSBpbnRvIHRoZSBpbnB1dCBmaWVsZC4gVGhlIHZhbHVlIG9mIHRoZSBpbnB1dCBzaG91bGQgbm90
IGNoYW5nZS4KKworaW5pdGlhbCB2YWx1ZToKK3wgICA8c2hhZG93OnJvb3Q+Cit8ICAgICA8ZGl2
PgorfCAgICAgICBjb250ZW50ZWRpdGFibGU9InBsYWludGV4dC1vbmx5IgorfCAgICAgICAiaGVs
bG93b3JsZCIKKworYWZ0ZXIgdGhlIGN1dDoKK3wgICA8c2hhZG93OnJvb3Q+Cit8ICAgICA8ZGl2
PgorfCAgICAgICBjb250ZW50ZWRpdGFibGU9InBsYWludGV4dC1vbmx5IgorfCAgICAgICA8YnI+
CisKK2FmdGVyIHByZXZlbnRlZCBwYXN0ZToKK3wgICA8c2hhZG93OnJvb3Q+Cit8ICAgICA8ZGl2
PgorfCAgICAgICBjb250ZW50ZWRpdGFibGU9InBsYWludGV4dC1vbmx5IgorfCAgICAgICA8YnI+
CisKK2FmdGVyIGFsbG93ZWQgcGFzdGU6Cit8ICAgPHNoYWRvdzpyb290PgorfCAgICAgPGRpdj4K
K3wgICAgICAgY29udGVudGVkaXRhYmxlPSJwbGFpbnRleHQtb25seSIKK3wgICAgICAgImhlbGxv
d29ybGQiCit8ICAgICAgIDxicj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2JlZm9yZS1pbnB1dC1wcmV2ZW50LXBhc3RlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9iZWZvcmUtaW5wdXQtcHJldmVudC1wYXN0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1YjQ0ZWNmOTNj
ODBhYjJjN2RkYTJjZTIzMTg5NmQ4OTYyMDdmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC1wYXN0ZS5odG1sCkBAIC0wLDAg
KzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisKKzxib2R5PgorICAgIDxpbnB1dCBp
ZD0iZmllbGQiIG9uZm9jdXM9aGFuZGxlRm9jdXMoKSB2YWx1ZT0iaGVsbG93b3JsZCIgb25iZWZv
cmVpbnB1dD1oYW5kbGVCZWZvcmVJbnB1dChldmVudCk+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgTWFya3VwLmRlc2NyaXB0aW9uKGBUbyBtYW51YWxseSB0ZXN0IHRoaXMsIGNv
cHkgYW55IHRleHQgYW5kIHRyeSB0byBwYXN0ZSBpbnRvIHRoZSBpbnB1dCBmaWVsZC4gVGhlIHZh
bHVlIG9mIHRoZSBpbnB1dCBzaG91bGQgbm90IGNoYW5nZS5gKTsKKworICAgICAgICB2YXIgYWxs
b3dQYXN0ZSA9IGZhbHNlOworICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAo
IXdpbmRvdy5pbnRlcm5hbHMgfHwgIXdpbmRvdy5ldmVudFNlbmRlciB8fCAhd2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiaW5wdXQiKS5mb2N1cygpOworICAgICAgICB9KSgpOworCisgICAg
ICAgIGZ1bmN0aW9uIGhhbmRsZUJlZm9yZUlucHV0KGV2ZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoYWxsb3dQYXN0ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT0gImluc2VydEZyb21QYXN0ZSIpCisgICAgICAgICAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGhhbmRsZUZvY3VzKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiaW5wdXQiKS5zZWxlY3QoKTsKKworICAgICAgICAgICAgTWFya3VwLmR1bXAoImZp
ZWxkIiwgImluaXRpYWwgdmFsdWUiKTsKKworICAgICAgICAgICAgdGVzdFJ1bm5lci5leGVjQ29t
bWFuZCgiQ3V0Iik7CisgICAgICAgICAgICBNYXJrdXAuZHVtcCgiZmllbGQiLCAiYWZ0ZXIgdGhl
IGN1dCIpOworCisgICAgICAgICAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJQYXN0ZSIpOwor
ICAgICAgICAgICAgTWFya3VwLmR1bXAoImZpZWxkIiwgImFmdGVyIHByZXZlbnRlZCBwYXN0ZSIp
OworCisgICAgICAgICAgICBhbGxvd1Bhc3RlID0gdHJ1ZTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZXhlY0NvbW1hbmQoIlBhc3RlIik7CisgICAgICAgICAgICBNYXJrdXAuZHVtcCgiZmllbGQi
LCAiYWZ0ZXIgYWxsb3dlZCBwYXN0ZSIpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2Jv
ZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9y
ZS1pbnB1dC1wcmV2ZW50LXR5cGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC10eXBpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE4Njc4OWM2OTVhYTQ0MTNjMWM1OWZjZGQyYjA4YzQ2YjNiNmU1OTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC10eXBpbmct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RvIG1hbnVhbGx5IHRlc3QgdGhpcywgZW5z
dXJlIHRoYXQgdHlwaW5nIG9yIGF0dGVtcHRpbmcgdG8gZGVsZXRlIHRleHQgdmlhIHRoZSBEZWxl
dGUga2V5IGRvZXMgbm90IGNoYW5nZSB0aGUgRE9NLgorCitpbml0aWFsbHk6Cit8ICI8I3NlbGVj
dGlvbi1jYXJldD5kZWYiCisKK2FmdGVyIGF0dGVtcHRpbmcgdG8gdHlwZSAodHlwaW5nIGlzIGFs
bG93ZWQpOgorfCAiYWJjPCNzZWxlY3Rpb24tY2FyZXQ+ZGVmIgorCithZnRlciBhdHRlbXB0aW5n
IHRvIHR5cGUgKHR5cGluZyBpcyBwcm9oaWJpdGVkKToKK3wgImFiYzwjc2VsZWN0aW9uLWNhcmV0
PmRlZiIKKworYWZ0ZXIgYXR0ZW1wdGluZyB0byBkZWxldGUgKGRlbGV0aW5nIGlzIHByb2hpYml0
ZWQpOgorfCAiYWJjPCNzZWxlY3Rpb24tY2FyZXQ+ZGVmIgorCithZnRlciBhdHRlbXB0aW5nIHRv
IGRlbGV0ZSAoZGVsZXRpbmcgaXMgYWxsb3dlZCk6Cit8ICJhPCNzZWxlY3Rpb24tY2FyZXQ+ZWYi
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVu
dC10eXBpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2
ZW50LXR5cGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZmE1N2FlNjVhMDFmNGZkZGQ0Y2MwZWUzODcx
NWUyMDJkODdjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9i
ZWZvcmUtaW5wdXQtcHJldmVudC10eXBpbmcuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWRpdGFibGUiIGNvbnRlbnRl
ZGl0YWJsZSBvbmJlZm9yZWlucHV0PWhhbmRsZUJlZm9yZUlucHV0KGV2ZW50KT5kZWY8L2Rpdj4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIE1hcmt1
cC5kZXNjcmlwdGlvbihgVG8gbWFudWFsbHkgdGVzdCB0aGlzLCBlbnN1cmUgdGhhdCB0eXBpbmcg
b3IgYXR0ZW1wdGluZyB0byBkZWxldGUgdGV4dCB2aWEgdGhlIERlbGV0ZSBrZXkgZG9lcyBub3Qg
Y2hhbmdlIHRoZSBET00uYCk7CisKKyAgICAgICAgdmFyIGFsbG93VHlwaW5nID0gISF3aW5kb3cu
ZXZlbnRTZW5kZXI7CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghd2lu
ZG93LmludGVybmFscyB8fCAhd2luZG93LmV2ZW50U2VuZGVyIHx8ICF3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRJbnB1dEV2ZW50c0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjZWRpdGFibGUiKS5mb2N1cygpOworCisgICAgICAgICAgICBNYXJrdXAu
ZHVtcCgiZWRpdGFibGUiLCAiaW5pdGlhbGx5Iik7CisKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oImEiLCBbXSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJiIiwg
W10pOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiYyIsIFtdKTsKKyAgICAgICAg
ICAgIE1hcmt1cC5kdW1wKCJlZGl0YWJsZSIsICJhZnRlciBhdHRlbXB0aW5nIHRvIHR5cGUgKHR5
cGluZyBpcyBhbGxvd2VkKSIpOworCisgICAgICAgICAgICBhbGxvd1R5cGluZyA9IGZhbHNlOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZCIsIFtdKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmtleURvd24oImUiLCBbXSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCJmIiwgW10pOworICAgICAgICAgICAgTWFya3VwLmR1bXAoImVkaXRhYmxlIiwgImFmdGVy
IGF0dGVtcHRpbmcgdG8gdHlwZSAodHlwaW5nIGlzIHByb2hpYml0ZWQpIik7CisKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUZvcndhcmQiKTsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJhY2t3YXJkIik7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJEZWxldGVGb3J3YXJkIik7CisgICAgICAgICAgICBNYXJr
dXAuZHVtcCgiZWRpdGFibGUiLCAiYWZ0ZXIgYXR0ZW1wdGluZyB0byBkZWxldGUgKGRlbGV0aW5n
IGlzIHByb2hpYml0ZWQpIik7CisgICAgICAgICAgICBhbGxvd1R5cGluZyA9IHRydWU7CisKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJhY2t3YXJkIik7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJEZWxldGVGb3J3YXJkIik7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJEZWxldGVCYWNrd2FyZCIpOworICAgICAgICAg
ICAgTWFya3VwLmR1bXAoImVkaXRhYmxlIiwgImFmdGVyIGF0dGVtcHRpbmcgdG8gZGVsZXRlIChk
ZWxldGluZyBpcyBhbGxvd2VkKSIpOworICAgICAgICB9KSgpOworCisgICAgICAgIGZ1bmN0aW9u
IGhhbmRsZUJlZm9yZUlucHV0KGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYWxs
b3dUeXBpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoZXZl
bnQuaW5wdXRUeXBlID09PSAiaW5zZXJ0VGV4dCIgfHwgZXZlbnQuaW5wdXRUeXBlID09PSAiZGVs
ZXRlQ29udGVudEJhY2t3YXJkIiB8fCBldmVudC5pbnB1dFR5cGUgPT09ICJkZWxldGVDb250ZW50
Rm9yd2FyZCIpCisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgfQorICAgIDwvc2NyaXB0PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtcHJldmVudC11bmRvLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2ZW50LXVuZG8tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1ZTQ4NjllNTE0ZTQ1NDc1ZDZlNDE1MmYzMjljZTVlN2Rl
NDU0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iZWZvcmUt
aW5wdXQtcHJldmVudC11bmRvLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUbyBtYW51
YWxseSB0ZXN0IHRoaXMsIHR5cGUgc29tZSBpbnRvIHRoZSBpbnB1dCBmaWVsZCBiZWxvdyBhbmQg
dHJ5IHRvIHVuZG8uIFRoZSB2YWx1ZSBvZiB0aGUgdGV4dCBmaWVsZCBzaG91bGQgbm90IGNoYW5n
ZSBhZnRlciBhdHRlbXB0aW5nIHRvIHVuZG8uCisKK2luaXRpYWwgdmFsdWU6Cit8ICAgPHNoYWRv
dzpyb290PgorfCAgICAgPGRpdj4KK3wgICAgICAgY29udGVudGVkaXRhYmxlPSJwbGFpbnRleHQt
b25seSIKK3wgICAgICAgImFiYyIKKworYWZ0ZXIgcHJldmVudGVkIHVuZG86Cit8ICAgPHNoYWRv
dzpyb290PgorfCAgICAgPGRpdj4KK3wgICAgICAgY29udGVudGVkaXRhYmxlPSJwbGFpbnRleHQt
b25seSIKK3wgICAgICAgImFiYyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2JlZm9yZS1pbnB1dC1wcmV2ZW50LXVuZG8uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2JlZm9yZS1pbnB1dC1wcmV2ZW50LXVuZG8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWFjNmY2ZTY4YzY3
MGU5ZTFkZmRlNWY2YWJlZTJhN2ZkNzY5YjNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZlbnQtdW5kby5odG1sCkBAIC0wLDAgKzEs
MzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisKKzxib2R5PgorICAgIDxpbnB1dCBpZD0i
ZmllbGQiIG9uYmVmb3JlaW5wdXQ9aGFuZGxlQmVmb3JlSW5wdXQoZXZlbnQpPjwvaW5wdXQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgTWFya3VwLmRlc2NyaXB0aW9uKGBUbyBtYW51YWxs
eSB0ZXN0IHRoaXMsIHR5cGUgc29tZSBpbnRvIHRoZSBpbnB1dCBmaWVsZCBiZWxvdyBhbmQgdHJ5
IHRvIHVuZG8uIFRoZSB2YWx1ZSBvZiB0aGUgdGV4dCBmaWVsZCBzaG91bGQgbm90IGNoYW5nZSBh
ZnRlciBhdHRlbXB0aW5nIHRvIHVuZG8uYCk7CisKKyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIgfHwg
IXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldElucHV0RXZlbnRzRW5hYmxlZCh0cnVlKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNmaWVsZCIpLmZvY3VzKCk7CisKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImEiLCBbXSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5rZXlEb3duKCJiIiwgW10pOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
YyIsIFtdKTsKKyAgICAgICAgICAgIE1hcmt1cC5kdW1wKCJmaWVsZCIsICJpbml0aWFsIHZhbHVl
Iik7CisKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIlVuZG8iKTsKKyAgICAg
ICAgICAgIE1hcmt1cC5kdW1wKCJmaWVsZCIsICJhZnRlciBwcmV2ZW50ZWQgdW5kbyIpOworICAg
ICAgICB9KSgpOworCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUJlZm9yZUlucHV0KGV2ZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAiaGlzdG9yeVVu
ZG8iKQorICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIH0K
KyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlwaW5nLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5cGlu
Zy1leHBlY3RlZC50eHQKaW5kZXggNjdiYTE5MzMyZjBmOGNiOTQ0ZDBmNWI3ZWNjZWZiN2Q1NWZj
MmU0MC4uMmUyMGZjYzJiNTY4NTdlMDg3NjlmOTM0MGI1OTNhODhiOWIzMzA2YyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlwaW5n
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMt
ZmlyZWQtd2hlbi10eXBpbmctZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsNyBAQCBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiBURVNUIENPTVBMRVRFCiBGaXJlZCBgb25iZWZvcmVpbnB1
dGAhCiBQQVNTIGV2ZW50Ll9fbG9va3VwR2V0dGVyX18oJ2lucHV0VHlwZScpIGlzIGRlZmluZWQu
CitQQVNTIGV2ZW50Ll9fbG9va3VwR2V0dGVyX18oJ2RhdGEnKSBpcyBkZWZpbmVkLgogUEFTUyBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoZXZlbnQpIGlzIElucHV0RXZlbnQucHJvdG90eXBlCiBQQVNT
IGV2ZW50LnRhcmdldC5pZCBpcyBleHBlY3RlZFRhcmdldElECiBQQVNTIGV2ZW50LmJ1YmJsZXMg
aXMgdHJ1ZQpAQCAtMTAsNiArMTEsNyBAQCBQQVNTIGV2ZW50LmNhbmNlbGFibGUgaXMgdHJ1ZQog
UEFTUyBldmVudC5jb21wb3NlZCBpcyB0cnVlCiBGaXJlZCBgb25pbnB1dGAhCiBQQVNTIGV2ZW50
Ll9fbG9va3VwR2V0dGVyX18oJ2lucHV0VHlwZScpIGlzIGRlZmluZWQuCitQQVNTIGV2ZW50Ll9f
bG9va3VwR2V0dGVyX18oJ2RhdGEnKSBpcyBkZWZpbmVkLgogUEFTUyBPYmplY3QuZ2V0UHJvdG90
eXBlT2YoZXZlbnQpIGlzIElucHV0RXZlbnQucHJvdG90eXBlCiBQQVNTIGV2ZW50LnRhcmdldC5p
ZCBpcyBleHBlY3RlZFRhcmdldElECiBQQVNTIGV2ZW50LmJ1YmJsZXMgaXMgdHJ1ZQpAQCAtMTcs
NiArMTksNyBAQCBQQVNTIGV2ZW50LmNhbmNlbGFibGUgaXMgZmFsc2UKIFBBU1MgZXZlbnQuY29t
cG9zZWQgaXMgdHJ1ZQogRmlyZWQgYG9uYmVmb3JlaW5wdXRgIQogUEFTUyBldmVudC5fX2xvb2t1
cEdldHRlcl9fKCdpbnB1dFR5cGUnKSBpcyBkZWZpbmVkLgorUEFTUyBldmVudC5fX2xvb2t1cEdl
dHRlcl9fKCdkYXRhJykgaXMgZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKGV2
ZW50KSBpcyBJbnB1dEV2ZW50LnByb3RvdHlwZQogUEFTUyBldmVudC50YXJnZXQuaWQgaXMgZXhw
ZWN0ZWRUYXJnZXRJRAogUEFTUyBldmVudC5idWJibGVzIGlzIHRydWUKQEAgLTI0LDYgKzI3LDcg
QEAgUEFTUyBldmVudC5jYW5jZWxhYmxlIGlzIHRydWUKIFBBU1MgZXZlbnQuY29tcG9zZWQgaXMg
dHJ1ZQogRmlyZWQgYG9uaW5wdXRgIQogUEFTUyBldmVudC5fX2xvb2t1cEdldHRlcl9fKCdpbnB1
dFR5cGUnKSBpcyBkZWZpbmVkLgorUEFTUyBldmVudC5fX2xvb2t1cEdldHRlcl9fKCdkYXRhJykg
aXMgZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKGV2ZW50KSBpcyBJbnB1dEV2
ZW50LnByb3RvdHlwZQogUEFTUyBldmVudC50YXJnZXQuaWQgaXMgZXhwZWN0ZWRUYXJnZXRJRAog
UEFTUyBldmVudC5idWJibGVzIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5cGluZy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlwaW5nLmh0bWwKaW5kZXggYjQ2
ZjYxNDdjNDc4N2YyNWM3YmI5ZmIwMmEwZjcxNmFmNGI0YzE4Yy4uNjIwMzg2MDExM2E2N2IxMDFm
MTJkMTU2YThmYjdkYWU4ZDBlOWZhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlwaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlwaW5nLmh0bWwKQEAgLTM1LDYg
KzM1LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgZGVidWcoIkZpcmVkIGBvbmlucHV0YCEi
KTsKICAgICAgICAgICAgIHNob3VsZEJlRGVmaW5lZCgiZXZlbnQuX19sb29rdXBHZXR0ZXJfXygn
aW5wdXRUeXBlJykiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRGVmaW5lZCgiZXZlbnQuX19sb29r
dXBHZXR0ZXJfXygnZGF0YScpIik7CiAgICAgICAgICAgICBzaG91bGRCZSgiT2JqZWN0LmdldFBy
b3RvdHlwZU9mKGV2ZW50KSIsICJJbnB1dEV2ZW50LnByb3RvdHlwZSIpOwogICAgICAgICAgICAg
c2hvdWxkQmUoImV2ZW50LnRhcmdldC5pZCIsICJleHBlY3RlZFRhcmdldElEIik7CiAgICAgICAg
ICAgICBzaG91bGRCZSgiZXZlbnQuYnViYmxlcyIsICJ0cnVlIik7CkBAIC00Niw2ICs0Nyw3IEBA
CiAgICAgICAgIHsKICAgICAgICAgICAgIGRlYnVnKCJGaXJlZCBgb25iZWZvcmVpbnB1dGAhIik7
CiAgICAgICAgICAgICBzaG91bGRCZURlZmluZWQoImV2ZW50Ll9fbG9va3VwR2V0dGVyX18oJ2lu
cHV0VHlwZScpIik7CisgICAgICAgICAgICBzaG91bGRCZURlZmluZWQoImV2ZW50Ll9fbG9va3Vw
R2V0dGVyX18oJ2RhdGEnKSIpOwogICAgICAgICAgICAgc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90
b3R5cGVPZihldmVudCkiLCAiSW5wdXRFdmVudC5wcm90b3R5cGUiKTsKICAgICAgICAgICAgIHNo
b3VsZEJlKCJldmVudC50YXJnZXQuaWQiLCAiZXhwZWN0ZWRUYXJnZXRJRCIpOwogICAgICAgICAg
ICAgc2hvdWxkQmUoImV2ZW50LmJ1YmJsZXMiLCAidHJ1ZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLWRhdGEtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLWRhdGEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiYmY0YTI5NjllYTZjMWUwMTEyODVlMWQ5Zjg0ZTdjNTNhNGI2MWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMt
cGFzdGUtZGF0YS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVG8gbWFudWFsbHkgdGVz
dCB0aGlzLCBjb3B5IHRoZSB3b3JkICd0ZXN0aW5nJyBhbmQgcGFzdGUgaW50byBib3RoIHRoZSB0
ZXh0YXJlYSBhbmQgY29udGVudGVkaXRhYmxlLiBWZXJpZnkgdGhhdCB0d28gUEFTUyBtZXNzYWdl
cyBhcmUgcHJpbnRlZCBvdXQgcGVyIHBhc3RlIChvbmUgZm9yIHRoZSBiZWZvcmVpbnB1dCwgdGhl
IG90aGVyIGZvciBpbnB1dCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitwYXN0
aW5nICd0ZXN0aW5nJyBpbiB0aGUgcGxhaW4gdGV4dGFyZWEuIGRhdGEgc2hvdWxkIGJlIG5vbm51
bGwKK1BBU1MgZXZlbnQuZGF0YSBpcyAndGVzdGluZycKK1BBU1MgZXZlbnQuZGF0YSBpcyAndGVz
dGluZycKK3Bhc3RpbmcgJ3Rlc3RpbmcnIGluIHRoZSByaWNoIGNvbnRlbnRlZGl0YWJsZS4gZGF0
YSBzaG91bGQgYmUgbnVsbAorUEFTUyBldmVudC5kYXRhIGlzIG51bGwKK1BBU1MgZXZlbnQuZGF0
YSBpcyBudWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwordGVzdGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQt
ZXZlbnRzLXBhc3RlLWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2
ZW50cy1wYXN0ZS1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZjNjAyOTQwZGZmZDA2ZDk0ZTBjYTAw
NmI3MjBhODY2MThlMjJhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2lucHV0LWV2ZW50cy1wYXN0ZS1kYXRhLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHRleHRh
cmVhIG9uZm9jdXM9aGFuZGxlRm9jdXMoKSBpZD0icGxhaW4iIG9uYmVmb3JlaW5wdXQ9aGFuZGxl
UGxhaW5JbnB1dChldmVudCx0cnVlKSBvbmlucHV0PWhhbmRsZVBsYWluSW5wdXQoZXZlbnQsZmFs
c2UpPnRlc3Rpbmc8L3RleHRhcmVhPgorICAgIDxkaXYgaWQ9InJpY2giIGNvbnRlbnRlZGl0YWJs
ZSBvbmJlZm9yZWlucHV0PWhhbmRsZVJpY2hJbnB1dChldmVudCx0cnVlKSBvbmlucHV0PWhhbmRs
ZVJpY2hJbnB1dChldmVudCxmYWxzZSk+PC9kaXY+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICAgICAgICBkZXNjcmlwdGlvbihgVG8gbWFudWFsbHkgdGVzdCB0aGlzLCBj
b3B5IHRoZSB3b3JkICd0ZXN0aW5nJyBhbmQgcGFzdGUgaW50byBib3RoIHRoZSB0ZXh0YXJlYSBh
bmQgY29udGVudGVkaXRhYmxlLiBWZXJpZnkgdGhhdCB0d28gUEFTUyBtZXNzYWdlcyBhcmUgcHJp
bnRlZCBvdXQgcGVyIHBhc3RlIChvbmUgZm9yIHRoZSBiZWZvcmVpbnB1dCwgdGhlIG90aGVyIGZv
ciBpbnB1dCkuYCk7CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghd2lu
ZG93LmludGVybmFscyB8fCAhd2luZG93LmV2ZW50U2VuZGVyIHx8ICF3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRJbnB1dEV2ZW50c0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCIjcGxhaW4iKS5mb2N1cygpOworICAgICAgICB9KSgpOworCisgICAgICAg
IGZ1bmN0aW9uIGhhbmRsZUZvY3VzKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcigiI3BsYWluIikuc2VsZWN0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LmV4ZWNDb21tYW5kKCJDdXQiKTsKKworICAgICAgICAgICAgZGVidWcoInBhc3RpbmcgJ3Rlc3Rp
bmcnIGluIHRoZSBwbGFpbiB0ZXh0YXJlYS4gZGF0YSBzaG91bGQgYmUgbm9ubnVsbCIpOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiUGFzdGUiKTsKKworICAgICAgICAgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3JpY2giKS5mb2N1cygpOworICAgICAgICAgICAgZGVi
dWcoInBhc3RpbmcgJ3Rlc3RpbmcnIGluIHRoZSByaWNoIGNvbnRlbnRlZGl0YWJsZS4gZGF0YSBz
aG91bGQgYmUgbnVsbCIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiUGFz
dGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVJpY2hJbnB1dChldmVu
dCwgaXNiZWZvcmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUg
PT09ICJpbnNlcnRGcm9tUGFzdGUiKQorICAgICAgICAgICAgICAgIHNob3VsZEJlTnVsbCgiZXZl
bnQuZGF0YSIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlUGxhaW5JbnB1
dChldmVudCwgaXNiZWZvcmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5pbnB1
dFR5cGUgPT09ICJpbnNlcnRGcm9tUGFzdGUiKQorICAgICAgICAgICAgICAgIHNob3VsZEJlKCJl
dmVudC5kYXRhIiwgIid0ZXN0aW5nJyIpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9p
bnB1dC1ldmVudHMtdHlwaW5nLWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW5wdXQtZXZlbnRzLXR5cGluZy1kYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
N2JkMjM5NDNlNTU3MDA1NmMxY2VmMDEyMGQ1YWYyZWExZjcyNWFmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXR5cGluZy1kYXRhLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitUbyBtYW51YWxseSB0ZXN0IHRoaXMsIHR5cGUgaW4g
Ym90aCB0aGUgcmljaCBjb250ZW50ZWRpdGFibGUgYW5kIHBsYWluIHRleHRhcmVhIGFuZC9vciBp
bnNlcnQgY2FuZGlkYXRlcy9hdXRvY29ycmVjdGlvbnMuIEJvdGggZWxlbWVudHMgc2hvdWxkIGhh
dmUgZGF0YSB3aGVuIHR5cGluZyBub3JtYWxseSwgYnV0IG9ubHkgdGhlIHBsYWluIHRleHRhcmVh
IHNob3VsZCBoYXZlIGRhdGEgd2hlbiBpbnNlcnRpbmcgYSByZXBsYWNlbWVudC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BsYWluIHRleHRhcmVhIHJlY2VpdmVkICdiZWZvcmVp
bnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ2gnCitQbGFpbiB0
ZXh0YXJlYSByZWNlaXZlZCAnaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5k
IGRhdGE6ICdoJworUGxhaW4gdGV4dGFyZWEgcmVjZWl2ZWQgJ2JlZm9yZWlucHV0JyB3aXRoIGlu
cHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAnZScKK1BsYWluIHRleHRhcmVhIHJlY2Vp
dmVkICdpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ2UnCitQ
bGFpbiB0ZXh0YXJlYSByZWNlaXZlZCAnYmVmb3JlaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5z
ZXJ0VGV4dCcgYW5kIGRhdGE6ICdsJworUGxhaW4gdGV4dGFyZWEgcmVjZWl2ZWQgJ2lucHV0JyB3
aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAnbCcKK1BsYWluIHRleHRhcmVh
IHJlY2VpdmVkICdiZWZvcmVpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQg
ZGF0YTogJ28nCitQbGFpbiB0ZXh0YXJlYSByZWNlaXZlZCAnaW5wdXQnIHdpdGggaW5wdXRUeXBl
OiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdvJworUGxhaW4gdGV4dGFyZWEgcmVjZWl2ZWQgJ2Jl
Zm9yZWlucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFJlcGxhY2VtZW50VGV4dCcgYW5kIGRh
dGE6ICdoZWxsbycKK1BsYWluIHRleHRhcmVhIHJlY2VpdmVkICdpbnB1dCcgd2l0aCBpbnB1dFR5
cGU6ICdpbnNlcnRSZXBsYWNlbWVudFRleHQnIGFuZCBkYXRhOiAnaGVsbG8nCitSaWNoIGNvbnRl
bnRlZGl0YWJsZSByZWNlaXZlZCAnYmVmb3JlaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0
VGV4dCcgYW5kIGRhdGE6ICdoJworUmljaCBjb250ZW50ZWRpdGFibGUgcmVjZWl2ZWQgJ2lucHV0
JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAnaCcKK1JpY2ggY29udGVu
dGVkaXRhYmxlIHJlY2VpdmVkICdiZWZvcmVpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRU
ZXh0JyBhbmQgZGF0YTogJ2UnCitSaWNoIGNvbnRlbnRlZGl0YWJsZSByZWNlaXZlZCAnaW5wdXQn
IHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdlJworUmljaCBjb250ZW50
ZWRpdGFibGUgcmVjZWl2ZWQgJ2JlZm9yZWlucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRl
eHQnIGFuZCBkYXRhOiAnbCcKK1JpY2ggY29udGVudGVkaXRhYmxlIHJlY2VpdmVkICdpbnB1dCcg
d2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ2wnCitSaWNoIGNvbnRlbnRl
ZGl0YWJsZSByZWNlaXZlZCAnYmVmb3JlaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4
dCcgYW5kIGRhdGE6ICdvJworUmljaCBjb250ZW50ZWRpdGFibGUgcmVjZWl2ZWQgJ2lucHV0JyB3
aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAnbycKK1JpY2ggY29udGVudGVk
aXRhYmxlIHJlY2VpdmVkICdiZWZvcmVpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRSZXBs
YWNlbWVudFRleHQnIGFuZCBkYXRhOiAnbnVsbCcKK1JpY2ggY29udGVudGVkaXRhYmxlIHJlY2Vp
dmVkICdpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRSZXBsYWNlbWVudFRleHQnIGFuZCBk
YXRhOiAnbnVsbCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCitoZWxsbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQt
ZXZlbnRzLXR5cGluZy1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1l
dmVudHMtdHlwaW5nLWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjc5OWI0ZmJhMmIzNDdjYjk3NDc5
NmQzN2FmOWY4ZDY4YjFkNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvaW5wdXQtZXZlbnRzLXR5cGluZy1kYXRhLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHRl
eHRhcmVhIGlkPSJwbGFpbiIgb25iZWZvcmVpbnB1dD1oYW5kbGVQbGFpbklucHV0KGV2ZW50KSBv
bmlucHV0PWhhbmRsZVBsYWluSW5wdXQoZXZlbnQpPjwvdGV4dGFyZWE+CisgICAgPGRpdiBpZD0i
cmljaCIgY29udGVudGVkaXRhYmxlIG9uYmVmb3JlaW5wdXQ9aGFuZGxlUmljaElucHV0KGV2ZW50
KSBvbmlucHV0PWhhbmRsZVJpY2hJbnB1dChldmVudCk+PC9kaXY+CisgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBkZXNjcmlwdGlvbihgVG8gbWFudWFsbHkgdGVz
dCB0aGlzLCB0eXBlIGluIGJvdGggdGhlIHJpY2ggY29udGVudGVkaXRhYmxlIGFuZCBwbGFpbiB0
ZXh0YXJlYSBhbmQvb3IgaW5zZXJ0IGNhbmRpZGF0ZXMvYXV0b2NvcnJlY3Rpb25zLgorICAgICAg
ICAgICAgQm90aCBlbGVtZW50cyBzaG91bGQgaGF2ZSBkYXRhIHdoZW4gdHlwaW5nIG5vcm1hbGx5
LCBidXQgb25seSB0aGUgcGxhaW4gdGV4dGFyZWEgc2hvdWxkIGhhdmUgZGF0YSB3aGVuIGluc2Vy
dGluZyBhIHJlcGxhY2VtZW50LmApOworICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMgfHwgIXdpbmRvdy5ldmVudFNlbmRlciB8fCAhd2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVudHNFbmFibGVkKHRydWUpOworCisgICAgICAgICAg
ICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGxhaW4iKS5mb2N1cygpOworICAgICAgICAgICAg
c2ltdWxhdGVUeXBpbmdXaXRoUmVwbGFjZW1lbnQoZmFsc2UpOworCisgICAgICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCIjcmljaCIpLmZvY3VzKCk7CisgICAgICAgICAgICBzaW11bGF0
ZVR5cGluZ1dpdGhSZXBsYWNlbWVudCh0cnVlKTsKKyAgICAgICAgfSkoKTsKKworICAgICAgICBm
dW5jdGlvbiBzaW11bGF0ZVR5cGluZ1dpdGhSZXBsYWNlbWVudChpc1JpY2gpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImgiLCBbXSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5rZXlEb3duKCJlIiwgW10pOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigibCIsIFtdKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oIm8iLCBbXSk7
CisgICAgICAgICAgICBpbnRlcm5hbHMuaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoImhlbGxvIiwg
MCwgNCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYW5kbGVSaWNoSW5wdXQoZXZl
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICJpbnNl
cnRUZXh0IiB8fCBldmVudC5pbnB1dFR5cGUgPT09ICJpbnNlcnRSZXBsYWNlbWVudFRleHQiKQor
ICAgICAgICAgICAgICAgIGRlYnVnKGBSaWNoIGNvbnRlbnRlZGl0YWJsZSByZWNlaXZlZCAnJHtl
dmVudC50eXBlfScgd2l0aCBpbnB1dFR5cGU6ICcke2V2ZW50LmlucHV0VHlwZX0nIGFuZCBkYXRh
OiAnJHtldmVudC5kYXRhfSdgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGhhbmRs
ZVBsYWluSW5wdXQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5pbnB1
dFR5cGUgPT09ICJpbnNlcnRUZXh0IiB8fCBldmVudC5pbnB1dFR5cGUgPT09ICJpbnNlcnRSZXBs
YWNlbWVudFRleHQiKQorICAgICAgICAgICAgICAgIGRlYnVnKGBQbGFpbiB0ZXh0YXJlYSByZWNl
aXZlZCAnJHtldmVudC50eXBlfScgd2l0aCBpbnB1dFR5cGU6ICcke2V2ZW50LmlucHV0VHlwZX0n
IGFuZCBkYXRhOiAnJHtldmVudC5kYXRhfSdgKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDgxMTQ2MzM1NDA1ZmEwOThmZDg3OWJm
Yjg0OGMyODQ2ODJmNzIyNzkuLjhhYzQzMGI5MmJjYmRmMWYyNDU1NjVjMmMwZDZmNDdkNjczMGE4
MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTExOTgsOSArMTE5OCwxNiBAQCBmYXN0L2V2ZW50cy9mcmFtZS10YWIt
Zm9jdXMuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50
cy0wMDEuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvaW5wdXRUZXh0LW5ldmVyLWZpcmVk
LW9uLWtleWRvd24tY2FuY2VsLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2
ZW50cy1maXJlZC13aGVuLXR5cGluZy5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9pbnB1
dC1ldmVudHMtcGFzdGUtZGF0YS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9pbnB1dC1l
dmVudHMtdHlwaW5nLWRhdGEuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvYmVmb3JlLWlu
cHV0LWV2ZW50cy1wcmV2ZW50LWRlZmF1bHQuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMv
YmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50LWRlZmF1bHQtaW4tdGV4dGZpZWxkLmh0bWwgWyBG
YWlsdXJlIF0KIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1ldmVudHMtZGlmZmVyZW50LXN0YXJ0
LWVuZC1lbGVtZW50cy5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQt
cHJldmVudC1iaXUuaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXBy
ZXZlbnQtY3V0Lmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2
ZW50LXBhc3RlLmh0bWwgWyBGYWlsdXJlIF0KK2Zhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1wcmV2
ZW50LXVuZG8uaHRtbCBbIEZhaWx1cmUgXQorZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LXByZXZl
bnQtdHlwaW5nLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2tleS1ldmVudHMtaW4taW5w
dXQtYnV0dG9uLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2tleWRvd24tMS5odG1sIFsg
RmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9rZXlkb3duLWxlZnRyaWdodC1rZXlzLmh0bWwgWyBGYWls
dXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291060</attachid>
            <date>2016-10-09 21:53:06 -0700</date>
            <delta_ts>2016-10-10 01:32:31 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-163113-20161009214946.patch</filename>
            <type>text/plain</type>
            <size>38203</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRhZjViNWE3ZGJjODRh
ZDhmOGU3MDhkNTk5NTU1ZjU0MjRkNDU0Yi4uOGQ1NzZhYWRiNWM2Zjc4MjY1MTFlMjJhYzQ0ZDkw
MDQ3MmM4YTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgzIEBACiAyMDE2LTEwLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFN1cHBvcnQgSW5w
dXRFdmVudC5kYXRhIGZvciB0aGUgbmV3IElucHV0RXZlbnQgc3BlYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTEzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yODY4MTkzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2VzIElucHV0RXZlbnQuZGF0YSwgYSBzdHJpbmcgYXR0cmlidXRl
IHRoYXQsIGlmIG5vbi1udWxsLCBpbmRpY2F0ZXMgdGhlIHRleHQgdG8gYmUgaW5zZXJ0ZWQgYnkg
YW4gaW5wdXQKKyAgICAgICAgZXZlbnQuIEZvciB0ZXh0IGFyZWFzIGFuZCB0ZXh0IGlucHV0cywg
dGhlICdpbnNlcnRUZXh0JywgJ2luc2VydEZyb21QYXN0ZScsICdpbnNlcnRGcm9tRHJvcCcsIGFu
ZAorICAgICAgICAnaW5zZXJ0UmVwbGFjZW1lbnRUZXh0JyBpbnB1dCB0eXBlcyBzaG91bGQgY2F1
c2Ugc3Vic2VxdWVudCBgaW5wdXRgIGFuZCBgYmVmb3JlaW5wdXRgIGV2ZW50cyB0byBoYXZlIG5v
bi1udWxsCisgICAgICAgIGRhdGEuIEhvd2V2ZXIsIGZvciBjb250ZW50ZWRpdGFibGUgYXJlYXMs
IG9ubHkgJ2luc2VydFRleHQnIGxlYWRzIHRvIGhhdmluZyBkYXRhIGluIHJlc3VsdGluZyBJbnB1
dEV2ZW50cy4KKworICAgICAgICBUbyBpbXBsZW1lbnQgdGhpcywgd2UgaW50cm9kdWNlIGEgbmV3
IHZpcnR1YWwgbWV0aG9kLCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEsIHdo
aWNoIGdpdmVzCisgICAgICAgIGNvbXBvc2l0ZSBlZGl0aW5nIGNvbW1hbmRzIHRoZSBjaGFuY2Ug
dG8gdmVuZCBhIGRhdGEgc3RyaW5nIGZvciBpbnB1dCBldmVudHMgdGhleSBtaWdodCBmaXJlIChi
eSBkZWZhdWx0LCB0aGlzCisgICAgICAgIGlzIG51bGwpLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtZGF0YS5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2V2ZW50cy9pbnB1dC1ldmVudHMtdHlwaW5nLWRhdGEuaHRtbAorCisgICAgICAgICogZG9tL0lu
cHV0RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFdmVudDo6SW5wdXRFdmVudCk6
CisgICAgICAgICogZG9tL0lucHV0RXZlbnQuaDoKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5p
ZGw6CisKKyAgICAgICAgQ3VycmVudGx5LCBvdXIgSW5wdXRFdmVudEluaXQgc3RydWN0IGlzIHdy
b25nLiBBY2NvcmRpbmcgdG8gdGhlIFVJLUV2ZW50cyBzcGVjIGF0IHd3dy53My5vcmcvVFIvdWll
dmVudHMvLCB0aGUKKyAgICAgICAgaW5pdCBzdHJ1Y3QgZm9yIGFuIElucHV0RXZlbnQgc2hvdWxk
IGNvbnRhaW4gYSBkYXRhIHN0cmluZyAoYWRkZWQgaW4gdGhpcyBwYXRjaCkgYXMgd2VsbCBhcyBh
biBpc0NvbXBvc2luZyBmbGFnCisgICAgICAgICh0byBiZSBhZGRlZCBpbiBhIGZ1dHVyZSBwYXRj
aCBhbG9uZyB3aXRoIGNvbXBvc2l0aW9uIHN1cHBvcnQpLiBXaGlsZSBhZGRpbmcgc3VwcG9ydCBm
b3IgdGhlIGRhdGEgYXR0cmlidXRlLCB3ZQorICAgICAgICB0d2VhayB0aGUgSW5wdXRFdmVudCBJ
REwgYW5kIGhlYWRlcnMgc2xpZ2h0bHkgdG8gYWRqdXN0IGZvciB0aGlzLgorCisgICAgICAgICog
ZG9tL0lucHV0RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFdmVudDo6SW5wdXRF
dmVudCk6CisgICAgICAgICogZG9tL0lucHV0RXZlbnQuaDoKKyAgICAgICAgKiBkb20vSW5wdXRF
dmVudC5pZGw6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZGlzcGF0Y2hJbnB1dEV2ZW50KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAq
IGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxkU3RvcENhcmV0QmxpbmtpbmcpOiBEZWxldGVkLgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdENv
bW1hbmQ6OmlzRWRpdGluZ1RleHRBcmVhT3JUZXh0SW5wdXQpOgorICAgICAgICAqIGVkaXRpbmcv
RWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlz
cGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaElucHV0
RXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2lsbEFwcGx5RWRpdGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6d2lsbFVuYXBwbHlFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6dW5hcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndpbGxSZWFw
cGx5RWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUpOgor
ICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEp
OgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmg6CisgICAg
ICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL1Nw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6VHlwaW5nQ29t
bWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjp3aWxsQWRkVHlwaW5nVG9PcGVuQ29t
bWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0UnVuV2l0
aG91dE5ld2xpbmVzKToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlz
aWJsZVNlbGVjdGlvbjo6aXNJblRleHRBcmVhT3JUZXh0SW5wdXQpOgorCisgICAgICAgIEludHJv
ZHVjZXMgYSBoZWxwZXIgdXNlZCBieSBjb21wb3NpdGUgZWRpdCBjb21tYW5kcyB0byBkZXRlcm1p
bmUgd2hldGhlciB3ZSBhcmUgZWRpdGluZyBhIHRleHQgZmllbGQgb3IgdGV4dAorICAgICAgICBh
cmVhLiBVc2VzIHRoZSBzdGFydCBwb3NpdGlvbiBpbiBjb21wdXRpbmcgdGhpcy4KKworICAgICAg
ICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oOgorCisyMDE2LTEwLTA5ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFN1cHBvcnQgSW5wdXRFdmVu
dC5pbnB1dFR5cGUgZm9yIHRoZSBuZXcgSW5wdXRFdmVudCBzcGVjCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwMjUKICAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI4NjU4MDkyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3BwCmluZGV4IGU4N2IzMWZi
MDQ5MGNmMWU5MzgwYzlmYzM5M2Q2YTc5ZGVjOTc2NDEuLjEwOWJkYWU5NTgzYmQ4NDNkNzVmOTEy
NWEyNmM4MjY5ZWFkYWRiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKQEAgLTM0LDE1
ICszNCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlucHV0RXZlbnQ6OklucHV0RXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBET01XaW5kb3cqIHZpZXcsIGludCBk
ZXRhaWwpCitJbnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgRE9NV2luZG93KiB2aWV3LCBTdHJpbmcgZGF0YSwgaW50IGRldGFpbCkKICAgICA6IFVJ
RXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKICAg
ICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKKyAgICAsIG1fZGF0YShkYXRhKQogewogfQogCiBJ
bnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBJbnB1dEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwg
aW5pdGlhbGl6ZXIpCi0gICAgLCBtX2lucHV0VHlwZShpbml0aWFsaXplci5pbnB1dFR5cGUpCisg
ICAgLCBtX2lucHV0VHlwZShlbXB0eVN0cmluZygpKQorICAgICwgbV9kYXRhKGluaXRpYWxpemVy
LmRhdGEpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCmluZGV4IGQwMDkzNDJmN2U0OTI4
NTBlOGNmZTRlZTcxNmFhYjc3ZmI1YjEyNjAuLjgzMTk3YmU2OGU4NTllN2E5YzQ4Yjc2NTdjNzgz
NWYyNjYzYzQ4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaApAQCAtMzMsMTQgKzMzLDE1IEBA
IGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKIAogc3RydWN0IElucHV0RXZl
bnRJbml0IDogcHVibGljIFVJRXZlbnRJbml0IHsKLSAgICBTdHJpbmcgaW5wdXRUeXBlOworICAg
IFN0cmluZyBkYXRhOworICAgIGJvb2wgaXNDb21wb3Npbmc7CiB9OwogCiBjbGFzcyBJbnB1dEV2
ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5w
dXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93
KiB2aWV3LCBpbnQgZGV0YWlsKQorICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBTdHJpbmcgZGF0
YSA9IFN0cmluZygpLCBpbnQgZGV0YWlsID0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IElucHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2Fu
Y2VsYWJsZSwgdmlldywgZGV0YWlsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
cHV0RXZlbnQoZXZlbnRUeXBlLCBpbnB1dFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmll
dywgZGF0YSwgZGV0YWlsKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxJbnB1dEV2ZW50PiBj
cmVhdGVGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IElucHV0RXZl
bnRJbml0JiBpbml0aWFsaXplcikKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnB1dEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CiAgICAg
fQogCi0gICAgSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdp
bmRvdyosIGludCBkZXRhaWwpOworICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBET01XaW5kb3cqLCBTdHJpbmcgZGF0YSwgaW50IGRldGFpbCk7CiAgICAgSW5w
dXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgSW5wdXRFdmVudElu
aXQmKTsKIAogICAgIHZpcnR1YWwgfklucHV0RXZlbnQoKSB7IH0KQEAgLTU2LDkgKzU3LDExIEBA
IHB1YmxpYzoKICAgICBib29sIGlzSW5wdXRFdmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIElucHV0RXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAgICAgU3RyaW5nIGlucHV0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRUeXBlOyB9CisgICAgU3RyaW5nIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGE7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pbnB1dFR5cGU7
CisgICAgU3RyaW5nIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbnB1dEV2ZW50LmlkbAppbmRleCBhNDIyYjk3ZWRjMTQ0YTJlMWI3NWYzNzkxMjdhMWY2
ODg5MzQ4YjNjLi5iNGEwNjRkMTQwMWU3MDYzMzViY2E4ZWE4ZTgzMWE3MWU0Zjg4NjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0lucHV0RXZlbnQuaWRsCkBAIC0yNiw1ICsyNiw2IEBACiBbCiAgICAgQ29uc3Ry
dWN0b3JUZW1wbGF0ZT1FdmVudAogXSBpbnRlcmZhY2UgSW5wdXRFdmVudCA6IFVJRXZlbnQgewot
ICAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBpbnB1dFR5cGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbnB1
dFR5cGU7CisgICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nPyBkYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmMGE5OGQ0Mjhl
MzU4YzMzMmU0MzRiYjQxZGFiNWM4N2QzYmQyNGNhLi4xN2FiNmU0NDY5ZTRhYzg4ZjlmYTkyMjlj
ZWNjMWRlZTlmODIzMmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMTk4LDExICsyMTk4LDExIEBA
IGJvb2wgTm9kZTo6ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCiAgICAgcmV0dXJuICFiZWZvcmVMb2FkRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0K
IAotdm9pZCBOb2RlOjpkaXNwYXRjaElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUp
Cit2b2lkIE5vZGU6OmRpc3BhdGNoSW5wdXRFdmVudChjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwg
U3RyaW5nIGRhdGEpCiB7CiAgICAgYXV0byogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdz
KCk7CiAgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5pbnB1dEV2ZW50c0VuYWJsZWQoKSkK
LSAgICAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChJbnB1dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVs
dFZpZXcoKSwgMCkpOworICAgICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KElucHV0RXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVlLCBmYWxzZSwgZG9j
dW1lbnQoKS5kZWZhdWx0VmlldygpLCBkYXRhKSk7CiAgICAgZWxzZQogICAgICAgICBkaXNwYXRj
aFNjb3BlZEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlucHV0RXZlbnQsIHRydWUs
IGZhbHNlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAxMDdmZWZlMTQzN2QwNjA1NjBiYzMxY2M1OWQx
ODNjMDBkNWVmZjA5Li43YjdlZDE0NTM1ZWEzODgzOGZkZDA5MzM4MGE5ZWFhYmEyNDY5YmQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTUyNSw3ICs1MjUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpc3Bh
dGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUs
IFN0cmluZyBkYXRhID0gU3RyaW5nKCkpOwogCiAgICAgLy8gUGVyZm9ybSB0aGUgZGVmYXVsdCBh
Y3Rpb24gZm9yIGFuIGV2ZW50LgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmgKaW5kZXggMGYyODdhNDExNTJlZWRhMmE1YTQ5MzNjYTQ4MzQzYmVlYjY4NzY4My4uYTI3ZjI4
OTBmNzMwZjA1MDZmMGJhZWExNmUxMjNiYzQzZDYxMGE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApAQCAtMTEzLDcgKzExMyw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Io
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25J
bmRpY2F0b3IoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BDYXJldEJsaW5raW5n
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgU3RyaW5nIGlucHV0RXZl
bnRUeXBlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGlucHV0RXZlbnREYXRhKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENv
bXBvc2l0ZUVkaXRDb21tYW5kKERvY3VtZW50JiwgRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb25VbnNw
ZWNpZmllZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCmluZGV4IDdhZjU4
ZjlmYmNiMzU0NjA3MDg4MDg2Y2ZmNDQ2MGEyZmRlMDMyOWMuLjg0MDkwMmZmZDEzM2E1MDBmZTc2
ZjAyNDhiZWZlNmM4N2U4NjY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
Y3BwCkBAIC0xNDAsNiArMTQwLDE0IEBAIHN0YXRpYyBpbmxpbmUgRWRpdENvbW1hbmRDb21wb3Np
dGlvbiogY29tcG9zaXRpb25JZlBvc3NpYmxlKEVkaXRDb21tYW5kKiBjb21tYW5kCiAgICAgcmV0
dXJuIHRvQ29tcG9zaXRlRWRpdENvbW1hbmQoY29tbWFuZCktPmNvbXBvc2l0aW9uKCk7CiB9CiAK
K2Jvb2wgRWRpdENvbW1hbmQ6OmlzRWRpdGluZ1RleHRBcmVhT3JUZXh0SW5wdXQoKSBjb25zdAor
eworICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJl
dHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblRleHRBcmVhT3JUZXh0SW5w
dXQoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFZGl0Q29tbWFuZDo6c2V0U3Rh
cnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgcykKIHsKICAgICBmb3IgKEVk
aXRDb21tYW5kKiBjbWQgPSB0aGlzOyA7IGNtZCA9IGNtZC0+bV9wYXJlbnQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdENvbW1hbmQuaAppbmRleCAwNDg1MGRmYWVmOGM2MDg1YjE4ODg1Y2Y5MDhk
OGFjMzhkZDVjMDk0Li4wMWEzMWE3M2Q5YTE5MTY4YzhmOTIxMGZiMzc0NTUwZGM2NDkxMjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCkBAIC03Miw2ICs3Miw4IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHNldFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVuZGluZ1NlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJik7CiAKKyAgICBib29sIGlzRWRpdGluZ1RleHRBcmVhT3JUZXh0SW5w
dXQoKSBjb25zdDsKKwogICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihB
WFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBwb3N0VGV4dFN0YXRlQ2hh
bmdlTm90aWZpY2F0aW9uKEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM1MGU1YmEw
YjdhMmFlZmI4NTMyMjI1Y2FhMzUyNGYzMDJiNmYxODAuLjY3MDEzOTUzMDc3YWI1OTg3ZmE3MjI5
ZjM2ZmMzNDAzMTQ2M2Y1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTExMSwx
MyArMTExLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgZGlzcGF0
Y2hCZWZvcmVJbnB1dEV2ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW5wdXRUeXBlKQorc3RhdGljIGJvb2wgZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50KEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBlLCBTdHJpbmcgZGF0YSA9IFN0
cmluZygpKQogewogICAgIGF1dG8qIHNldHRpbmdzID0gZWxlbWVudC5kb2N1bWVudCgpLnNldHRp
bmdzKCk7CiAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmlucHV0RXZlbnRzRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmJlZm9yZWlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwg
dHJ1ZSwgZWxlbWVudC5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIDApOworICAgIGF1dG8gZXZl
bnQgPSBJbnB1dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJlZm9yZWlucHV0RXZlbnQsIGlu
cHV0VHlwZSwgdHJ1ZSwgdHJ1ZSwgZWxlbWVudC5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIGRh
dGEpOwogICAgIGVsZW1lbnQuZGlzcGF0Y2hTY29wZWRFdmVudChldmVudCk7CiAKICAgICByZXR1
cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CkBAIC0xMDQzLDIyICsxMDQzLDIyIEBAIHN0
YXRpYyB2b2lkIG5vdGlmeVRleHRGcm9tQ29udHJvbHMoRWxlbWVudCogc3RhcnRSb290LCBFbGVt
ZW50KiBlbmRSb290KQogICAgICAgICBlbmRpbmdUZXh0Q29udHJvbC0+ZGlkRWRpdElubmVyVGV4
dFZhbHVlKCk7CiB9CiAKLXN0YXRpYyBib29sIGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudHMoUmVm
UHRyPEVsZW1lbnQ+IHN0YXJ0Um9vdCwgUmVmUHRyPEVsZW1lbnQ+IGVuZFJvb3QsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW5wdXRUeXBlTmFtZSkKK3N0YXRpYyBib29sIGRpc3BhdGNoQmVmb3JlSW5w
dXRFdmVudHMoUmVmUHRyPEVsZW1lbnQ+IHN0YXJ0Um9vdCwgUmVmUHRyPEVsZW1lbnQ+IGVuZFJv
b3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBlTmFtZSwgU3RyaW5nIGRhdGEgPSBTdHJp
bmcoKSkKIHsKICAgICBib29sIGNvbnRpbnVlV2l0aERlZmF1bHRCZWhhdmlvciA9IHRydWU7CiAg
ICAgaWYgKHN0YXJ0Um9vdCkKLSAgICAgICAgY29udGludWVXaXRoRGVmYXVsdEJlaGF2aW9yICY9
IGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCgqc3RhcnRSb290LCBpbnB1dFR5cGVOYW1lKTsKKyAg
ICAgICAgY29udGludWVXaXRoRGVmYXVsdEJlaGF2aW9yICY9IGRpc3BhdGNoQmVmb3JlSW5wdXRF
dmVudCgqc3RhcnRSb290LCBpbnB1dFR5cGVOYW1lLCBkYXRhKTsKICAgICBpZiAoZW5kUm9vdCAm
JiBlbmRSb290ICE9IHN0YXJ0Um9vdCkKLSAgICAgICAgY29udGludWVXaXRoRGVmYXVsdEJlaGF2
aW9yICY9IGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCgqZW5kUm9vdCwgaW5wdXRUeXBlTmFtZSk7
CisgICAgICAgIGNvbnRpbnVlV2l0aERlZmF1bHRCZWhhdmlvciAmPSBkaXNwYXRjaEJlZm9yZUlu
cHV0RXZlbnQoKmVuZFJvb3QsIGlucHV0VHlwZU5hbWUsIGRhdGEpOwogICAgIHJldHVybiBjb250
aW51ZVdpdGhEZWZhdWx0QmVoYXZpb3I7CiB9CiAKLXN0YXRpYyB2b2lkIGRpc3BhdGNoSW5wdXRF
dmVudHMoUmVmUHRyPEVsZW1lbnQ+IHN0YXJ0Um9vdCwgUmVmUHRyPEVsZW1lbnQ+IGVuZFJvb3Qs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBlTmFtZSkKK3N0YXRpYyB2b2lkIGRpc3BhdGNo
SW5wdXRFdmVudHMoUmVmUHRyPEVsZW1lbnQ+IHN0YXJ0Um9vdCwgUmVmUHRyPEVsZW1lbnQ+IGVu
ZFJvb3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBlTmFtZSwgU3RyaW5nIGRhdGEgPSBT
dHJpbmcoKSkKIHsKICAgICBpZiAoc3RhcnRSb290KQotICAgICAgICBzdGFydFJvb3QtPmRpc3Bh
dGNoSW5wdXRFdmVudChpbnB1dFR5cGVOYW1lKTsKKyAgICAgICAgc3RhcnRSb290LT5kaXNwYXRj
aElucHV0RXZlbnQoaW5wdXRUeXBlTmFtZSwgZGF0YSk7CiAgICAgaWYgKGVuZFJvb3QgJiYgZW5k
Um9vdCAhPSBzdGFydFJvb3QpCi0gICAgICAgIGVuZFJvb3QtPmRpc3BhdGNoSW5wdXRFdmVudChp
bnB1dFR5cGVOYW1lKTsKKyAgICAgICAgZW5kUm9vdC0+ZGlzcGF0Y2hJbnB1dEV2ZW50KGlucHV0
VHlwZU5hbWUsIGRhdGEpOwogfQogCiBib29sIEVkaXRvcjo6d2lsbEFwcGx5RWRpdGluZyhDb21w
b3NpdGVFZGl0Q29tbWFuZCYgY29tbWFuZCkgY29uc3QKQEAgLTEwNjcsNyArMTA2Nyw3IEBAIGJv
b2wgRWRpdG9yOjp3aWxsQXBwbHlFZGl0aW5nKENvbXBvc2l0ZUVkaXRDb21tYW5kJiBjb21tYW5k
KSBjb25zdAogICAgIGlmICghY29tcG9zaXRpb24pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgcmV0dXJuIGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudHMoY29tcG9zaXRpb24tPnN0YXJ0aW5n
Um9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxl
bWVudCgpLCBjb21tYW5kLmlucHV0RXZlbnRUeXBlTmFtZSgpKTsKKyAgICByZXR1cm4gZGlzcGF0
Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVt
ZW50KCksIGNvbXBvc2l0aW9uLT5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbW1hbmQu
aW5wdXRFdmVudFR5cGVOYW1lKCksIGNvbW1hbmQuaW5wdXRFdmVudERhdGEoKSk7CiB9CiAKIHZv
aWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5k
PiBjbWQpCkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmco
UGFzc1JlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gY21kKQogICAgIEZyYW1lU2VsZWN0aW9u
OjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMgPSBjbWQtPmlzRGljdGF0aW9uQ29tbWFuZCgp
ID8gRnJhbWVTZWxlY3Rpb246OkRpY3RhdGlvblRyaWdnZXJlZCA6IDA7CiAgICAgCiAgICAgY2hh
bmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgb3B0aW9ucyk7Ci0gICAgZGlz
cGF0Y2hJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50
KCksIGNvbXBvc2l0aW9uLT5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNtZC0+aW5wdXRF
dmVudFR5cGVOYW1lKCkpOworICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24tPnN0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi0+ZW5kaW5nUm9vdEVkaXRh
YmxlRWxlbWVudCgpLCBjbWQtPmlucHV0RXZlbnRUeXBlTmFtZSgpLCBjbWQtPmlucHV0RXZlbnRE
YXRhKCkpOwogCiAgICAgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1h
bmQuY3BwCmluZGV4IDk4NmVlNThiNzgzNGM4MDFkZmQyZTA2OGMxYmIxOTIzOWMwODIwMzMuLmUx
Mjg2NWM0YmQwNzRlYTVhNzJhYzNjNDdiYWZkNjVkNGUzMWZkODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKQEAg
LTY1LDQgKzY1LDEyIEBAIHZvaWQgUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjpkb0FwcGx5
KCkKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
Y3JlYXRlKGRvY3VtZW50KCksIFdURk1vdmUoZnJhZ21lbnQpLCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6TWF0Y2hTdHlsZSwgRWRpdEFjdGlvblBhc3RlKSk7CiB9CiAKK1N0cmluZyBSZXBsYWNl
UmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29uc3QKK3sKKyAgICBpZiAo
aXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQorICAgICAgICByZXR1cm4gbV90ZXh0Owor
CisgICAgcmV0dXJuIENvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuaAppbmRleCA2YzQ5OWYyMDQ4NjYzMjdmMDI5
MmFiODM1MTIzOGVhNzg3OWE0MmVhLi4xZTc1YmZjM2MwMjJjMmU1NmJiZDk2MzU0ZmRiMTc0Nzk0
ZTE3MDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdp
dGhUZXh0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdl
V2l0aFRleHRDb21tYW5kLmgKQEAgLTM3LDYgKzM3LDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQocmFuZ2VUb0JlUmVw
bGFjZWQsIHRleHQpKTsKICAgICB9CiAKKyAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEoKSBjb25z
dCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQoUmVm
UHRyPFJhbmdlPiByYW5nZVRvQmVSZXBsYWNlZCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKICAgICB2
b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMjRhNzcwNGNjMjk5NTMxNGJiY2U3YzQ5
MzkxM2Q0M2I2MTExOWI4Ni4uYTI3NjY0ZmNiM2QzZDE3ZWE5MmZlNzk0ZTI4NmNhNmE5MDYwZDUy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKQEAgLTEyNTQsNiArMTI1NCwxNCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpkb0FwcGx5KCkKICAgICBjb21wbGV0ZUhUTUxSZXBsYWNlbWVudChsYXN0UG9zaXRpb25U
b1NlbGVjdCk7CiB9CiAKK1N0cmluZyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVu
dERhdGEoKSBjb25zdAoreworICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkp
CisgICAgICAgIHJldHVybiBtX2RvY3VtZW50RnJhZ21lbnQtPnRleHRDb250ZW50KCk7CisKKyAg
ICByZXR1cm4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCk7Cit9CisKIGJv
b2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZFJlbW92ZUVuZEJSKE5vZGUqIGVuZEJS
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsVmlzUG9zQmVmb3JlRW5kQlIpCiB7CiAg
ICAgaWYgKCFlbmRCUiB8fCAhZW5kQlItPmluRG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCAwOGE4MTBlMzQ1YWVm
YWMwYmYzZmRiZDM0ZWM5YWYwNDFmODVmOGFjLi40ZjhmMjNkYWI1Nzg1OWFiNjQ3NjNkMzhkZWIx
MzVhYzdlMDViOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4mJiwgQ29tbWFuZE9wdGlvbnMsIEVkaXRBY3Rpb24pOwogCisgICAgU3RyaW5nIGlucHV0RXZl
bnREYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKIAogICAg
IGNsYXNzIEluc2VydGVkTm9kZXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYTQyODdkNGVhYmNhNWVlNTZhZmM0
YzEwOWQ3MDkwNGJmY2ZiODI0Ni4uZjBiMTUxODNmYzA3ZTI2YzFhYzhkNmI3YTgwOGQyYmZjZTg1
NGI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwCkBAIC0xMTEsNiArMTExLDE0IEBAIHZvaWQgU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50KSwg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUsIEVkaXRBY3Rpb25QYXN0ZSkpOwog
fQogCitTdHJpbmcgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGEoKSBj
b25zdAoreworICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCisgICAgICAg
IHJldHVybiBtX2NvcnJlY3Rpb247CisKKyAgICByZXR1cm4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OmlucHV0RXZlbnREYXRhKCk7Cit9CisKIGJvb2wgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6
c2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoKSBjb25zdAogewogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuaAppbmRleCAyNDg4MjUzMmI1YjlmZDIyMWU0OWFmZDlhNzRiNjNhZDFlZDZmNTI3
Li5kMTY5YWM0YzYwYmI4YjcyY2YzYzU5Y2RiYWE2NzQwNGRhMmIxNDU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaApAQCAtMzcs
NiArMzcsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kKHJhbmdlVG9CZUNvcnJlY3RlZCwgY29ycmVjdGlvbikp
OwogICAgIH0KKworICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSgpIGNvbnN0IGZpbmFsOworCiBw
cml2YXRlOgogICAgIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQoUGFzc1JlZlB0cjxSYW5nZT4g
cmFuZ2VUb0JlQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pOwogICAgIHZvaWQg
ZG9BcHBseSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
eXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5j
cHAKaW5kZXggZTM1ZjZkMzBmMmZlZmYzZjM2NmE4NTg0MDk4OTBlZmQ5ODkyMDMzYS4uNmFjYTk0
YmVlYTJkYjZiNjU4MTQyOGVkZGZkNDc3ODFmOWNlNzAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAgVHlwaW5nQ29tbWFuZDo6
VHlwaW5nQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5kIGNvbW1hbmRU
eXBlLCBjb24KICAgICA6IFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZChkb2N1bWVudCwgZWRpdEFj
dGlvbkZvclR5cGluZ0NvbW1hbmQoY29tbWFuZFR5cGUsIGdyYW51bGFyaXR5KSkKICAgICAsIG1f
Y29tbWFuZFR5cGUoY29tbWFuZFR5cGUpCiAgICAgLCBtX3RleHRUb0luc2VydCh0ZXh0VG9JbnNl
cnQpCisgICAgLCBtX2N1cnJlbnRUZXh0VG9JbnNlcnQodGV4dFRvSW5zZXJ0KQogICAgICwgbV9v
cGVuRm9yTW9yZVR5cGluZyh0cnVlKQogICAgICwgbV9zZWxlY3RJbnNlcnRlZFRleHQob3B0aW9u
cyAmIFNlbGVjdEluc2VydGVkVGV4dCkKICAgICAsIG1fc21hcnREZWxldGUob3B0aW9ucyAmIFNt
YXJ0RGVsZXRlKQpAQCAtMzQ0LDYgKzM0NSwxNCBAQCBTdHJpbmcgVHlwaW5nQ29tbWFuZDo6aW5w
dXRFdmVudFR5cGVOYW1lKCkgY29uc3QKICAgICByZXR1cm4gaW5wdXRUeXBlTmFtZUZvckVkaXRp
bmdBY3Rpb24obV9jdXJyZW50VHlwaW5nRWRpdEFjdGlvbik7CiB9CiAKK1N0cmluZyBUeXBpbmdD
b21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fY3VycmVudFR5cGlu
Z0VkaXRBY3Rpb24gPT0gRWRpdEFjdGlvblR5cGluZ0luc2VydFRleHQpCisgICAgICAgIHJldHVy
biBtX2N1cnJlbnRUZXh0VG9JbnNlcnQ7CisKKyAgICByZXR1cm4gQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmlucHV0RXZlbnREYXRhKCk7Cit9CisKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGlkQXBwbHlD
b21tYW5kKCkKIHsKICAgICAvLyBUeXBpbmdDb21tYW5kcyBoYW5kbGUgYXBwbGllZCBlZGl0aW5n
IHNlcGFyYXRlbHkgKHNlZSBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQp
LgpAQCAtNDA0LDEzICs0MTMsMTIgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjptYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUpCiAgICAgfQogfQogCi1i
b29sIFR5cGluZ0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21t
YW5kIGNvbW1hbmRUeXBlLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCitib29sIFR5cGlu
Z0NvbW1hbmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1h
bmRUeXBlLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgdGV4dCkK
IHsKICAgICBpZiAobV9pc0hhbmRsaW5nSW5pdGlhbFR5cGluZ0NvbW1hbmQpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgLy8gRklYTUU6IFVzZSB0aGUgbmV3bHkgYWRkZWQgdHlwaW5nIGNv
bW1hbmQgYW5kIGdyYW51bGFyaXR5IHRvIGVuc3VyZSB0aGF0IGFuIElucHV0RXZlbnQgd2l0aCB0
aGUKLSAgICAvLyBjb3JyZWN0IGlucHV0VHlwZSBpcyBkaXNwYXRjaGVkLgorICAgIG1fY3VycmVu
dFRleHRUb0luc2VydCA9IHRleHQ7CiAgICAgbV9jdXJyZW50VHlwaW5nRWRpdEFjdGlvbiA9IGVk
aXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKGNvbW1hbmRUeXBlLCBncmFudWxhcml0eSk7CiAgICAg
cmV0dXJuIGZyYW1lKCkuZWRpdG9yKCkud2lsbEFwcGx5RWRpdGluZygqdGhpcyk7CiB9CkBAIC00
NTYsNyArNDY0LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0QW5kTm90aWZ5QWNj
ZXNzaWJpbGl0eShjb25zdCBTdHJpbmcgJnRleHQsIGJvb2wgc2UKIAogdm9pZCBUeXBpbmdDb21t
YW5kOjppbnNlcnRUZXh0UnVuV2l0aG91dE5ld2xpbmVzKGNvbnN0IFN0cmluZyAmdGV4dCwgYm9v
bCBzZWxlY3RJbnNlcnRlZFRleHQpCiB7Ci0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29t
bWFuZChJbnNlcnRUZXh0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRk
VHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRUZXh0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdGV4
dCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxJbnNlcnRUZXh0Q29tbWFuZD4gY29t
bWFuZCA9IEluc2VydFRleHRDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dCwgc2VsZWN0
SW5zZXJ0ZWRUZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaAppbmRleCBj
ZGQ2YWU2ZWM2ZjBhYjk5ZGE4OTNmMTEwMTNiNWFhMTA2Mjg1ZWU4Li5lOTAyMGQyNDYwNWFmMDkw
NTI5MzZjMTAxMzNlYmM1YjIxODE0YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1R5cGluZ0NvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuaApAQCAtMTE3LDExICsxMTcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNob3Vs
ZFByZXZlbnRTcGVsbENoZWNraW5nKGJvb2wgcHJldmVudCkgeyBtX3Nob3VsZFByZXZlbnRTcGVs
bENoZWNraW5nID0gcHJldmVudDsgfQogCiAgICAgU3RyaW5nIGlucHV0RXZlbnRUeXBlTmFtZSgp
IGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3VycmVudFNl
bGVjdGlvbihUeXBpbmdDb21tYW5kKiwgRnJhbWUqKTsKIAogICAgIHZvaWQgdXBkYXRlUHJlc2Vy
dmVzVHlwaW5nU3R5bGUoRVR5cGluZ0NvbW1hbmQpOwotICAgIGJvb2wgd2lsbEFkZFR5cGluZ1Rv
T3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQsIFRleHRHcmFudWxhcml0eSk7CisgICAgYm9vbCB3
aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCwgVGV4dEdyYW51bGFyaXR5
LCBjb25zdCBTdHJpbmcmID0gZW1wdHlTdHJpbmcoKSk7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxp
bmdzQWZ0ZXJUeXBpbmcoRVR5cGluZ0NvbW1hbmQpOwogICAgIHZvaWQgdHlwaW5nQWRkZWRUb09w
ZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kKTsKICAgICBib29sIG1ha2VFZGl0YWJsZVJvb3RFbXB0
eSgpOwpAQCAtMTM4LDYgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgRVR5cGluZ0NvbW1hbmQgbV9j
b21tYW5kVHlwZTsKICAgICBFZGl0QWN0aW9uIG1fY3VycmVudFR5cGluZ0VkaXRBY3Rpb247CiAg
ICAgU3RyaW5nIG1fdGV4dFRvSW5zZXJ0OworICAgIFN0cmluZyBtX2N1cnJlbnRUZXh0VG9JbnNl
cnQ7CiAgICAgYm9vbCBtX29wZW5Gb3JNb3JlVHlwaW5nOwogICAgIGJvb2wgbV9zZWxlY3RJbnNl
cnRlZFRleHQ7CiAgICAgYm9vbCBtX3NtYXJ0RGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggYjg4NWI5ZGJmZjEzNjczY2YxMDcxOTY0NzVm
OTZjNDE3NzAxODE0Yi4uMzgyMjEyZjMyODJkZDQ4NTgyMjVkN2I3YjBhNmM2MGM5ZDM0ODNlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1l
bnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMu
aCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgpAQCAtNjY1LDYgKzY2NiwyNiBAQCBOb2RlKiBW
aXNpYmxlU2VsZWN0aW9uOjpub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSA/IHN0YXJ0KCkuZGVwcmVjYXRlZE5v
ZGUoKS0+bm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKSA6IG51bGxwdHI7CiB9CiAKK2Jv
b2wgVmlzaWJsZVNlbGVjdGlvbjo6aXNJblRleHRBcmVhT3JUZXh0SW5wdXQoKSBjb25zdAorewor
ICAgIE5vZGUqIGNvbnRhaW5lciA9IHN0YXJ0KCkuY29udGFpbmVyTm9kZSgpOworICAgIGlmICgh
Y29udGFpbmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFbGVtZW50KiBhbmNlc3Rv
ciA9IGNvbnRhaW5lci0+c2hhZG93SG9zdCgpOworICAgIGlmICghYW5jZXN0b3IpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50PigqYW5jZXN0
b3IpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
PigqYW5jZXN0b3IpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
KmFuY2VzdG9yKS5pc1RleHQoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworCiBib29sIFZp
c2libGVTZWxlY3Rpb246OmlzSW5QYXNzd29yZEZpZWxkKCkgY29uc3QKIHsKICAgICBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCogdGV4dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRy
b2woc3RhcnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCmlu
ZGV4IGZhYWFmODc1MzlkOWE5ZTEwMTMwN2MxNDY0NzMyYmEyNTlkMDBjYWMuLjUyNmJkODA0NWVl
Zjg1ZTg2YTIxZmNjM2NlMGYwNjM3NGI1YzE5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5oCkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGljOgogICAgIC8vIFNo
YWRvd1Jvb3Qgbm9kZSBmb3IgbmV3IHNoYWRvdyB0cmVlcywgb3IgMCBmb3Igbm9uLXNoYWRvdyB0
cmVlcy4KICAgICBOb2RlKiBub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpIGNvbnN0Owog
CisgICAgYm9vbCBpc0luVGV4dEFyZWFPclRleHRJbnB1dCgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaXNJblBhc3N3b3JkRmllbGQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShUUkVF
X0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2YWIxMjM2NTc2YWJjOGU4YmZjMjdhNWFkM2ZiMTA3ZTAzNjMw
NWM4Li4wZjc1OGVlNzY0NzhkYWI3NWQwNzk5NmY1NDE0ZDU0OWJlNzhkMzIzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjYgQEAKIDIwMTYtMTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKKyAgICAgICAgU3VwcG9ydCBJbnB1dEV2ZW50LmRhdGEgZm9yIHRoZSBuZXcgSW5w
dXRFdmVudCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjMxMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4NjgxOTM1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgMiBuZXcgbGF5b3V0
IHRlc3RzIHZlcmlmeWluZyB0aGUgZGF0YSBhdHRyaWJ1dGUgb2YgYGJlZm9yZWlucHV0YCBhbmQg
YGlucHV0YCBldmVudHMgd2hlbiB0eXBpbmcsIHBhc3RpbmcsCisgICAgICAgIGFuZCBzZWxlY3Rp
bmcgY2FuZGlkYXRlIHJlcGxhY2VtZW50cyBpbiBwbGFpbiB0ZXh0IGFuZCBjb250ZW50ZWRpdGFi
bGUgYXJlYXMuCisKKyAgICAgICAgQWxzbyB0d2Vha3MgYW4gZXhpc3RpbmcgdGVzdCB0byBlbnN1
cmUgdGhhdCBgZGF0YWAgaXMgYW4gYXR0cmlidXRlIG9mIGFuIElucHV0RXZlbnQuCisKKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQtd2hlbi10eXBpbmctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5cGlu
Zy5odG1sOgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1wYXN0ZS1kYXRhLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBh
c3RlLWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRz
LXR5cGluZy1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
aW5wdXQtZXZlbnRzLXR5cGluZy1kYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9uczoKKworMjAxNi0xMC0wOSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBTdXBwb3J0IElucHV0RXZl
bnQuaW5wdXRUeXBlIGZvciB0aGUgbmV3IElucHV0RXZlbnQgc3BlYwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDI1CiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yODY1ODA5Mj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lu
cHV0LWV2ZW50cy1maXJlZC13aGVuLXR5cGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQtd2hlbi10eXBpbmctZXhwZWN0ZWQudHh0Cmlu
ZGV4IDY3YmExOTMzMmYwZjhjYjk0NGQwZjViN2VjY2VmYjdkNTVmYzJlNDAuLjJlMjBmY2MyYjU2
ODU3ZTA4NzY5ZjkzNDBiNTkzYTg4YjliMzMwNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5cGluZy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlwaW5n
LWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDcgQEAgUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogVEVTVCBDT01QTEVURQogRmlyZWQgYG9uYmVmb3JlaW5wdXRgIQogUEFTUyBldmVudC5f
X2xvb2t1cEdldHRlcl9fKCdpbnB1dFR5cGUnKSBpcyBkZWZpbmVkLgorUEFTUyBldmVudC5fX2xv
b2t1cEdldHRlcl9fKCdkYXRhJykgaXMgZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldFByb3RvdHlw
ZU9mKGV2ZW50KSBpcyBJbnB1dEV2ZW50LnByb3RvdHlwZQogUEFTUyBldmVudC50YXJnZXQuaWQg
aXMgZXhwZWN0ZWRUYXJnZXRJRAogUEFTUyBldmVudC5idWJibGVzIGlzIHRydWUKQEAgLTEwLDYg
KzExLDcgQEAgUEFTUyBldmVudC5jYW5jZWxhYmxlIGlzIHRydWUKIFBBU1MgZXZlbnQuY29tcG9z
ZWQgaXMgdHJ1ZQogRmlyZWQgYG9uaW5wdXRgIQogUEFTUyBldmVudC5fX2xvb2t1cEdldHRlcl9f
KCdpbnB1dFR5cGUnKSBpcyBkZWZpbmVkLgorUEFTUyBldmVudC5fX2xvb2t1cEdldHRlcl9fKCdk
YXRhJykgaXMgZGVmaW5lZC4KIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKGV2ZW50KSBpcyBJ
bnB1dEV2ZW50LnByb3RvdHlwZQogUEFTUyBldmVudC50YXJnZXQuaWQgaXMgZXhwZWN0ZWRUYXJn
ZXRJRAogUEFTUyBldmVudC5idWJibGVzIGlzIHRydWUKQEAgLTE3LDYgKzE5LDcgQEAgUEFTUyBl
dmVudC5jYW5jZWxhYmxlIGlzIGZhbHNlCiBQQVNTIGV2ZW50LmNvbXBvc2VkIGlzIHRydWUKIEZp
cmVkIGBvbmJlZm9yZWlucHV0YCEKIFBBU1MgZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnaW5wdXRU
eXBlJykgaXMgZGVmaW5lZC4KK1BBU1MgZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnZGF0YScpIGlz
IGRlZmluZWQuCiBQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihldmVudCkgaXMgSW5wdXRFdmVu
dC5wcm90b3R5cGUKIFBBU1MgZXZlbnQudGFyZ2V0LmlkIGlzIGV4cGVjdGVkVGFyZ2V0SUQKIFBB
U1MgZXZlbnQuYnViYmxlcyBpcyB0cnVlCkBAIC0yNCw2ICsyNyw3IEBAIFBBU1MgZXZlbnQuY2Fu
Y2VsYWJsZSBpcyB0cnVlCiBQQVNTIGV2ZW50LmNvbXBvc2VkIGlzIHRydWUKIEZpcmVkIGBvbmlu
cHV0YCEKIFBBU1MgZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnaW5wdXRUeXBlJykgaXMgZGVmaW5l
ZC4KK1BBU1MgZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnZGF0YScpIGlzIGRlZmluZWQuCiBQQVNT
IE9iamVjdC5nZXRQcm90b3R5cGVPZihldmVudCkgaXMgSW5wdXRFdmVudC5wcm90b3R5cGUKIFBB
U1MgZXZlbnQudGFyZ2V0LmlkIGlzIGV4cGVjdGVkVGFyZ2V0SUQKIFBBU1MgZXZlbnQuYnViYmxl
cyBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVu
dHMtZmlyZWQtd2hlbi10eXBpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0
LWV2ZW50cy1maXJlZC13aGVuLXR5cGluZy5odG1sCmluZGV4IGI0NmY2MTQ3YzQ3ODdmMjVjN2Ji
OWZiMDJhMGY3MTZhZjRiNGMxOGMuLjYyMDM4NjAxMTNhNjdiMTAxZjEyZDE1NmE4ZmI3ZGFlOGQw
ZTlmYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1m
aXJlZC13aGVuLXR5cGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0
LWV2ZW50cy1maXJlZC13aGVuLXR5cGluZy5odG1sCkBAIC0zNSw2ICszNSw3IEBACiAgICAgICAg
IHsKICAgICAgICAgICAgIGRlYnVnKCJGaXJlZCBgb25pbnB1dGAhIik7CiAgICAgICAgICAgICBz
aG91bGRCZURlZmluZWQoImV2ZW50Ll9fbG9va3VwR2V0dGVyX18oJ2lucHV0VHlwZScpIik7Cisg
ICAgICAgICAgICBzaG91bGRCZURlZmluZWQoImV2ZW50Ll9fbG9va3VwR2V0dGVyX18oJ2RhdGEn
KSIpOwogICAgICAgICAgICAgc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihldmVudCki
LCAiSW5wdXRFdmVudC5wcm90b3R5cGUiKTsKICAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC50
YXJnZXQuaWQiLCAiZXhwZWN0ZWRUYXJnZXRJRCIpOwogICAgICAgICAgICAgc2hvdWxkQmUoImV2
ZW50LmJ1YmJsZXMiLCAidHJ1ZSIpOwpAQCAtNDYsNiArNDcsNyBAQAogICAgICAgICB7CiAgICAg
ICAgICAgICBkZWJ1ZygiRmlyZWQgYG9uYmVmb3JlaW5wdXRgISIpOwogICAgICAgICAgICAgc2hv
dWxkQmVEZWZpbmVkKCJldmVudC5fX2xvb2t1cEdldHRlcl9fKCdpbnB1dFR5cGUnKSIpOworICAg
ICAgICAgICAgc2hvdWxkQmVEZWZpbmVkKCJldmVudC5fX2xvb2t1cEdldHRlcl9fKCdkYXRhJyki
KTsKICAgICAgICAgICAgIHNob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoZXZlbnQpIiwg
IklucHV0RXZlbnQucHJvdG90eXBlIik7CiAgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFy
Z2V0LmlkIiwgImV4cGVjdGVkVGFyZ2V0SUQiKTsKICAgICAgICAgICAgIHNob3VsZEJlKCJldmVu
dC5idWJibGVzIiwgInRydWUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2lucHV0LWV2ZW50cy1wYXN0ZS1kYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1wYXN0ZS1kYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YmJmNGEyOTY5ZWE2YzFlMDExMjg1ZTFkOWY4NGU3YzUzYTRiNjFiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLWRhdGEtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RvIG1hbnVhbGx5IHRlc3QgdGhpcywgY29weSB0aGUg
d29yZCAndGVzdGluZycgYW5kIHBhc3RlIGludG8gYm90aCB0aGUgdGV4dGFyZWEgYW5kIGNvbnRl
bnRlZGl0YWJsZS4gVmVyaWZ5IHRoYXQgdHdvIFBBU1MgbWVzc2FnZXMgYXJlIHByaW50ZWQgb3V0
IHBlciBwYXN0ZSAob25lIGZvciB0aGUgYmVmb3JlaW5wdXQsIHRoZSBvdGhlciBmb3IgaW5wdXQp
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcGFzdGluZyAndGVzdGluZycgaW4g
dGhlIHBsYWluIHRleHRhcmVhLiBkYXRhIHNob3VsZCBiZSBub25udWxsCitQQVNTIGV2ZW50LmRh
dGEgaXMgJ3Rlc3RpbmcnCitQQVNTIGV2ZW50LmRhdGEgaXMgJ3Rlc3RpbmcnCitwYXN0aW5nICd0
ZXN0aW5nJyBpbiB0aGUgcmljaCBjb250ZW50ZWRpdGFibGUuIGRhdGEgc2hvdWxkIGJlIG51bGwK
K1BBU1MgZXZlbnQuZGF0YSBpcyBudWxsCitQQVNTIGV2ZW50LmRhdGEgaXMgbnVsbAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKK3Rlc3RpbmcKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1wYXN0ZS1kYXRh
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtZGF0YS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFmYzYwMjk0MGRmZmQwNmQ5NGUwY2EwMDZiNzIwYTg2NjE4ZTIyYTcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMt
cGFzdGUtZGF0YS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx0ZXh0YXJlYSBvbmZvY3VzPWhhbmRs
ZUZvY3VzKCkgaWQ9InBsYWluIiBvbmJlZm9yZWlucHV0PWhhbmRsZVBsYWluSW5wdXQoZXZlbnQs
dHJ1ZSkgb25pbnB1dD1oYW5kbGVQbGFpbklucHV0KGV2ZW50LGZhbHNlKT50ZXN0aW5nPC90ZXh0
YXJlYT4KKyAgICA8ZGl2IGlkPSJyaWNoIiBjb250ZW50ZWRpdGFibGUgb25iZWZvcmVpbnB1dD1o
YW5kbGVSaWNoSW5wdXQoZXZlbnQsdHJ1ZSkgb25pbnB1dD1oYW5kbGVSaWNoSW5wdXQoZXZlbnQs
ZmFsc2UpPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAg
ICAgZGVzY3JpcHRpb24oYFRvIG1hbnVhbGx5IHRlc3QgdGhpcywgY29weSB0aGUgd29yZCAndGVz
dGluZycgYW5kIHBhc3RlIGludG8gYm90aCB0aGUgdGV4dGFyZWEgYW5kIGNvbnRlbnRlZGl0YWJs
ZS4gVmVyaWZ5IHRoYXQgdHdvIFBBU1MgbWVzc2FnZXMgYXJlIHByaW50ZWQgb3V0IHBlciBwYXN0
ZSAob25lIGZvciB0aGUgYmVmb3JlaW5wdXQsIHRoZSBvdGhlciBmb3IgaW5wdXQpLmApOworICAg
ICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMgfHwg
IXdpbmRvdy5ldmVudFNlbmRlciB8fCAhd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW5wdXRFdmVu
dHNFbmFibGVkKHRydWUpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Bs
YWluIikuZm9jdXMoKTsKKyAgICAgICAgfSkoKTsKKworICAgICAgICBmdW5jdGlvbiBoYW5kbGVG
b2N1cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNw
bGFpbiIpLnNlbGVjdCgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiQ3V0
Iik7CisKKyAgICAgICAgICAgIGRlYnVnKCJwYXN0aW5nICd0ZXN0aW5nJyBpbiB0aGUgcGxhaW4g
dGV4dGFyZWEuIGRhdGEgc2hvdWxkIGJlIG5vbm51bGwiKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZXhlY0NvbW1hbmQoIlBhc3RlIik7CisKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoIiNyaWNoIikuZm9jdXMoKTsKKyAgICAgICAgICAgIGRlYnVnKCJwYXN0aW5nICd0ZXN0
aW5nJyBpbiB0aGUgcmljaCBjb250ZW50ZWRpdGFibGUuIGRhdGEgc2hvdWxkIGJlIG51bGwiKTsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIlBhc3RlIik7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBoYW5kbGVSaWNoSW5wdXQoZXZlbnQsIGlzYmVmb3JlKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAiaW5zZXJ0RnJvbVBh
c3RlIikKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoImV2ZW50LmRhdGEiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVBsYWluSW5wdXQoZXZlbnQsIGlzYmVmb3Jl
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAiaW5zZXJ0
RnJvbVBhc3RlIikKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQuZGF0YSIsICIndGVz
dGluZyciKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXR5cGlu
Zy1kYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50
cy10eXBpbmctZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjdiZDIzOTQzZTU1NzAwNTZj
MWNlZjAxMjBkNWFmMmVhMWY3MjVhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2lucHV0LWV2ZW50cy10eXBpbmctZGF0YS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzMCBAQAorVG8gbWFudWFsbHkgdGVzdCB0aGlzLCB0eXBlIGluIGJvdGggdGhlIHJpY2ggY29u
dGVudGVkaXRhYmxlIGFuZCBwbGFpbiB0ZXh0YXJlYSBhbmQvb3IgaW5zZXJ0IGNhbmRpZGF0ZXMv
YXV0b2NvcnJlY3Rpb25zLiBCb3RoIGVsZW1lbnRzIHNob3VsZCBoYXZlIGRhdGEgd2hlbiB0eXBp
bmcgbm9ybWFsbHksIGJ1dCBvbmx5IHRoZSBwbGFpbiB0ZXh0YXJlYSBzaG91bGQgaGF2ZSBkYXRh
IHdoZW4gaW5zZXJ0aW5nIGEgcmVwbGFjZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQbGFpbiB0ZXh0YXJlYSByZWNlaXZlZCAnYmVmb3JlaW5wdXQnIHdpdGggaW5wdXRU
eXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdoJworUGxhaW4gdGV4dGFyZWEgcmVjZWl2ZWQg
J2lucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAnaCcKK1BsYWlu
IHRleHRhcmVhIHJlY2VpdmVkICdiZWZvcmVpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRU
ZXh0JyBhbmQgZGF0YTogJ2UnCitQbGFpbiB0ZXh0YXJlYSByZWNlaXZlZCAnaW5wdXQnIHdpdGgg
aW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdlJworUGxhaW4gdGV4dGFyZWEgcmVj
ZWl2ZWQgJ2JlZm9yZWlucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRh
OiAnbCcKK1BsYWluIHRleHRhcmVhIHJlY2VpdmVkICdpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdp
bnNlcnRUZXh0JyBhbmQgZGF0YTogJ2wnCitQbGFpbiB0ZXh0YXJlYSByZWNlaXZlZCAnYmVmb3Jl
aW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdvJworUGxhaW4g
dGV4dGFyZWEgcmVjZWl2ZWQgJ2lucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFu
ZCBkYXRhOiAnbycKK1BsYWluIHRleHRhcmVhIHJlY2VpdmVkICdiZWZvcmVpbnB1dCcgd2l0aCBp
bnB1dFR5cGU6ICdpbnNlcnRSZXBsYWNlbWVudFRleHQnIGFuZCBkYXRhOiAnaGVsbG8nCitQbGFp
biB0ZXh0YXJlYSByZWNlaXZlZCAnaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0UmVwbGFj
ZW1lbnRUZXh0JyBhbmQgZGF0YTogJ2hlbGxvJworUmljaCBjb250ZW50ZWRpdGFibGUgcmVjZWl2
ZWQgJ2JlZm9yZWlucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAn
aCcKK1JpY2ggY29udGVudGVkaXRhYmxlIHJlY2VpdmVkICdpbnB1dCcgd2l0aCBpbnB1dFR5cGU6
ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ2gnCitSaWNoIGNvbnRlbnRlZGl0YWJsZSByZWNlaXZl
ZCAnYmVmb3JlaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdl
JworUmljaCBjb250ZW50ZWRpdGFibGUgcmVjZWl2ZWQgJ2lucHV0JyB3aXRoIGlucHV0VHlwZTog
J2luc2VydFRleHQnIGFuZCBkYXRhOiAnZScKK1JpY2ggY29udGVudGVkaXRhYmxlIHJlY2VpdmVk
ICdiZWZvcmVpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ2wn
CitSaWNoIGNvbnRlbnRlZGl0YWJsZSByZWNlaXZlZCAnaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAn
aW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdsJworUmljaCBjb250ZW50ZWRpdGFibGUgcmVjZWl2ZWQg
J2JlZm9yZWlucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAnbycK
K1JpY2ggY29udGVudGVkaXRhYmxlIHJlY2VpdmVkICdpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdp
bnNlcnRUZXh0JyBhbmQgZGF0YTogJ28nCitSaWNoIGNvbnRlbnRlZGl0YWJsZSByZWNlaXZlZCAn
YmVmb3JlaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0UmVwbGFjZW1lbnRUZXh0JyBhbmQg
ZGF0YTogJ251bGwnCitSaWNoIGNvbnRlbnRlZGl0YWJsZSByZWNlaXZlZCAnaW5wdXQnIHdpdGgg
aW5wdXRUeXBlOiAnaW5zZXJ0UmVwbGFjZW1lbnRUZXh0JyBhbmQgZGF0YTogJ251bGwnCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworaGVsbG8KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy10eXBpbmctZGF0
YS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXR5cGluZy1kYXRh
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzI3OTliNGZiYTJiMzQ3Y2I5NzQ3OTZkMzdhZjlmOGQ2OGIxZDQ2
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50
cy10eXBpbmctZGF0YS5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx0ZXh0YXJlYSBpZD0icGxhaW4i
IG9uYmVmb3JlaW5wdXQ9aGFuZGxlUGxhaW5JbnB1dChldmVudCkgb25pbnB1dD1oYW5kbGVQbGFp
bklucHV0KGV2ZW50KT48L3RleHRhcmVhPgorICAgIDxkaXYgaWQ9InJpY2giIGNvbnRlbnRlZGl0
YWJsZSBvbmJlZm9yZWlucHV0PWhhbmRsZVJpY2hJbnB1dChldmVudCkgb25pbnB1dD1oYW5kbGVS
aWNoSW5wdXQoZXZlbnQpPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICAgICAgZGVzY3JpcHRpb24oYFRvIG1hbnVhbGx5IHRlc3QgdGhpcywgdHlwZSBpbiBi
b3RoIHRoZSByaWNoIGNvbnRlbnRlZGl0YWJsZSBhbmQgcGxhaW4gdGV4dGFyZWEgYW5kL29yIGlu
c2VydCBjYW5kaWRhdGVzL2F1dG9jb3JyZWN0aW9ucy4KKyAgICAgICAgICAgIEJvdGggZWxlbWVu
dHMgc2hvdWxkIGhhdmUgZGF0YSB3aGVuIHR5cGluZyBub3JtYWxseSwgYnV0IG9ubHkgdGhlIHBs
YWluIHRleHRhcmVhIHNob3VsZCBoYXZlIGRhdGEgd2hlbiBpbnNlcnRpbmcgYSByZXBsYWNlbWVu
dC5gKTsKKyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIgfHwgIXdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dElucHV0RXZlbnRzRW5hYmxlZCh0cnVlKTsKKworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiI3BsYWluIikuZm9jdXMoKTsKKyAgICAgICAgICAgIHNpbXVsYXRlVHlwaW5nV2l0
aFJlcGxhY2VtZW50KGZhbHNlKTsKKworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiI3JpY2giKS5mb2N1cygpOworICAgICAgICAgICAgc2ltdWxhdGVUeXBpbmdXaXRoUmVwbGFj
ZW1lbnQodHJ1ZSk7CisgICAgICAgIH0pKCk7CisKKyAgICAgICAgZnVuY3Rpb24gc2ltdWxhdGVU
eXBpbmdXaXRoUmVwbGFjZW1lbnQoaXNSaWNoKQorICAgICAgICB7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5rZXlEb3duKCJoIiwgW10pOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bigiZSIsIFtdKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImwiLCBbXSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJvIiwgW10pOworICAgICAgICAgICAgaW50
ZXJuYWxzLmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCJoZWxsbyIsIDAsIDQpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlUmljaElucHV0KGV2ZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAiaW5zZXJ0VGV4dCIgfHwgZXZlbnQu
aW5wdXRUeXBlID09PSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IikKKyAgICAgICAgICAgICAgICBk
ZWJ1ZyhgUmljaCBjb250ZW50ZWRpdGFibGUgcmVjZWl2ZWQgJyR7ZXZlbnQudHlwZX0nIHdpdGgg
aW5wdXRUeXBlOiAnJHtldmVudC5pbnB1dFR5cGV9JyBhbmQgZGF0YTogJyR7ZXZlbnQuZGF0YX0n
YCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYW5kbGVQbGFpbklucHV0KGV2ZW50
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAiaW5zZXJ0
VGV4dCIgfHwgZXZlbnQuaW5wdXRUeXBlID09PSAiaW5zZXJ0UmVwbGFjZW1lbnRUZXh0IikKKyAg
ICAgICAgICAgICAgICBkZWJ1ZyhgUGxhaW4gdGV4dGFyZWEgcmVjZWl2ZWQgJyR7ZXZlbnQudHlw
ZX0nIHdpdGggaW5wdXRUeXBlOiAnJHtldmVudC5pbnB1dFR5cGV9JyBhbmQgZGF0YTogJyR7ZXZl
bnQuZGF0YX0nYCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CisKKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3IvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAyMjllNmE0Yzg2YTgzNjc0NWY5YTU1MjFlNjFlNTUyYTFiMmMzOGZh
Li44YWM0MzBiOTJiY2JkZjFmMjQ1NTY1YzJjMGQ2ZjQ3ZDY3MzBhODBjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MTk4LDYgKzExOTgsOCBAQCBmYXN0L2V2ZW50cy9mcmFtZS10YWItZm9jdXMuaHRtbCBbIEZhaWx1
cmUgXQogZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbCBbIEZhaWx1
cmUgXQogZmFzdC9ldmVudHMvaW5wdXRUZXh0LW5ldmVyLWZpcmVkLW9uLWtleWRvd24tY2FuY2Vs
Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5
cGluZy5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtZGF0
YS5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtdHlwaW5nLWRhdGEu
aHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LWV2ZW50cy1wcmV2ZW50
LWRlZmF1bHQuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9ldmVudHMvYmVmb3JlLWlucHV0LWV2ZW50
cy1wcmV2ZW50LWRlZmF1bHQtaW4tdGV4dGZpZWxkLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZl
bnRzL2JlZm9yZS1pbnB1dC1ldmVudHMtZGlmZmVyZW50LXN0YXJ0LWVuZC1lbGVtZW50cy5odG1s
IFsgRmFpbHVyZSBdCg==
</data>
<flag name="review"
          id="314206"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291123</attachid>
            <date>2016-10-10 10:58:41 -0700</date>
            <delta_ts>2016-10-10 11:32:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163113-20161010105521.patch</filename>
            <type>text/plain</type>
            <size>40235</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRhZjViNWE3ZGJjODRh
ZDhmOGU3MDhkNTk5NTU1ZjU0MjRkNDU0Yi4uM2RlZmY2OWExYzUxYTVhMmY3ZjZlMGJiZDRhNTQ4
ODMxMjU3NTZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE2LTEwLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgSW5w
dXRFdmVudC5kYXRhIGZvciB0aGUgbmV3IElucHV0RXZlbnQgc3BlYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTEzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yODY4MTkzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBJbnRyb2R1Y2VzIElucHV0RXZlbnQuZGF0YSwgYSBzdHJpbmcgYXR0cmlidXRlIHRo
YXQsIGlmIG5vbi1udWxsLCBpbmRpY2F0ZXMgdGhlIHRleHQgdG8gYmUgaW5zZXJ0ZWQgYnkgYW4g
aW5wdXQKKyAgICAgICAgZXZlbnQuIEZvciB0ZXh0IGFyZWFzIGFuZCB0ZXh0IGlucHV0cywgdGhl
ICdpbnNlcnRUZXh0JywgJ2luc2VydEZyb21QYXN0ZScsICdpbnNlcnRGcm9tRHJvcCcsIGFuZAor
ICAgICAgICAnaW5zZXJ0UmVwbGFjZW1lbnRUZXh0JyBpbnB1dCB0eXBlcyBzaG91bGQgY2F1c2Ug
c3Vic2VxdWVudCBgaW5wdXRgIGFuZCBgYmVmb3JlaW5wdXRgIGV2ZW50cyB0byBoYXZlIG5vbi1u
dWxsCisgICAgICAgIGRhdGEuIEhvd2V2ZXIsIGZvciBjb250ZW50ZWRpdGFibGUgYXJlYXMsIG9u
bHkgJ2luc2VydFRleHQnIGxlYWRzIHRvIGhhdmluZyBkYXRhIGluIHJlc3VsdGluZyBJbnB1dEV2
ZW50cy4KKworICAgICAgICBUbyBpbXBsZW1lbnQgdGhpcywgd2UgaW50cm9kdWNlIGEgbmV3IHZp
cnR1YWwgbWV0aG9kLCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEsIHdoaWNo
IGdpdmVzCisgICAgICAgIGNvbXBvc2l0ZSBlZGl0aW5nIGNvbW1hbmRzIHRoZSBjaGFuY2UgdG8g
dmVuZCBhIGRhdGEgc3RyaW5nIGZvciBpbnB1dCBldmVudHMgdGhleSBtaWdodCBmaXJlIChieSBk
ZWZhdWx0LCB0aGlzCisgICAgICAgIGlzIG51bGwpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2
ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtZGF0YS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2
ZW50cy9pbnB1dC1ldmVudHMtdHlwaW5nLWRhdGEuaHRtbAorCisgICAgICAgICogZG9tL0lucHV0
RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFdmVudDo6SW5wdXRFdmVudCk6Cisg
ICAgICAgICogZG9tL0lucHV0RXZlbnQuaDoKKyAgICAgICAgKiBkb20vSW5wdXRFdmVudC5pZGw6
CisKKyAgICAgICAgQ3VycmVudGx5LCBvdXIgSW5wdXRFdmVudEluaXQgc3RydWN0IGlzIHdyb25n
LiBBY2NvcmRpbmcgdG8gdGhlIFVJLUV2ZW50cyBzcGVjIGF0IHd3dy53My5vcmcvVFIvdWlldmVu
dHMvLCB0aGUKKyAgICAgICAgaW5pdCBzdHJ1Y3QgZm9yIGFuIElucHV0RXZlbnQgc2hvdWxkIGNv
bnRhaW4gYSBkYXRhIHN0cmluZyAoYWRkZWQgaW4gdGhpcyBwYXRjaCkgYXMgd2VsbCBhcyBhbiBp
c0NvbXBvc2luZyBmbGFnCisgICAgICAgICh0byBiZSBhZGRlZCBpbiBhIGZ1dHVyZSBwYXRjaCBh
bG9uZyB3aXRoIGNvbXBvc2l0aW9uIHN1cHBvcnQpLiBXaGlsZSBhZGRpbmcgc3VwcG9ydCBmb3Ig
dGhlIGRhdGEgYXR0cmlidXRlLCB3ZQorICAgICAgICB0d2VhayB0aGUgSW5wdXRFdmVudCBJREwg
YW5kIGhlYWRlcnMgc2xpZ2h0bHkgdG8gYWRqdXN0IGZvciB0aGlzLgorCisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hJbnB1dEV2ZW50KToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjppbnB1dEV2
ZW50RGF0YSk6CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0Q29tbWFuZDo6aXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwYXRjaElucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0
Y2hCZWZvcmVJbnB1dEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaElucHV0RXZl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2lsbEFwcGx5RWRpdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvUmVw
bGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6aW5wdXRFdmVudERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRF
dmVudERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5o
OgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OndpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6Omluc2VydFRleHRSdW5XaXRob3V0TmV3bGluZXMpOgorICAgICAgICAqIGVkaXRp
bmcvVHlwaW5nQ29tbWFuZC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRj
aEZvcm1Db250cm9sSW5wdXRFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldEVkaXRpbmdWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaENoYW5nZUV2ZW50Rm9yTWVudUxpc3Qp
OgorCiAyMDE2LTEwLTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFN1cHBvcnQgSW5wdXRFdmVudC5pbnB1dFR5cGUgZm9yIHRoZSBuZXcgSW5wdXRF
dmVudCBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5jcHAKaW5kZXggZTg3YjMxZmIwNDkwY2Yx
ZTkzODBjOWZjMzkzZDZhNzlkZWM5NzY0MS4uNmYyZjIzYzgzNjExMmE2MjJkNDUwYWQ2ZmIwOWRk
NWI4NzQ3ODZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmNwcApAQCAtMzQsMTUgKzM0LDE3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5wdXRFdmVudDo6SW5wdXRFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRvdyogdmlldywgaW50IGRldGFpbCkK
K0lucHV0RXZlbnQ6OklucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNv
bnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBE
T01XaW5kb3cqIHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGRldGFpbCkKICAgICA6IFVJ
RXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCkKICAg
ICAsIG1faW5wdXRUeXBlKGlucHV0VHlwZSkKKyAgICAsIG1fZGF0YShkYXRhKQogewogfQogCiBJ
bnB1dEV2ZW50OjpJbnB1dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25z
dCBJbnB1dEV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCiAgICAgOiBVSUV2ZW50KGV2ZW50VHlwZSwg
aW5pdGlhbGl6ZXIpCi0gICAgLCBtX2lucHV0VHlwZShpbml0aWFsaXplci5pbnB1dFR5cGUpCisg
ICAgLCBtX2lucHV0VHlwZShlbXB0eVN0cmluZygpKQorICAgICwgbV9kYXRhKGluaXRpYWxpemVy
LmRhdGEpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5wdXRFdmVudC5oCmluZGV4IGQwMDkzNDJmN2U0OTI4
NTBlOGNmZTRlZTcxNmFhYjc3ZmI1YjEyNjAuLmU2YTVlYTg1OGIxZGE3MWExNGQ3Mzk2ODk2ZGEz
NTkzMGM2YTE3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaApAQCAtMzIsMTUgKzMyLDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERhdGFUcmFuc2Zl
cjsKIAotc3RydWN0IElucHV0RXZlbnRJbml0IDogcHVibGljIFVJRXZlbnRJbml0IHsKLSAgICBT
dHJpbmcgaW5wdXRUeXBlOworc3RydWN0IElucHV0RXZlbnRJbml0IDogVUlFdmVudEluaXQgewor
ICAgIFN0cmluZyBkYXRhOworICAgIGJvb2wgaXNDb21wb3Npbmc7CiB9OwogCiBjbGFzcyBJbnB1
dEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
SW5wdXRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGlucHV0VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2lu
ZG93KiB2aWV3LCBpbnQgZGV0YWlsKQorICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGlucHV0VHlwZSwg
Ym9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgRE9NV2luZG93KiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEsIGludCBkZXRhaWwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbnB1dEV2ZW50KGV2ZW50VHlwZSwgaW5wdXRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUsIHZpZXcsIGRldGFpbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnB1dEV2
ZW50KGV2ZW50VHlwZSwgaW5wdXRUeXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRh
dGEsIGRldGFpbCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8SW5wdXRFdmVudD4gY3JlYXRl
Rm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbnB1dEV2ZW50SW5p
dCYgaW5pdGlhbGl6ZXIpCkBAIC00OCwxNyArNDksMTkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbnB1dEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CiAgICAgfQog
Ci0gICAgSW5wdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBpbnB1dFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIERPTVdpbmRv
dyosIGludCBkZXRhaWwpOworICAgIElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBET01XaW5kb3cqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBkZXRhaWwpOwogICAg
IElucHV0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IElucHV0RXZl
bnRJbml0Jik7CiAKICAgICB2aXJ0dWFsIH5JbnB1dEV2ZW50KCkgeyB9CiAKICAgICBib29sIGlz
SW5wdXRFdmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIElucHV0RXZlbnRJ
bnRlcmZhY2VUeXBlOyB9Ci0gICAgU3RyaW5nIGlucHV0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5wdXRUeXBlOyB9CisgICAgY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2lucHV0VHlwZTsgfQorICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lucHV0VHlwZTsKKyAgICBTdHJp
bmcgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0lucHV0RXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0lucHV0
RXZlbnQuaWRsCmluZGV4IGE0MjJiOTdlZGMxNDRhMmUxYjc1ZjM3OTEyN2ExZjY4ODkzNDhiM2Mu
LmI0YTA2NGQxNDAxZTcwNjMzNWJjYThlYThlODMxYTcxZTRmODg2MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbnB1dEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5wdXRFdmVudC5pZGwKQEAgLTI2LDUgKzI2LDYgQEAKIFsKICAgICBDb25zdHJ1Y3RvclRlbXBs
YXRlPUV2ZW50CiBdIGludGVyZmFjZSBJbnB1dEV2ZW50IDogVUlFdmVudCB7Ci0gICAgW0luaXRp
YWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlu
cHV0VHlwZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlucHV0VHlwZTsKKyAg
ICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmc/IGRhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGYwYTk4ZDQyOGUzNThjMzMyZTQz
NGJiNDFkYWI1Yzg3ZDNiZDI0Y2EuLjE0ODAxMmJjZDVjODQ2NjE0MThmMDcyM2VhYmRmOTEzYjE2
NjAyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTIxOTgsMTMgKzIxOTgsOSBAQCBib29sIE5vZGU6
OmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogICAgIHJl
dHVybiAhYmVmb3JlTG9hZEV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKLXZvaWQgTm9k
ZTo6ZGlzcGF0Y2hJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgaW5wdXRUeXBlKQordm9pZCBOb2Rl
OjpkaXNwYXRjaElucHV0RXZlbnQoKQogewotICAgIGF1dG8qIHNldHRpbmdzID0gZG9jdW1lbnQo
KS5zZXR0aW5ncygpOwotICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aW5wdXRFdmVudHNF
bmFibGVkKCkpCi0gICAgICAgIGRpc3BhdGNoU2NvcGVkRXZlbnQoSW5wdXRFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBpbnB1dFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVu
dCgpLmRlZmF1bHRWaWV3KCksIDApKTsKLSAgICBlbHNlCi0gICAgICAgIGRpc3BhdGNoU2NvcGVk
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgdHJ1ZSwgZmFsc2Up
KTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlu
cHV0RXZlbnQsIHRydWUsIGZhbHNlKSk7CiB9CiAKIHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAxMDdmZWZlMTQzN2QwNjA1NjBiYzMx
Y2M1OWQxODNjMDBkNWVmZjA5Li5lMjQ5YzJiODEwNTE1YjllZmQ3OGM4MzVkODc2ZmUyOWViNzU1
NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUyNSw3ICs1MjUsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBpbnB1dFR5cGUp
OworICAgIHZvaWQgZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiAKICAgICAvLyBQZXJmb3JtIHRoZSBk
ZWZhdWx0IGFjdGlvbiBmb3IgYW4gZXZlbnQuCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAppbmRleCAwZjI4N2E0MTE1MmVlZGEyYTVhNDkzM2NhNDgzNDNiZWViNjg3Njgz
Li42M2ZhYTlhNGZkOTIyNzBjOTI0YTAwNmUyZDc5NTUxZjI2MDRiNDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC0xMTQsNiArMTE0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlv
bkluZGljYXRvcihib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcENhcmV0Qmxpbmtp
bmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGlucHV0RXZl
bnRUeXBlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGlucHV0RXZlbnREYXRhKCkg
Y29uc3QgeyByZXR1cm4geyB9OyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDb21wb3Np
dGVFZGl0Q29tbWFuZChEb2N1bWVudCYsIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uVW5zcGVjaWZp
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAppbmRleCA3YWY1OGY5ZmJj
YjM1NDYwNzA4ODA4NmNmZjQ0NjBhMmZkZTAzMjljLi45MDAyNDY4NDJmZDQ3YmRiYjYxZTA1YzVh
YjAyZmQ4OWZmNWU2ZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcApA
QCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJz
YWwuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogCkBAIC0xNDAsNiArMTQyLDIzIEBAIHN0
YXRpYyBpbmxpbmUgRWRpdENvbW1hbmRDb21wb3NpdGlvbiogY29tcG9zaXRpb25JZlBvc3NpYmxl
KEVkaXRDb21tYW5kKiBjb21tYW5kCiAgICAgcmV0dXJuIHRvQ29tcG9zaXRlRWRpdENvbW1hbmQo
Y29tbWFuZCktPmNvbXBvc2l0aW9uKCk7CiB9CiAKK2Jvb2wgRWRpdENvbW1hbmQ6OmlzRWRpdGlu
Z1RleHRBcmVhT3JUZXh0SW5wdXQoKSBjb25zdAoreworICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1
bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvKiBjb250YWluZXIgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3Rh
cnQoKS5jb250YWluZXJOb2RlKCk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8qIGFuY2VzdG9yID0gY29udGFpbmVyLT5zaGFkb3dIb3N0KCk7
CisgICAgaWYgKCFhbmNlc3RvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCphbmNlc3RvcikgfHwgKGlzPEhUTUxJbnB1dEVsZW1l
bnQ+KCphbmNlc3RvcikgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmFuY2VzdG9yKS5p
c1RleHQoKSk7Cit9CisKIHZvaWQgRWRpdENvbW1hbmQ6OnNldFN0YXJ0aW5nU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHMpCiB7CiAgICAgZm9yIChFZGl0Q29tbWFuZCogY21kID0g
dGhpczsgOyBjbWQgPSBjbWQtPm1fcGFyZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21t
YW5kLmgKaW5kZXggMDQ4NTBkZmFlZjhjNjA4NWIxODg4NWNmOTA4ZDhhYzM4ZGQ1YzA5NC4uMDFh
MzFhNzNkOWExOTE2OGM4ZjkyMTBmYjM3NDU1MGRjNjQ5MTIwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdENvbW1hbmQuaApAQCAtNzIsNiArNzIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBz
ZXRTdGFydGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRFbmRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
OwogCisgICAgYm9vbCBpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkgY29uc3Q7CisKICAg
ICB2b2lkIHBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oQVhUZXh0RWRpdFR5cGUsIGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihB
WFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzNTBlNWJhMGI3YTJhZWZiODUzMjIyNWNh
YTM1MjRmMzAyYjZmMTgwLi45YmVjMWQ0YWNlMmE0YjA3MjM0MWRlMDMyYmZkNTFlYTM2ZDQ0YWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMTEsMTggKzExMSwyNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVu
dChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZSkKK3N0YXRp
YyBib29sIGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIGlucHV0VHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhID0geyB9KQogewogICAg
IGF1dG8qIHNldHRpbmdzID0gZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCk7CiAgICAgaWYg
KCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmlucHV0RXZlbnRzRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmJlZm9yZWlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwgdHJ1ZSwgZWxlbWVudC5k
b2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIDApOworICAgIGF1dG8gZXZlbnQgPSBJbnB1dEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmJlZm9yZWlucHV0RXZlbnQsIGlucHV0VHlwZSwgdHJ1ZSwg
dHJ1ZSwgZWxlbWVudC5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIGRhdGEsIDApOwogICAgIGVs
ZW1lbnQuZGlzcGF0Y2hTY29wZWRFdmVudChldmVudCk7CiAKICAgICByZXR1cm4gIWV2ZW50LT5k
ZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGRpc3BhdGNoSW5wdXRFdmVudChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZSwgY29uc3QgU3Ry
aW5nJiBkYXRhID0geyB9KQoreworICAgIGF1dG8qIHNldHRpbmdzID0gZWxlbWVudC5kb2N1bWVu
dCgpLnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5pbnB1dEV2ZW50
c0VuYWJsZWQoKSkKKyAgICAgICAgZWxlbWVudC5kaXNwYXRjaFNjb3BlZEV2ZW50KElucHV0RXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgaW5wdXRUeXBlLCB0cnVlLCBmYWxz
ZSwgZWxlbWVudC5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIGRhdGEsIDApKTsKKyAgICBlbHNl
CisgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hJbnB1dEV2ZW50KCk7Cit9CisKIGNsYXNzIENsZWFy
VGV4dENvbW1hbmQgOiBwdWJsaWMgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZCB7CiBwdWJsaWM6CiAg
ICAgQ2xlYXJUZXh0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpOwpAQCAtMTA0MywyMiArMTA1
MiwyMiBAQCBzdGF0aWMgdm9pZCBub3RpZnlUZXh0RnJvbUNvbnRyb2xzKEVsZW1lbnQqIHN0YXJ0
Um9vdCwgRWxlbWVudCogZW5kUm9vdCkKICAgICAgICAgZW5kaW5nVGV4dENvbnRyb2wtPmRpZEVk
aXRJbm5lclRleHRWYWx1ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBkaXNwYXRjaEJlZm9yZUlucHV0
RXZlbnRzKFJlZlB0cjxFbGVtZW50PiBzdGFydFJvb3QsIFJlZlB0cjxFbGVtZW50PiBlbmRSb290
LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZU5hbWUpCitzdGF0aWMgYm9vbCBkaXNwYXRj
aEJlZm9yZUlucHV0RXZlbnRzKFJlZlB0cjxFbGVtZW50PiBzdGFydFJvb3QsIFJlZlB0cjxFbGVt
ZW50PiBlbmRSb290LCBjb25zdCBBdG9taWNTdHJpbmcmIGlucHV0VHlwZU5hbWUsIGNvbnN0IFN0
cmluZyYgZGF0YSA9IHsgfSkKIHsKICAgICBib29sIGNvbnRpbnVlV2l0aERlZmF1bHRCZWhhdmlv
ciA9IHRydWU7CiAgICAgaWYgKHN0YXJ0Um9vdCkKLSAgICAgICAgY29udGludWVXaXRoRGVmYXVs
dEJlaGF2aW9yICY9IGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCgqc3RhcnRSb290LCBpbnB1dFR5
cGVOYW1lKTsKKyAgICAgICAgY29udGludWVXaXRoRGVmYXVsdEJlaGF2aW9yICY9IGRpc3BhdGNo
QmVmb3JlSW5wdXRFdmVudCgqc3RhcnRSb290LCBpbnB1dFR5cGVOYW1lLCBkYXRhKTsKICAgICBp
ZiAoZW5kUm9vdCAmJiBlbmRSb290ICE9IHN0YXJ0Um9vdCkKLSAgICAgICAgY29udGludWVXaXRo
RGVmYXVsdEJlaGF2aW9yICY9IGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudCgqZW5kUm9vdCwgaW5w
dXRUeXBlTmFtZSk7CisgICAgICAgIGNvbnRpbnVlV2l0aERlZmF1bHRCZWhhdmlvciAmPSBkaXNw
YXRjaEJlZm9yZUlucHV0RXZlbnQoKmVuZFJvb3QsIGlucHV0VHlwZU5hbWUsIGRhdGEpOwogICAg
IHJldHVybiBjb250aW51ZVdpdGhEZWZhdWx0QmVoYXZpb3I7CiB9CiAKLXN0YXRpYyB2b2lkIGRp
c3BhdGNoSW5wdXRFdmVudHMoUmVmUHRyPEVsZW1lbnQ+IHN0YXJ0Um9vdCwgUmVmUHRyPEVsZW1l
bnQ+IGVuZFJvb3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBlTmFtZSkKK3N0YXRpYyB2
b2lkIGRpc3BhdGNoSW5wdXRFdmVudHMoUmVmUHRyPEVsZW1lbnQ+IHN0YXJ0Um9vdCwgUmVmUHRy
PEVsZW1lbnQ+IGVuZFJvb3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5wdXRUeXBlTmFtZSwgY29u
c3QgU3RyaW5nJiBkYXRhID0geyB9KQogewogICAgIGlmIChzdGFydFJvb3QpCi0gICAgICAgIHN0
YXJ0Um9vdC0+ZGlzcGF0Y2hJbnB1dEV2ZW50KGlucHV0VHlwZU5hbWUpOworICAgICAgICBkaXNw
YXRjaElucHV0RXZlbnQoKnN0YXJ0Um9vdCwgaW5wdXRUeXBlTmFtZSwgZGF0YSk7CiAgICAgaWYg
KGVuZFJvb3QgJiYgZW5kUm9vdCAhPSBzdGFydFJvb3QpCi0gICAgICAgIGVuZFJvb3QtPmRpc3Bh
dGNoSW5wdXRFdmVudChpbnB1dFR5cGVOYW1lKTsKKyAgICAgICAgZGlzcGF0Y2hJbnB1dEV2ZW50
KCplbmRSb290LCBpbnB1dFR5cGVOYW1lLCBkYXRhKTsKIH0KIAogYm9vbCBFZGl0b3I6OndpbGxB
cHBseUVkaXRpbmcoQ29tcG9zaXRlRWRpdENvbW1hbmQmIGNvbW1hbmQpIGNvbnN0CkBAIC0xMDY3
LDcgKzEwNzYsNyBAQCBib29sIEVkaXRvcjo6d2lsbEFwcGx5RWRpdGluZyhDb21wb3NpdGVFZGl0
Q29tbWFuZCYgY29tbWFuZCkgY29uc3QKICAgICBpZiAoIWNvbXBvc2l0aW9uKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBv
c2l0aW9uLT5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24tPmVuZGlu
Z1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tbWFuZC5pbnB1dEV2ZW50VHlwZU5hbWUoKSk7Cisg
ICAgcmV0dXJuIGRpc3BhdGNoQmVmb3JlSW5wdXRFdmVudHMoY29tcG9zaXRpb24tPnN0YXJ0aW5n
Um9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxl
bWVudCgpLCBjb21tYW5kLmlucHV0RXZlbnRUeXBlTmFtZSgpLCBjb21tYW5kLmlucHV0RXZlbnRE
YXRhKCkpOwogfQogCiB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDb21w
b3NpdGVFZGl0Q29tbWFuZD4gY21kKQpAQCAtMTA4Niw3ICsxMDk1LDcgQEAgdm9pZCBFZGl0b3I6
OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGNtZCkKICAg
ICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zID0gY21kLT5pc0Rp
Y3RhdGlvbkNvbW1hbmQoKSA/IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25UcmlnZ2VyZWQgOiAw
OwogICAgIAogICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIG9w
dGlvbnMpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24tPnN0YXJ0aW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi0+ZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVu
dCgpLCBjbWQtPmlucHV0RXZlbnRUeXBlTmFtZSgpKTsKKyAgICBkaXNwYXRjaElucHV0RXZlbnRz
KGNvbXBvc2l0aW9uLT5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24t
PmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY21kLT5pbnB1dEV2ZW50VHlwZU5hbWUoKSwg
Y21kLT5pbnB1dEV2ZW50RGF0YSgpKTsKIAogICAgIHVwZGF0ZUVkaXRvclVJTm93SWZTY2hlZHVs
ZWQoKTsKICAgICAKQEAgLTE3MDUsNyArMTcxNCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpmb2N1c2VkRWxl
bWVudCkuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkaXJBdHRyLCBkaXJlY3Rp
b24gPT0gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uID8gImx0ciIgOiAicnRsIik7Ci0gICAg
ICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaElucHV0RXZlbnQoZW1wdHlTdHJpbmcoKSk7Cisg
ICAgICAgIGZvY3VzZWRFbGVtZW50LT5kaXNwYXRjaElucHV0RXZlbnQoKTsKICAgICAgICAgZG9j
dW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zMTE2LDcgKzMxMjUsNyBAQCB2b2lkIEVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxl
KEVkaXRpbmdTdHlsZSYgc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdAogICAgICAgICBhcHBs
eUNvbW1hbmQoQXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBibG9ja1N0eWxl
LmdldCgpLCBlZGl0aW5nQWN0aW9uKSk7CiAKICAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgZWxl
bWVudC0+ZGlzcGF0Y2hJbnB1dEV2ZW50KGlucHV0VHlwZU5hbWUpOworICAgICAgICBkaXNwYXRj
aElucHV0RXZlbnQoKmVsZW1lbnQsIGlucHV0VHlwZU5hbWUpOwogCiAgICAgLy8gU2V0IHRoZSBy
ZW1haW5pbmcgc3R5bGUgYXMgdGhlIHR5cGluZyBzdHlsZS4KICAgICBtX2ZyYW1lLnNlbGVjdGlv
bigpLnNldFR5cGluZ1N0eWxlKHR5cGluZ1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kLmNwcAppbmRleCA5ODZlZTU4
Yjc4MzRjODAxZGZkMmUwNjhjMWJiMTkyMzljMDgyMDMzLi5lMTI4NjVjNGJkMDc0ZWE1YTcyYWMz
YzQ3YmFmZDY1ZDRlMzFmZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCkBAIC02NSw0ICs2NSwxMiBAQCB2b2lk
IFJlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgYXBwbHlDb21tYW5k
VG9Db21wb3NpdGUoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBX
VEZNb3ZlKGZyYWdtZW50KSwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUsIEVk
aXRBY3Rpb25QYXN0ZSkpOwogfQogCitTdHJpbmcgUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5k
OjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKGlzRWRpdGluZ1RleHRBcmVhT3JU
ZXh0SW5wdXQoKSkKKyAgICAgICAgcmV0dXJuIG1fdGV4dDsKKworICAgIHJldHVybiBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRo
VGV4dENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRl
eHRDb21tYW5kLmgKaW5kZXggNmM0OTlmMjA0ODY2MzI3ZjAyOTJhYjgzNTEyMzhlYTc4NzlhNDJl
YS4uZTdiNmMyNDcwNTcxNzA2ZDM5NDljM2E3ZjRiY2QxOWE5NTQxNzYzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oCkBA
IC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVwbGFjZVJhbmdlV2l0aFRl
eHRDb21tYW5kKFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQsIGNvbnN0IFN0cmluZyYg
dGV4dCk7CiAgICAgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGlucHV0RXZl
bnREYXRhKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWZQdHI8UmFuZ2U+IG1fcmFuZ2VUb0JlUmVw
bGFjZWQ7CiAgICAgU3RyaW5nIG1fdGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMjRhNzcwNGNjMjk5NTMxNGJiY2U3
YzQ5MzkxM2Q0M2I2MTExOWI4Ni4uYTI3NjY0ZmNiM2QzZDE3ZWE5MmZlNzk0ZTI4NmNhNmE5MDYw
ZDUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKQEAgLTEyNTQsNiArMTI1NCwxNCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KCkKICAgICBjb21wbGV0ZUhUTUxSZXBsYWNlbWVudChsYXN0UG9zaXRp
b25Ub1NlbGVjdCk7CiB9CiAKK1N0cmluZyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5wdXRF
dmVudERhdGEoKSBjb25zdAoreworICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0
KCkpCisgICAgICAgIHJldHVybiBtX2RvY3VtZW50RnJhZ21lbnQtPnRleHRDb250ZW50KCk7CisK
KyAgICByZXR1cm4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCk7Cit9CisK
IGJvb2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZFJlbW92ZUVuZEJSKE5vZGUqIGVu
ZEJSLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsVmlzUG9zQmVmb3JlRW5kQlIpCiB7
CiAgICAgaWYgKCFlbmRCUiB8fCAhZW5kQlItPmluRG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCAwOGE4MTBlMzQ1
YWVmYWMwYmYzZmRiZDM0ZWM5YWYwNDFmODVmOGFjLi40ZjhmMjNkYWI1Nzg1OWFiNjQ3NjNkMzhk
ZWIxMzVhYzdlMDViOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQmLCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiwgQ29tbWFuZE9wdGlvbnMsIEVkaXRBY3Rpb24pOwogCisgICAgU3RyaW5nIGlucHV0
RXZlbnREYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKIAog
ICAgIGNsYXNzIEluc2VydGVkTm9kZXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYTQyODdkNGVhYmNhNWVlNTZh
ZmM0YzEwOWQ3MDkwNGJmY2ZiODI0Ni4uZjBiMTUxODNmYzA3ZTI2YzFhYzhkNmI3YTgwOGQyYmZj
ZTg1NGI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xMTEsNiArMTExLDE0IEBAIHZvaWQgU3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50
KSwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUsIEVkaXRBY3Rpb25QYXN0ZSkp
OwogfQogCitTdHJpbmcgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGEo
KSBjb25zdAoreworICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkpCisgICAg
ICAgIHJldHVybiBtX2NvcnJlY3Rpb247CisKKyAgICByZXR1cm4gQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmlucHV0RXZlbnREYXRhKCk7Cit9CisKIGJvb2wgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZDo6c2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoKSBjb25zdAogewogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuaAppbmRleCAyNDg4MjUzMmI1YjlmZDIyMWU0OWFmZDlhNzRiNjNhZDFlZDZm
NTI3Li40YzU3Njk5Y2QxNjk0ZWM3YzhkMWUxODg5NmQ2MjE3ZWVkZGFjM2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaApAQCAt
NDIsNiArNDIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwogICAg
IGJvb2wgc2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoKSBjb25zdCBvdmVycmlk
ZTsKIAorICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSgpIGNvbnN0IGZpbmFsOworCiAgICAgUmVm
UHRyPFJhbmdlPiBtX3JhbmdlVG9CZUNvcnJlY3RlZDsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1f
c2VsZWN0aW9uVG9CZUNvcnJlY3RlZDsKICAgICBTdHJpbmcgbV9jb3JyZWN0ZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCBlMzVmNmQzMGYyZmVmZjNmMzY2
YTg1ODQwOTg5MGVmZDk4OTIwMzNhLi42YWNhOTRiZWVhMmRiNmI2NTgxNDI4ZWRkZmQ0Nzc4MWY5
Y2U3MDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTEx
MCw2ICsxMTAsNyBAQCBUeXBpbmdDb21tYW5kOjpUeXBpbmdDb21tYW5kKERvY3VtZW50JiBkb2N1
bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIGNvbgogICAgIDogVGV4dEluc2VydGlv
bkJhc2VDb21tYW5kKGRvY3VtZW50LCBlZGl0QWN0aW9uRm9yVHlwaW5nQ29tbWFuZChjb21tYW5k
VHlwZSwgZ3JhbnVsYXJpdHkpKQogICAgICwgbV9jb21tYW5kVHlwZShjb21tYW5kVHlwZSkKICAg
ICAsIG1fdGV4dFRvSW5zZXJ0KHRleHRUb0luc2VydCkKKyAgICAsIG1fY3VycmVudFRleHRUb0lu
c2VydCh0ZXh0VG9JbnNlcnQpCiAgICAgLCBtX29wZW5Gb3JNb3JlVHlwaW5nKHRydWUpCiAgICAg
LCBtX3NlbGVjdEluc2VydGVkVGV4dChvcHRpb25zICYgU2VsZWN0SW5zZXJ0ZWRUZXh0KQogICAg
ICwgbV9zbWFydERlbGV0ZShvcHRpb25zICYgU21hcnREZWxldGUpCkBAIC0zNDQsNiArMzQ1LDE0
IEBAIFN0cmluZyBUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50VHlwZU5hbWUoKSBjb25zdAogICAg
IHJldHVybiBpbnB1dFR5cGVOYW1lRm9yRWRpdGluZ0FjdGlvbihtX2N1cnJlbnRUeXBpbmdFZGl0
QWN0aW9uKTsKIH0KIAorU3RyaW5nIFR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhKCkgY29u
c3QKK3sKKyAgICBpZiAobV9jdXJyZW50VHlwaW5nRWRpdEFjdGlvbiA9PSBFZGl0QWN0aW9uVHlw
aW5nSW5zZXJ0VGV4dCkKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudFRleHRUb0luc2VydDsKKwor
ICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEoKTsKK30KKwog
dm9pZCBUeXBpbmdDb21tYW5kOjpkaWRBcHBseUNvbW1hbmQoKQogewogICAgIC8vIFR5cGluZ0Nv
bW1hbmRzIGhhbmRsZSBhcHBsaWVkIGVkaXRpbmcgc2VwYXJhdGVseSAoc2VlIFR5cGluZ0NvbW1h
bmQ6OnR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZCkuCkBAIC00MDQsMTMgKzQxMywxMiBAQCB2b2lk
IFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyhFVHlwaW5nQ29tbWFu
ZCBjb21tYW5kVHlwZSkKICAgICB9CiB9CiAKLWJvb2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSkKK2Jvb2wgVHlwaW5nQ29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3Bl
bkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGUsIFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmIChtX2lzSGFuZGxpbmdJbml0
aWFsVHlwaW5nQ29tbWFuZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBGSVhNRTog
VXNlIHRoZSBuZXdseSBhZGRlZCB0eXBpbmcgY29tbWFuZCBhbmQgZ3JhbnVsYXJpdHkgdG8gZW5z
dXJlIHRoYXQgYW4gSW5wdXRFdmVudCB3aXRoIHRoZQotICAgIC8vIGNvcnJlY3QgaW5wdXRUeXBl
IGlzIGRpc3BhdGNoZWQuCisgICAgbV9jdXJyZW50VGV4dFRvSW5zZXJ0ID0gdGV4dDsKICAgICBt
X2N1cnJlbnRUeXBpbmdFZGl0QWN0aW9uID0gZWRpdEFjdGlvbkZvclR5cGluZ0NvbW1hbmQoY29t
bWFuZFR5cGUsIGdyYW51bGFyaXR5KTsKICAgICByZXR1cm4gZnJhbWUoKS5lZGl0b3IoKS53aWxs
QXBwbHlFZGl0aW5nKCp0aGlzKTsKIH0KQEAgLTQ1Niw3ICs0NjQsNyBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6Omluc2VydFRleHRBbmROb3RpZnlBY2Nlc3NpYmlsaXR5KGNvbnN0IFN0cmluZyAmdGV4
dCwgYm9vbCBzZQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHRSdW5XaXRob3V0TmV3
bGluZXMoY29uc3QgU3RyaW5nICZ0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkKIHsKLSAg
ICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRleHQsIENoYXJhY3Rlckdy
YW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRl
eHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVmUHRyPEluc2VydFRleHRDb21tYW5kPiBjb21tYW5kID0gSW5zZXJ0VGV4dENvbW1hbmQ6OmNy
ZWF0ZShkb2N1bWVudCgpLCB0ZXh0LCBzZWxlY3RJbnNlcnRlZFRleHQsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5oCmluZGV4IGNkZDZhZTZlYzZmMGFiOTlkYTg5M2YxMTAxM2I1
YWExMDYyODVlZTguLmU5MDIwZDI0NjA1YWYwOTA1MjkzNmMxMDEzM2ViYzViMjE4MTRhOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCkBAIC0xMTcsMTEgKzExNywxMiBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0U2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcoYm9vbCBw
cmV2ZW50KSB7IG1fc2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcgPSBwcmV2ZW50OyB9CiAKICAg
ICBTdHJpbmcgaW5wdXRFdmVudFR5cGVOYW1lKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGlu
cHV0RXZlbnREYXRhKCkgY29uc3QgZmluYWw7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTZWxl
Y3Rpb25JZkRpZmZlcmVudEZyb21DdXJyZW50U2VsZWN0aW9uKFR5cGluZ0NvbW1hbmQqLCBGcmFt
ZSopOwogCiAgICAgdm9pZCB1cGRhdGVQcmVzZXJ2ZXNUeXBpbmdTdHlsZShFVHlwaW5nQ29tbWFu
ZCk7Ci0gICAgYm9vbCB3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChFVHlwaW5nQ29tbWFuZCwg
VGV4dEdyYW51bGFyaXR5KTsKKyAgICBib29sIHdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEVU
eXBpbmdDb21tYW5kLCBUZXh0R3JhbnVsYXJpdHksIGNvbnN0IFN0cmluZyYgPSBlbXB0eVN0cmlu
ZygpKTsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyhFVHlwaW5nQ29tbWFu
ZCk7CiAgICAgdm9pZCB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQpOwog
ICAgIGJvb2wgbWFrZUVkaXRhYmxlUm9vdEVtcHR5KCk7CkBAIC0xMzgsNiArMTM5LDcgQEAgcHJp
dmF0ZToKICAgICBFVHlwaW5nQ29tbWFuZCBtX2NvbW1hbmRUeXBlOwogICAgIEVkaXRBY3Rpb24g
bV9jdXJyZW50VHlwaW5nRWRpdEFjdGlvbjsKICAgICBTdHJpbmcgbV90ZXh0VG9JbnNlcnQ7Cisg
ICAgU3RyaW5nIG1fY3VycmVudFRleHRUb0luc2VydDsKICAgICBib29sIG1fb3BlbkZvck1vcmVU
eXBpbmc7CiAgICAgYm9vbCBtX3NlbGVjdEluc2VydGVkVGV4dDsKICAgICBib29sIG1fc21hcnRE
ZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCBmYmZiMjc1NTc1MWNkMDhlYmI3OWQ2ZjI1NzUzZTliMDE4MWU3MjA1Li40MWExZWJh
YTZlZjM1MzQwNjY1ZDk3ZTM0NGE5NzE3ZTZiOGE0ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgp
CiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9ybUNvbnRyb2xJbnB1dEV2
ZW50KCkKIHsKICAgICBzZXRDaGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCh0
cnVlKTsKLSAgICBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hJbnB1dEV2ZW50KGVtcHR5U3RyaW5nKCkp
OworICAgIEhUTUxFbGVtZW50OjpkaXNwYXRjaElucHV0RXZlbnQoKTsKIH0KIAogYm9vbCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNjkxYThmNWY5Y2M0MGQ5YWJi
NzAxNmI4ZjAwM2FjNmE0ODZjMDQ1ZC4uZmI3Y2RlZGMzNzc1OTM3OTM2YWNlNDQ0MDA1Y2UwYzI2
MzRhNzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0x
MDE1LDcgKzEwMTUsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEVkaXRpbmdWYWx1ZShj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGVsc2UKICAgICAgICAgY2FjaGVTZWxlY3Rpb25JblJl
c3BvbnNlVG9TZXRWYWx1ZShtYXgpOwogCi0gICAgZGlzcGF0Y2hJbnB1dEV2ZW50KGVtcHR5U3Ry
aW5nKCkpOworICAgIGRpc3BhdGNoSW5wdXRFdmVudCgpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCkBAIC0xMDk1LDcgKzEwOTUsNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAKICAgICAvLyBJbnB1dCBldmVudCBpcyBmaXJlZCBieSB0aGUgTm9kZTo6ZGVm
YXVsdEV2ZW50SGFuZGxlciBmb3IgZWRpdGFibGUgY29udHJvbHMuCiAgICAgaWYgKCFpc1RleHRG
aWVsZCgpKQotICAgICAgICBkaXNwYXRjaElucHV0RXZlbnQoZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIGRpc3BhdGNoSW5wdXRFdmVudCgpOwogCiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCAwZTg1NTlhOWVkNWQ2
YTI4ODlkMWU5ZTQ3Zjg3NzIzYjYxZjQwMTFmLi5lMTNlYTk4ZGQxZjZjMWE3ODAyNTAzZWFmNTE3
YTk1MTQyNWExMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cApAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hPbkNo
YW5nZSgpCiAgICAgfQogCiAgICAgaWYgKGZpcmVPbkNoYW5nZSkgewotICAgICAgICBkaXNwYXRj
aElucHV0RXZlbnQoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIGRpc3BhdGNoSW5wdXRFdmVudCgp
OwogICAgICAgICBkaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKTsKICAgICB9CiB9CkBA
IC02ODIsNyArNjgyLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGlzcGF0Y2hDaGFuZ2VF
dmVudEZvck1lbnVMaXN0KCkKICAgICBpZiAobV9sYXN0T25DaGFuZ2VJbmRleCAhPSBzZWxlY3Rl
ZCAmJiBtX2lzUHJvY2Vzc2luZ1VzZXJEcml2ZW5DaGFuZ2UpIHsKICAgICAgICAgbV9sYXN0T25D
aGFuZ2VJbmRleCA9IHNlbGVjdGVkOwogICAgICAgICBtX2lzUHJvY2Vzc2luZ1VzZXJEcml2ZW5D
aGFuZ2UgPSBmYWxzZTsKLSAgICAgICAgZGlzcGF0Y2hJbnB1dEV2ZW50KGVtcHR5U3RyaW5nKCkp
OworICAgICAgICBkaXNwYXRjaElucHV0RXZlbnQoKTsKICAgICAgICAgZGlzcGF0Y2hGb3JtQ29u
dHJvbENoYW5nZUV2ZW50KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZhYjEyMzY1NzZhYmM4ZThiZmMy
N2E1YWQzZmIxMDdlMDM2MzA1YzguLjU3ZmFhNzE4Mzg0MDAyZDdhOThkNDQ4MTZiOGNmOTQ2OGFj
Y2Y2ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNi0xMC0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IElucHV0RXZlbnQuZGF0
YSBmb3IgdGhlIG5ldyBJbnB1dEV2ZW50IHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzExMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg2
ODE5MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRk
cyAyIG5ldyBsYXlvdXQgdGVzdHMgdmVyaWZ5aW5nIHRoZSBkYXRhIGF0dHJpYnV0ZSBvZiBgYmVm
b3JlaW5wdXRgIGFuZCBgaW5wdXRgIGV2ZW50cyB3aGVuIHR5cGluZywgcGFzdGluZywKKyAgICAg
ICAgYW5kIHNlbGVjdGluZyBjYW5kaWRhdGUgcmVwbGFjZW1lbnRzIGluIHBsYWluIHRleHQgYW5k
IGNvbnRlbnRlZGl0YWJsZSBhcmVhcy4KKworICAgICAgICBBbHNvIHR3ZWFrcyBhbiBleGlzdGlu
ZyB0ZXN0IHRvIGVuc3VyZSB0aGF0IGBkYXRhYCBpcyBhbiBhdHRyaWJ1dGUgb2YgYW4gSW5wdXRF
dmVudC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5
cGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWZp
cmVkLXdoZW4tdHlwaW5nLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRz
LXBhc3RlLWRhdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9p
bnB1dC1ldmVudHMtcGFzdGUtZGF0YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50
cy9pbnB1dC1ldmVudHMtdHlwaW5nLWRhdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtdHlwaW5nLWRhdGEuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE2LTEw
LTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgSW5wdXRFdmVudC5pbnB1dFR5cGUgZm9yIHRoZSBuZXcgSW5wdXRFdmVudCBzcGVjCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQtd2hl
bi10eXBpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZl
bnRzLWZpcmVkLXdoZW4tdHlwaW5nLWV4cGVjdGVkLnR4dAppbmRleCA2N2JhMTkzMzJmMGY4Y2I5
NDRkMGY1YjdlY2NlZmI3ZDU1ZmMyZTQwLi4yZTIwZmNjMmI1Njg1N2UwODc2OWY5MzQwYjU5M2E4
OGI5YjMzMDZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVu
dHMtZmlyZWQtd2hlbi10eXBpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1maXJlZC13aGVuLXR5cGluZy1leHBlY3RlZC50eHQKQEAgLTMs
NiArMyw3IEBAIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIFRFU1QgQ09NUExFVEUK
IEZpcmVkIGBvbmJlZm9yZWlucHV0YCEKIFBBU1MgZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnaW5w
dXRUeXBlJykgaXMgZGVmaW5lZC4KK1BBU1MgZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnZGF0YScp
IGlzIGRlZmluZWQuCiBQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihldmVudCkgaXMgSW5wdXRF
dmVudC5wcm90b3R5cGUKIFBBU1MgZXZlbnQudGFyZ2V0LmlkIGlzIGV4cGVjdGVkVGFyZ2V0SUQK
IFBBU1MgZXZlbnQuYnViYmxlcyBpcyB0cnVlCkBAIC0xMCw2ICsxMSw3IEBAIFBBU1MgZXZlbnQu
Y2FuY2VsYWJsZSBpcyB0cnVlCiBQQVNTIGV2ZW50LmNvbXBvc2VkIGlzIHRydWUKIEZpcmVkIGBv
bmlucHV0YCEKIFBBU1MgZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnaW5wdXRUeXBlJykgaXMgZGVm
aW5lZC4KK1BBU1MgZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnZGF0YScpIGlzIGRlZmluZWQuCiBQ
QVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihldmVudCkgaXMgSW5wdXRFdmVudC5wcm90b3R5cGUK
IFBBU1MgZXZlbnQudGFyZ2V0LmlkIGlzIGV4cGVjdGVkVGFyZ2V0SUQKIFBBU1MgZXZlbnQuYnVi
YmxlcyBpcyB0cnVlCkBAIC0xNyw2ICsxOSw3IEBAIFBBU1MgZXZlbnQuY2FuY2VsYWJsZSBpcyBm
YWxzZQogUEFTUyBldmVudC5jb21wb3NlZCBpcyB0cnVlCiBGaXJlZCBgb25iZWZvcmVpbnB1dGAh
CiBQQVNTIGV2ZW50Ll9fbG9va3VwR2V0dGVyX18oJ2lucHV0VHlwZScpIGlzIGRlZmluZWQuCitQ
QVNTIGV2ZW50Ll9fbG9va3VwR2V0dGVyX18oJ2RhdGEnKSBpcyBkZWZpbmVkLgogUEFTUyBPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YoZXZlbnQpIGlzIElucHV0RXZlbnQucHJvdG90eXBlCiBQQVNTIGV2
ZW50LnRhcmdldC5pZCBpcyBleHBlY3RlZFRhcmdldElECiBQQVNTIGV2ZW50LmJ1YmJsZXMgaXMg
dHJ1ZQpAQCAtMjQsNiArMjcsNyBAQCBQQVNTIGV2ZW50LmNhbmNlbGFibGUgaXMgdHJ1ZQogUEFT
UyBldmVudC5jb21wb3NlZCBpcyB0cnVlCiBGaXJlZCBgb25pbnB1dGAhCiBQQVNTIGV2ZW50Ll9f
bG9va3VwR2V0dGVyX18oJ2lucHV0VHlwZScpIGlzIGRlZmluZWQuCitQQVNTIGV2ZW50Ll9fbG9v
a3VwR2V0dGVyX18oJ2RhdGEnKSBpcyBkZWZpbmVkLgogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBl
T2YoZXZlbnQpIGlzIElucHV0RXZlbnQucHJvdG90eXBlCiBQQVNTIGV2ZW50LnRhcmdldC5pZCBp
cyBleHBlY3RlZFRhcmdldElECiBQQVNTIGV2ZW50LmJ1YmJsZXMgaXMgdHJ1ZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLWZpcmVkLXdoZW4tdHlwaW5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQtd2hlbi10
eXBpbmcuaHRtbAppbmRleCBiNDZmNjE0N2M0Nzg3ZjI1YzdiYjlmYjAyYTBmNzE2YWY0YjRjMThj
Li42MjAzODYwMTEzYTY3YjEwMWYxMmQxNTZhOGZiN2RhZThkMGU5ZmExIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQtd2hlbi10eXBpbmcuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQtd2hlbi10
eXBpbmcuaHRtbApAQCAtMzUsNiArMzUsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBkZWJ1
ZygiRmlyZWQgYG9uaW5wdXRgISIpOwogICAgICAgICAgICAgc2hvdWxkQmVEZWZpbmVkKCJldmVu
dC5fX2xvb2t1cEdldHRlcl9fKCdpbnB1dFR5cGUnKSIpOworICAgICAgICAgICAgc2hvdWxkQmVE
ZWZpbmVkKCJldmVudC5fX2xvb2t1cEdldHRlcl9fKCdkYXRhJykiKTsKICAgICAgICAgICAgIHNo
b3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoZXZlbnQpIiwgIklucHV0RXZlbnQucHJvdG90
eXBlIik7CiAgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmlkIiwgImV4cGVjdGVk
VGFyZ2V0SUQiKTsKICAgICAgICAgICAgIHNob3VsZEJlKCJldmVudC5idWJibGVzIiwgInRydWUi
KTsKQEAgLTQ2LDYgKzQ3LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgZGVidWcoIkZpcmVk
IGBvbmJlZm9yZWlucHV0YCEiKTsKICAgICAgICAgICAgIHNob3VsZEJlRGVmaW5lZCgiZXZlbnQu
X19sb29rdXBHZXR0ZXJfXygnaW5wdXRUeXBlJykiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRGVm
aW5lZCgiZXZlbnQuX19sb29rdXBHZXR0ZXJfXygnZGF0YScpIik7CiAgICAgICAgICAgICBzaG91
bGRCZSgiT2JqZWN0LmdldFByb3RvdHlwZU9mKGV2ZW50KSIsICJJbnB1dEV2ZW50LnByb3RvdHlw
ZSIpOwogICAgICAgICAgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5pZCIsICJleHBlY3RlZFRh
cmdldElEIik7CiAgICAgICAgICAgICBzaG91bGRCZSgiZXZlbnQuYnViYmxlcyIsICJ0cnVlIik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUt
ZGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMt
cGFzdGUtZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJiZjRhMjk2OWVhNmMxZTAxMTI4
NWUxZDlmODRlN2M1M2E0YjYxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lucHV0LWV2ZW50cy1wYXN0ZS1kYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2
IEBACitUbyBtYW51YWxseSB0ZXN0IHRoaXMsIGNvcHkgdGhlIHdvcmQgJ3Rlc3RpbmcnIGFuZCBw
YXN0ZSBpbnRvIGJvdGggdGhlIHRleHRhcmVhIGFuZCBjb250ZW50ZWRpdGFibGUuIFZlcmlmeSB0
aGF0IHR3byBQQVNTIG1lc3NhZ2VzIGFyZSBwcmludGVkIG91dCBwZXIgcGFzdGUgKG9uZSBmb3Ig
dGhlIGJlZm9yZWlucHV0LCB0aGUgb3RoZXIgZm9yIGlucHV0KS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK3Bhc3RpbmcgJ3Rlc3RpbmcnIGluIHRoZSBwbGFpbiB0ZXh0YXJlYS4g
ZGF0YSBzaG91bGQgYmUgbm9ubnVsbAorUEFTUyBldmVudC5kYXRhIGlzICd0ZXN0aW5nJworUEFT
UyBldmVudC5kYXRhIGlzICd0ZXN0aW5nJworcGFzdGluZyAndGVzdGluZycgaW4gdGhlIHJpY2gg
Y29udGVudGVkaXRhYmxlLiBkYXRhIHNob3VsZCBiZSBudWxsCitQQVNTIGV2ZW50LmRhdGEgaXMg
bnVsbAorUEFTUyBldmVudC5kYXRhIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCit0ZXN0aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtcGFzdGUtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmM2
MDI5NDBkZmZkMDZkOTRlMGNhMDA2YjcyMGE4NjYxOGUyMmE3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLWRhdGEuaHRtbApAQCAt
MCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8dGV4dGFyZWEgb25mb2N1cz1oYW5kbGVGb2N1cygpIGlkPSJwbGFpbiIg
b25iZWZvcmVpbnB1dD1oYW5kbGVQbGFpbklucHV0KGV2ZW50LHRydWUpIG9uaW5wdXQ9aGFuZGxl
UGxhaW5JbnB1dChldmVudCxmYWxzZSk+dGVzdGluZzwvdGV4dGFyZWE+CisgICAgPGRpdiBpZD0i
cmljaCIgY29udGVudGVkaXRhYmxlIG9uYmVmb3JlaW5wdXQ9aGFuZGxlUmljaElucHV0KGV2ZW50
LHRydWUpIG9uaW5wdXQ9aGFuZGxlUmljaElucHV0KGV2ZW50LGZhbHNlKT48L2Rpdj4KKyAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGRlc2NyaXB0aW9uKGBUbyBt
YW51YWxseSB0ZXN0IHRoaXMsIGNvcHkgdGhlIHdvcmQgJ3Rlc3RpbmcnIGFuZCBwYXN0ZSBpbnRv
IGJvdGggdGhlIHRleHRhcmVhIGFuZCBjb250ZW50ZWRpdGFibGUuIFZlcmlmeSB0aGF0IHR3byBQ
QVNTIG1lc3NhZ2VzIGFyZSBwcmludGVkIG91dCBwZXIgcGFzdGUgKG9uZSBmb3IgdGhlIGJlZm9y
ZWlucHV0LCB0aGUgb3RoZXIgZm9yIGlucHV0KS5gKTsKKyAgICAgICAgKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIg
fHwgIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldElucHV0RXZlbnRzRW5hYmxlZCh0cnVlKTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwbGFpbiIpLmZvY3VzKCk7CisgICAg
ICAgIH0pKCk7CisKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlRm9jdXMoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGxhaW4iKS5zZWxlY3QoKTsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIkN1dCIpOworCisgICAgICAgICAgICBk
ZWJ1ZygicGFzdGluZyAndGVzdGluZycgaW4gdGhlIHBsYWluIHRleHRhcmVhLiBkYXRhIHNob3Vs
ZCBiZSBub25udWxsIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCJQYXN0
ZSIpOworCisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmljaCIpLmZvY3Vz
KCk7CisgICAgICAgICAgICBkZWJ1ZygicGFzdGluZyAndGVzdGluZycgaW4gdGhlIHJpY2ggY29u
dGVudGVkaXRhYmxlLiBkYXRhIHNob3VsZCBiZSBudWxsIik7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
aGFuZGxlUmljaElucHV0KGV2ZW50LCBpc2JlZm9yZSkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gImluc2VydEZyb21QYXN0ZSIpCisgICAgICAgICAgICAg
ICAgc2hvdWxkQmVOdWxsKCJldmVudC5kYXRhIik7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBoYW5kbGVQbGFpbklucHV0KGV2ZW50LCBpc2JlZm9yZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gImluc2VydEZyb21QYXN0ZSIpCisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoImV2ZW50LmRhdGEiLCAiJ3Rlc3RpbmcnIik7CisgICAgICAgIH0K
KyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy10eXBpbmctZGF0YS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtdHlwaW5nLWRhdGEtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY3YmQyMzk0M2U1NTcwMDU2YzFjZWYwMTIwZDVhZjJlYTFmNzI1
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVu
dHMtdHlwaW5nLWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1RvIG1hbnVhbGx5
IHRlc3QgdGhpcywgdHlwZSBpbiBib3RoIHRoZSByaWNoIGNvbnRlbnRlZGl0YWJsZSBhbmQgcGxh
aW4gdGV4dGFyZWEgYW5kL29yIGluc2VydCBjYW5kaWRhdGVzL2F1dG9jb3JyZWN0aW9ucy4gQm90
aCBlbGVtZW50cyBzaG91bGQgaGF2ZSBkYXRhIHdoZW4gdHlwaW5nIG5vcm1hbGx5LCBidXQgb25s
eSB0aGUgcGxhaW4gdGV4dGFyZWEgc2hvdWxkIGhhdmUgZGF0YSB3aGVuIGluc2VydGluZyBhIHJl
cGxhY2VtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUGxhaW4gdGV4dGFy
ZWEgcmVjZWl2ZWQgJ2JlZm9yZWlucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFu
ZCBkYXRhOiAnaCcKK1BsYWluIHRleHRhcmVhIHJlY2VpdmVkICdpbnB1dCcgd2l0aCBpbnB1dFR5
cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ2gnCitQbGFpbiB0ZXh0YXJlYSByZWNlaXZlZCAn
YmVmb3JlaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdlJwor
UGxhaW4gdGV4dGFyZWEgcmVjZWl2ZWQgJ2lucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRl
eHQnIGFuZCBkYXRhOiAnZScKK1BsYWluIHRleHRhcmVhIHJlY2VpdmVkICdiZWZvcmVpbnB1dCcg
d2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ2wnCitQbGFpbiB0ZXh0YXJl
YSByZWNlaXZlZCAnaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6
ICdsJworUGxhaW4gdGV4dGFyZWEgcmVjZWl2ZWQgJ2JlZm9yZWlucHV0JyB3aXRoIGlucHV0VHlw
ZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAnbycKK1BsYWluIHRleHRhcmVhIHJlY2VpdmVkICdp
bnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ28nCitQbGFpbiB0
ZXh0YXJlYSByZWNlaXZlZCAnYmVmb3JlaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0UmVw
bGFjZW1lbnRUZXh0JyBhbmQgZGF0YTogJ2hlbGxvJworUGxhaW4gdGV4dGFyZWEgcmVjZWl2ZWQg
J2lucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFJlcGxhY2VtZW50VGV4dCcgYW5kIGRhdGE6
ICdoZWxsbycKK1JpY2ggY29udGVudGVkaXRhYmxlIHJlY2VpdmVkICdiZWZvcmVpbnB1dCcgd2l0
aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ2gnCitSaWNoIGNvbnRlbnRlZGl0
YWJsZSByZWNlaXZlZCAnaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRh
dGE6ICdoJworUmljaCBjb250ZW50ZWRpdGFibGUgcmVjZWl2ZWQgJ2JlZm9yZWlucHV0JyB3aXRo
IGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRhOiAnZScKK1JpY2ggY29udGVudGVkaXRh
YmxlIHJlY2VpdmVkICdpbnB1dCcgd2l0aCBpbnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0
YTogJ2UnCitSaWNoIGNvbnRlbnRlZGl0YWJsZSByZWNlaXZlZCAnYmVmb3JlaW5wdXQnIHdpdGgg
aW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6ICdsJworUmljaCBjb250ZW50ZWRpdGFi
bGUgcmVjZWl2ZWQgJ2lucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFRleHQnIGFuZCBkYXRh
OiAnbCcKK1JpY2ggY29udGVudGVkaXRhYmxlIHJlY2VpdmVkICdiZWZvcmVpbnB1dCcgd2l0aCBp
bnB1dFR5cGU6ICdpbnNlcnRUZXh0JyBhbmQgZGF0YTogJ28nCitSaWNoIGNvbnRlbnRlZGl0YWJs
ZSByZWNlaXZlZCAnaW5wdXQnIHdpdGggaW5wdXRUeXBlOiAnaW5zZXJ0VGV4dCcgYW5kIGRhdGE6
ICdvJworUmljaCBjb250ZW50ZWRpdGFibGUgcmVjZWl2ZWQgJ2JlZm9yZWlucHV0JyB3aXRoIGlu
cHV0VHlwZTogJ2luc2VydFJlcGxhY2VtZW50VGV4dCcgYW5kIGRhdGE6ICdudWxsJworUmljaCBj
b250ZW50ZWRpdGFibGUgcmVjZWl2ZWQgJ2lucHV0JyB3aXRoIGlucHV0VHlwZTogJ2luc2VydFJl
cGxhY2VtZW50VGV4dCcgYW5kIGRhdGE6ICdudWxsJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKK2hlbGxvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtdHlwaW5nLWRhdGEuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2lucHV0LWV2ZW50cy10eXBpbmctZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMy
Nzk5YjRmYmEyYjM0N2NiOTc0Nzk2ZDM3YWY5ZjhkNjhiMWQ0NjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtdHlwaW5nLWRhdGEuaHRtbApA
QCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8dGV4dGFyZWEgaWQ9InBsYWluIiBvbmJlZm9yZWlucHV0PWhhbmRs
ZVBsYWluSW5wdXQoZXZlbnQpIG9uaW5wdXQ9aGFuZGxlUGxhaW5JbnB1dChldmVudCk+PC90ZXh0
YXJlYT4KKyAgICA8ZGl2IGlkPSJyaWNoIiBjb250ZW50ZWRpdGFibGUgb25iZWZvcmVpbnB1dD1o
YW5kbGVSaWNoSW5wdXQoZXZlbnQpIG9uaW5wdXQ9aGFuZGxlUmljaElucHV0KGV2ZW50KT48L2Rp
dj4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGRlc2NyaXB0
aW9uKGBUbyBtYW51YWxseSB0ZXN0IHRoaXMsIHR5cGUgaW4gYm90aCB0aGUgcmljaCBjb250ZW50
ZWRpdGFibGUgYW5kIHBsYWluIHRleHRhcmVhIGFuZC9vciBpbnNlcnQgY2FuZGlkYXRlcy9hdXRv
Y29ycmVjdGlvbnMuCisgICAgICAgICAgICBCb3RoIGVsZW1lbnRzIHNob3VsZCBoYXZlIGRhdGEg
d2hlbiB0eXBpbmcgbm9ybWFsbHksIGJ1dCBvbmx5IHRoZSBwbGFpbiB0ZXh0YXJlYSBzaG91bGQg
aGF2ZSBkYXRhIHdoZW4gaW5zZXJ0aW5nIGEgcmVwbGFjZW1lbnQuYCk7CisgICAgICAgIChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LmV2
ZW50U2VuZGVyIHx8ICF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbnB1dEV2ZW50c0VuYWJsZWQo
dHJ1ZSk7CisKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwbGFpbiIpLmZv
Y3VzKCk7CisgICAgICAgICAgICBzaW11bGF0ZVR5cGluZ1dpdGhSZXBsYWNlbWVudChmYWxzZSk7
CisKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNyaWNoIikuZm9jdXMoKTsK
KyAgICAgICAgICAgIHNpbXVsYXRlVHlwaW5nV2l0aFJlcGxhY2VtZW50KHRydWUpOworICAgICAg
ICB9KSgpOworCisgICAgICAgIGZ1bmN0aW9uIHNpbXVsYXRlVHlwaW5nV2l0aFJlcGxhY2VtZW50
KGlzUmljaCkKKyAgICAgICAgeworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaCIs
IFtdKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImUiLCBbXSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCJsIiwgW10pOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigibyIsIFtdKTsKKyAgICAgICAgICAgIGludGVybmFscy5oYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZSgiaGVsbG8iLCAwLCA0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGhhbmRsZVJpY2hJbnB1dChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGV2ZW50
LmlucHV0VHlwZSA9PT0gImluc2VydFRleHQiIHx8IGV2ZW50LmlucHV0VHlwZSA9PT0gImluc2Vy
dFJlcGxhY2VtZW50VGV4dCIpCisgICAgICAgICAgICAgICAgZGVidWcoYFJpY2ggY29udGVudGVk
aXRhYmxlIHJlY2VpdmVkICcke2V2ZW50LnR5cGV9JyB3aXRoIGlucHV0VHlwZTogJyR7ZXZlbnQu
aW5wdXRUeXBlfScgYW5kIGRhdGE6ICcke2V2ZW50LmRhdGF9J2ApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gaGFuZGxlUGxhaW5JbnB1dChldmVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gImluc2VydFRleHQiIHx8IGV2ZW50LmlucHV0
VHlwZSA9PT0gImluc2VydFJlcGxhY2VtZW50VGV4dCIpCisgICAgICAgICAgICAgICAgZGVidWco
YFBsYWluIHRleHRhcmVhIHJlY2VpdmVkICcke2V2ZW50LnR5cGV9JyB3aXRoIGlucHV0VHlwZTog
JyR7ZXZlbnQuaW5wdXRUeXBlfScgYW5kIGRhdGE6ICcke2V2ZW50LmRhdGF9J2ApOworICAgICAg
ICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjI5
ZTZhNGM4NmE4MzY3NDVmOWE1NTIxZTYxZTU1MmExYjJjMzhmYS4uOGFjNDMwYjkyYmNiZGYxZjI0
NTU2NWMyYzBkNmY0N2Q2NzMwYTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE5OCw2ICsxMTk4LDggQEAgZmFz
dC9ldmVudHMvZnJhbWUtdGFiLWZvY3VzLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lt
ZS1jb21wb3NpdGlvbi1ldmVudHMtMDAxLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvZXZlbnRzL2lu
cHV0VGV4dC1uZXZlci1maXJlZC1vbi1rZXlkb3duLWNhbmNlbC5odG1sIFsgRmFpbHVyZSBdCiBm
YXN0L2V2ZW50cy9pbnB1dC1ldmVudHMtZmlyZWQtd2hlbi10eXBpbmcuaHRtbCBbIEZhaWx1cmUg
XQorZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXBhc3RlLWRhdGEuaHRtbCBbIEZhaWx1cmUgXQor
ZmFzdC9ldmVudHMvaW5wdXQtZXZlbnRzLXR5cGluZy1kYXRhLmh0bWwgWyBGYWlsdXJlIF0KIGZh
c3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0Lmh0bWwgWyBGYWls
dXJlIF0KIGZhc3QvZXZlbnRzL2JlZm9yZS1pbnB1dC1ldmVudHMtcHJldmVudC1kZWZhdWx0LWlu
LXRleHRmaWVsZC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2V2ZW50cy9iZWZvcmUtaW5wdXQtZXZl
bnRzLWRpZmZlcmVudC1zdGFydC1lbmQtZWxlbWVudHMuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>