<?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>91042</bug_id>
          
          <creation_ts>2012-07-11 19:02:39 -0700</creation_ts>
          <short_desc>Form of FormAssociatedElement is not updated when id target changes.</short_desc>
          <delta_ts>2012-07-13 08:37:10 -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>Forms</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>667315</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-11 19:02:39 -0700</bug_when>
    <thetext>When the element that the form attribute is pointing to has changed, it should update the form in FormAssociatedElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667322</commentid>
    <comment_count>1</comment_count>
      <attachid>151845</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-11 19:12:46 -0700</bug_when>
    <thetext>Created attachment 151845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667373</commentid>
    <comment_count>2</comment_count>
      <attachid>151845</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-11 20:55:06 -0700</bug_when>
    <thetext>Comment on attachment 151845
Patch

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

&gt; Source/WebCore/ChangeLog:35
&gt; +        (WebCore::Node::compareDocumentPosition): Added trustInDocument argument, because we need to use this
&gt; +        when the DOM tree has been constructed but the inDocument property hasn&apos;t been updated yet.

Would you explain more about this? What case does it happen?

&gt; Source/WebCore/ChangeLog:62
&gt; +        * dom/Node.h:
&gt; +        (Node):
&gt; +        * dom/TreeScope.cpp:
&gt; +        (WebCore::TreeScope::TreeScope):
&gt; +        (WebCore::TreeScope::addElementById):
&gt; +        (WebCore::TreeScope::removeElementById):
&gt; +        * dom/TreeScope.h:
&gt; +        (WebCore::TreeScope::idTargetObserverRegistry):
&gt; +        (TreeScope):
&gt; +        * html/FormAssociatedElement.cpp:
&gt; +        (WebCore::FormAssociatedElement::~FormAssociatedElement):
&gt; +        (WebCore::FormAssociatedElement::didMoveToNewDocument):
&gt; +        (WebCore::FormAssociatedElement::insertedInto):
&gt; +        (WebCore::FormAssociatedElement::removedFrom):
&gt; +        (WebCore::FormAssociatedElement::formAttributeChanged):
&gt; +        (WebCore::FormAssociatedElement::idTargetChanged):
&gt; +        (WebCore):
&gt; +        * html/FormAssociatedElement.h:
&gt; +        (FormAssociatedElement):
&gt; +        * html/FormController.cpp:
&gt; +        * html/FormController.h:
&gt; +        (FormController):
&gt; +        * html/HTMLFormElement.cpp:
&gt; +        (WebCore::HTMLFormElement::removedFrom):
&gt; +        (WebCore::HTMLFormElement::formElementIndexWithFormAttribute):
&gt; +        * html/HTMLFormElement.h:
&gt; +        (HTMLFormElement):

Please write per-function change description.

&gt; Source/WebCore/dom/IdTargetObserverRegistry.cpp:41
&gt; +    HashSet&lt;IdTargetObserver*&gt;* set = m_registry.get(id.impl());
&gt; +    if (!set) {
&gt; +        set = new HashSet&lt;IdTargetObserver*&gt;();
&gt; +        m_registry.add(id.impl(), set);

get-and-add is not efficient.  You should call just HashMap::add(id.impl(), 0) and refer to the resultant AddResult.

&gt; Source/WebCore/dom/IdTargetObserverRegistry.cpp:89
&gt; +    for (HashSet&lt;IdTargetObserver*&gt;::const_iterator it = set-&gt;begin(); it != set-&gt;end(); ++it)
&gt; +        (*it)-&gt;idTargetChanged(id);

Is it safe to iterate over the &apos;set&apos;?  I&apos;m afraid an idTargetChanged() implementation can call addObserver() and removeObserver().

&gt; Source/WebCore/dom/IdTargetObserverRegistry.cpp:99
&gt; +void IdTargetObserverRegistry::notifyAllObservers()
&gt; +{
&gt; +    if (m_registry.isEmpty())
&gt; +        return;
&gt; +
&gt; +    for (HashMap&lt;AtomicStringImpl*, HashSet&lt;IdTargetObserver*&gt;* &gt;::const_iterator it = m_registry.begin(); it != m_registry.end(); ++it)
&gt; +            notifyObservers(it-&gt;first);
&gt; +}

This function is not used.

&gt; Source/WebCore/dom/IdTargetObserverRegistry.h:48
&gt; +    HashMap&lt;AtomicStringImpl*, HashSet&lt;IdTargetObserver*&gt;* &gt; m_registry;

Please add typedefs for readability.
  typedef HashSet&lt;IdTargetObserver*&gt; ObserverSet;
  typedef HashMap&lt;AtomicStringImpl*, ObserverSet&gt; IdToObserverSetMap;

&gt; Source/WebCore/dom/Node.cpp:1957
&gt; -unsigned short Node::compareDocumentPosition(Node* otherNode)
&gt; +unsigned short Node::compareDocumentPosition(Node* otherNode, bool trustInDocument)

Do not add bool argument.  You should define an enum.

&gt; Source/WebCore/dom/TreeScope.h:30
&gt; +#include &quot;IdTargetObserverRegistry.h&quot;

I don&apos;t think we need to include IdTargetObserverRegistry.h.  &quot;class IdTargetObserverRegsitry;&quot; should be enough.

&gt; Source/WebCore/dom/TreeScope.h:86
&gt; +    IdTargetObserverRegistry* idTargetObserverRegistry() const { return m_idTargetObserverRegistry.get(); }

The return type should be IdTargetObserverRegistry&amp; because it never be null.

&gt; Source/WebCore/html/FormAssociatedElement.cpp:48
&gt;  FormAssociatedElement::~FormAssociatedElement()
&gt;  {
&gt; +    HTMLElement* element = toHTMLElement(this);
&gt; +    element-&gt;treeScope()-&gt;idTargetObserverRegistry()-&gt;addObserver(element-&gt;fastGetAttribute(formAttr), this);
&gt;      setForm(0);

Isn&apos;t it removeObserver()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667376</commentid>
    <comment_count>3</comment_count>
      <attachid>151845</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-11 20:58:54 -0700</bug_when>
    <thetext>Comment on attachment 151845
Patch

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

&gt; Source/WebCore/dom/TreeScope.cpp:57
&gt; +    , m_idTargetObserverRegistry(adoptPtr(new IdTargetObserverRegistry))

We should have IdTargetObserverRegistry::create().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667688</commentid>
    <comment_count>4</comment_count>
      <attachid>151928</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-12 06:00:49 -0700</bug_when>
    <thetext>Created attachment 151928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667720</commentid>
    <comment_count>5</comment_count>
      <attachid>151942</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-12 06:36:01 -0700</bug_when>
    <thetext>Created attachment 151942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667721</commentid>
    <comment_count>6</comment_count>
      <attachid>151845</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-12 06:37:07 -0700</bug_when>
    <thetext>Comment on attachment 151845
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:62
&gt;&gt; +        (HTMLFormElement):
&gt; 
&gt; Please write per-function change description.

Done.

&gt;&gt; Source/WebCore/dom/IdTargetObserverRegistry.cpp:41
&gt;&gt; +        m_registry.add(id.impl(), set);
&gt; 
&gt; get-and-add is not efficient.  You should call just HashMap::add(id.impl(), 0) and refer to the resultant AddResult.

Done.

&gt;&gt; Source/WebCore/dom/IdTargetObserverRegistry.cpp:89
&gt;&gt; +        (*it)-&gt;idTargetChanged(id);
&gt; 
&gt; Is it safe to iterate over the &apos;set&apos;?  I&apos;m afraid an idTargetChanged() implementation can call addObserver() and removeObserver().

Used copyToVector and m_notifyingObserversInSet so that indexes don&apos;t disappear and observers don&apos;t get destroyed.

&gt;&gt; Source/WebCore/dom/IdTargetObserverRegistry.cpp:99
&gt;&gt; +}
&gt; 
&gt; This function is not used.

Removed.

&gt;&gt; Source/WebCore/dom/IdTargetObserverRegistry.h:48
&gt;&gt; +    HashMap&lt;AtomicStringImpl*, HashSet&lt;IdTargetObserver*&gt;* &gt; m_registry;
&gt; 
&gt; Please add typedefs for readability.
&gt;   typedef HashSet&lt;IdTargetObserver*&gt; ObserverSet;
&gt;   typedef HashMap&lt;AtomicStringImpl*, ObserverSet&gt; IdToObserverSetMap;

Done.

&gt;&gt; Source/WebCore/dom/Node.cpp:1957
&gt;&gt; +unsigned short Node::compareDocumentPosition(Node* otherNode, bool trustInDocument)
&gt; 
&gt; Do not add bool argument.  You should define an enum.

Abandoned this change and went with another route.

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:57
&gt;&gt; +    , m_idTargetObserverRegistry(adoptPtr(new IdTargetObserverRegistry))
&gt; 
&gt; We should have IdTargetObserverRegistry::create().

Done.

&gt;&gt; Source/WebCore/dom/TreeScope.h:30
&gt;&gt; +#include &quot;IdTargetObserverRegistry.h&quot;
&gt; 
&gt; I don&apos;t think we need to include IdTargetObserverRegistry.h.  &quot;class IdTargetObserverRegsitry;&quot; should be enough.

Done.

&gt;&gt; Source/WebCore/dom/TreeScope.h:86
&gt;&gt; +    IdTargetObserverRegistry* idTargetObserverRegistry() const { return m_idTargetObserverRegistry.get(); }
&gt; 
&gt; The return type should be IdTargetObserverRegistry&amp; because it never be null.

Done.

&gt;&gt; Source/WebCore/html/FormAssociatedElement.cpp:48
&gt;&gt;      setForm(0);
&gt; 
&gt; Isn&apos;t it removeObserver()?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668514</commentid>
    <comment_count>7</comment_count>
      <attachid>151942</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-12 19:17:25 -0700</bug_when>
    <thetext>Comment on attachment 151942
Patch

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

Please post a valid patch.  Your patches made EWS purple.

&gt; Source/WebCore/dom/IdTargetObserver.cpp:41
&gt; +void IdTargetObserver::setRegistry(IdTargetObserverRegistry* registry)
&gt; +{
&gt; +    m_registry = registry;

Should add 
ASSERT(!m_registry || m_registry == registry);

We had better add a comment to somewhere; &quot;we can&apos;t register an IdTargetObserver to multiple registries.&quot;
BTW, do you suppose we have a case that single IdTargetObserver observes multiple IDs in single TreeScope?

&gt; Source/WebCore/dom/IdTargetObserver.h:38
&gt; +    ~IdTargetObserver();

should be virtual.

&gt; Source/WebCore/dom/IdTargetObserverRegistry.cpp:94
&gt; +void IdTargetObserverRegistry::notifyObservers(const AtomicString&amp; id)
&gt; +{
&gt; +    ASSERT(!m_notifyingObserversInSet);
&gt; +    if (id.isEmpty() || m_registry.isEmpty())
&gt; +        return;
&gt; +

Because this function is called from a very hot place, we should be careful for performance.
I propose:

- Define notifyObservers() in IdTargetObserverRegistry.h for inlining. However, it just have emptiness checkes and calling notifyObserversInternal().
- Add notifyObserersInternal(), which should be defined in IdTargetObserverRegistry.cpp.

&gt; Source/WebCore/dom/TreeScope.cpp:98
&gt; +

nit: I don&apos;t think we need a blank line here.

&gt; Source/WebCore/dom/TreeScope.cpp:105
&gt; +

nit: ditto.

&gt; Source/WebCore/html/FormAssociatedElement.cpp:42
&gt; -    : m_form(0)
&gt; +    : IdTargetObserver()
&gt; +    , m_form(0)

I think we don&apos;t need this change.

&gt; LayoutTests/fast/forms/update-form-attribute-element.html:66
&gt; +function test4() {
&gt; +    debug(&quot;Test 4: Order.&quot;);
&gt; +    input1 = createInput(&quot;test3&quot;);
&gt; +    input2 = createInput(&quot;test3&quot;);
&gt; +    form = createForm(&quot;test3&quot;);
&gt; +    input3 = document.createElement(&quot;input&quot;);
&gt; +    form.appendChild(input3);
&gt; +    input4 = createInput(&quot;test3&quot;);
&gt; +    input5 = createInput(&quot;test3&quot;);

using &quot;test&quot; in test4() is confusing.

&gt; LayoutTests/fast/forms/update-form-attribute-element.html:91
&gt; +&lt;/html&gt;

Do we have a test for a case that a form control with form attribute is appended to the document with the form? e.g.

form = document.createElement(&apos;&quot;form&quot;);
form.id = &quot;test5&quot;;
form.innerHTML = &quot;&lt;textarea&gt;&lt;input form=test5&gt;&lt;select&gt;&quot;;
test.appendChild(form);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668515</commentid>
    <comment_count>8</comment_count>
      <attachid>151942</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-12 19:19:30 -0700</bug_when>
    <thetext>Comment on attachment 151942
Patch

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

&gt;&gt; LayoutTests/fast/forms/update-form-attribute-element.html:66
&gt;&gt; +    input5 = createInput(&quot;test3&quot;);
&gt; 
&gt; using &quot;test&quot; in test4() is confusing.

I meant using &quot;test3&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668637</commentid>
    <comment_count>9</comment_count>
      <attachid>151942</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-12 23:29:32 -0700</bug_when>
    <thetext>Comment on attachment 151942
Patch

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

&gt;&gt; Source/WebCore/dom/IdTargetObserver.cpp:41
&gt;&gt; +    m_registry = registry;
&gt; 
&gt; Should add 
&gt; ASSERT(!m_registry || m_registry == registry);
&gt; 
&gt; We had better add a comment to somewhere; &quot;we can&apos;t register an IdTargetObserver to multiple registries.&quot;
&gt; BTW, do you suppose we have a case that single IdTargetObserver observes multiple IDs in single TreeScope?

This method couldn&apos;t support a sigle IdTargetObserver observing multiple ids, so I changed it so there is a new instance of IdTargetObserver for every id that you want to observe.

&gt;&gt; Source/WebCore/dom/IdTargetObserverRegistry.cpp:94
&gt;&gt; +
&gt; 
&gt; Because this function is called from a very hot place, we should be careful for performance.
&gt; I propose:
&gt; 
&gt; - Define notifyObservers() in IdTargetObserverRegistry.h for inlining. However, it just have emptiness checkes and calling notifyObserversInternal().
&gt; - Add notifyObserersInternal(), which should be defined in IdTargetObserverRegistry.cpp.

Done.

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:98
&gt;&gt; +
&gt; 
&gt; nit: I don&apos;t think we need a blank line here.

Done.

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:105
&gt;&gt; +
&gt; 
&gt; nit: ditto.

Done.

&gt;&gt;&gt; LayoutTests/fast/forms/update-form-attribute-element.html:66
&gt;&gt;&gt; +    input5 = createInput(&quot;test3&quot;);
&gt;&gt; 
&gt;&gt; using &quot;test&quot; in test4() is confusing.
&gt; 
&gt; I meant using &quot;test3&quot;.

Done.

&gt;&gt; LayoutTests/fast/forms/update-form-attribute-element.html:91
&gt;&gt; +&lt;/html&gt;
&gt; 
&gt; Do we have a test for a case that a form control with form attribute is appended to the document with the form? e.g.
&gt; 
&gt; form = document.createElement(&apos;&quot;form&quot;);
&gt; form.id = &quot;test5&quot;;
&gt; form.innerHTML = &quot;&lt;textarea&gt;&lt;input form=test5&gt;&lt;select&gt;&quot;;
&gt; test.appendChild(form);

This test revealed a bug. compareDocumentPosition was returning DOCUMENT_POSITION_FOLLOWING | DOCUMENT_POSITION_CONTAINED_BY.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668638</commentid>
    <comment_count>10</comment_count>
      <attachid>152159</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-12 23:29:39 -0700</bug_when>
    <thetext>Created attachment 152159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668648</commentid>
    <comment_count>11</comment_count>
      <attachid>152159</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-12 23:48:34 -0700</bug_when>
    <thetext>Comment on attachment 152159
Patch

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

Please don&apos;t make EWS purple.

&gt; Source/WebCore/dom/IdTargetObserver.h:37
&gt; +    IdTargetObserver(IdTargetObserverRegistry&amp;, const AtomicString&amp; id);

The constructor should be protected.

&gt; Source/WebCore/html/FormAssociatedElement.cpp:227
&gt; +void FormAssociatedElement::setNewFormAttributeTargetObserver()

nit: &quot;setNew&quot; sound redundant.  We can say &quot;reset&quot; or &quot;update&quot;

&gt; Source/WebCore/html/FormAttributeTargetObserver.h:35
&gt; +class FormAttributeTargetObserver : IdTargetObserver {

nit: This class is small enough and used only by FormAssociatedElement.  It&apos;s ok to put this class into FormAssociatedElement.cpp.

&gt; Source/WebCore/html/FormAttributeTargetObserver.h:38
&gt; +    virtual void idTargetChanged();

should have OVERRIDE

&gt; LayoutTests/fast/forms/update-form-attribute-element.html:83
&gt; +function test5() {

You&apos;d like to have debug(&apos;\nTest 5&apos;); for consistency?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668693</commentid>
    <comment_count>12</comment_count>
      <attachid>152159</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-13 00:46:29 -0700</bug_when>
    <thetext>Comment on attachment 152159
Patch

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

&gt;&gt; Source/WebCore/dom/IdTargetObserver.h:37
&gt;&gt; +    IdTargetObserver(IdTargetObserverRegistry&amp;, const AtomicString&amp; id);
&gt; 
&gt; The constructor should be protected.

Done.

&gt;&gt; Source/WebCore/html/FormAssociatedElement.cpp:227
&gt;&gt; +void FormAssociatedElement::setNewFormAttributeTargetObserver()
&gt; 
&gt; nit: &quot;setNew&quot; sound redundant.  We can say &quot;reset&quot; or &quot;update&quot;

Done.

&gt;&gt; Source/WebCore/html/FormAttributeTargetObserver.h:35
&gt;&gt; +class FormAttributeTargetObserver : IdTargetObserver {
&gt; 
&gt; nit: This class is small enough and used only by FormAssociatedElement.  It&apos;s ok to put this class into FormAssociatedElement.cpp.

Done

&gt;&gt; Source/WebCore/html/FormAttributeTargetObserver.h:38
&gt;&gt; +    virtual void idTargetChanged();
&gt; 
&gt; should have OVERRIDE

Done.

&gt;&gt; LayoutTests/fast/forms/update-form-attribute-element.html:83
&gt;&gt; +function test5() {
&gt; 
&gt; You&apos;d like to have debug(&apos;\nTest 5&apos;); for consistency?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668694</commentid>
    <comment_count>13</comment_count>
      <attachid>152174</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-13 00:46:38 -0700</bug_when>
    <thetext>Created attachment 152174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668713</commentid>
    <comment_count>14</comment_count>
      <attachid>152174</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-13 01:14:34 -0700</bug_when>
    <thetext>Comment on attachment 152174
Patch

Attachment 152174 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13235041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668715</commentid>
    <comment_count>15</comment_count>
      <attachid>152174</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-13 01:22:44 -0700</bug_when>
    <thetext>Comment on attachment 152174
Patch

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

&gt; Source/WebCore/html/FormAssociatedElement.h:83
&gt; +    void resetFormAttributeTargetObserver();

This should be private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668716</commentid>
    <comment_count>16</comment_count>
      <attachid>152181</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-13 01:23:23 -0700</bug_when>
    <thetext>Created attachment 152181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668722</commentid>
    <comment_count>17</comment_count>
      <attachid>152181</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-13 01:27:35 -0700</bug_when>
    <thetext>Comment on attachment 152181
Patch

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

&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:51206
&gt; +				RelativePath=&quot;..\dom\IdTargetObserver.cpp&quot;
&gt; +				&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;

Because you specifies ExcludedFromBuild=true, you need to include IdTargetObserver.cpp in DOMAllInOne.cpp.

&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:51262
&gt; +				RelativePath=&quot;..\dom\IdTargetObserverRegistry.cpp&quot;
&gt; +				&gt;
&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Debug|Win32&quot;
&gt; +					ExcludedFromBuild=&quot;true&quot;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668741</commentid>
    <comment_count>18</comment_count>
      <attachid>152181</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-13 01:55:14 -0700</bug_when>
    <thetext>Comment on attachment 152181
Patch

Attachment 152181 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13221558</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668746</commentid>
    <comment_count>19</comment_count>
      <attachid>152190</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-13 02:01:59 -0700</bug_when>
    <thetext>Created attachment 152190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668750</commentid>
    <comment_count>20</comment_count>
      <attachid>152190</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-13 02:06:34 -0700</bug_when>
    <thetext>Comment on attachment 152190
Patch

Looks ok.  Please wait until all EWSes get green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668862</commentid>
    <comment_count>21</comment_count>
      <attachid>152190</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 04:24:39 -0700</bug_when>
    <thetext>Comment on attachment 152190
Patch

Rejecting attachment 152190 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
Kit/chromium/third_party/yasm/source/patched-yasm --revision 134927 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
48&gt;At revision 134927.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/13207999</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668985</commentid>
    <comment_count>22</comment_count>
      <attachid>152250</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-07-13 07:03:56 -0700</bug_when>
    <thetext>Created attachment 152250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669070</commentid>
    <comment_count>23</comment_count>
      <attachid>152250</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 08:37:04 -0700</bug_when>
    <thetext>Comment on attachment 152250
Patch

Clearing flags on attachment: 152250

Committed r122584: &lt;http://trac.webkit.org/changeset/122584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669071</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 08:37:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151845</attachid>
            <date>2012-07-11 19:12:46 -0700</date>
            <delta_ts>2012-07-12 06:37:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91042-20120712111245.patch</filename>
            <type>text/plain</type>
            <size>39559</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMyN2M4YmNlNDU2ZTIz
ZjY5OWE1NGUzZGY5NGZiMDM3Y2I2NDc1Ni4uNTUwZTFmOTYwNzk0MWM1ODlkOTgzMjNmNDgxYjI5
NzI0MTAyOTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA3LTExICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEZvcm0gb2YgRm9ybUFz
c29jaWF0ZWRFbGVtZW50IGlzIG5vdCB1cGRhdGVkIHdoZW4gaWQgdGFyZ2V0IGNoYW5nZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
Zm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQuaHRtbAorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyB0aGUgSWRUYXJnZXRPYnNlcnZlciBhbmQgSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5IGNsYXNzLgorICAgICAgICBUaGV5IGNhbiBiZSB1c2VkIHRvIGJlIG5vdGlmaWVk
IHdoZW4gdGhlIGVsZW1lbnQgdGhhdCBhbiBpZCBpcyBwb2ludGluZyB0byAodGhlIGlkIHRhcmdl
dCkKKyAgICAgICAgY2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkue2gsY3BwfSBhbmQgSWRUYXJnZXRPYnNlcnZlci5oCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICogVGFyZ2V0LnBy
aTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNl
cnZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSWRUYXJnZXRPYnNl
cnZlcik6CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlBbGxPYnNlcnZlcnMpOgorICAgICAgICAqIGRv
bS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSk6CisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29tcGFyZURvY3Vt
ZW50UG9zaXRpb24pOiBBZGRlZCB0cnVzdEluRG9jdW1lbnQgYXJndW1lbnQsIGJlY2F1c2Ugd2Ug
bmVlZCB0byB1c2UgdGhpcworICAgICAgICB3aGVuIHRoZSBET00gdHJlZSBoYXMgYmVlbiBjb25z
dHJ1Y3RlZCBidXQgdGhlIGluRG9jdW1lbnQgcHJvcGVydHkgaGFzbid0IGJlZW4gdXBkYXRlZCB5
ZXQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2NvcGU6OnJlbW92ZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBkb20v
VHJlZVNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmlkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeSk6CisgICAgICAgIChUcmVlU2NvcGUpOgorICAgICAgICAqIGh0bWwvRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6fkZvcm1Bc3NvY2lhdGVkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmlkVGFyZ2V0Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAg
ICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChGb3Jt
Q29udHJvbGxlcik6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxGb3JtRWxl
bWVudCk6CisKIDIwMTItMDctMDkgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbUGxhdGZvcm1dIEludHJvZHVjZSBMb2NhbGVNYWMgY2xhc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggODkxZGY4NmEyMTM5ZjE2NWRiYzU5MDdkNGNkMzdlOGE3MGI3MTc1
NS4uZmNlMmVlYzk0NGU4MjE5OGY3YWJkN2IwM2MwMDczYTk1MmZmY2YyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTYwNSw2ICs2MDUsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9t
L0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5jcHAKICAgICBkb20vR2VuZXJpY0V2ZW50UXVldWUu
Y3BwCiAgICAgZG9tL0ljb25VUkwuY3BwCisgICAgZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS5jcHAKICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKICAgICBkb20vTWVzc2FnZUNoYW5uZWwu
Y3BwCiAgICAgZG9tL01lc3NhZ2VFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IGFiMWU0NTk3NWMwZGU2N2I1OWU4NjY3MDZkNmZkNGIxOGJhMDAzZTcuLjQ3NzBiMmY5
ZWEwYzE1NzY4MmZiMGFiYjBkYmU1ZGZlMDQxNjQwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMTkzOSw2ICsxOTM5LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L0ljb25VUkwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA4YzZkMzQzZTE0MmU2
MTI3OTE0ZGNmMDJhMTVkYWY3ZWRlYzBhMTMwLi4xMmIzNGUzNDIzZmQ2Zjk4MDE5YjkwN2U1NTlj
MjZiOWM5ZjYwZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTU3Miw2ICs1NzIsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBkb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcCBcCiAgICAgZG9tL0dlbmVy
aWNFdmVudFF1ZXVlLmNwcCBcCiAgICAgZG9tL0ljb25VUkwuY3BwIFwKKyAgICBkb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBcCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKICAg
ICBkb20vTWVzc2FnZUNoYW5uZWwuY3BwIFwKICAgICBkb20vTWVzc2FnZUV2ZW50LmNwcCBcCkBA
IC0xNzU2LDYgKzE3NTcsOCBAQCBIRUFERVJTICs9IFwKICAgICBkb20vRXhjZXB0aW9uQmFzZS5o
IFwKICAgICBkb20vRXhjZXB0aW9uQ29kZS5oIFwKICAgICBkb20vRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uLmggXAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyLmggXAorICAgIGRvbS9JZFRh
cmdldE9ic2VydmVyUmVnaXN0cnkuaCBcCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuaCBcCiAgICAg
ZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKICAgICBkb20vTWVzc2FnZUNoYW5uZWwuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMzZlOTg5YzM5YzAzOTRiNTdiMTlmZDQ2YTcyMDI2YTczOWJh
NDY5Yy4uNmMxYmRmMzJmMDI0OWM0NTBjZDhmYmI4MjBmM2JjM2YyZDZkNGI1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtNTE3OCw2ICs1MTc4LDkgQEAKICAgICAgICAgICAgICdkb20vSWdub3JlRGVz
dHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCcsCiAgICAgICAgICAgICAnZG9tL0ljb25V
UkwuY3BwJywKICAgICAgICAgICAgICdkb20vSWNvblVSTC5oJywKKyAgICAgICAgICAgICdkb20v
SWRUYXJnZXRPYnNlcnZlci5oJywKKyAgICAgICAgICAgICdkb20vSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5o
JywKICAgICAgICAgICAgICdkb20vS2V5Ym9hcmRFdmVudC5jcHAnLAogICAgICAgICAgICAgJ2Rv
bS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VDaGFu
bmVsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDkwNjJjOGIyMzFmNmMwYTVhYTNiZDFhOTRiNTFmNGQ0OGZkMzg4MzQuLjJkYjJjZjU2
ZWI2ZmI3OTVjZDE3OGE1ZDQ2MjAzOTVmZjBkNjViNmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MTE5NSw2ICs1MTE5NSw2NiBAQAogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRUYXJn
ZXRPYnNlcnZlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxkb21cSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCIKKwkJCQk+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxkb21cSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIu
aCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzNiMjUyZDdkYTM1Y2RlZTI1YjFkYzkzZjY2Mjdh
NzhkODk2Zjg4Ny4uMmJmYWIwMzA3MDk5YzdlOTQ1MjNlYzhiMDQ0N2RhNTVhZWFhYTBmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTcyMCw2ICs1NzIwLDkgQEAKIAkJQzMzRUU1QzQxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VD
bGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMyMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2th
YmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi87IH07CiAJCUMzM0VFNUM1MTRGQjQ5NjEwMDAyMDk1
QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzRUU1QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJh
c2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggKi87IH07CiAJCUMzN0NERUJEMTQ5RUYyMDMw
MDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzN0NERUJDMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNo
b29zZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDM0UxMTJFQTE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNFMTEyRTcxNUFF
NjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDM0UxMTJFQjE1QUU2NDUyMDBENDU0MTYgLyog
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMzRTExMkU4MTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuY3BwICovOyB9OworCQlDM0UxMTJFQzE1QUU2NDUyMDBENDU0MTYgLyog
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDM0UxMTJFOTE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzUwQjU2MTYxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjEx
OUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0
dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgKi87IH07CkBAIC0xMjkzNSw2ICsxMjkz
OCw5IEBACiAJCUMzM0VFNUMyMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtl
eUlucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNl
Q2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0
aEtleUlucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzdDREVCQzE0
OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3NlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDM0UxMTJFNzE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMzRTExMkU4MTVBRTY0NTIwMEQ0NTQxNiAvKiBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzNFMTEyRTkxNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2MTQxMjEx
OUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1l
c3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU5h
bWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTI1OSw2ICsyMTI2
NSw5IEBACiAJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMzRTExMkU3MTVBRTY0NTIwMEQ0NTQx
NiAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8sCisJCQkJQzNFMTEyRTgxNUFFNjQ1MjAwRDQ1NDE2
IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8sCisJCQkJQzNFMTEyRTkxNUFFNjQ1
MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovLAogCQkJCUUxQzRERTZE
MEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4
MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5
RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAgKi8sCkBAIC0yNTE3OSw2ICsyNTE4OCw4IEBACiAJ
CQkJNEYzMkJCMUIxNEZBODVFODAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTg4MkRBMjMxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUMzRTExMkVBMTVBRTY0NTIwMEQ0NTQxNiAv
KiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDM0UxMTJFQzE1QUU2NDUy
MDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI4MjM0LDYgKzI4MjQ1LDcgQEAKIAkJCQk1MDk4N0MyNjE1N0Q2NzZEMDBCREE4MzUgLyogQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgyREEyMDE1
OTM4NDZBMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
RkFGQkYxODE1QTVGQTZFMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQzNFMTEyRUIxNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRh
cmdldE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2MTAzOTEwYzZiMTlkOTM3MmIzZTE0YTgzYTE3MGYxNzUxYWMzMWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJZFRhcmdldE9ic2VydmVyX2gKKyNkZWZpbmUgSWRUYXJnZXRPYnNlcnZlcl9o
CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJZFRhcmdldE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZv
aWQgaWRUYXJnZXRDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIElkVGFyZ2V0T2JzZXJ2ZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMDVlZDk2YmI4ZTJmZjAwZjk5ZWY1NzQ2YmQ2MzBmMzFlNDE0MzEyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3ZvaWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcihj
b25zdCBBdG9taWNTdHJpbmcmIGlkLCBJZFRhcmdldE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAg
ICBpZiAoaWQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBIYXNoU2V0PElkVGFy
Z2V0T2JzZXJ2ZXIqPiogc2V0ID0gbV9yZWdpc3RyeS5nZXQoaWQuaW1wbCgpKTsKKyAgICBpZiAo
IXNldCkgeworICAgICAgICBzZXQgPSBuZXcgSGFzaFNldDxJZFRhcmdldE9ic2VydmVyKj4oKTsK
KyAgICAgICAgbV9yZWdpc3RyeS5hZGQoaWQuaW1wbCgpLCBzZXQpOworICAgIH0KKworICAgIHNl
dC0+YWRkKG9ic2VydmVyKTsKK30KKwordm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OnJl
bW92ZU9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqIG9i
c2VydmVyKQoreworICAgIGlmIChpZC5pc0VtcHR5KCkgfHwgbV9yZWdpc3RyeS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEhhc2hTZXQ8SWRUYXJnZXRPYnNlcnZlcio+KiBzZXQg
PSBtX3JlZ2lzdHJ5LmdldChpZC5pbXBsKCkpOworICAgIGlmICghc2V0KQorICAgICAgICByZXR1
cm47CisKKyAgICBzZXQtPnJlbW92ZShvYnNlcnZlcik7CisgICAgaWYgKHNldC0+aXNFbXB0eSgp
KQorICAgICAgICBtX3JlZ2lzdHJ5LnJlbW92ZShpZC5pbXBsKCkpOworfQorCit2b2lkIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeTo6cmVtb3ZlT2JzZXJ2ZXIoSWRUYXJnZXRPYnNlcnZlciogb2Jz
ZXJ2ZXIpCit7CisgICAgaWYgKG1fcmVnaXN0cnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nSW1wbCo+IGVtcHR5S2V5czsKKworICAgIGZvciAo
SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgSGFzaFNldDxJZFRhcmdldE9ic2VydmVyKj4qID46
Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RyeS5iZWdpbigpOyBpdCAhPSBtX3JlZ2lzdHJ5LmVuZCgp
OyArK2l0KSB7CisgICAgICAgIEhhc2hTZXQ8SWRUYXJnZXRPYnNlcnZlcio+KiBzZXQgPSBpdC0+
c2Vjb25kOworICAgICAgICBzZXQtPnJlbW92ZShvYnNlcnZlcik7CisgICAgICAgIGlmIChzZXQt
PmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGVtcHR5S2V5cy5hcHBlbmQoaXQtPmZpcnN0KTsKKyAg
ICB9CisKKyAgICBmb3IgKFZlY3RvcjxBdG9taWNTdHJpbmdJbXBsKj46Oml0ZXJhdG9yIGl0ID0g
ZW1wdHlLZXlzLmJlZ2luKCk7IGl0ICE9IGVtcHR5S2V5cy5lbmQoKTsgKytpdCkKKyAgICAgICAg
bV9yZWdpc3RyeS5yZW1vdmUoKml0KTsKK30KKwordm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0
cnk6Om5vdGlmeU9ic2VydmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGlkKQoreworICAgIGlmIChp
ZC5pc0VtcHR5KCkgfHwgbV9yZWdpc3RyeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEhhc2hTZXQ8SWRUYXJnZXRPYnNlcnZlcio+KiBzZXQgPSBtX3JlZ2lzdHJ5LmdldChpZC5p
bXBsKCkpOworICAgIGlmICghc2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKEhhc2hT
ZXQ8SWRUYXJnZXRPYnNlcnZlcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNldC0+YmVnaW4oKTsg
aXQgIT0gc2V0LT5lbmQoKTsgKytpdCkKKyAgICAgICAgKCppdCktPmlkVGFyZ2V0Q2hhbmdlZChp
ZCk7Cit9CisKK3ZvaWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlBbGxPYnNlcnZl
cnMoKQoreworICAgIGlmIChtX3JlZ2lzdHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBIYXNoU2V0PElkVGFyZ2V0T2Jz
ZXJ2ZXIqPiogPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3JlZ2lzdHJ5LmJlZ2luKCk7IGl0ICE9
IG1fcmVnaXN0cnkuZW5kKCk7ICsraXQpCisgICAgICAgICAgICBub3RpZnlPYnNlcnZlcnMoaXQt
PmZpcnN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4NGRjZTEwNWVkNTRi
YjU3NTMzYTFmOGYwMjJmZWM5NGIzY2FhYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCisjZGVmaW5lIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9o
CisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJZFRhcmdldE9ic2VydmVyOworCitj
bGFzcyBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgeworcHVibGljOgorICAgIElkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeSgpIHsgfQorICAgIHZvaWQgYWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgcmVtb3Zl
T2JzZXJ2ZXIoSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQpOworICAgIHZvaWQgbm90aWZ5QWxsT2JzZXJ2ZXJzKCk7CisK
K3ByaXZhdGU6CisgICAgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgSGFzaFNldDxJZFRhcmdl
dE9ic2VydmVyKj4qID4gbV9yZWdpc3RyeTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5k
ZXggMDk1MGNkOTMzZjYxZDUwMTBiOTdmMTE2NmMyODEzYWJkMDkwZTM2My4uZGFmZGQ0ZmI1OTc0
YWE4NDJlOTA4OTBhODhkZDIxMjM0MWYzNThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTk1NCw3
ICsxOTU0LDcgQEAgYm9vbCBOb2RlOjpvZmZzZXRJbkNoYXJhY3RlcnMoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdW5zaWduZWQgc2hvcnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9z
aXRpb24oTm9kZSogb3RoZXJOb2RlKQordW5zaWduZWQgc2hvcnQgTm9kZTo6Y29tcGFyZURvY3Vt
ZW50UG9zaXRpb24oTm9kZSogb3RoZXJOb2RlLCBib29sIHRydXN0SW5Eb2N1bWVudCkKIHsKICAg
ICAvLyBJdCBpcyBub3QgY2xlYXIgd2hhdCBzaG91bGQgYmUgZG9uZSBpZiB8b3RoZXJOb2RlfCBp
cyAwLgogICAgIGlmICghb3RoZXJOb2RlKQpAQCAtMjAwNiw4ICsyMDA2LDggQEAgdW5zaWduZWQg
c2hvcnQgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSogb3RoZXJOb2RlKQogICAg
IC8vIElmIG9uZSBub2RlIGlzIGluIHRoZSBkb2N1bWVudCBhbmQgdGhlIG90aGVyIGlzIG5vdCwg
d2UgbXVzdCBiZSBkaXNjb25uZWN0ZWQuCiAgICAgLy8gSWYgdGhlIG5vZGVzIGhhdmUgZGlmZmVy
ZW50IG93bmluZyBkb2N1bWVudHMsIHRoZXkgbXVzdCBiZSBkaXNjb25uZWN0ZWQuICBOb3RlIHRo
YXQgd2UgYXZvaWQKICAgICAvLyBjb21wYXJpbmcgQXR0ciBub2RlcyBoZXJlLCBzaW5jZSB0aGV5
IHJldHVybiBmYWxzZSBmcm9tIGluRG9jdW1lbnQoKSBhbGwgdGhlIHRpbWUgKHdoaWNoIHNlZW1z
IGxpa2UgYSBidWcpLgotICAgIGlmIChzdGFydDEtPmluRG9jdW1lbnQoKSAhPSBzdGFydDItPmlu
RG9jdW1lbnQoKSB8fAotICAgICAgICBzdGFydDEtPmRvY3VtZW50KCkgIT0gc3RhcnQyLT5kb2N1
bWVudCgpKQorICAgIGlmICgodHJ1c3RJbkRvY3VtZW50ICYmIHN0YXJ0MS0+aW5Eb2N1bWVudCgp
ICE9IHN0YXJ0Mi0+aW5Eb2N1bWVudCgpKQorICAgICAgICB8fCBzdGFydDEtPmRvY3VtZW50KCkg
IT0gc3RhcnQyLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRE9DVU1FTlRfUE9TSVRJT05f
RElTQ09OTkVDVEVEIHwgRE9DVU1FTlRfUE9TSVRJT05fSU1QTEVNRU5UQVRJT05fU1BFQ0lGSUM7
CiAKICAgICAvLyBXZSBuZWVkIHRvIGZpbmQgYSBjb21tb24gYW5jZXN0b3IgY29udGFpbmVyLCBh
bmQgdGhlbiBjb21wYXJlIHRoZSBpbmRpY2VzIG9mIHRoZSB0d28gaW1tZWRpYXRlIGNoaWxkcmVu
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKaW5kZXggOTNhNjZkOWVjOGE1YjI2MzUxNWQ1ZmMyNTY2ZDJhNWU5ZmRlYmVm
Mi4uZjQ3YzgxZDVmNGJmYmY0MzFmMGZlYThjNjgwOWMwYjVjOTczYTk2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CkBAIC01NzIsNyArNTcyLDkgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gcXVl
cnlTZWxlY3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29kZSYp
OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5U2VsZWN0b3JBbGwoY29uc3QgQXRvbWlj
U3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHVuc2lnbmVkIHNob3J0
IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5vZGUqKTsKKyAgICAvLyB0cnVzdEluRG9jdW1lbnQg
c2hvdWxkIGJlIGZhbHNlIHdoZW4gdXNpbmcgY29tcGFyZURvY3VtZW50UG9zaXRpb24gd2hpbGUg
dGhlIG5vZGVzIGFyZSBiZWluZyBtb3ZlZCBhcm91bmQKKyAgICAvLyBhbmQgdGhlIGluRG9jdW1l
bnQoKSBtZXRob2Qgb2YgdGhlIG5vZGVzIHNob3VsZCBub3QgYmUgdHJ1c3RlZC4KKyAgICB1bnNp
Z25lZCBzaG9ydCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbihOb2RlKiwgYm9vbCB0cnVzdEluRG9j
dW1lbnQgPSB0cnVlKTsKIAogICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCk7CiAgICAgdmlydHVh
bCBIVE1MSW5wdXRFbGVtZW50KiB0b0lucHV0RWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAppbmRleCA1NjQyZmNmOGRkMzNmYmMxZmJmMjAzYmRkYjFmYjhiZTI1MzdhZWZiLi4wN2Ex
MmFiNTVlMWQ0YTM5ZDQwZDZkMDdkMDQ5ZDdjNTQwNTUxZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcApAQCAtNTQsNiArNTQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogVHJl
ZVNjb3BlOjpUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSogcm9vdE5vZGUpCiAgICAgOiBtX3Jvb3RO
b2RlKHJvb3ROb2RlKQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKKyAgICAsIG1faWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5KGFkb3B0UHRyKG5ldyBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkp
KQogICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogewogICAgIEFTU0VSVChyb290Tm9kZSk7
CkBAIC05MywxMSArOTQsMTUgQEAgRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChj
b25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRF
bGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCogZWxlbWVu
dCkKIHsKICAgICBtX2VsZW1lbnRzQnlJZC5hZGQoZWxlbWVudElkLmltcGwoKSwgZWxlbWVudCk7
CisKKyAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1l
bnRJZCk7CiB9CiAKIHZvaWQgVHJlZVNjb3BlOjpyZW1vdmVFbGVtZW50QnlJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBtX2VsZW1lbnRz
QnlJZC5yZW1vdmUoZWxlbWVudElkLmltcGwoKSwgZWxlbWVudCk7CisKKyAgICBtX2lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJZCk7CiB9CiAKIE5vZGUq
IFRyZWVTY29wZTo6YW5jZXN0b3JJblRoaXNTY29wZShOb2RlKiBub2RlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5oCmluZGV4IDVlY2MwMzkyZjM3MTcwYmVlMzA1Mzk5MjE0MjQ5N2NmYWI3YWNi
MGIuLjhjYWI4YWYzM2Y5YTgxYjY2YjQzY2RiNWYzYzdjMDFlN2FlOTUxMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgVHJlZVNjb3BlX2gKIAogI2lu
Y2x1ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5oIgorI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CiAKQEAgLTgyLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgQ29udGFp
bmVyTm9kZSogcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9CiAKKyAgICBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkqIGlkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpIGNvbnN0
IHsgcmV0dXJuIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmdldCgpOyB9CisKIHByb3RlY3Rl
ZDoKICAgICBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOwogICAgIHZpcnR1YWwgflRyZWVTY29w
ZSgpOwpAQCAtOTUsNiArOTgsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50T3JkZXJlZE1hcCBt
X2VsZW1lbnRzQnlJZDsKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9pbWFnZU1hcHNCeU5hbWU7
CiAKKyAgICBPd25QdHI8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PiBtX2lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTsKKwogICAgIHVuc2lnbmVkIG1fbnVtTm9kZUxpc3RDYWNoZXM7CiAKICAgICBt
dXRhYmxlIFJlZlB0cjxET01TZWxlY3Rpb24+IG1fc2VsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDIxNzkxZjA5NjBhZTQ3Yzhm
MThlOWJmMzBiMTFjZDdhNjdmNjg0NTMuLjYwMzYyNWVmYWM4Y2NlNWJhZjJjOWE1MThiYzdhZDIw
ODBjNTY1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5jcHAKQEAgLTQzLDYgKzQzLDggQEAgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQoKQogCiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6On5Gb3JtQXNzb2NpYXRlZEVs
ZW1lbnQoKQogeworICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlz
KTsKKyAgICBlbGVtZW50LT50cmVlU2NvcGUoKS0+aWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkt
PmFkZE9ic2VydmVyKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0dHIpLCB0aGlzKTsK
ICAgICBzZXRGb3JtKDApOwogfQogCkBAIC01Nyw4ICs1OSwxMSBAQCBWYWxpZGl0eVN0YXRlKiBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnZhbGlkaXR5KCkKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7CiAgICAg
SFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOwotICAgIGlmIChvbGRE
b2N1bWVudCAmJiBlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKLSAgICAgICAg
b2xkRG9jdW1lbnQtPmZvcm1Db250cm9sbGVyKCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhG
b3JtQXR0cmlidXRlKHRoaXMpOworICAgIGlmIChvbGREb2N1bWVudCAmJiBlbGVtZW50LT5mYXN0
SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlk
ID0gZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShmb3JtQXR0cik7CisgICAgICAgIG9sZERvY3Vt
ZW50LT5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKS0+cmVtb3ZlT2JzZXJ2ZXIoaWQsIHRoaXMp
OworICAgICAgICBlbGVtZW50LT50cmVlU2NvcGUoKS0+aWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
KCktPmFkZE9ic2VydmVyKGlkLCB0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0
ZWRFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCkBA
IC02OSwxNCArNzQsMTQgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50
byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIAogICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKICAgICBpZiAoZWxlbWVudC0+ZmFzdEhhc0F0dHJp
YnV0ZShmb3JtQXR0cikpCi0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPmZvcm1Db250cm9s
bGVyKCktPnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAg
ICAgZWxlbWVudC0+dHJlZVNjb3BlKCktPmlkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpLT5hZGRP
YnNlcnZlcihlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGZvcm1BdHRyKSwgdGhpcyk7CiB9CiAK
IHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBp
bnNlcnRpb25Qb2ludCkKIHsKICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1l
bnQodGhpcyk7CiAgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZWxlbWVu
dC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCi0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50
KCktPmZvcm1Db250cm9sbGVyKCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmli
dXRlKHRoaXMpOworICAgICAgICBlbGVtZW50LT50cmVlU2NvcGUoKS0+aWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5KCktPnJlbW92ZU9ic2VydmVyKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoZm9y
bUF0dHIpLCB0aGlzKTsKICAgICAvLyBJZiB0aGUgZm9ybSBhbmQgZWxlbWVudCBhcmUgYm90aCBp
biB0aGUgc2FtZSB0cmVlLCBwcmVzZXJ2ZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgZm9ybS4KICAg
ICAvLyBPdGhlcndpc2UsIG51bGwgb3V0IG91ciBmb3JtIGFuZCByZW1vdmUgb3Vyc2VsdmVzIGZy
b20gdGhlIGZvcm0ncyBsaXN0IG9mIGVsZW1lbnRzLgogICAgIGlmIChtX2Zvcm0gJiYgZWxlbWVu
dC0+aGlnaGVzdEFuY2VzdG9yKCkgIT0gbV9mb3JtLT5oaWdoZXN0QW5jZXN0b3IoKSkKQEAgLTE1
Myw5ICsxNTgsMTEgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVD
aGFuZ2VkKCkKICAgICBpZiAoIWVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7
CiAgICAgICAgIC8vIFRoZSBmb3JtIGF0dHJpYnV0ZSByZW1vdmVkLiBXZSBuZWVkIHRvIHJlc2V0
IGZvcm0gb3duZXIgaGVyZS4KICAgICAgICAgc2V0Rm9ybShlbGVtZW50LT5maW5kRm9ybUFuY2Vz
dG9yKCkpOwotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT5mb3JtQ29udHJvbGxlcigpLT51
bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKLSAgICB9IGVsc2UK
KyAgICAgICAgZWxlbWVudC0+dHJlZVNjb3BlKCktPmlkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgp
LT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKKyAgICB9IGVsc2UgewogICAgICAgICByZXNldEZvcm1P
d25lcigpOworICAgICAgICBlbGVtZW50LT50cmVlU2NvcGUoKS0+aWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5KCktPmFkZE9ic2VydmVyKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0dHIp
LCB0aGlzKTsKKyAgICB9CiB9CiAKIGJvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21F
cnJvcigpIGNvbnN0CkBAIC0yMjEsNiArMjI4LDExIEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogICAgIG1fY3VzdG9t
VmFsaWRhdGlvbk1lc3NhZ2UgPSBlcnJvcjsKIH0KIAordm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OmlkVGFyZ2V0Q2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKQoreworICAgIHJlc2V0
Rm9ybU93bmVyKCk7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpuYW1lKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSB0b0hU
TUxFbGVtZW50KHRoaXMpLT5nZXROYW1lQXR0cmlidXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCA1YTQ3ZWEwNzZkYjJhNzRlZjUwZTk0NTY1
YWU3Y2I0ZjBiYTUwMjExLi5mNGQ3M2Y2YzA4ZGI1MzM4NmY3NjE0ODNiNjMyZGU2ODcyMDk4YTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKQEAgLTI1
LDYgKzI1LDcgQEAKICNkZWZpbmUgRm9ybUFzc29jaWF0ZWRFbGVtZW50X2gKIAogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM0LDcgKzM1LDcgQEAgY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2U7
CiBjbGFzcyBWYWxpZGl0eVN0YXRlOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIAotY2xhc3Mg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50IHsKK2NsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCA6IHB1
YmxpYyBJZFRhcmdldE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Gb3JtQXNzb2Np
YXRlZEVsZW1lbnQoKTsKIApAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB2YWxp
ZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJp
bmcmKTsKIAorICAgIHZpcnR1YWwgdm9pZCBpZFRhcmdldENoYW5nZWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCkgT1ZFUlJJREU7CisKIHByb3RlY3RlZDoKICAgICBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCBiN2MzOGUy
YThiNjk0MTRkYmVkNTkyZmQzMzZhY2RlOWYyMmExMTcyLi4yNTYwNWZlODdkYjRiOWY0MDc0MmZi
MWMxNWZhNzNmYjhmZmRmMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cApAQCAtMjM3LDI1ICsyMzcsNiBAQCB2b2lkIEZvcm1Db250cm9sbGVyOjp3aWxsRGVsZXRlRm9y
bShIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiAgICAgICAgIG1fZm9ybUtleUdlbmVyYXRvci0+d2ls
bERlbGV0ZUZvcm0oZm9ybSk7CiB9CiAKLXZvaWQgRm9ybUNvbnRyb2xsZXI6OnJlZ2lzdGVyRm9y
bUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQp
Ci17Ci0gICAgQVNTRVJUKHRvSFRNTEVsZW1lbnQoZWxlbWVudCktPmZhc3RIYXNBdHRyaWJ1dGUo
Zm9ybUF0dHIpKTsKLSAgICBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLmFkZChlbGVt
ZW50KTsKLX0KLQotdm9pZCBGb3JtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0
aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50KQotewotICAgIG1f
Zm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGUucmVtb3ZlKGVsZW1lbnQpOwotfQotCi12b2lk
IEZvcm1Db250cm9sbGVyOjpyZXNldEZvcm1FbGVtZW50c093bmVyKCkKLXsKLSAgICB0eXBlZGVm
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudExpc3RIYXNoU2V0OjppdGVyYXRvciBJdGVyYXRvcjsKLSAg
ICBJdGVyYXRvciBlbmQgPSBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLmVuZCgpOwot
ICAgIGZvciAoSXRlcmF0b3IgaXQgPSBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnJlc2V0Rm9ybU93bmVyKCk7
Ci19Ci0KIEZvcm1FbGVtZW50S2V5OjpGb3JtRWxlbWVudEtleShBdG9taWNTdHJpbmdJbXBsKiBu
YW1lLCBBdG9taWNTdHJpbmdJbXBsKiB0eXBlLCBBdG9taWNTdHJpbmdJbXBsKiBmb3JtS2V5KQog
ICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBtX3R5cGUodHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuaAppbmRleCBlMTVjMWRjMjRhOTgwZjY0NDdhOThiMmUzMjZkMTk2ZDZlMzYz
MmEyLi5lOThkMWEwNDljYzA5YmQ3MWNmZjBkOTI3YWY0YTRjNTg1ZWNmM2ZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCkBAIC0xMzIsMTAgKzEzMiw2IEBAIHB1YmxpYzoKICAg
ICBGb3JtQ29udHJvbFN0YXRlIHRha2VTdGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUmKTsKICAgICB2b2lkIHdpbGxEZWxldGVGb3JtKEhUTUxG
b3JtRWxlbWVudCopOwogCi0gICAgdm9pZCByZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRy
aWJ1dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqKTsKLSAgICB2b2lk
IHJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoKTsKLQogcHJpdmF0ZToKICAgICBGb3JtQ29udHJvbGxl
cigpOwogCkBAIC0xNDMsOCArMTM5LDYgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXQ8SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSosIDY0PiBGb3JtRWxlbWVudExp
c3RIYXNoU2V0OwogICAgIEZvcm1FbGVtZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNXaXRo
U3RhdGU7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50PiwgMzI+IEZvcm1Bc3NvY2lhdGVkRWxlbWVudExpc3RIYXNoU2V0OwotICAgIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudExpc3RIYXNoU2V0IG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGU7
CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Rm9ybUVsZW1lbnRLZXksIERlcXVlPEZvcm1Db250cm9s
U3RhdGU+LCBGb3JtRWxlbWVudEtleUhhc2gsIEZvcm1FbGVtZW50S2V5SGFzaFRyYWl0cz4gRm9y
bUVsZW1lbnRTdGF0ZU1hcDsKICAgICBGb3JtRWxlbWVudFN0YXRlTWFwIG1fc3RhdGVGb3JOZXdG
b3JtRWxlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXgg
M2M4YmIwNzNjZmY3MGUwYjQ4NzA5MDQ2NGMwODEwMjllYzI1MTcyNS4uOGY4MzQwYzMzMWQ1NzA4
Yzc1NWQ4NGE4Y2Q5NzE3NjFlOGJkOTU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcApAQCAtMTQxLDE0ICsxNDEsNiBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IEhUTUxGb3JtRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqCiAg
ICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKLXZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWRO
b3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkK
LXsKLSAgICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7Ci0gICAgSFRNTEVs
ZW1lbnQ6OmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKGluc2VydGlvblBvaW50KTsKLSAg
ICBpZiAoaGFzSUQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+cmVz
ZXRGb3JtRWxlbWVudHNPd25lcigpOwotfQotCiBzdGF0aWMgaW5saW5lIE5vZGUqIGZpbmRSb290
KE5vZGUqIG4pCiB7CiAgICAgTm9kZSogcm9vdCA9IG47CkBAIC0xNjQsOCArMTU2LDYgQEAgdm9p
ZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhc3NvY2lhdGVkRWxlbWVudHMuc2l6
ZSgpOyArK2kpCiAgICAgICAgIGFzc29jaWF0ZWRFbGVtZW50c1tpXS0+Zm9ybVJlbW92ZWRGcm9t
VHJlZShyb290KTsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQp
OwotICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmIGhhc0lEKCkpCi0gICAg
ICAgIGRvY3VtZW50KCktPmZvcm1Db250cm9sbGVyKCktPnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIo
KTsKIH0KIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBl
dmVudCkKQEAgLTQ0MCw3ICs0MzAsNyBAQCB1bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1F
bGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50KQogewogICAgIC8v
IENvbXBhcmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZm9ybSBlbGVtZW50IGFuZCB0aGUgaW5zZXJ0
ZWQgZWxlbWVudC4KICAgICAvLyBVcGRhdGVzIHRoZSBpbmRlY2VzIGluIG9yZGVyIHRvIHRoZSBy
ZWxhdGlvbiBvZiB0aGUgcG9zaXRpb246Ci0gICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBj
b21wYXJlRG9jdW1lbnRQb3NpdGlvbihlbGVtZW50KTsKKyAgICB1bnNpZ25lZCBzaG9ydCBwb3Np
dGlvbiA9IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQsIGZhbHNlKTsKICAgICBpZiAo
cG9zaXRpb24gJiAoRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMgfCBET0NVTUVOVF9QT1NJVElP
Tl9DT05UQUlORURfQlkpKQogICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRl
eDsKICAgICBlbHNlIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORykg
ewpAQCAtNDU2LDE0ICs0NDYsMTQgQEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxl
bWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCkKICAgICB1bnNpZ25l
ZCBsZWZ0ID0gMCwgcmlnaHQgPSBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkgLSAxOwogICAg
IHdoaWxlIChsZWZ0ICE9IHJpZ2h0KSB7CiAgICAgICAgIHVuc2lnbmVkIG1pZGRsZSA9IGxlZnQg
KyAoKHJpZ2h0IC0gbGVmdCkgLyAyKTsKLSAgICAgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVsZW1lbnRzW21p
ZGRsZV0pKTsKKyAgICAgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVsZW1lbnRzW21pZGRsZV0pLCBmYWxzZSk7
CiAgICAgICAgIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykKICAg
ICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsZWZ0
ID0gbWlkZGxlICsgMTsKICAgICB9CiAKLSAgICBwb3NpdGlvbiA9IGVsZW1lbnQtPmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKHRvSFRNTEVsZW1lbnQobV9hc3NvY2lhdGVkRWxlbWVudHNbbGVmdF0p
KTsKKyAgICBwb3NpdGlvbiA9IGVsZW1lbnQtPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRvSFRN
TEVsZW1lbnQobV9hc3NvY2lhdGVkRWxlbWVudHNbbGVmdF0pLCBmYWxzZSk7CiAgICAgaWYgKHBv
c2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKQogICAgICAgICByZXR1cm4gbGVm
dDsKICAgICByZXR1cm4gbGVmdCArIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aAppbmRleCBlZTljY2YzOWI3YTE2NGZlYTRjYTdlZDBhN2JhOTFiNDExMzVlMmZhLi5jMDEwNGQ4
NDU2NDNiMjE1MWJjYjkzMGYxMWFkZjFmYmI2OWQxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgKQEAgLTExOSw3ICsxMTksNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKICAg
ICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTm90aWZ5RGVzY2VuZGFu
dEluc2VydGlvbnMoQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YmRkZDUxNDk3YjQxZjAyODg0M2Uy
ZDBmMGQ1OGI0ODE2NzM5MmIxLi5iZWQ3MDAxNDAzZWIwYzFhZDE0YzYzMDBiZjBkNjhkN2U4Y2Mx
MzNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDctMTEgIEtlaXNoaSBIYXR0b3JpICA8
a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9ybSBvZiBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQgaXMgbm90IHVwZGF0ZWQgd2hlbiBpZCB0YXJnZXQgY2hhbmdlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3VwZGF0ZS1mb3Jt
LWF0dHJpYnV0ZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0w
Ny0wOSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0
ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVjMjVmNjRjZTU0MGY0MjJhYWFiY2E0NzI0MjNkN2UzNGFmZGU4NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVt
ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMxIEBACitUZXN0IGZvciB0aGUgZGF0YWxpc3Qg
ZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3QgMTogSW5zZXJ0
IG5ldyBpbnB1dCBhZnRlciBmb3JtLgorUEFTUyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAxCitQ
QVNTIGZvcm0uZWxlbWVudHNbMF0gaXMgaW5wdXQKK1Rlc3QgMjogSW5zZXJ0IHR3byBmb3JtcyB3
aXRoIHNhbWUgaWQuCitQQVNTIGZvcm0xLmVsZW1lbnRzLmxlbmd0aCBpcyAxCitQQVNTIGZvcm0y
LmVsZW1lbnRzLmxlbmd0aCBpcyAwCitQQVNTIGZvcm0xLmVsZW1lbnRzWzBdIGlzIGlucHV0CitU
ZXN0IDM6IENoYW5nZSBmb3JtIGlkLgorUEFTUyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAxCitQ
QVNTIGZvcm0uZWxlbWVudHNbMF0gaXMgaW5wdXQKK1Rlc3QgNDogT3JkZXIuCitQQVNTIGZvcm0u
ZWxlbWVudHMubGVuZ3RoIGlzIDUKK1BBU1MgZm9ybS5lbGVtZW50c1swXSBpcyBpbnB1dDEKK1BB
U1MgZm9ybS5lbGVtZW50c1sxXSBpcyBpbnB1dDIKK1BBU1MgZm9ybS5lbGVtZW50c1syXSBpcyBp
bnB1dDMKK1BBU1MgZm9ybS5lbGVtZW50c1szXSBpcyBpbnB1dDQKK1BBU1MgZm9ybS5lbGVtZW50
c1s0XSBpcyBpbnB1dDUKK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgNAorUEFTUyBmb3Jt
LmVsZW1lbnRzWzBdIGlzIGlucHV0MQorUEFTUyBmb3JtLmVsZW1lbnRzWzFdIGlzIGlucHV0Mwor
UEFTUyBmb3JtLmVsZW1lbnRzWzJdIGlzIGlucHV0NAorUEFTUyBmb3JtLmVsZW1lbnRzWzNdIGlz
IGlucHV0NQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmli
dXRlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0
cmlidXRlLWVsZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MGUwYmViOThjYzcwZGQ3ZTVhN2QzOGQx
NzhhZDczNTM2MGI1NmEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsOTEgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0IiBzdHlsZT0iZGlzcGxheTpu
b25lOyI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBmb3IgdGhlIGRhdGFs
aXN0IGVsZW1lbnQuJyk7CisKK3ZhciB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Iik7CisKK2Z1bmN0aW9uIGNyZWF0ZUZvcm0oaWQpIHsKKyAgICB2YXIgZm9ybSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTsKKyAgICBmb3JtLmlkID0gaWQ7CisgICAg
dGVzdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZm9ybSk7CisgICAgcmV0dXJuIGZvcm07Cit9OworCitm
dW5jdGlvbiBjcmVhdGVJbnB1dChmb3JtKSB7CisgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImZvcm0iLCBmb3Jt
KTsKKyAgICB0ZXN0RWxlbWVudC5hcHBlbmRDaGlsZChpbnB1dCk7CisgICAgcmV0dXJuIGlucHV0
OworfTsKKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWcoIlRlc3QgMTogSW5zZXJ0IG5l
dyBpbnB1dCBhZnRlciBmb3JtLiIpOworICAgIGZvcm0gPSBjcmVhdGVGb3JtKCJ0ZXN0MSIpOwor
ICAgIGlucHV0ID0gY3JlYXRlSW5wdXQoInRlc3QxIik7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHMubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1swXScsICdp
bnB1dCcpOworfTsKKworZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgZGVidWcoIlRlc3QgMjogSW5z
ZXJ0IHR3byBmb3JtcyB3aXRoIHNhbWUgaWQuIik7CisgICAgaW5wdXQgPSBjcmVhdGVJbnB1dCgi
dGVzdDIiKTsKKyAgICBmb3JtMSA9IGNyZWF0ZUZvcm0oInRlc3QyIik7CisgICAgZm9ybTIgPSBj
cmVhdGVGb3JtKCJ0ZXN0MiIpOworICAgIHNob3VsZEJlKCdmb3JtMS5lbGVtZW50cy5sZW5ndGgn
LCAnMScpOworICAgIHNob3VsZEJlKCdmb3JtMi5lbGVtZW50cy5sZW5ndGgnLCAnMCcpOworICAg
IHNob3VsZEJlKCdmb3JtMS5lbGVtZW50c1swXScsICdpbnB1dCcpOworfTsKKworZnVuY3Rpb24g
dGVzdDMoKSB7CisgICAgZGVidWcoIlRlc3QgMzogQ2hhbmdlIGZvcm0gaWQuIik7CisgICAgZm9y
bSA9IGNyZWF0ZUZvcm0oInRlc3QzLTEiKTsKKyAgICBpbnB1dCA9IGNyZWF0ZUlucHV0KCJ0ZXN0
My0yIik7CisgICAgZm9ybS5pZCA9ICJ0ZXN0My0yIjsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVt
ZW50cy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzBdJywgJ2lu
cHV0Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICBkZWJ1ZygiVGVzdCA0OiBPcmRl
ci4iKTsKKyAgICBpbnB1dDEgPSBjcmVhdGVJbnB1dCgidGVzdDMiKTsKKyAgICBpbnB1dDIgPSBj
cmVhdGVJbnB1dCgidGVzdDMiKTsKKyAgICBmb3JtID0gY3JlYXRlRm9ybSgidGVzdDMiKTsKKyAg
ICBpbnB1dDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGZvcm0uYXBw
ZW5kQ2hpbGQoaW5wdXQzKTsKKyAgICBpbnB1dDQgPSBjcmVhdGVJbnB1dCgidGVzdDMiKTsKKyAg
ICBpbnB1dDUgPSBjcmVhdGVJbnB1dCgidGVzdDMiKTsKKyAgICAKKyAgICBzaG91bGRCZSgnZm9y
bS5lbGVtZW50cy5sZW5ndGgnLCAnNScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzBd
JywgJ2lucHV0MScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzFdJywgJ2lucHV0Micp
OworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzJdJywgJ2lucHV0MycpOworICAgIHNob3Vs
ZEJlKCdmb3JtLmVsZW1lbnRzWzNdJywgJ2lucHV0NCcpOworICAgIHNob3VsZEJlKCdmb3JtLmVs
ZW1lbnRzWzRdJywgJ2lucHV0NScpOworCisgICAgaW5wdXQyLnNldEF0dHJpYnV0ZSgiZm9ybSIs
ICIiKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnNCcpOworICAgIHNo
b3VsZEJlKCdmb3JtLmVsZW1lbnRzWzBdJywgJ2lucHV0MScpOworICAgIHNob3VsZEJlKCdmb3Jt
LmVsZW1lbnRzWzFdJywgJ2lucHV0MycpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzJd
JywgJ2lucHV0NCcpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzNdJywgJ2lucHV0NScp
OworfTsKKwordGVzdDEoKTsKK3Rlc3QyKCk7Cit0ZXN0MygpOwordGVzdDQoKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151928</attachid>
            <date>2012-07-12 06:00:49 -0700</date>
            <delta_ts>2012-07-12 06:35:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91042-20120712220047.patch</filename>
            <type>text/plain</type>
            <size>41295</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMyN2M4YmNlNDU2ZTIz
ZjY5OWE1NGUzZGY5NGZiMDM3Y2I2NDc1Ni4uNDlmYTY5MTA3Y2Q5ZWRlMmFjM2VjNzMyNGY4YWQz
ZTAzNGZlM2IxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA3LTEyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEZvcm0gb2YgRm9ybUFz
c29jaWF0ZWRFbGVtZW50IGlzIG5vdCB1cGRhdGVkIHdoZW4gaWQgdGFyZ2V0IGNoYW5nZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
Zm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQuaHRtbAorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyB0aGUgSWRUYXJnZXRPYnNlcnZlciBhbmQgSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5IGNsYXNzLgorICAgICAgICBUaGV5IGNhbiBiZSB1c2VkIHRvIGJlIG5vdGlmaWVk
IHdoZW4gdGhlIGVsZW1lbnQgdGhhdCBhbiBpZCBpcyBwb2ludGluZyB0byAodGhlIGlkIHRhcmdl
dCkKKyAgICAgICAgY2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkue2gsY3BwfSBhbmQgSWRUYXJnZXRPYnNlcnZlci57aCxj
cHB9CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICogVGFy
Z2V0LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBkb20vSWRUYXJn
ZXRPYnNlcnZlci5oOiBBZGRlZC4gQ2xhc3NlcyB0aGF0IHdhbnQgdG8gYmUgbm90aWZpZWQgb2Yg
Y2hhbmdlcyB0byBhbiBpZCB0YXJnZXQgc2hvdWxkIGluaGVyaXQgdGhpcy4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoSWRUYXJnZXRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
ZFRhcmdldE9ic2VydmVyOjpJZFRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBkb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIpOiBSZWdpc3Rl
ciBhbiBJZFRhcmdldE9ic2VydmVyIHRvIG9ic2VydmUgYW4gaWQgdGFyZ2V0LgorICAgICAgICAo
V2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpyZW1vdmVPYnNlcnZlcik6IFVucmVn
aXN0ZXJzIGFuIElkVGFyZ2V0T2JzZXJ2ZXIgZnJvbSBvYnNlcnZpbmcuCisgICAgICAgIChXZWJD
b3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVycyk6IENhbGxzIGlk
VGFyZ2V0Q2hhbmdlZCBvbiBhbGwgb2JzZXJ2ZXJzIGZvciBhbiBpZC4KKyAgICAgICAgKiBkb20v
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6SWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkpOgorICAgICAg
ICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVl
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6IENh
bGxzIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzIGJlY2F1c2UgdGhl
IGlkIHRhcmdldCBtaWdodCBoYXZlIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnJlbW92ZUVsZW1lbnRCeUlkKTogRGl0dG8uCisgICAgICAgICogZG9tL1RyZWVTY29wZS5o
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjppZFRhcmdldE9ic2VydmVyUmVnaXN0cnkp
OgorICAgICAgICAoVHJlZVNjb3BlKToKKyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OmlkVGFyZ2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFz
c29jaWF0ZWRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChGb3JtQ29udHJvbGxlcik6
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgcmFuZ2UuIEl0CisgICAgICAgIHNjYW5zIHRoZSByYW5nZSBhbmQgcmV0
dXJucyB0aGUgaW5kZXggdG8gaW5zZXJ0IHRoZSBlbGVtZW50IGluIG1fYXNzb2NpYXRlZEVsZW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXgp
OiBNb2RpZmllZCB0byBvbmx5IHNjYW4gdGhlIGVsZW1lbnRzIGluCisgICAgICAgIG1fYXNzb2Np
YXRlZEVsZW1lbnQgdGhhdCBwcmVjZWRlIGFuZCBmb2xsb3cgdGhlIGZvcm0gZWxlbWVudC4KKyAg
ICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1FbGVtZW50
KToKKwogMjAxMi0wNy0wOSAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtQbGF0Zm9ybV0gSW50cm9kdWNlIExvY2FsZU1hYyBjbGFzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA4OTFkZjg2YTIxMzlmMTY1ZGJjNTkwN2Q0Y2QzN2U4YTcwYjcxNzU1Li5l
MWNlMjFhMzc2ODFkZmNjMTU0ODhmN2ZhNDExMDVmYzBhOTBiZDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNjA1LDYgKzYwNSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcAogICAgIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAK
ICAgICBkb20vSWNvblVSTC5jcHAKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlci5jcHAKKyAgICBk
b20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmNw
cAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKICAgICBkb20vTWVzc2FnZUV2ZW50LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYWIxZTQ1OTc1YzBkZTY3YjU5ZTg2Njcw
NmQ2ZmQ0YjE4YmEwMDNlNy4uOTEyNGUzYzc4NTI2MDc0MjExYTNlZTA0YTA3NTZiNmI2NmY5MjUy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xOTM5LDYgKzE5MzksMTAgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVl
dWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vSWNvblVSTC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmggXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9I
YXNoQ2hhbmdlRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IDhjNmQzNDNlMTQyZTYxMjc5MTRkY2YwMmExNWRhZjdlZGVjMGExMzAuLmMwOTI2YzVhN2Q4MDIx
NmJjMTRjNmUxODZmZjNlMmRlOWU4MDU5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTcyLDYgKzU3Miw4
IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuY3BwIFwK
ICAgICBkb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwIFwKICAgICBkb20vSWNvblVSTC5jcHAgXAor
ICAgIGRvbS9JZFRhcmdldE9ic2VydmVyLmNwcCBcCisgICAgZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5jcHAgXAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmNwcCBcCiAgICAgZG9tL01lc3Nh
Z2VDaGFubmVsLmNwcCBcCiAgICAgZG9tL01lc3NhZ2VFdmVudC5jcHAgXApAQCAtMTc1Niw2ICsx
NzU4LDggQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCiAgICAgZG9t
L0V4Y2VwdGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5o
IFwKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlci5oIFwKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmggXAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmggXAogICAgIGRvbS9NZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCBcCiAgICAgZG9tL01lc3NhZ2VDaGFubmVsLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDM2ZTk4OWMzOWMwMzk0YjU3YjE5ZmQ0NmE3MjAyNmE3MzliYTQ2OWMuLjU1NDBm
YmRmYTNiZDI4NzM1ZTBhNjc5MjllZDQyMmYxOWQ4NzEzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTUxNzgsNiArNTE3OCwxMCBAQAogICAgICAgICAgICAgJ2RvbS9JZ25vcmVEZXN0cnVjdGl2ZVdy
aXRlQ291bnRJbmNyZW1lbnRlci5oJywKICAgICAgICAgICAgICdkb20vSWNvblVSTC5jcHAnLAog
ICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAorICAgICAgICAgICAgJ2RvbS9JZFRhcmdldE9i
c2VydmVyLmNwcCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCcsCisgICAg
ICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAnLAorICAgICAgICAgICAg
J2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAnZG9tL0tleWJv
YXJkRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgn
LAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5MDYyYzhiMjMxZjZjMGE1YWEz
YmQxYTk0YjUxZjRkNDhmZDM4ODM0Li4wNzFmMjQ3ZDk5MGViZmI4ZDUxODQ0NTNmZDMxMDc5MGE2
MjNkMjc5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtNTExOTQsNiArNTExOTQsMTE4IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWNv
blVSTC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAgCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRUYXJnZXRPYnNlcnZlci5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KIAkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKIAkJCQk+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YzNiMjUyZDdkYTM1Y2RlZTI1YjFkYzkzZjY2MjdhNzhkODk2Zjg4Ny4uMmJmYWIwMzA3MDk5Yzdl
OTQ1MjNlYzhiMDQ0N2RhNTVhZWFhYTBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcyMCw2ICs1NzIwLDkgQEAKIAkJQzMz
RUU1QzQxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMy
MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi87
IH07CiAJCUMzM0VFNUM1MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlu
cHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzMzRUU1QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBl
LmggKi87IH07CiAJCUMzN0NERUJEMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzN0NE
RUJDMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDM0UxMTJFQTE1QUU2NDUyMDBE
NDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNFMTEyRTcxNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlDM0UxMTJFQjE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzRTExMkU4
MTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owor
CQlDM0UxMTJFQzE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0UxMTJFOTE1
QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYxMjExOUQyMzAw
OEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGlu
Z3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5n
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2
MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQg
LyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFj
ZS5jcHAgKi87IH07CkBAIC0xMjkzNSw2ICsxMjkzOCw5IEBACiAJCUMzM0VFNUMyMTRGQjQ5NjEw
MDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1
QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMzdDREVCQzE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9v
c2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3Nl
ckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDM0UxMTJFNzE1QUU2NDUy
MDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJZFRhcmdldE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMzRTExMkU4MTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNFMTEyRTkxNUFFNjQ1
MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGlu
Z3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5n
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhC
NDZFMCAvKiBHcm91cFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyb3VwU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAw
RkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMTI1OSw2ICsyMTI2NSw5IEBACiAJCUY1MjNEMzI0MDJERTQ0Nzgw
MTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUMzRTExMkU3MTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8s
CisJCQkJQzNFMTEyRTgxNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS5jcHAgKi8sCisJCQkJQzNFMTEyRTkxNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVE
T01PYmplY3QuY3BwICovLAogCQkJCUUxQzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVE
T01PYmplY3QuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAg
Ki8sCkBAIC0yNTE3OSw2ICsyNTE4OCw4IEBACiAJCQkJNEYzMkJCMUIxNEZBODVFODAwRjZDMUEz
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4MkRBMjMx
NTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFG
QUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUMzRTExMkVBMTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDM0UxMTJFQzE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4MjM0LDYgKzI4MjQ1LDcgQEAKIAkJCQk1
MDk4N0MyNjE1N0Q2NzZEMDBCREE4MzUgLyogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODgyREEyMDE1OTM4NDZBMDAwMTE1RUQgLyogQ1NTVG9TdHls
ZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRkFGQkYxODE1QTVGQTZFMDAwODNBMjAgLyog
VVRJVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzNFMTEyRUIxNUFFNjQ1MjAwRDQ1
NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZjNmYmY2ZTM3MzkxZGZj
ODI4ZDUxODBkOWY4ODQ1ZmZkMjMzZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJZFRhcmdldE9ic2VydmVy
X2gKKyNkZWZpbmUgSWRUYXJnZXRPYnNlcnZlcl9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnk7CisKK2NsYXNzIElkVGFyZ2V0T2JzZXJ2ZXIgeworcHVibGljOgorICAgIElk
VGFyZ2V0T2JzZXJ2ZXIoKSA6IG1fcmVnaXN0cnkoMCkgeyB9CisgICAgfklkVGFyZ2V0T2JzZXJ2
ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRUYXJnZXRDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpID0gMDsKKyAgICB2b2lkIHNldFJlZ2lzdHJ5KElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eSopOworCitwcml2YXRlOgorICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSogbV9yZWdpc3Ry
eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIElkVGFyZ2V0T2Jz
ZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mM2M5ZGIwZDUwNjBlZjhmMDk0Y2NiYmM3NTRlMDA2NDE2Njc0MjAy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8SWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5PiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKSk7Cit9CisKK3ZvaWQgSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcihjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBJ
ZFRhcmdldE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBpZiAoaWQuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgSWRUb09ic2VydmVyU2V0TWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9yZWdpc3RyeS5hZGQoaWQuaW1wbCgpLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRvcHRQdHIo
bmV3IE9ic2VydmVyU2V0KCkpOworCisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPmFkZChv
YnNlcnZlcik7CisKKyAgICBvYnNlcnZlci0+c2V0UmVnaXN0cnkodGhpcyk7Cit9CisKK3ZvaWQg
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpyZW1vdmVPYnNlcnZlcihjb25zdCBBdG9taWNTdHJp
bmcmIGlkLCBJZFRhcmdldE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBpZiAoaWQuaXNFbXB0
eSgpIHx8IG1fcmVnaXN0cnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBJZFRv
T2JzZXJ2ZXJTZXRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lzdHJ5LmZpbmQoaWQuaW1wbCgp
KTsKKworICAgIE9ic2VydmVyU2V0KiBzZXQgPSBpdGVyLT5zZWNvbmQuZ2V0KCk7CisgICAgc2V0
LT5yZW1vdmUob2JzZXJ2ZXIpOworICAgIGlmIChzZXQtPmlzRW1wdHkoKSAmJiBzZXQgIT0gbV9u
b3RpZnlpbmdPYnNlcnZlcnNJblNldCkKKyAgICAgICAgbV9yZWdpc3RyeS5yZW1vdmUoaXRlcik7
CisKKyAgICBvYnNlcnZlci0+c2V0UmVnaXN0cnkoMCk7Cit9CisKK3ZvaWQgSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5OjpyZW1vdmVPYnNlcnZlcihJZFRhcmdldE9ic2VydmVyKiBvYnNlcnZlcikK
K3sKKyAgICBpZiAobV9yZWdpc3RyeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFZlY3RvcjxJZFRvT2JzZXJ2ZXJTZXRNYXA6Oml0ZXJhdG9yPiBlbXB0eVNldHM7CisKKyAgICBm
b3IgKElkVG9PYnNlcnZlclNldE1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdHJ5LmJlZ2luKCk7
IGl0ICE9IG1fcmVnaXN0cnkuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgT2JzZXJ2ZXJTZXQqIHNl
dCA9IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgIHNldC0+cmVtb3ZlKG9ic2VydmVyKTsKKyAg
ICAgICAgaWYgKHNldC0+aXNFbXB0eSgpKQorICAgICAgICAgICAgZW1wdHlTZXRzLmFwcGVuZChp
dCk7CisgICAgfQorCisgICAgZm9yIChWZWN0b3I8SWRUb09ic2VydmVyU2V0TWFwOjppdGVyYXRv
cj46Oml0ZXJhdG9yIGl0ID0gZW1wdHlTZXRzLmJlZ2luKCk7IGl0ICE9IGVtcHR5U2V0cy5lbmQo
KTsgKytpdCkgeworICAgICAgICBpZiAoKCppdCktPnNlY29uZC5nZXQoKSAhPSBtX25vdGlmeWlu
Z09ic2VydmVyc0luU2V0KQorICAgICAgICAgICAgbV9yZWdpc3RyeS5yZW1vdmUoKml0KTsKKyAg
ICB9CisKKyAgICBvYnNlcnZlci0+c2V0UmVnaXN0cnkoMCk7Cit9CisKK3ZvaWQgSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkK
K3sKKyAgICBBU1NFUlQoIW1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQpOworICAgIGlmIChpZC5p
c0VtcHR5KCkgfHwgbV9yZWdpc3RyeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQgPSBtX3JlZ2lzdHJ5LmdldChpZC5pbXBsKCkpOwor
ICAgIGlmICghbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgVmVjdG9yPElkVGFyZ2V0T2JzZXJ2ZXIqPiBjb3B5OworICAgIGNvcHlUb1ZlY3RvcigqbV9u
b3RpZnlpbmdPYnNlcnZlcnNJblNldCwgY29weSk7CisgICAgZm9yIChWZWN0b3I8SWRUYXJnZXRP
YnNlcnZlcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvcHkuYmVnaW4oKTsgaXQgIT0gY29weS5l
bmQoKTsgKytpdCkgeworICAgICAgICBpZiAobV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldC0+Y29u
dGFpbnMoKml0KSkKKyAgICAgICAgICAgICgqaXQpLT5pZFRhcmdldENoYW5nZWQoaWQpOworICAg
IH0KKworICAgIGlmIChtX25vdGlmeWluZ09ic2VydmVyc0luU2V0LT5pc0VtcHR5KCkpCisgICAg
ICAgIG1fcmVnaXN0cnkucmVtb3ZlKGlkLmltcGwoKSk7CisKKyAgICBtX25vdGlmeWluZ09ic2Vy
dmVyc0luU2V0ID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNmFjZTli
YjBlYzYxZTMzYjM4MzhmYzA3OTJmNWMxOTEwYzg2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCisjZGVmaW5lIElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIElkVGFyZ2V0T2JzZXJ2ZXI7CisKK2NsYXNzIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8SWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5PiBjcmVhdGUoKTsKKyAgICB2b2lkIGFkZE9ic2VydmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHJlbW92
ZU9ic2VydmVyKElkVGFyZ2V0T2JzZXJ2ZXIqKTsKKyAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhj
b25zdCBBdG9taWNTdHJpbmcmIGlkKTsKKworcHJpdmF0ZToKKyAgICBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkoKSA6IG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQoMCkgeyB9CisKKyAgICB0eXBl
ZGVmIEhhc2hTZXQ8SWRUYXJnZXRPYnNlcnZlcio+IE9ic2VydmVyU2V0OworICAgIHR5cGVkZWYg
SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgT3duUHRyPE9ic2VydmVyU2V0PiA+IElkVG9PYnNl
cnZlclNldE1hcDsKKyAgICBJZFRvT2JzZXJ2ZXJTZXRNYXAgbV9yZWdpc3RyeTsKKyAgICBPYnNl
cnZlclNldCogbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCmluZGV4IDU2NDJmY2Y4ZGQzM2ZiYzFmYmYyMDNiZGRiMWZiOGJlMjUz
N2FlZmIuLjE3YWUxNjJiYTFlZTYyZTFkZWI0M2ZkZDUzYjI0N2RhYjNhMmQ5YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCkBAIC01NCw2ICs1NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiBUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKICAg
ICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAg
ICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpj
cmVhdGUoKSkKICAgICAsIG1fbnVtTm9kZUxpc3RDYWNoZXMoMCkKIHsKICAgICBBU1NFUlQocm9v
dE5vZGUpOwpAQCAtOTMsMTEgKzk0LDE1IEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVu
dEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB2b2lkIFRyZWVTY29w
ZTo6YWRkRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAgICAgbV9lbGVtZW50c0J5SWQuYWRkKGVsZW1lbnRJZC5pbXBsKCksIGVs
ZW1lbnQpOworCisgICAgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnktPm5vdGlmeU9ic2VydmVy
cyhlbGVtZW50SWQpOwogfQogCiB2b2lkIFRyZWVTY29wZTo6cmVtb3ZlRWxlbWVudEJ5SWQoY29u
c3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgbV9l
bGVtZW50c0J5SWQucmVtb3ZlKGVsZW1lbnRJZC5pbXBsKCksIGVsZW1lbnQpOworCisgICAgbV9p
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnktPm5vdGlmeU9ic2VydmVycyhlbGVtZW50SWQpOwogfQog
CiBOb2RlKiBUcmVlU2NvcGU6OmFuY2VzdG9ySW5UaGlzU2NvcGUoTm9kZSogbm9kZSkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuaAppbmRleCA1ZWNjMDM5MmYzNzE3MGJlZTMwNTM5OTIxNDI0OTdj
ZmFiN2FjYjBiLi44Y2FiOGFmMzNmOWE4MWI2NmI0M2NkYjVmM2M3YzAxZTdhZTk1MTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFRyZWVTY29wZV9o
CiAKICNpbmNsdWRlICJEb2N1bWVudE9yZGVyZWRNYXAuaCIKKyNpbmNsdWRlICJJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC04Miw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAg
IENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290Tm9kZTsgfQog
CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KiBpZFRhcmdldE9ic2VydmVyUmVnaXN0cnko
KSBjb25zdCB7IHJldHVybiBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5nZXQoKTsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqKTsKICAgICB2aXJ0dWFsIH5U
cmVlU2NvcGUoKTsKQEAgLTk1LDYgKzk4LDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudE9yZGVy
ZWRNYXAgbV9lbGVtZW50c0J5SWQ7CiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1faW1hZ2VNYXBz
QnlOYW1lOwogCisgICAgT3duUHRyPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4gbV9pZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnk7CisKICAgICB1bnNpZ25lZCBtX251bU5vZGVMaXN0Q2FjaGVzOwog
CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCAyMTc5MWYwOTYw
YWU0N2M4ZjE4ZTliZjMwYjExY2Q3YTY3ZjY4NDUzLi43NDQ4Y2U1ODJkOWRjYTlhN2VmZDQxZTQz
NWM4MzQzYmUxZjJjMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Rm9ybUFzc29j
aWF0ZWRFbGVtZW50KCkKLSAgICA6IG1fZm9ybSgwKQorICAgIDogSWRUYXJnZXRPYnNlcnZlcigp
CisgICAgLCBtX2Zvcm0oMCkKIHsKIH0KIApAQCAtNTcsOCArNTgsMTEgQEAgVmFsaWRpdHlTdGF0
ZSogRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGl0eSgpCiB2b2lkIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewog
ICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKLSAgICBpZiAo
b2xkRG9jdW1lbnQgJiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCi0gICAg
ICAgIG9sZERvY3VtZW50LT5mb3JtQ29udHJvbGxlcigpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRX
aXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICBpZiAob2xkRG9jdW1lbnQgJiYgZWxlbWVudC0+
ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpIHsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBpZCA9IGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0dHIpOworICAgICAgICBvbGRE
b2N1bWVudC0+aWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCktPnJlbW92ZU9ic2VydmVyKGlkLCB0
aGlzKTsKKyAgICAgICAgZWxlbWVudC0+dHJlZVNjb3BlKCktPmlkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeSgpLT5hZGRPYnNlcnZlcihpZCwgdGhpcyk7CisgICAgfQogfQogCiB2b2lkIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50
KQpAQCAtNjksMTQgKzczLDE0IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAKICAgICBIVE1MRWxlbWVudCog
ZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNB
dHRyaWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT5mb3JtQ29u
dHJvbGxlcigpLT5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7Cisg
ICAgICAgIGVsZW1lbnQtPnRyZWVTY29wZSgpLT5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKS0+
YWRkT2JzZXJ2ZXIoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShmb3JtQXR0ciksIHRoaXMpOwog
fQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxF
bGVtZW50KHRoaXMpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmIGVs
ZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICBlbGVtZW50LT5kb2N1
bWVudCgpLT5mb3JtQ29udHJvbGxlcigpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0
dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgZWxlbWVudC0+dHJlZVNjb3BlKCktPmlkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeSgpLT5yZW1vdmVPYnNlcnZlcihlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRl
KGZvcm1BdHRyKSwgdGhpcyk7CiAgICAgLy8gSWYgdGhlIGZvcm0gYW5kIGVsZW1lbnQgYXJlIGJv
dGggaW4gdGhlIHNhbWUgdHJlZSwgcHJlc2VydmUgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGZvcm0u
CiAgICAgLy8gT3RoZXJ3aXNlLCBudWxsIG91dCBvdXIgZm9ybSBhbmQgcmVtb3ZlIG91cnNlbHZl
cyBmcm9tIHRoZSBmb3JtJ3MgbGlzdCBvZiBlbGVtZW50cy4KICAgICBpZiAobV9mb3JtICYmIGVs
ZW1lbnQtPmhpZ2hlc3RBbmNlc3RvcigpICE9IG1fZm9ybS0+aGlnaGVzdEFuY2VzdG9yKCkpCkBA
IC0xNTMsOSArMTU3LDExIEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmli
dXRlQ2hhbmdlZCgpCiAgICAgaWYgKCFlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRy
KSkgewogICAgICAgICAvLyBUaGUgZm9ybSBhdHRyaWJ1dGUgcmVtb3ZlZC4gV2UgbmVlZCB0byBy
ZXNldCBmb3JtIG93bmVyIGhlcmUuCiAgICAgICAgIHNldEZvcm0oZWxlbWVudC0+ZmluZEZvcm1B
bmNlc3RvcigpKTsKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIo
KS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7Ci0gICAgfSBl
bHNlCisgICAgICAgIGVsZW1lbnQtPnRyZWVTY29wZSgpLT5pZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkoKS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisgICAgfSBlbHNlIHsKICAgICAgICAgcmVzZXRG
b3JtT3duZXIoKTsKKyAgICAgICAgZWxlbWVudC0+dHJlZVNjb3BlKCktPmlkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeSgpLT5hZGRPYnNlcnZlcihlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGZvcm1B
dHRyKSwgdGhpcyk7CisgICAgfQogfQogCiBib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3Vz
dG9tRXJyb3IoKSBjb25zdApAQCAtMjIxLDYgKzIyNywxMSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKICAgICBtX2N1
c3RvbVZhbGlkYXRpb25NZXNzYWdlID0gZXJyb3I7CiB9CiAKK3ZvaWQgRm9ybUFzc29jaWF0ZWRF
bGVtZW50OjppZFRhcmdldENoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK3sKKyAgICBy
ZXNldEZvcm1Pd25lcigpOworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
dG9IVE1MRWxlbWVudCh0aGlzKS0+Z2V0TmFtZUF0dHJpYnV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKaW5kZXggNWE0N2VhMDc2ZGIyYTc0ZWY1MGU5
NDU2NWFlN2NiNGYwYmE1MDIxMS4uZjRkNzNmNmMwOGRiNTMzODZmNzYxNDgzYjYzMmRlNjg3MjA5
OGE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCkBA
IC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEZvcm1Bc3NvY2lhdGVkRWxlbWVudF9oCiAKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCw3ICszNSw3IEBAIGNsYXNzIFZhbGlkYXRpb25NZXNz
YWdlOwogY2xhc3MgVmFsaWRpdHlTdGF0ZTsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKLWNs
YXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCB7CitjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQg
OiBwdWJsaWMgSWRUYXJnZXRPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9ybUFz
c29jaWF0ZWRFbGVtZW50KCk7CiAKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIGJvb2wg
dmFsaWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3Qg
U3RyaW5nJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaWRUYXJnZXRDaGFuZ2VkKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQpIE9WRVJSSURFOworCiBwcm90ZWN0ZWQ6CiAgICAgRm9ybUFzc29jaWF0ZWRF
bGVtZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggYjdj
MzhlMmE4YjY5NDE0ZGJlZDU5MmZkMzM2YWNkZTlmMjJhMTE3Mi4uMjU2MDVmZTg3ZGI0YjlmNDA3
NDJmYjFjMTVmYTczZmI4ZmZkZjA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxl
ci5jcHAKQEAgLTIzNywyNSArMjM3LDYgQEAgdm9pZCBGb3JtQ29udHJvbGxlcjo6d2lsbERlbGV0
ZUZvcm0oSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3It
PndpbGxEZWxldGVGb3JtKGZvcm0pOwogfQogCi12b2lkIEZvcm1Db250cm9sbGVyOjpyZWdpc3Rl
ckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVt
ZW50KQotewotICAgIEFTU0VSVCh0b0hUTUxFbGVtZW50KGVsZW1lbnQpLT5mYXN0SGFzQXR0cmli
dXRlKGZvcm1BdHRyKSk7Ci0gICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5hZGQo
ZWxlbWVudCk7Ci19Ci0KLXZvaWQgRm9ybUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGb3JtRWxlbWVu
dFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKLXsKLSAg
ICBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLnJlbW92ZShlbGVtZW50KTsKLX0KLQot
dm9pZCBGb3JtQ29udHJvbGxlcjo6cmVzZXRGb3JtRWxlbWVudHNPd25lcigpCi17Ci0gICAgdHlw
ZWRlZiBGb3JtQXNzb2NpYXRlZEVsZW1lbnRMaXN0SGFzaFNldDo6aXRlcmF0b3IgSXRlcmF0b3I7
Ci0gICAgSXRlcmF0b3IgZW5kID0gbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5lbmQo
KTsKLSAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0
ZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5yZXNldEZvcm1Pd25l
cigpOwotfQotCiBGb3JtRWxlbWVudEtleTo6Rm9ybUVsZW1lbnRLZXkoQXRvbWljU3RyaW5nSW1w
bCogbmFtZSwgQXRvbWljU3RyaW5nSW1wbCogdHlwZSwgQXRvbWljU3RyaW5nSW1wbCogZm9ybUtl
eSkKICAgICA6IG1fbmFtZShuYW1lKQogICAgICwgbV90eXBlKHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Db250cm9sbGVyLmgKaW5kZXggZTE1YzFkYzI0YTk4MGY2NDQ3YTk4YjJlMzI2ZDE5NmQ2
ZTM2MzJhMi4uZTk4ZDFhMDQ5Y2MwOWJkNzFjZmYwZDkyN2FmNGE0YzU4NWVjZjNmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaApAQCAtMTMyLDEwICsxMzIsNiBAQCBwdWJsaWM6
CiAgICAgRm9ybUNvbnRyb2xTdGF0ZSB0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlJik7CiAgICAgdm9pZCB3aWxsRGVsZXRlRm9ybShI
VE1MRm9ybUVsZW1lbnQqKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3Jt
QXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOwotICAgIHZvaWQgdW5yZWdpc3RlckZv
cm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7Ci0gICAg
dm9pZCByZXNldEZvcm1FbGVtZW50c093bmVyKCk7Ci0KIHByaXZhdGU6CiAgICAgRm9ybUNvbnRy
b2xsZXIoKTsKIApAQCAtMTQzLDggKzEzOSw2IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIExp
c3RIYXNoU2V0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUqLCA2ND4gRm9ybUVsZW1l
bnRMaXN0SGFzaFNldDsKICAgICBGb3JtRWxlbWVudExpc3RIYXNoU2V0IG1fZm9ybUVsZW1lbnRz
V2l0aFN0YXRlOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPEZvcm1Bc3NvY2lhdGVk
RWxlbWVudD4sIDMyPiBGb3JtQXNzb2NpYXRlZEVsZW1lbnRMaXN0SGFzaFNldDsKLSAgICBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnRMaXN0SGFzaFNldCBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmli
dXRlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPEZvcm1FbGVtZW50S2V5LCBEZXF1ZTxGb3JtQ29u
dHJvbFN0YXRlPiwgRm9ybUVsZW1lbnRLZXlIYXNoLCBGb3JtRWxlbWVudEtleUhhc2hUcmFpdHM+
IEZvcm1FbGVtZW50U3RhdGVNYXA7CiAgICAgRm9ybUVsZW1lbnRTdGF0ZU1hcCBtX3N0YXRlRm9y
TmV3Rm9ybUVsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmlu
ZGV4IDNjOGJiMDczY2ZmNzBlMGI0ODcwOTA0NjRjMDgxMDI5ZWMyNTE3MjUuLmRjOTljOWVmN2Rm
MjEzYjI5ZGQ2NGVmNjUwZDk3ODY1MDMwYWY2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKQEAgLTE0MSwxNCArMTQxLDYgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBIVE1MRm9ybUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2Rl
KgogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6
ZGlkTm90aWZ5RGVzY2VuZGFudEluc2VydGlvbnMoQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCi17Ci0gICAgQVNTRVJUKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwotICAgIEhU
TUxFbGVtZW50OjpkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhpbnNlcnRpb25Qb2ludCk7
Ci0gICAgaWYgKGhhc0lEKCkpCi0gICAgICAgIGRvY3VtZW50KCktPmZvcm1Db250cm9sbGVyKCkt
PnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoKTsKLX0KLQogc3RhdGljIGlubGluZSBOb2RlKiBmaW5k
Um9vdChOb2RlKiBuKQogewogICAgIE5vZGUqIHJvb3QgPSBuOwpAQCAtNDM2LDMzICs0MjgsMzMg
QEAgdGVtcGxhdGU8Y2xhc3MgVCwgc2l6ZV90IG4+IHN0YXRpYyB2b2lkIHJlbW92ZUZyb21WZWN0
b3IoVmVjdG9yPFQqLCBuPiAmIHZlYywgVCoKICAgICAgICAgfQogfQogCi11bnNpZ25lZCBIVE1M
Rm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBl
bGVtZW50KQordW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZv
cm1BdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWdu
ZWQgcmFuZ2VFbmQpCiB7Ci0gICAgLy8gQ29tcGFyZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmb3Jt
IGVsZW1lbnQgYW5kIHRoZSBpbnNlcnRlZCBlbGVtZW50LgotICAgIC8vIFVwZGF0ZXMgdGhlIGlu
ZGVjZXMgaW4gb3JkZXIgdG8gdGhlIHJlbGF0aW9uIG9mIHRoZSBwb3NpdGlvbjoKLSAgICB1bnNp
Z25lZCBzaG9ydCBwb3NpdGlvbiA9IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQpOwot
ICAgIGlmIChwb3NpdGlvbiAmIChET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUyB8IERPQ1VNRU5U
X1BPU0lUSU9OX0NPTlRBSU5FRF9CWSkpCi0gICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNB
ZnRlckluZGV4OwotICAgIGVsc2UgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fUFJF
Q0VESU5HKSB7Ci0gICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKLSAg
ICAgICAgKyttX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7Ci0gICAgfQotCiAgICAgaWYg
KG1fYXNzb2NpYXRlZEVsZW1lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAg
ICBBU1NFUlQocmFuZ2VTdGFydCA8PSByYW5nZUVuZCk7CisKKyAgICBpZiAocmFuZ2VTdGFydCA9
PSByYW5nZUVuZCkKKyAgICAgICAgcmV0dXJuIHJhbmdlU3RhcnQ7CisKKyAgICB1bnNpZ25lZCBs
ZWZ0ID0gcmFuZ2VTdGFydDsKKyAgICB1bnNpZ25lZCByaWdodCA9IHJhbmdlRW5kIC0gMTsKKyAg
ICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbjsKKwogICAgIC8vIERvZXMgYmluYXJ5IHNlYXJjaCBv
biBtX2Fzc29jaWF0ZWRFbGVtZW50cyBpbiBvcmRlciB0byBmaW5kIHRoZSBpbmRleAogICAgIC8v
IHRvIGJlIGluc2VydGVkLgotICAgIHVuc2lnbmVkIGxlZnQgPSAwLCByaWdodCA9IG1fYXNzb2Np
YXRlZEVsZW1lbnRzLnNpemUoKSAtIDE7CiAgICAgd2hpbGUgKGxlZnQgIT0gcmlnaHQpIHsKICAg
ICAgICAgdW5zaWduZWQgbWlkZGxlID0gbGVmdCArICgocmlnaHQgLSBsZWZ0KSAvIDIpOworICAg
ICAgICBBU1NFUlQobWlkZGxlIDwgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCB8fCBt
aWRkbGUgPj0gbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4KTsKICAgICAgICAgcG9zaXRp
b24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0b0hUTUxFbGVtZW50KG1fYXNz
b2NpYXRlZEVsZW1lbnRzW21pZGRsZV0pKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1F
TlRfUE9TSVRJT05fRk9MTE9XSU5HKQogICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwogICAgIH0KLQorICAgIAor
ICAgIEFTU0VSVChsZWZ0IDwgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCB8fCBsZWZ0
ID49IG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCk7CiAgICAgcG9zaXRpb24gPSBlbGVt
ZW50LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVs
ZW1lbnRzW2xlZnRdKSk7CiAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fRk9M
TE9XSU5HKQogICAgICAgICByZXR1cm4gbGVmdDsKQEAgLTQ3NCw4ICs0NjYsMTYgQEAgdW5zaWdu
ZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCogYXNzb2NpYXRlZEVsZW0KICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1l
bnQoYXNzb2NpYXRlZEVsZW1lbnQpOwogICAgIC8vIFRyZWF0cyBzZXBhcmF0ZWx5IHRoZSBjYXNl
IHdoZXJlIHRoaXMgZWxlbWVudCBoYXMgdGhlIGZvcm0gYXR0cmlidXRlCiAgICAgLy8gZm9yIHBl
cmZvcm1hbmNlIGNvbnNpZGVyYXRpb24uCi0gICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1
dGUoZm9ybUF0dHIpKQotICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0
cmlidXRlKGVsZW1lbnQpOworICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1B
dHRyKSkgeworICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IGNvbXBhcmVEb2N1bWVu
dFBvc2l0aW9uKGVsZW1lbnQpOworICAgICAgICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJ
VElPTl9QUkVDRURJTkcpIHsKKyAgICAgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZv
cmVJbmRleDsKKyAgICAgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4Owor
ICAgICAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhG
b3JtQXR0cmlidXRlKGVsZW1lbnQsIDAsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXgg
LSAxKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElP
Tl9GT0xMT1dJTkcpCisgICAgICAgICAgICByZXR1cm4gSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxl
bWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoZWxlbWVudCwgbV9hc3NvY2lhdGVkRWxlbWVudHNB
ZnRlckluZGV4LCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkpOworICAgIH0KIAogICAgIC8v
IENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBpcyB0aGUgdmVy
eSBsYXN0IHRoaW5nIGluCiAgICAgLy8gdGhlIGZvcm0ncyB0cmVlIG9mIGNoaWxkcmVuOyB3ZSBk
b24ndCB3YW50IHRvIHdhbGsgdGhlIGVudGlyZSB0cmVlIGluIHRoYXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IGVlOWNjZjM5YjdhMTY0ZmVhNGNhN2VkMGE3YmE5MWI0
MTEzNWUyZmEuLjZmN2E4NjNkOGRjZGVkMmQ1ZmM5NTQzNTY4YWYxMTI5YmI3OWZmZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMTE5LDcgKzExOSw2IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopOwpAQCAtMTM1LDcgKzEz
NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN1Ym1pdChFdmVudCosIGJvb2wgYWN0aXZhdGVT
dWJtaXRCdXR0b24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBGb3JtU3VibWlzc2lvblRy
aWdnZXIpOwogCi0gICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRl
KEVsZW1lbnQqKTsKKyAgICB1bnNpZ25lZCBmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1
dGUoRWxlbWVudCosIHVuc2lnbmVkIHJhbmdlU3RhcnQsIHVuc2lnbmVkIHJhbmdlRW5kKTsKICAg
ICB1bnNpZ25lZCBmb3JtRWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdWJtaXNzaW9uIHNob3VsZCBwcm9jZWVkLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDhiZGRkNTE0OTdiNDFmMDI4ODQzZTJkMGYwZDU4YjQ4MTY3MzkyYjEuLmUyZWUwZDE1OGNi
YjZjZGUyMGEzMGU2YThhZTcxY2VmZmYzZWQ0NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
Mi0wNy0xMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBG
b3JtIG9mIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCBpcyBub3QgdXBkYXRlZCB3aGVuIGlkIHRhcmdl
dCBjaGFuZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTEwNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVt
ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTA5ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxl
bWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMyNWY2NGNlNTQwZjQyMmFhYWJjYTQ3MjQy
M2Q3ZTM0YWZkZTg1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzEg
QEAKK1Rlc3QgZm9yIHRoZSBkYXRhbGlzdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworVGVzdCAxOiBJbnNlcnQgbmV3IGlucHV0IGFmdGVyIGZvcm0uCitQQVNTIGZv
cm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybS5lbGVtZW50c1swXSBpcyBpbnB1dAor
VGVzdCAyOiBJbnNlcnQgdHdvIGZvcm1zIHdpdGggc2FtZSBpZC4KK1BBU1MgZm9ybTEuZWxlbWVu
dHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybTIuZWxlbWVudHMubGVuZ3RoIGlzIDAKK1BBU1MgZm9y
bTEuZWxlbWVudHNbMF0gaXMgaW5wdXQKK1Rlc3QgMzogQ2hhbmdlIGZvcm0gaWQuCitQQVNTIGZv
cm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybS5lbGVtZW50c1swXSBpcyBpbnB1dAor
VGVzdCA0OiBPcmRlci4KK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgNQorUEFTUyBmb3Jt
LmVsZW1lbnRzWzBdIGlzIGlucHV0MQorUEFTUyBmb3JtLmVsZW1lbnRzWzFdIGlzIGlucHV0Mgor
UEFTUyBmb3JtLmVsZW1lbnRzWzJdIGlzIGlucHV0MworUEFTUyBmb3JtLmVsZW1lbnRzWzNdIGlz
IGlucHV0NAorUEFTUyBmb3JtLmVsZW1lbnRzWzRdIGlzIGlucHV0NQorUEFTUyBmb3JtLmVsZW1l
bnRzLmxlbmd0aCBpcyA0CitQQVNTIGZvcm0uZWxlbWVudHNbMF0gaXMgaW5wdXQxCitQQVNTIGZv
cm0uZWxlbWVudHNbMV0gaXMgaW5wdXQzCitQQVNTIGZvcm0uZWxlbWVudHNbMl0gaXMgaW5wdXQ0
CitQQVNTIGZvcm0uZWxlbWVudHNbM10gaXMgaW5wdXQ1CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQwZTBiZWI5OGNjNzBkZDdlNWE3ZDM4ZDE3OGFkNzM1MzYwYjU2YTIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50
Lmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYg
aWQ9InRlc3QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdUZXN0IGZvciB0aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsKKwordmFyIHRlc3RFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKworZnVuY3Rpb24gY3JlYXRl
Rm9ybShpZCkgeworICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIp
OworICAgIGZvcm0uaWQgPSBpZDsKKyAgICB0ZXN0RWxlbWVudC5hcHBlbmRDaGlsZChmb3JtKTsK
KyAgICByZXR1cm4gZm9ybTsKK307CisKK2Z1bmN0aW9uIGNyZWF0ZUlucHV0KGZvcm0pIHsKKyAg
ICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGlucHV0
LnNldEF0dHJpYnV0ZSgiZm9ybSIsIGZvcm0pOworICAgIHRlc3RFbGVtZW50LmFwcGVuZENoaWxk
KGlucHV0KTsKKyAgICByZXR1cm4gaW5wdXQ7Cit9OworCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAg
ICBkZWJ1ZygiVGVzdCAxOiBJbnNlcnQgbmV3IGlucHV0IGFmdGVyIGZvcm0uIik7CisgICAgZm9y
bSA9IGNyZWF0ZUZvcm0oInRlc3QxIik7CisgICAgaW5wdXQgPSBjcmVhdGVJbnB1dCgidGVzdDEi
KTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnMScpOworICAgIHNob3Vs
ZEJlKCdmb3JtLmVsZW1lbnRzWzBdJywgJ2lucHV0Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0Migp
IHsKKyAgICBkZWJ1ZygiVGVzdCAyOiBJbnNlcnQgdHdvIGZvcm1zIHdpdGggc2FtZSBpZC4iKTsK
KyAgICBpbnB1dCA9IGNyZWF0ZUlucHV0KCJ0ZXN0MiIpOworICAgIGZvcm0xID0gY3JlYXRlRm9y
bSgidGVzdDIiKTsKKyAgICBmb3JtMiA9IGNyZWF0ZUZvcm0oInRlc3QyIik7CisgICAgc2hvdWxk
QmUoJ2Zvcm0xLmVsZW1lbnRzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0yLmVs
ZW1lbnRzLmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0xLmVsZW1lbnRzWzBdJywg
J2lucHV0Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1ZygiVGVzdCAzOiBD
aGFuZ2UgZm9ybSBpZC4iKTsKKyAgICBmb3JtID0gY3JlYXRlRm9ybSgidGVzdDMtMSIpOworICAg
IGlucHV0ID0gY3JlYXRlSW5wdXQoInRlc3QzLTIiKTsKKyAgICBmb3JtLmlkID0gInRlc3QzLTIi
OworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxk
QmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQnKTsKK307CisKK2Z1bmN0aW9uIHRlc3Q0KCkg
eworICAgIGRlYnVnKCJUZXN0IDQ6IE9yZGVyLiIpOworICAgIGlucHV0MSA9IGNyZWF0ZUlucHV0
KCJ0ZXN0MyIpOworICAgIGlucHV0MiA9IGNyZWF0ZUlucHV0KCJ0ZXN0MyIpOworICAgIGZvcm0g
PSBjcmVhdGVGb3JtKCJ0ZXN0MyIpOworICAgIGlucHV0MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlucHV0Iik7CisgICAgZm9ybS5hcHBlbmRDaGlsZChpbnB1dDMpOworICAgIGlucHV0NCA9
IGNyZWF0ZUlucHV0KCJ0ZXN0MyIpOworICAgIGlucHV0NSA9IGNyZWF0ZUlucHV0KCJ0ZXN0MyIp
OworICAgIAorICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICc1Jyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7CisgICAgc2hvdWxkQmUoJ2Zv
cm0uZWxlbWVudHNbMV0nLCAnaW5wdXQyJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNb
Ml0nLCAnaW5wdXQzJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbM10nLCAnaW5wdXQ0
Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbNF0nLCAnaW5wdXQ1Jyk7CisKKyAgICBp
bnB1dDIuc2V0QXR0cmlidXRlKCJmb3JtIiwgIiIpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1l
bnRzLmxlbmd0aCcsICc0Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5w
dXQxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAnaW5wdXQzJyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMl0nLCAnaW5wdXQ0Jyk7CisgICAgc2hvdWxkQmUoJ2Zv
cm0uZWxlbWVudHNbM10nLCAnaW5wdXQ1Jyk7Cit9OworCit0ZXN0MSgpOwordGVzdDIoKTsKK3Rl
c3QzKCk7Cit0ZXN0NCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151942</attachid>
            <date>2012-07-12 06:36:01 -0700</date>
            <delta_ts>2012-07-12 23:29:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91042-20120712223559.patch</filename>
            <type>text/plain</type>
            <size>44418</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMyN2M4YmNlNDU2ZTIz
ZjY5OWE1NGUzZGY5NGZiMDM3Y2I2NDc1Ni4uZTFiY2Q3ZmVlYmY3YzJlN2I1OTkwYmJiYTA3YjAx
MmE4OGVmYWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTA3LTEyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEZvcm0gb2YgRm9ybUFz
c29jaWF0ZWRFbGVtZW50IGlzIG5vdCB1cGRhdGVkIHdoZW4gaWQgdGFyZ2V0IGNoYW5nZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
Zm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQuaHRtbAorCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyB0aGUgSWRUYXJnZXRPYnNlcnZlciBhbmQgSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5IGNsYXNzLgorICAgICAgICBUaGV5IGNhbiBiZSB1c2VkIHRvIGJlIG5vdGlmaWVk
IHdoZW4gdGhlIGVsZW1lbnQgdGhhdCBhbiBpZCBpcyBwb2ludGluZyB0byAodGhlIGlkIHRhcmdl
dCkKKyAgICAgICAgY2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkue2gsY3BwfSBhbmQgSWRUYXJnZXRPYnNlcnZlci57aCxj
cHB9CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICogVGFy
Z2V0LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBkb20vSWRUYXJn
ZXRPYnNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJZFRhcmdldE9ic2VydmVyOjp+SWRUYXJnZXRPYnNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJZFRhcmdldE9ic2VydmVyOjpzZXRSZWdpc3RyeSk6CisgICAgICAgICogZG9tL0lkVGFy
Z2V0T2JzZXJ2ZXIuaDogQWRkZWQuIENsYXNzZXMgdGhhdCB3YW50IHRvIGJlIG5vdGlmaWVkIG9m
IGNoYW5nZXMgdG8gYW4gaWQgdGFyZ2V0IHNob3VsZCBpbmhlcml0IHRoaXMuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKElkVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SWRUYXJnZXRPYnNlcnZlcjo6SWRUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogZG9tL0lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKTogUmVnaXN0
ZXIgYW4gSWRUYXJnZXRPYnNlcnZlciB0byBvYnNlcnZlIGFuIGlkIHRhcmdldC4KKyAgICAgICAg
KFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6cmVtb3ZlT2JzZXJ2ZXIpOiBVbnJl
Z2lzdGVycyBhbiBJZFRhcmdldE9ic2VydmVyIGZyb20gb2JzZXJ2aW5nLgorICAgICAgICAoV2Vi
Q29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMpOiBDYWxscyBp
ZFRhcmdldENoYW5nZWQgb25hbGwgb2JzZXJ2ZXJzIGZvciBhbiBpZC4KKyAgICAgICAgKiBkb20v
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6SWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkpOgorICAgICAg
ICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVl
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6IENh
bGxzIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzIGJlY2F1c2UgdGhl
IGlkIHRhcmdldCBtaWdodCBoYXZlIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnJlbW92ZUVsZW1lbnRCeUlkKTogRGl0dG8uCisgICAgICAgICogZG9tL1RyZWVTY29wZS5o
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjppZFRhcmdldE9ic2VydmVyUmVnaXN0cnkp
OgorICAgICAgICAoVHJlZVNjb3BlKToKKyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OmlkVGFyZ2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFz
c29jaWF0ZWRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChGb3JtQ29udHJvbGxlcik6
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1FbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZSk6IE1vZGlmaWVkIHRv
IHRha2UgYSByYW5nZS4gSXQKKyAgICAgICAgc2NhbnMgdGhlIHJhbmdlIGFuZCByZXR1cm5zIHRo
ZSBpbmRleCB0byBpbnNlcnQgdGhlIGVsZW1lbnQgaW4gbV9hc3NvY2lhdGVkRWxlbWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleCk6IE1vZGlm
aWVkIHRvIG9ubHkgc2NhbiB0aGUgZWxlbWVudHMgaW4KKyAgICAgICAgbV9hc3NvY2lhdGVkRWxl
bWVudCB0aGF0IHByZWNlZGUgYW5kIGZvbGxvdyB0aGUgZm9ybSBlbGVtZW50LgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgIChIVE1MRm9ybUVsZW1lbnQpOgorCiAy
MDEyLTA3LTA5ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW1BsYXRmb3JtXSBJbnRyb2R1Y2UgTG9jYWxlTWFjIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDg5MWRmODZhMjEzOWYxNjVkYmM1OTA3ZDRjZDM3ZThhNzBiNzE3NTUuLmUxY2UyMWEz
NzY4MWRmY2MxNTQ4OGY3ZmE0MTEwNWZjMGE5MGJkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC02MDUsNiArNjA1LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9FeGNlcHRpb25D
b2RlUGxhY2Vob2xkZXIuY3BwCiAgICAgZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAogICAgIGRv
bS9JY29uVVJMLmNwcAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyLmNwcAorICAgIGRvbS9JZFRh
cmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwCiAgICAg
ZG9tL01lc3NhZ2VDaGFubmVsLmNwcAogICAgIGRvbS9NZXNzYWdlRXZlbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhYjFlNDU5NzVjMGRlNjdiNTllODY2NzA2ZDZmZDRi
MThiYTAwM2U3Li45MTI0ZTNjNzg1MjYwNzQyMTFhM2VlMDRhMDc1NmI2YjY2ZjkyNTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MzksNiArMTkzOSwxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9J
Y29uVVJMLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUv
ZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9J
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFu
Z2VFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggOGM2ZDM0
M2UxNDJlNjEyNzkxNGRjZjAyYTE1ZGFmN2VkZWMwYTEzMC4uYzA5MjZjNWE3ZDgwMjE2YmMxNGM2
ZTE4NmZmM2UyZGU5ZTgwNTk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC01NzIsNiArNTcyLDggQEAgU09V
UkNFUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5jcHAgXAogICAgIGRv
bS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAgXAogICAgIGRvbS9JY29uVVJMLmNwcCBcCisgICAgZG9t
L0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwIFwKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcCBcCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKICAgICBkb20vTWVzc2FnZUNoYW5u
ZWwuY3BwIFwKICAgICBkb20vTWVzc2FnZUV2ZW50LmNwcCBcCkBAIC0xNzU2LDYgKzE3NTgsOCBA
QCBIRUFERVJTICs9IFwKICAgICBkb20vRXhjZXB0aW9uQmFzZS5oIFwKICAgICBkb20vRXhjZXB0
aW9uQ29kZS5oIFwKICAgICBkb20vRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggXAorICAg
IGRvbS9JZFRhcmdldE9ic2VydmVyLmggXAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkuaCBcCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuaCBcCiAgICAgZG9tL01lbW9yeUluc3RydW1l
bnRhdGlvbi5oIFwKICAgICBkb20vTWVzc2FnZUNoYW5uZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggMzZlOTg5YzM5YzAzOTRiNTdiMTlmZDQ2YTcyMDI2YTczOWJhNDY5Yy4uNTU0MGZiZGZhM2Jk
Mjg3MzVlMGE2NzkyOWVkNDIyZjE5ZDg3MTM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTE3OCw2
ICs1MTc4LDEwIEBACiAgICAgICAgICAgICAnZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3Vu
dEluY3JlbWVudGVyLmgnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmNwcCcsCiAgICAgICAg
ICAgICAnZG9tL0ljb25VUkwuaCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIu
Y3BwJywKKyAgICAgICAgICAgICdkb20vSWRUYXJnZXRPYnNlcnZlci5oJywKKyAgICAgICAgICAg
ICdkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL0lk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdkb20vS2V5Ym9hcmRFdmVu
dC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcsCiAgICAg
ICAgICAgICAnZG9tL01lc3NhZ2VDaGFubmVsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDkwNjJjOGIyMzFmNmMwYTVhYTNiZDFhOTRi
NTFmNGQ0OGZkMzg4MzQuLjA3MWYyNDdkOTkwZWJmYjhkNTE4NDQ1M2ZkMzEwNzkwYTYyM2QyNzkg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01
MTE5NCw2ICs1MTE5NCwxMTggQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxJY29uVVJMLmgi
CiAJCQkJPgogCQkJPC9GaWxlPgorICAJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
SWRUYXJnZXRPYnNlcnZlci5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxJZFRhcmdldE9ic2VydmVyLmgiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCisJ
CQkJPgorCQkJPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxJZ25v
cmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIgogCQkJCT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjM2IyNTJk
N2RhMzVjZGVlMjViMWRjOTNmNjYyN2E3OGQ4OTZmODg3Li4yYmZhYjAzMDcwOTljN2U5NDUyM2Vj
OGIwNDQ3ZGE1NWFlYWFhMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NzIwLDYgKzU3MjAsOSBAQAogCQlDMzNFRTVDNDE0
RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzRUU1QzIxNEZCNDk2
MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJ
QzMzRUU1QzUxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVD
MzE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLzsg
fTsKIAkJQzM3Q0RFQkQxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3NlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzM3Q0RFQkMxNDlF
RjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3NlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMzRTExMkVBMTVBRTY0NTIwMEQ0NTQxNiAv
KiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDM0UxMTJFNzE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMzRTEx
MkVCMTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNFMTEyRTgxNUFFNjQ1
MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi87IH07CisJCUMzRTEx
MkVDMTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzRTExMkU5MTVBRTY0NTIw
MEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBCNTYxNjEyMTE5RDIzMDA4QjQ2RTAg
LyogR3JvdXBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAg
Ki87IH07CiAJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNTEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1MEQwRTgyMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9y
YWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCAq
LzsgfTsKQEAgLTEyOTM1LDYgKzEyOTM4LDkgQEAKIAkJQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVB
IC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzMzRUU1QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJh
c2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMzN0NERUJDMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDaG9vc2VyQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMzRTExMkU3MTVBRTY0NTIwMEQ0NTQx
NiAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElkVGFyZ2V0T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNFMTEy
RTgxNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDM0UxMTJFOTE1QUU2NDUyMDBENDU0
MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8q
IEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBT
ZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxMjU5LDYgKzIxMjY1LDkgQEAKIAkJRjUyM0QzMjQwMkRFNDQ3ODAxODYzNUNB
IC8qIGRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QzNFMTEyRTcxNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCAqLywKKwkJCQlD
M0UxMTJFODE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAq
LywKKwkJCQlDM0UxMTJFOTE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5LmggKi8sCiAJCQkJRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVj
dC5jcHAgKi8sCiAJCQkJRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVj
dC5oICovLAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAqLywKQEAg
LTI1MTc5LDYgKzI1MTg4LDggQEAKIAkJCQk0RjMyQkIxQjE0RkE4NUU4MDBGNkMxQTMgLyogTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgyREEyMzE1OTM4NDhE
MDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUZBRkJGMTkx
NUE1RkE3NDAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzNF
MTEyRUExNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUMzRTExMkVDMTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjgyMzQsNiArMjgyNDUsNyBAQAogCQkJCTUwOTg3QzI2
MTU3RDY3NkQwMEJEQTgzNSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4ODJEQTIwMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFGQUZCRjE4MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGls
aXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDM0UxMTJFQjE1QUU2NDUyMDBENDU0MTYgLyog
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNDEzMDQzYjUzYzg1NDA0Zjgz
N2NiYzQyNWRlOGZmYWYxOGY3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vSWRUYXJnZXRPYnNlcnZlci5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSWRUYXJnZXRPYnNlcnZlci5oIgorCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSWRUYXJnZXRPYnNlcnZlcjo6fklk
VGFyZ2V0T2JzZXJ2ZXIoKQoreworICAgIGlmIChtX3JlZ2lzdHJ5KQorICAgICAgICBtX3JlZ2lz
dHJ5LT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKK30KKwordm9pZCBJZFRhcmdldE9ic2VydmVyOjpz
ZXRSZWdpc3RyeShJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkqIHJlZ2lzdHJ5KQoreworICAgIG1f
cmVnaXN0cnkgPSByZWdpc3RyeTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FmM2ZiZjZlMzczOTFkZmM4
MjhkNTE4MGQ5Zjg4NDVmZmQyMzNmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JZFRhcmdldE9ic2VydmVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElkVGFyZ2V0T2JzZXJ2ZXJf
aAorI2RlZmluZSBJZFRhcmdldE9ic2VydmVyX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlciB7CitwdWJsaWM6CisgICAgSWRU
YXJnZXRPYnNlcnZlcigpIDogbV9yZWdpc3RyeSgwKSB7IH0KKyAgICB+SWRUYXJnZXRPYnNlcnZl
cigpOworICAgIHZpcnR1YWwgdm9pZCBpZFRhcmdldENoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCkgPSAwOworICAgIHZvaWQgc2V0UmVnaXN0cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
Kik7CisKK3ByaXZhdGU6CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KiBtX3JlZ2lzdHJ5
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSWRUYXJnZXRPYnNl
cnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYzYzlkYjBkNTA2MGVmOGYwOTRjY2JiYzc1NGUwMDY0MTY2NzQyMDIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJZFRhcmdldE9ic2VydmVyUmVnaXN0
cnk+IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpKTsKK30KKwordm9pZCBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIElk
VGFyZ2V0T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIGlmIChpZC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBJZFRvT2JzZXJ2ZXJTZXRNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBtX3JlZ2lzdHJ5LmFkZChpZC5pbXBsKCksIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9wdFB0cihu
ZXcgT2JzZXJ2ZXJTZXQoKSk7CisKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+YWRkKG9i
c2VydmVyKTsKKworICAgIG9ic2VydmVyLT5zZXRSZWdpc3RyeSh0aGlzKTsKK30KKwordm9pZCBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OnJlbW92ZU9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIGlmIChpZC5pc0VtcHR5
KCkgfHwgbV9yZWdpc3RyeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIElkVG9P
YnNlcnZlclNldE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaXN0cnkuZmluZChpZC5pbXBsKCkp
OworCisgICAgT2JzZXJ2ZXJTZXQqIHNldCA9IGl0ZXItPnNlY29uZC5nZXQoKTsKKyAgICBzZXQt
PnJlbW92ZShvYnNlcnZlcik7CisgICAgaWYgKHNldC0+aXNFbXB0eSgpICYmIHNldCAhPSBtX25v
dGlmeWluZ09ic2VydmVyc0luU2V0KQorICAgICAgICBtX3JlZ2lzdHJ5LnJlbW92ZShpdGVyKTsK
KworICAgIG9ic2VydmVyLT5zZXRSZWdpc3RyeSgwKTsKK30KKwordm9pZCBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnk6OnJlbW92ZU9ic2VydmVyKElkVGFyZ2V0T2JzZXJ2ZXIqIG9ic2VydmVyKQor
eworICAgIGlmIChtX3JlZ2lzdHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
VmVjdG9yPElkVG9PYnNlcnZlclNldE1hcDo6aXRlcmF0b3I+IGVtcHR5U2V0czsKKworICAgIGZv
ciAoSWRUb09ic2VydmVyU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaXN0cnkuYmVnaW4oKTsg
aXQgIT0gbV9yZWdpc3RyeS5lbmQoKTsgKytpdCkgeworICAgICAgICBPYnNlcnZlclNldCogc2V0
ID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgc2V0LT5yZW1vdmUob2JzZXJ2ZXIpOworICAg
ICAgICBpZiAoc2V0LT5pc0VtcHR5KCkpCisgICAgICAgICAgICBlbXB0eVNldHMuYXBwZW5kKGl0
KTsKKyAgICB9CisKKyAgICBmb3IgKFZlY3RvcjxJZFRvT2JzZXJ2ZXJTZXRNYXA6Oml0ZXJhdG9y
Pjo6aXRlcmF0b3IgaXQgPSBlbXB0eVNldHMuYmVnaW4oKTsgaXQgIT0gZW1wdHlTZXRzLmVuZCgp
OyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+c2Vjb25kLmdldCgpICE9IG1fbm90aWZ5aW5n
T2JzZXJ2ZXJzSW5TZXQpCisgICAgICAgICAgICBtX3JlZ2lzdHJ5LnJlbW92ZSgqaXQpOworICAg
IH0KKworICAgIG9ic2VydmVyLT5zZXRSZWdpc3RyeSgwKTsKK30KKwordm9pZCBJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGlkKQor
eworICAgIEFTU0VSVCghbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCk7CisgICAgaWYgKGlkLmlz
RW1wdHkoKSB8fCBtX3JlZ2lzdHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCA9IG1fcmVnaXN0cnkuZ2V0KGlkLmltcGwoKSk7Cisg
ICAgaWYgKCFtX25vdGlmeWluZ09ic2VydmVyc0luU2V0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBWZWN0b3I8SWRUYXJnZXRPYnNlcnZlcio+IGNvcHk7CisgICAgY29weVRvVmVjdG9yKCptX25v
dGlmeWluZ09ic2VydmVyc0luU2V0LCBjb3B5KTsKKyAgICBmb3IgKFZlY3RvcjxJZFRhcmdldE9i
c2VydmVyKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29weS5iZWdpbigpOyBpdCAhPSBjb3B5LmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChtX25vdGlmeWluZ09ic2VydmVyc0luU2V0LT5jb250
YWlucygqaXQpKQorICAgICAgICAgICAgKCppdCktPmlkVGFyZ2V0Q2hhbmdlZChpZCk7CisgICAg
fQorCisgICAgaWYgKG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQtPmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9yZWdpc3RyeS5yZW1vdmUoaWQuaW1wbCgpKTsKKworICAgIG1fbm90aWZ5aW5nT2JzZXJ2
ZXJzSW5TZXQgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE2YWNlOWJi
MGVjNjFlMzNiMzgzOGZjMDc5MmY1YzE5MTBjODY0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5X2gKKyNkZWZpbmUgSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5X2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlcjsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk+IGNyZWF0ZSgpOworICAgIHZvaWQgYWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgcmVtb3Zl
T2JzZXJ2ZXIoSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQpOworCitwcml2YXRlOgorICAgIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeSgpIDogbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCgwKSB7IH0KKworICAgIHR5cGVk
ZWYgSGFzaFNldDxJZFRhcmdldE9ic2VydmVyKj4gT2JzZXJ2ZXJTZXQ7CisgICAgdHlwZWRlZiBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBPd25QdHI8T2JzZXJ2ZXJTZXQ+ID4gSWRUb09ic2Vy
dmVyU2V0TWFwOworICAgIElkVG9PYnNlcnZlclNldE1hcCBtX3JlZ2lzdHJ5OworICAgIE9ic2Vy
dmVyU2V0KiBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAKaW5kZXggNTY0MmZjZjhkZDMzZmJjMWZiZjIwM2JkZGIxZmI4YmUyNTM3
YWVmYi4uMTE3NDk3MTA3NGRkMmNhMDk5YTQ1NmJjMWVmNWUwN2QzY2I0NmZkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVP
d25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKQEAgLTU0LDYgKzU1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIFRy
ZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKQogICAgIDogbV9yb290
Tm9kZShyb290Tm9kZSkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCisgICAgLCBtX2lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeShJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmNyZWF0ZSgpKQog
ICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogewogICAgIEFTU0VSVChyb290Tm9kZSk7CkBA
IC05MywxMSArOTUsMTUgQEAgRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlJZChjb25z
dCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVt
ZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBtX2VsZW1lbnRzQnlJZC5hZGQoZWxlbWVudElkLmltcGwoKSwgZWxlbWVudCk7CisK
KyAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJ
ZCk7CiB9CiAKIHZvaWQgVHJlZVNjb3BlOjpyZW1vdmVFbGVtZW50QnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBtX2VsZW1lbnRzQnlJ
ZC5yZW1vdmUoZWxlbWVudElkLmltcGwoKSwgZWxlbWVudCk7CisKKyAgICBtX2lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJZCk7CiB9CiAKIE5vZGUqIFRy
ZWVTY29wZTo6YW5jZXN0b3JJblRoaXNTY29wZShOb2RlKiBub2RlKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZS5oCmluZGV4IDVlY2MwMzkyZjM3MTcwYmVlMzA1Mzk5MjE0MjQ5N2NmYWI3YWNiMGIu
LjI5MjNlYzUzMGMwYjFmZTJjYmE2ODdlOGYzZTU4NTZmYWU0YmFlYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERP
TVNlbGVjdGlvbjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKK2NsYXNz
IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTsKIGNsYXNzIE5vZGU7CiAKIC8vIEEgY2xhc3Mgd2hp
Y2ggaW5oZXJpdHMgYm90aCBOb2RlIGFuZCBUcmVlU2NvcGUgbXVzdCBjYWxsIGNsZWFyUmFyZURh
dGEoKSBpbiBpdHMgZGVzdHJ1Y3RvcgpAQCAtODIsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICBD
b250YWluZXJOb2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7IH0KIAor
ICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkg
Y29uc3QgeyByZXR1cm4gKm1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmdldCgpOyB9CisKIHBy
b3RlY3RlZDoKICAgICBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOwogICAgIHZpcnR1YWwgflRy
ZWVTY29wZSgpOwpAQCAtOTUsNiArOTgsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50T3JkZXJl
ZE1hcCBtX2VsZW1lbnRzQnlJZDsKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9pbWFnZU1hcHNC
eU5hbWU7CiAKKyAgICBPd25QdHI8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PiBtX2lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeTsKKwogICAgIHVuc2lnbmVkIG1fbnVtTm9kZUxpc3RDYWNoZXM7CiAK
ICAgICBtdXRhYmxlIFJlZlB0cjxET01TZWxlY3Rpb24+IG1fc2VsZWN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDIxNzkxZjA5NjBh
ZTQ3YzhmMThlOWJmMzBiMTFjZDdhNjdmNjg0NTMuLjM0MzNmNGRlODRhYTM2MGRjZjI3ZmE1NTk5
MzM2MjI3NjExZjRjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5o
IgorI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlZhbGlk
aXR5U3RhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNyArMzgsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpCi0gICAgOiBtX2Zvcm0oMCkKKyAg
ICA6IElkVGFyZ2V0T2JzZXJ2ZXIoKQorICAgICwgbV9mb3JtKDApCiB7CiB9CiAKQEAgLTU3LDgg
KzU5LDExIEBAIFZhbGlkaXR5U3RhdGUqIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRpdHko
KQogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50KiBvbGREb2N1bWVudCkKIHsKICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVs
ZW1lbnQodGhpcyk7Ci0gICAgaWYgKG9sZERvY3VtZW50ICYmIGVsZW1lbnQtPmZhc3RIYXNBdHRy
aWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICBvbGREb2N1bWVudC0+Zm9ybUNvbnRyb2xsZXIoKS0+
dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CisgICAgaWYgKG9s
ZERvY3VtZW50ICYmIGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7CisgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGZv
cm1BdHRyKTsKKyAgICAgICAgb2xkRG9jdW1lbnQtPmlkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgp
LnJlbW92ZU9ic2VydmVyKGlkLCB0aGlzKTsKKyAgICAgICAgZWxlbWVudC0+dHJlZVNjb3BlKCkt
PmlkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpLmFkZE9ic2VydmVyKGlkLCB0aGlzKTsKKyAgICB9
CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVy
Tm9kZSogaW5zZXJ0aW9uUG9pbnQpCkBAIC02OSwxNCArNzQsMTQgQEAgdm9pZCBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkK
IAogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKICAgICBp
ZiAoZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCi0gICAgICAgIGVsZW1lbnQt
PmRvY3VtZW50KCktPmZvcm1Db250cm9sbGVyKCktPnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9y
bUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgZWxlbWVudC0+dHJlZVNjb3BlKCktPmlkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeSgpLmFkZE9ic2VydmVyKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUo
Zm9ybUF0dHIpLCB0aGlzKTsKIH0KIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQt
PmluRG9jdW1lbnQoKSAmJiBlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKLSAg
ICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckZv
cm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CisgICAgICAgIGVsZW1lbnQtPnRyZWVT
Y29wZSgpLT5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKS5yZW1vdmVPYnNlcnZlcihlbGVtZW50
LT5mYXN0R2V0QXR0cmlidXRlKGZvcm1BdHRyKSwgdGhpcyk7CiAgICAgLy8gSWYgdGhlIGZvcm0g
YW5kIGVsZW1lbnQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdHJlZSwgcHJlc2VydmUgdGhlIGNvbm5l
Y3Rpb24gdG8gdGhlIGZvcm0uCiAgICAgLy8gT3RoZXJ3aXNlLCBudWxsIG91dCBvdXIgZm9ybSBh
bmQgcmVtb3ZlIG91cnNlbHZlcyBmcm9tIHRoZSBmb3JtJ3MgbGlzdCBvZiBlbGVtZW50cy4KICAg
ICBpZiAobV9mb3JtICYmIGVsZW1lbnQtPmhpZ2hlc3RBbmNlc3RvcigpICE9IG1fZm9ybS0+aGln
aGVzdEFuY2VzdG9yKCkpCkBAIC0xNTMsOSArMTU4LDExIEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRF
bGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgaWYgKCFlbGVtZW50LT5mYXN0SGFz
QXR0cmlidXRlKGZvcm1BdHRyKSkgewogICAgICAgICAvLyBUaGUgZm9ybSBhdHRyaWJ1dGUgcmVt
b3ZlZC4gV2UgbmVlZCB0byByZXNldCBmb3JtIG93bmVyIGhlcmUuCiAgICAgICAgIHNldEZvcm0o
ZWxlbWVudC0+ZmluZEZvcm1BbmNlc3RvcigpKTsKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQo
KS0+Zm9ybUNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1
dGUodGhpcyk7Ci0gICAgfSBlbHNlCisgICAgICAgIGVsZW1lbnQtPnRyZWVTY29wZSgpLT5pZFRh
cmdldE9ic2VydmVyUmVnaXN0cnkoKS5yZW1vdmVPYnNlcnZlcih0aGlzKTsKKyAgICB9IGVsc2Ug
ewogICAgICAgICByZXNldEZvcm1Pd25lcigpOworICAgICAgICBlbGVtZW50LT50cmVlU2NvcGUo
KS0+aWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkuYWRkT2JzZXJ2ZXIoZWxlbWVudC0+ZmFzdEdl
dEF0dHJpYnV0ZShmb3JtQXR0ciksIHRoaXMpOworICAgIH0KIH0KIAogYm9vbCBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OmN1c3RvbUVycm9yKCkgY29uc3QKQEAgLTIyMSw2ICsyMjgsMTEgQEAgdm9p
ZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYg
ZXJyb3IpCiAgICAgbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA9IGVycm9yOwogfQogCit2b2lk
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aWRUYXJnZXRDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQpCit7CisgICAgcmVzZXRGb3JtT3duZXIoKTsKK30KKwogY29uc3QgQXRvbWljU3RyaW5n
JiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Om5hbWUoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSA9IHRvSFRNTEVsZW1lbnQodGhpcyktPmdldE5hbWVBdHRyaWJ1dGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCmluZGV4IDVhNDdl
YTA3NmRiMmE3NGVmNTBlOTQ1NjVhZTdjYjRmMGJhNTAyMTEuLmY0ZDczZjZjMDhkYjUzMzg2Zjc2
MTQ4M2I2MzJkZTY4NzIwOThhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUFzc29jaWF0ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2Np
YXRlZEVsZW1lbnQuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnRfaAogCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJZFRhcmdldE9i
c2VydmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNyArMzUsNyBAQCBjbGFz
cyBWYWxpZGF0aW9uTWVzc2FnZTsKIGNsYXNzIFZhbGlkaXR5U3RhdGU7CiBjbGFzcyBWaXNpYmxl
U2VsZWN0aW9uOwogCi1jbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgeworY2xhc3MgRm9ybUFz
c29jaWF0ZWRFbGVtZW50IDogcHVibGljIElkVGFyZ2V0T2JzZXJ2ZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1
YmxpYzoKICAgICBib29sIHZhbGlkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1c3Rv
bVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOwogCisgICAgdmlydHVhbCB2b2lkIGlkVGFyZ2V0Q2hh
bmdlZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBPVkVSUklERTsKKwogcHJvdGVjdGVkOgogICAg
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCmluZGV4IGI3YzM4ZTJhOGI2OTQxNGRiZWQ1OTJmZDMzNmFjZGU5ZjIyYTExNzIuLjI1
NjA1ZmU4N2RiNGI5ZjQwNzQyZmIxYzE1ZmE3M2ZiOGZmZGYwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC0yMzcsMjUgKzIzNyw2IEBAIHZvaWQgRm9ybUNvbnRy
b2xsZXI6OndpbGxEZWxldGVGb3JtKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICAgICAgbV9m
b3JtS2V5R2VuZXJhdG9yLT53aWxsRGVsZXRlRm9ybShmb3JtKTsKIH0KIAotdm9pZCBGb3JtQ29u
dHJvbGxlcjo6cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQodG9IVE1MRWxlbWVudChlbGVtZW50
KS0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpOwotICAgIG1fZm9ybUVsZW1lbnRzV2l0aEZv
cm1BdHRyaWJ1dGUuYWRkKGVsZW1lbnQpOwotfQotCi12b2lkIEZvcm1Db250cm9sbGVyOjp1bnJl
Z2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IGVsZW1lbnQpCi17Ci0gICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5yZW1vdmUo
ZWxlbWVudCk7Ci19Ci0KLXZvaWQgRm9ybUNvbnRyb2xsZXI6OnJlc2V0Rm9ybUVsZW1lbnRzT3du
ZXIoKQotewotICAgIHR5cGVkZWYgRm9ybUFzc29jaWF0ZWRFbGVtZW50TGlzdEhhc2hTZXQ6Oml0
ZXJhdG9yIEl0ZXJhdG9yOwotICAgIEl0ZXJhdG9yIGVuZCA9IG1fZm9ybUVsZW1lbnRzV2l0aEZv
cm1BdHRyaWJ1dGUuZW5kKCk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IG1fZm9ybUVsZW1lbnRz
V2l0aEZvcm1BdHRyaWJ1dGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0
KS0+cmVzZXRGb3JtT3duZXIoKTsKLX0KLQogRm9ybUVsZW1lbnRLZXk6OkZvcm1FbGVtZW50S2V5
KEF0b21pY1N0cmluZ0ltcGwqIG5hbWUsIEF0b21pY1N0cmluZ0ltcGwqIHR5cGUsIEF0b21pY1N0
cmluZ0ltcGwqIGZvcm1LZXkpCiAgICAgOiBtX25hbWUobmFtZSkKICAgICAsIG1fdHlwZSh0eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCmluZGV4IGUxNWMxZGMyNGE5ODBmNjQ0
N2E5OGIyZTMyNmQxOTZkNmUzNjMyYTIuLmU5OGQxYTA0OWNjMDliZDcxY2ZmMGQ5MjdhZjRhNGM1
ODVlY2YzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKQEAgLTEzMiwxMCAr
MTMyLDYgQEAgcHVibGljOgogICAgIEZvcm1Db250cm9sU3RhdGUgdGFrZVN0YXRlRm9yRm9ybUVs
ZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYpOwogICAgIHZvaWQg
d2lsbERlbGV0ZUZvcm0oSFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRm9y
bUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqKTsKLSAgICB2
b2lkIHVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCopOwotICAgIHZvaWQgcmVzZXRGb3JtRWxlbWVudHNPd25lcigpOwotCiBwcml2YXRl
OgogICAgIEZvcm1Db250cm9sbGVyKCk7CiAKQEAgLTE0Myw4ICsxMzksNiBAQCBwcml2YXRlOgog
CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
KiwgNjQ+IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQ7CiAgICAgRm9ybUVsZW1lbnRMaXN0SGFzaFNl
dCBtX2Zvcm1FbGVtZW50c1dpdGhTdGF0ZTsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0
cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+LCAzMj4gRm9ybUFzc29jaWF0ZWRFbGVtZW50TGlzdEhh
c2hTZXQ7Ci0gICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVu
dHNXaXRoRm9ybUF0dHJpYnV0ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxGb3JtRWxlbWVudEtl
eSwgRGVxdWU8Rm9ybUNvbnRyb2xTdGF0ZT4sIEZvcm1FbGVtZW50S2V5SGFzaCwgRm9ybUVsZW1l
bnRLZXlIYXNoVHJhaXRzPiBGb3JtRWxlbWVudFN0YXRlTWFwOwogICAgIEZvcm1FbGVtZW50U3Rh
dGVNYXAgbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcAppbmRleCAzYzhiYjA3M2NmZjcwZTBiNDg3MDkwNDY0YzA4MTAyOWVjMjUx
NzI1Li5hZTUzNGEzOTFhMDQ1YjI2ODZmZWI4MjI0MTc3MGFhYmEzM2I3OWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0xNDEsMTQgKzE0MSw2IEBAIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEZvcm1FbGVtZW50OjppbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSoKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKENvbnRhaW5lck5v
ZGUqIGluc2VydGlvblBvaW50KQotewotICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1
bWVudCgpKTsKLSAgICBIVE1MRWxlbWVudDo6ZGlkTm90aWZ5RGVzY2VuZGFudEluc2VydGlvbnMo
aW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChoYXNJRCgpKQotICAgICAgICBkb2N1bWVudCgpLT5m
b3JtQ29udHJvbGxlcigpLT5yZXNldEZvcm1FbGVtZW50c093bmVyKCk7Ci19Ci0KIHN0YXRpYyBp
bmxpbmUgTm9kZSogZmluZFJvb3QoTm9kZSogbikKIHsKICAgICBOb2RlKiByb290ID0gbjsKQEAg
LTE2NCw4ICsxNTYsNiBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFz
c29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgYXNzb2NpYXRlZEVsZW1lbnRz
W2ldLT5mb3JtUmVtb3ZlZEZyb21UcmVlKHJvb3QpOwogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVk
RnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50
KCkgJiYgaGFzSUQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+cmVz
ZXRGb3JtRWxlbWVudHNPd25lcigpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6aGFuZGxl
TG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KQpAQCAtNDM2LDMzICs0MjYsMzMgQEAgdGVtcGxhdGU8
Y2xhc3MgVCwgc2l6ZV90IG4+IHN0YXRpYyB2b2lkIHJlbW92ZUZyb21WZWN0b3IoVmVjdG9yPFQq
LCBuPiAmIHZlYywgVCoKICAgICAgICAgfQogfQogCi11bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6
OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50KQordW5z
aWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUo
RWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWduZWQgcmFuZ2VFbmQp
CiB7Ci0gICAgLy8gQ29tcGFyZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmb3JtIGVsZW1lbnQgYW5k
IHRoZSBpbnNlcnRlZCBlbGVtZW50LgotICAgIC8vIFVwZGF0ZXMgdGhlIGluZGVjZXMgaW4gb3Jk
ZXIgdG8gdGhlIHJlbGF0aW9uIG9mIHRoZSBwb3NpdGlvbjoKLSAgICB1bnNpZ25lZCBzaG9ydCBw
b3NpdGlvbiA9IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQpOwotICAgIGlmIChwb3Np
dGlvbiAmIChET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUyB8IERPQ1VNRU5UX1BPU0lUSU9OX0NP
TlRBSU5FRF9CWSkpCi0gICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4Owot
ICAgIGVsc2UgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HKSB7Ci0g
ICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKLSAgICAgICAgKyttX2Fz
c29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7Ci0gICAgfQotCiAgICAgaWYgKG1fYXNzb2NpYXRl
ZEVsZW1lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQocmFu
Z2VTdGFydCA8PSByYW5nZUVuZCk7CisKKyAgICBpZiAocmFuZ2VTdGFydCA9PSByYW5nZUVuZCkK
KyAgICAgICAgcmV0dXJuIHJhbmdlU3RhcnQ7CisKKyAgICB1bnNpZ25lZCBsZWZ0ID0gcmFuZ2VT
dGFydDsKKyAgICB1bnNpZ25lZCByaWdodCA9IHJhbmdlRW5kIC0gMTsKKyAgICB1bnNpZ25lZCBz
aG9ydCBwb3NpdGlvbjsKKwogICAgIC8vIERvZXMgYmluYXJ5IHNlYXJjaCBvbiBtX2Fzc29jaWF0
ZWRFbGVtZW50cyBpbiBvcmRlciB0byBmaW5kIHRoZSBpbmRleAogICAgIC8vIHRvIGJlIGluc2Vy
dGVkLgotICAgIHVuc2lnbmVkIGxlZnQgPSAwLCByaWdodCA9IG1fYXNzb2NpYXRlZEVsZW1lbnRz
LnNpemUoKSAtIDE7CiAgICAgd2hpbGUgKGxlZnQgIT0gcmlnaHQpIHsKICAgICAgICAgdW5zaWdu
ZWQgbWlkZGxlID0gbGVmdCArICgocmlnaHQgLSBsZWZ0KSAvIDIpOworICAgICAgICBBU1NFUlQo
bWlkZGxlIDwgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCB8fCBtaWRkbGUgPj0gbV9h
c3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4KTsKICAgICAgICAgcG9zaXRpb24gPSBlbGVtZW50
LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVsZW1l
bnRzW21pZGRsZV0pKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05f
Rk9MTE9XSU5HKQogICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwogICAgIH0KLQorICAgIAorICAgIEFTU0VSVChs
ZWZ0IDwgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCB8fCBsZWZ0ID49IG1fYXNzb2Np
YXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCk7CiAgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVsZW1lbnRzW2xlZnRd
KSk7CiAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKQogICAg
ICAgICByZXR1cm4gbGVmdDsKQEAgLTQ3NCw4ICs0NjQsMTYgQEAgdW5zaWduZWQgSFRNTEZvcm1F
bGVtZW50Ojpmb3JtRWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRl
ZEVsZW0KICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoYXNzb2NpYXRl
ZEVsZW1lbnQpOwogICAgIC8vIFRyZWF0cyBzZXBhcmF0ZWx5IHRoZSBjYXNlIHdoZXJlIHRoaXMg
ZWxlbWVudCBoYXMgdGhlIGZvcm0gYXR0cmlidXRlCiAgICAgLy8gZm9yIHBlcmZvcm1hbmNlIGNv
bnNpZGVyYXRpb24uCi0gICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIp
KQotICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKGVsZW1l
bnQpOworICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkgeworICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVs
ZW1lbnQpOworICAgICAgICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJ
TkcpIHsKKyAgICAgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKKyAg
ICAgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OworICAgICAgICAgICAg
cmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRl
KGVsZW1lbnQsIDAsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggLSAxKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcp
CisgICAgICAgICAgICByZXR1cm4gSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0
aEZvcm1BdHRyaWJ1dGUoZWxlbWVudCwgbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4LCBt
X2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkpOworICAgIH0KIAogICAgIC8vIENoZWNrIGZvciB0
aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBpcyB0aGUgdmVyeSBsYXN0IHRoaW5n
IGluCiAgICAgLy8gdGhlIGZvcm0ncyB0cmVlIG9mIGNoaWxkcmVuOyB3ZSBkb24ndCB3YW50IHRv
IHdhbGsgdGhlIGVudGlyZSB0cmVlIGluIHRoYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oCmluZGV4IGVlOWNjZjM5YjdhMTY0ZmVhNGNhN2VkMGE3YmE5MWI0MTEzNWUyZmEuLjZm
N2E4NjNkOGRjZGVkMmQ1ZmM5NTQzNTY4YWYxMTI5YmI3OWZmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMTE5LDcgKzExOSw2IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
OwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8o
Q29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWROb3RpZnlEZXNj
ZW5kYW50SW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopOwpAQCAtMTM1LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHN1Ym1pdChFdmVudCosIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24s
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogCi0g
ICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqKTsK
KyAgICB1bnNpZ25lZCBmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCos
IHVuc2lnbmVkIHJhbmdlU3RhcnQsIHVuc2lnbmVkIHJhbmdlRW5kKTsKICAgICB1bnNpZ25lZCBm
b3JtRWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBzdWJtaXNzaW9uIHNob3VsZCBwcm9jZWVkLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiZGRkNTE0
OTdiNDFmMDI4ODQzZTJkMGYwZDU4YjQ4MTY3MzkyYjEuLmUyZWUwZDE1OGNiYjZjZGUyMGEzMGU2
YThhZTcxY2VmZmYzZWQ0NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0xMiAgS2Vp
c2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBGb3JtIG9mIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCBpcyBub3QgdXBkYXRlZCB3aGVuIGlkIHRhcmdldCBjaGFuZ2VzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA3LTA5ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWMyNWY2NGNlNTQwZjQyMmFhYWJjYTQ3MjQyM2Q3ZTM0YWZkZTg1
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0t
YXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1Rlc3QgZm9y
IHRoZSBkYXRhbGlzdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
VGVzdCAxOiBJbnNlcnQgbmV3IGlucHV0IGFmdGVyIGZvcm0uCitQQVNTIGZvcm0uZWxlbWVudHMu
bGVuZ3RoIGlzIDEKK1BBU1MgZm9ybS5lbGVtZW50c1swXSBpcyBpbnB1dAorVGVzdCAyOiBJbnNl
cnQgdHdvIGZvcm1zIHdpdGggc2FtZSBpZC4KK1BBU1MgZm9ybTEuZWxlbWVudHMubGVuZ3RoIGlz
IDEKK1BBU1MgZm9ybTIuZWxlbWVudHMubGVuZ3RoIGlzIDAKK1BBU1MgZm9ybTEuZWxlbWVudHNb
MF0gaXMgaW5wdXQKK1Rlc3QgMzogQ2hhbmdlIGZvcm0gaWQuCitQQVNTIGZvcm0uZWxlbWVudHMu
bGVuZ3RoIGlzIDEKK1BBU1MgZm9ybS5lbGVtZW50c1swXSBpcyBpbnB1dAorVGVzdCA0OiBPcmRl
ci4KK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgNQorUEFTUyBmb3JtLmVsZW1lbnRzWzBd
IGlzIGlucHV0MQorUEFTUyBmb3JtLmVsZW1lbnRzWzFdIGlzIGlucHV0MgorUEFTUyBmb3JtLmVs
ZW1lbnRzWzJdIGlzIGlucHV0MworUEFTUyBmb3JtLmVsZW1lbnRzWzNdIGlzIGlucHV0NAorUEFT
UyBmb3JtLmVsZW1lbnRzWzRdIGlzIGlucHV0NQorUEFTUyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBp
cyA0CitQQVNTIGZvcm0uZWxlbWVudHNbMF0gaXMgaW5wdXQxCitQQVNTIGZvcm0uZWxlbWVudHNb
MV0gaXMgaW5wdXQzCitQQVNTIGZvcm0uZWxlbWVudHNbMl0gaXMgaW5wdXQ0CitQQVNTIGZvcm0u
ZWxlbWVudHNbM10gaXMgaW5wdXQ1CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRh
dGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91
cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZTBiZWI5OGNj
NzBkZDdlNWE3ZDM4ZDE3OGFkNzM1MzYwYjU2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWwKQEAgLTAs
MCArMSw5MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIHN0
eWxlPSJkaXNwbGF5Om5vbmU7Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0
IGZvciB0aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsKKwordmFyIHRlc3RFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKworZnVuY3Rpb24gY3JlYXRlRm9ybShpZCkgewor
ICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpOworICAgIGZvcm0u
aWQgPSBpZDsKKyAgICB0ZXN0RWxlbWVudC5hcHBlbmRDaGlsZChmb3JtKTsKKyAgICByZXR1cm4g
Zm9ybTsKK307CisKK2Z1bmN0aW9uIGNyZWF0ZUlucHV0KGZvcm0pIHsKKyAgICB2YXIgaW5wdXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGlucHV0LnNldEF0dHJpYnV0
ZSgiZm9ybSIsIGZvcm0pOworICAgIHRlc3RFbGVtZW50LmFwcGVuZENoaWxkKGlucHV0KTsKKyAg
ICByZXR1cm4gaW5wdXQ7Cit9OworCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBkZWJ1ZygiVGVz
dCAxOiBJbnNlcnQgbmV3IGlucHV0IGFmdGVyIGZvcm0uIik7CisgICAgZm9ybSA9IGNyZWF0ZUZv
cm0oInRlc3QxIik7CisgICAgaW5wdXQgPSBjcmVhdGVJbnB1dCgidGVzdDEiKTsKKyAgICBzaG91
bGRCZSgnZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdmb3JtLmVs
ZW1lbnRzWzBdJywgJ2lucHV0Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1
ZygiVGVzdCAyOiBJbnNlcnQgdHdvIGZvcm1zIHdpdGggc2FtZSBpZC4iKTsKKyAgICBpbnB1dCA9
IGNyZWF0ZUlucHV0KCJ0ZXN0MiIpOworICAgIGZvcm0xID0gY3JlYXRlRm9ybSgidGVzdDIiKTsK
KyAgICBmb3JtMiA9IGNyZWF0ZUZvcm0oInRlc3QyIik7CisgICAgc2hvdWxkQmUoJ2Zvcm0xLmVs
ZW1lbnRzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0yLmVsZW1lbnRzLmxlbmd0
aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0xLmVsZW1lbnRzWzBdJywgJ2lucHV0Jyk7Cit9
OworCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1ZygiVGVzdCAzOiBDaGFuZ2UgZm9ybSBp
ZC4iKTsKKyAgICBmb3JtID0gY3JlYXRlRm9ybSgidGVzdDMtMSIpOworICAgIGlucHV0ID0gY3Jl
YXRlSW5wdXQoInRlc3QzLTIiKTsKKyAgICBmb3JtLmlkID0gInRlc3QzLTIiOworICAgIHNob3Vs
ZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHNbMF0nLCAnaW5wdXQnKTsKK307CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAgIGRlYnVn
KCJUZXN0IDQ6IE9yZGVyLiIpOworICAgIGlucHV0MSA9IGNyZWF0ZUlucHV0KCJ0ZXN0MyIpOwor
ICAgIGlucHV0MiA9IGNyZWF0ZUlucHV0KCJ0ZXN0MyIpOworICAgIGZvcm0gPSBjcmVhdGVGb3Jt
KCJ0ZXN0MyIpOworICAgIGlucHV0MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7
CisgICAgZm9ybS5hcHBlbmRDaGlsZChpbnB1dDMpOworICAgIGlucHV0NCA9IGNyZWF0ZUlucHV0
KCJ0ZXN0MyIpOworICAgIGlucHV0NSA9IGNyZWF0ZUlucHV0KCJ0ZXN0MyIpOworICAgIAorICAg
IHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICc1Jyk7CisgICAgc2hvdWxkQmUoJ2Zv
cm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNb
MV0nLCAnaW5wdXQyJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMl0nLCAnaW5wdXQz
Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbM10nLCAnaW5wdXQ0Jyk7CisgICAgc2hv
dWxkQmUoJ2Zvcm0uZWxlbWVudHNbNF0nLCAnaW5wdXQ1Jyk7CisKKyAgICBpbnB1dDIuc2V0QXR0
cmlidXRlKCJmb3JtIiwgIiIpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcs
ICc0Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAnaW5wdXQzJyk7CisgICAgc2hvdWxkQmUoJ2Zv
cm0uZWxlbWVudHNbMl0nLCAnaW5wdXQ0Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNb
M10nLCAnaW5wdXQ1Jyk7Cit9OworCit0ZXN0MSgpOwordGVzdDIoKTsKK3Rlc3QzKCk7Cit0ZXN0
NCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152159</attachid>
            <date>2012-07-12 23:29:39 -0700</date>
            <delta_ts>2012-07-13 00:46:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91042-20120713152938.patch</filename>
            <type>text/plain</type>
            <size>53971</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YzI3YzhiY2U0NTZlMjNmNjk5YTU0ZTNkZjk0ZmIwMzdjYjY0NzU2Li45
YTg4MmE4MDk3NDBmMjM5NWM0ZTkwNjM0ODNmMmIxMGYzYjBjOTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzggQEAKKzIwMTItMDctMTIgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgRm9ybSBvZiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgaXMgbm90IHVwZGF0
ZWQgd2hlbiBpZCB0YXJnZXQgY2hhbmdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUt
ZWxlbWVudC5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBJZFRhcmdl
dE9ic2VydmVyIGFuZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgY2xhc3MuCisgICAgICAgIFRo
ZXkgY2FuIGJlIHVzZWQgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgZWxlbWVudCB0aGF0IGFuIGlk
IGlzIHBvaW50aW5nIHRvICh0aGUgaWQgdGFyZ2V0KQorICAgICAgICBjaGFuZ2VzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS57aCxj
cHB9LCBJZFRhcmdldE9ic2VydmVyLntoLGNwcH0gYW5kIEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlci57aCxjcHB9CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAg
ICAgICogVGFyZ2V0LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBk
b20vSWRUYXJnZXRPYnNlcnZlci5jcHA6IEFkZGVkLiBXaGVuIHlvdSB3YW50IG5vdGlmaWVkIG9m
IGNoYW5nZXMgdG8gYW4gaWQgdGFyZ2V0LCB5b3Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyBjbGFzcyB0
aGF0IGluaGVyaXRzIHRoaXMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklkVGFyZ2V0T2JzZXJ2ZXI6OklkVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SWRUYXJnZXRPYnNlcnZlcjo6fklkVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9JZFRh
cmdldE9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJZFRh
cmdldE9ic2VydmVyKToKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIpOiBSZWdpc3RlciBhbiBJZFRhcmdldE9ic2VydmVy
IHRvIG9ic2VydmUgYW4gaWQgdGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5OjpyZW1vdmVPYnNlcnZlcik6IFVucmVnaXN0ZXJzIGFuIElkVGFyZ2V0T2Jz
ZXJ2ZXIgZnJvbSBvYnNlcnZpbmcuCisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6Om5vdGlmeU9ic2VydmVyc0ludGVybmFsKToKKyAgICAgICAgKiBkb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5OjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMpOiBDYWxscyBp
ZFRhcmdldENoYW5nZWQgb24gYWxsIG9ic2VydmVycyBmb3IgYW4gaWQuIElubGluaW5nIGZpcnN0
IHBhcnQgb2YgZnVuY3Rpb24gZm9yIHBlcmZvcm1hbmNlLgorICAgICAgICAqIGRvbS9UcmVlU2Nv
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6IENhbGxzIElkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzIGJlY2F1c2UgdGhlIGlkIHRhcmdldCBtaWdo
dCBoYXZlIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnJlbW92ZUVsZW1l
bnRCeUlkKTogRGl0dG8uCisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmlkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeSk6CisgICAgICAgIChUcmVlU2NvcGUpOgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0
ZWRFbGVtZW50LmNwcDogT2JzZXJ2ZXIgZm9yIGlkIHRhcmdldHMgZGVmaW5lZCBieSB0aGUgZm9y
bSBhdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnNldE5ld0Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6IENyZWF0ZXMg
YW5kIHNldHMgdXAgYSBuZXcgRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1B
dHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50KToKKyAgICAgICAgKiBodG1s
L0Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OkZvcm1B
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXI6OmlkVGFyZ2V0Q2hhbmdlZCk6CisgICAgICAgICogaHRtbC9Gb3JtQXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHA6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5oOgorICAgICAgICAo
Rm9ybUNvbnRyb2xsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1
dGUpOiBNb2RpZmllZCB0byB0YWtlIGEgcmFuZ2UuIEl0CisgICAgICAgIHNjYW5zIHRoZSByYW5n
ZSBhbmQgcmV0dXJucyB0aGUgaW5kZXggdG8gaW5zZXJ0IHRoZSBlbGVtZW50IGluIG1fYXNzb2Np
YXRlZEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVt
ZW50SW5kZXgpOiBNb2RpZmllZCB0byBvbmx5IHNjYW4gdGhlIGVsZW1lbnRzIGluCisgICAgICAg
IG1fYXNzb2NpYXRlZEVsZW1lbnQgdGhhdCBwcmVjZWRlIGFuZCBmb2xsb3cgdGhlIGZvcm0gZWxl
bWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZv
cm1FbGVtZW50KToKKwogMjAxMi0wNy0wOSAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtQbGF0Zm9ybV0gSW50cm9kdWNlIExvY2FsZU1hYyBjbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4OTFkZjg2YTIxMzlmMTY1ZGJjNTkwN2Q0Y2QzN2U4YTcw
YjcxNzU1Li5hZjIxNGRjODJkMmJkMmQ0MWUxY2JlZGRlMzA3NTJiZTZhZDNiNWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNjA1LDYgKzYwNSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAg
ICBkb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcAogICAgIGRvbS9HZW5lcmljRXZlbnRR
dWV1ZS5jcHAKICAgICBkb20vSWNvblVSTC5jcHAKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlci5j
cHAKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAogICAgIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKICAgICBkb20vTWVzc2FnZUV2
ZW50LmNwcApAQCAtNzcwLDYgKzc3Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAogICAgIGh0bWwvRmlsZUlucHV0VHlwZS5jcHAKICAg
ICBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKyAgICBodG1sL0Zvcm1BdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlci5jcHAKICAgICBodG1sL0Zvcm1Db250cm9sbGVyLmNwcAogICAgIGh0bWwv
Rm9ybURhdGFMaXN0LmNwcAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhYjFlNDU5NzVjMGRlNjdiNTllODY2NzA2ZDZmZDRi
MThiYTAwM2U3Li43ODA0ZGRmZWIxY2UzY2EwOTRlMmZiY2ExYWU1Yzg4MzVkNTA1ZWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MzksNiArMTkzOSwxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9J
Y29uVVJMLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUv
ZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9J
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFu
Z2VFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggXApAQCAtMjMwNSw2ICsyMzA5LDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCA4YzZkMzQzZTE0MmU2MTI3OTE0ZGNmMDJhMTVkYWY3ZWRlYzBhMTMwLi41ODYw
NjQxZDRiMmZlY2I3Njg4MTY3ZTA5NTczZGRiNTUzYmQzNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTU3
Miw2ICs1NzIsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyLmNwcCBcCiAgICAgZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcCBcCiAgICAgZG9tL0ljb25V
UkwuY3BwIFwKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlci5jcHAgXAorICAgIGRvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwIFwKICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogICAg
IGRvbS9NZXNzYWdlQ2hhbm5lbC5jcHAgXAogICAgIGRvbS9NZXNzYWdlRXZlbnQuY3BwIFwKQEAg
LTczOCw2ICs3NDAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcCBcCiAgICAgaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBcCiAgICAgaHRtbC9Gb3JtQXNz
b2NpYXRlZEVsZW1lbnQuY3BwIFwKKyAgICBodG1sL0Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
ci5jcHAgXAogICAgIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIFwKICAgICBodG1sL0Zvcm1EYXRh
TGlzdC5jcHAgXAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKQEAgLTE3NTYsNiAr
MTc1OSw4IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9FeGNlcHRpb25CYXNlLmggXAogICAgIGRv
bS9FeGNlcHRpb25Db2RlLmggXAogICAgIGRvbS9GcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24u
aCBcCisgICAgZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCBcCisgICAgZG9tL0lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oIFwKICAgICBkb20vS2V5Ym9hcmRFdmVudC5oIFwKICAgICBkb20vTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5oIFwKQEAgLTE5MDgs
NiArMTkxMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvRE9NVG9rZW5MaXN0LmggXAogICAg
IGh0bWwvRE9NVVJMLmggXAogICAgIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggXAorICAg
IGh0bWwvRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyLmggXAogICAgIGh0bWwvRm9ybUNvbnRy
b2xsZXIuaCBcCiAgICAgaHRtbC9Gb3JtRGF0YUxpc3QuaCBcCiAgICAgaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzNmU5ODljMzljMDM5NGI1N2IxOWZk
NDZhNzIwMjZhNzM5YmE0NjljLi43YTA1NTA2ZThkNDcyZTU1ZGRiZjgyYTI5NDU4YWI3NzFmMmIz
NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MTc4LDYgKzUxNzgsMTAgQEAKICAgICAgICAgICAg
ICdkb20vSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCcsCiAgICAgICAg
ICAgICAnZG9tL0ljb25VUkwuY3BwJywKICAgICAgICAgICAgICdkb20vSWNvblVSTC5oJywKKyAg
ICAgICAgICAgICdkb20vSWRUYXJnZXRPYnNlcnZlci5jcHAnLAorICAgICAgICAgICAgJ2RvbS9J
ZFRhcmdldE9ic2VydmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9JZFRhcmdldE9ic2VydmVyUmVn
aXN0cnkuY3BwJywKKyAgICAgICAgICAgICdkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgn
LAogICAgICAgICAgICAgJ2RvbS9LZXlib2FyZEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9t
L01lbW9yeUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5u
ZWwuY3BwJywKQEAgLTUzNDYsNiArNTM1MCw4IEBACiAgICAgICAgICAgICAnaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlSW5wdXRUeXBlLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9Gb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL0Zv
cm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5oJywKICAgICAgICAgICAgICdodG1sL0Zvcm1Db250
cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Gb3JtQ29udHJvbGxlci5oJywKICAgICAg
ICAgICAgICdodG1sL0Zvcm1EYXRhTGlzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5MDYyYzhiMjMxZjZjMGE1YWEzYmQxYTk0YjUx
ZjRkNDhmZDM4ODM0Li43NDIzNmQ1OTA4NDc1NWQ3OTFkYWUxNGJiNjBlZGYxY2ZiMDEwMGY0IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTEx
OTQsNiArNTExOTQsMTE4IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWNvblVSTC5oIgog
CQkJCT4KIAkJCTwvRmlsZT4KKyAgCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElk
VGFyZ2V0T2JzZXJ2ZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRUYXJnZXRPYnNlcnZlci5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJS
ZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KIAkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWdub3Jl
RGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKIAkJCQk+CkBAIC01ODM1MCw2ICs1
ODQ2MiwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGb3JtQXNzb2NpYXRlZEVsZW1l
bnQuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CisgICAgICAgIAkJPEZpbGUKKyAgICAgICAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5jcHAiCisgICAg
ICAgCQkJCT4KKyAgICAgICAJCQk8L0ZpbGU+CisgICAgICAgCQkJPEZpbGUKKyAgICAgICAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5oIgorICAg
ICAgIAkJCQk+CisgICAgICAgCQkJPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcRm9ybUNvbnRyb2xsZXIuY3BwIgogCQkJCT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjM2IyNTJkN2RhMzVjZGVl
MjViMWRjOTNmNjYyN2E3OGQ4OTZmODg3Li4wM2MzZjY5MWU4NmJkMDZhZTNhODU5NjQwZThhOGJh
ZDgwMTBhYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC01NzE5LDcgKzU3MTksMTMgQEAKIAkJQzMzMEEyMjMxM0VDMTk2QjAw
MDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzM0VF
NUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMjE0
RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovOyB9
OwogCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMz
M0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5o
ICovOyB9OworCQlDMzczQjY1NDE1QUZFRTY4MDA1M0M0MDggLyogSWRUYXJnZXRPYnNlcnZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzczQjY1
MzE1QUZFRTY4MDA1M0M0MDggLyogSWRUYXJnZXRPYnNlcnZlci5jcHAgKi87IH07CisJCUMzNzNC
NjU4MTVBRkVFQjkwMDUzQzQwOCAvKiBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzM3M0I2NTYxNUFG
RUVCOTAwNTNDNDA4IC8qIEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5jcHAgKi87IH07CisJ
CUMzNzNCNjU5MTVBRkVFQjkwMDUzQzQwOCAvKiBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzNzNCNjU3
MTVBRkVFQjkwMDUzQzQwOCAvKiBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIuaCAqLzsgfTsK
IAkJQzM3Q0RFQkQxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3NlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzM3Q0RFQkMxNDlFRjIw
MzAwNDIwOTBEIC8qIENvbG9yQ2hvb3NlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMzRTExMkVBMTVBRTY0NTIwMEQ0NTQxNiAvKiBJ
ZFRhcmdldE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDM0UxMTJFNzE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMzRTExMkVC
MTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNFMTEyRTgxNUFFNjQ1MjAw
RDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi87IH07CisJCUMzRTExMkVD
MTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzRTExMkU5MTVBRTY0NTIwMEQ0
NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBCNTYxNjEyMTE5RDIzMDA4QjQ2RTAgLyog
R3JvdXBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi87
IH07CiAJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNTEyMTE5RDIz
MDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUM1MEQwRTgyMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdl
TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLzsg
fTsKQEAgLTEyOTM0LDcgKzEyOTQwLDEzIEBACiAJCUMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAv
KiBDb2xvckNob29zZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JD
aG9vc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMyMTRGQjQ5NjEw
MDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1
QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMzczQjY1MzE1QUZFRTY4MDA1M0M0MDggLyogSWRUYXJnZXRP
YnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZFRhcmdl
dE9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzM3M0I2NTYxNUFG
RUVCOTAwNTNDNDA4IC8qIEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMzczQjY1NzE1QUZFRUI5MDA1M0M0
MDggLyogRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMzdDREVCQzE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2Vy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3NlckNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDM0UxMTJFNzE1QUU2NDUyMDBE
NDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJZFRhcmdldE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMz
RTExMkU4MTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNFMTEyRTkxNUFFNjQ1MjAw
RDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZF
MCAvKiBHcm91cFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
b3VwU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0
MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNzE1MSw2ICsxNzE2Myw4IEBACiAJCQkJRjU1QjNEOEExMjUxRjEyRDAw
M0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuaCAqLywKIAkJCQk0QTBEQTJGQzEyOUIyNDE5MDBBQjYx
RTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCAqLywKIAkJCQk0QTBEQTJGRDEyOUIyNDE5
MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8sCisJCQkJQzM3M0I2NTYxNUFG
RUVCOTAwNTNDNDA4IC8qIEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5jcHAgKi8sCisJCQkJ
QzM3M0I2NTcxNUFGRUVCOTAwNTNDNDA4IC8qIEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5o
ICovLAogCQkJCUY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5jcHAg
Ki8sCiAJCQkJRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi8s
CiAJCQkJQTgxMzZEMzcwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5jcHAgKi8sCkBA
IC0yMTI1OSw2ICsyMTI3MywxMCBAQAogCQlGNTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EgLyogZG9t
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMzczQjY1
MzE1QUZFRTY4MDA1M0M0MDggLyogSWRUYXJnZXRPYnNlcnZlci5jcHAgKi8sCisJCQkJQzNFMTEy
RTcxNUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCAqLywKKwkJCQlDM0UxMTJF
ODE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLywKKwkJ
CQlDM0UxMTJFOTE1QUU2NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
Ki8sCiAJCQkJRTFDNERFNkQwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAg
Ki8sCiAJCQkJRTFDNERFNjgwRUE3NUMxRTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oICov
LAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAqLywKQEAgLTI1MTc5
LDYgKzI1MTk3LDkgQEAKIAkJCQk0RjMyQkIxQjE0RkE4NUU4MDBGNkMxQTMgLyogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUZBRkJGMTkxNUE1RkE3
NDAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzNFMTEyRUEx
NUFFNjQ1MjAwRDQ1NDE2IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMzRTExMkVDMTVBRTY0NTIwMEQ0NTQxNiAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBp
biBIZWFkZXJzICovLAorCQkJCUMzNzNCNjU5MTVBRkVFQjkwMDUzQzQwOCAvKiBGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjgyMzQsNiArMjgyNTUsOSBA
QAogCQkJCTUwOTg3QzI2MTU3RDY3NkQwMEJEQTgzNSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4ODJEQTIwMTU5Mzg0NkEwMDAxMTVFRCAvKiBD
U1NUb1N0eWxlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQUZCRjE4MTVBNUZBNkUwMDA4
M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDM0UxMTJFQjE1QUU2
NDUyMDBENDU0MTYgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUMzNzNCNjU0MTVBRkVFNjgwMDUzQzQwOCAvKiBJZFRhcmdldE9ic2VydmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUMzNzNCNjU4MTVBRkVFQjkwMDUzQzQwOCAvKiBGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRU
YXJnZXRPYnNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZhZGQzOGY5MDgxNGM5OTE2MDNjMGUyMjVj
ZTkwZDg4Y2FjNDEyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRh
cmdldE9ic2VydmVyLmNwcApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
ZFRhcmdldE9ic2VydmVyLmgiCisKKyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJZFRhcmdldE9ic2VydmVyOjpJZFRhcmdldE9i
c2VydmVyKElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgcmVnaXN0cnksIGNvbnN0IEF0b21pY1N0
cmluZyYgaWQpCisgICAgOiBtX3JlZ2lzdHJ5KCZyZWdpc3RyeSkKKyAgICAsIG1faWQoaWQpCit7
CisgICAgbV9yZWdpc3RyeS0+YWRkT2JzZXJ2ZXIobV9pZCwgdGhpcyk7Cit9CisKK0lkVGFyZ2V0
T2JzZXJ2ZXI6On5JZFRhcmdldE9ic2VydmVyKCkKK3sKKyAgICBpZiAobV9yZWdpc3RyeSkKKyAg
ICAgICAgbV9yZWdpc3RyeS0+cmVtb3ZlT2JzZXJ2ZXIobV9pZCwgdGhpcyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdl
dE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc3OGExOTU4MzI1MWI5YjhhZWMzOWM0YTQzNTg2ZGExNjU5MzBiODYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJZFRhcmdldE9ic2VydmVyX2gKKyNkZWZpbmUgSWRUYXJnZXRPYnNlcnZlcl9oCisK
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk7CisKK2NsYXNzIElkVGFyZ2V0T2Jz
ZXJ2ZXIgeworcHVibGljOgorICAgIElkVGFyZ2V0T2JzZXJ2ZXIoSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5JiwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CisgICAgdmlydHVhbCB+SWRUYXJnZXRP
YnNlcnZlcigpOworICAgIHZpcnR1YWwgdm9pZCBpZFRhcmdldENoYW5nZWQoKSA9IDA7CisKK3By
aXZhdGU6CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KiBtX3JlZ2lzdHJ5OworICAgIEF0
b21pY1N0cmluZyBtX2lkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gSWRUYXJnZXRPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYzI2YWNmZWUzMzJlYjdkMmQ2MTliYTU5
MjBjNzMzZjViYjBmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIklkVGFyZ2V0
T2JzZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeT4gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkpOworfQor
Cit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGlkLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIElkVG9PYnNlcnZlclNldE1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZCA9IGFkb3B0UHRyKG5ldyBPYnNlcnZlclNldCgpKTsKKworICAgIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kLT5hZGQob2JzZXJ2ZXIpOworfQorCit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6cmVtb3ZlT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZl
ciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGlkLmlzRW1wdHkoKSB8fCBtX3JlZ2lzdHJ5LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSWRUb09ic2VydmVyU2V0TWFwOjppdGVyYXRv
ciBpdGVyID0gbV9yZWdpc3RyeS5maW5kKGlkLmltcGwoKSk7CisKKyAgICBPYnNlcnZlclNldCog
c2V0ID0gaXRlci0+c2Vjb25kLmdldCgpOworICAgIHNldC0+cmVtb3ZlKG9ic2VydmVyKTsKKyAg
ICBpZiAoc2V0LT5pc0VtcHR5KCkgJiYgc2V0ICE9IG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQp
CisgICAgICAgIG1fcmVnaXN0cnkucmVtb3ZlKGl0ZXIpOworfQorCit2b2lkIElkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCkKK3sKKyAgICBBU1NFUlQoIWlkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3JlZ2lz
dHJ5LmlzRW1wdHkoKSk7CisKKyAgICBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0ID0gbV9yZWdp
c3RyeS5nZXQoaWQuaW1wbCgpKTsKKyAgICBpZiAoIW1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQp
CisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxJZFRhcmdldE9ic2VydmVyKj4gY29weTsK
KyAgICBjb3B5VG9WZWN0b3IoKm1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQsIGNvcHkpOworICAg
IGZvciAoVmVjdG9yPElkVGFyZ2V0T2JzZXJ2ZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3B5
LmJlZ2luKCk7IGl0ICE9IGNvcHkuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKG1fbm90aWZ5
aW5nT2JzZXJ2ZXJzSW5TZXQtPmNvbnRhaW5zKCppdCkpCisgICAgICAgICAgICAoKml0KS0+aWRU
YXJnZXRDaGFuZ2VkKCk7CisgICAgfQorCisgICAgaWYgKG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5T
ZXQtPmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZWdpc3RyeS5yZW1vdmUoaWQuaW1wbCgpKTsKKwor
ICAgIG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWJhNzU1MjEwMGU0ZTk3ZTBmNjc3OGEyOWRkNGY3YWI0ZDQ1MzAxYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5X2gKKyNkZWZpbmUg
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5X2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlcjsKKworY2xh
c3MgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5IHsKKyAgICBmcmllbmQgY2xhc3MgSWRUYXJnZXRP
YnNlcnZlcjsKKworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeT4gY3JlYXRlKCk7CisgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRv
bWljU3RyaW5nJiBpZCk7CisKK3ByaXZhdGU6CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
KCkgOiBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0KDApIHsgfQorICAgIHZvaWQgYWRkT2JzZXJ2
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQg
cmVtb3ZlT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciop
OworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCk7CisKKyAgICB0eXBlZGVmIEhhc2hTZXQ8SWRUYXJnZXRPYnNlcnZlcio+IE9ic2VydmVyU2V0
OworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgT3duUHRyPE9ic2VydmVy
U2V0PiA+IElkVG9PYnNlcnZlclNldE1hcDsKKyAgICBJZFRvT2JzZXJ2ZXJTZXRNYXAgbV9yZWdp
c3RyeTsKKyAgICBPYnNlcnZlclNldCogbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldDsKK307CisK
K2lubGluZSB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQpCit7CisgICAgQVNTRVJUKCFtX25vdGlmeWluZ09ic2VydmVy
c0luU2V0KTsKKyAgICBpZiAoaWQuaXNFbXB0eSgpIHx8IG1fcmVnaXN0cnkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNl
cnZlcnNJbnRlcm5hbChpZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmlu
ZGV4IDU2NDJmY2Y4ZGQzM2ZiYzFmYmYyMDNiZGRiMWZiOGJlMjUzN2FlZmIuLjU0NGUyMDc3ZWE1
NWEwNTE4Yzk4OGI1YjU0YWE4ZmZiNjQ3MmQxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNs
dWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2lu
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC01NCw2
ICs1NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBUcmVlU2NvcGU6OlRyZWVTY29w
ZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKICAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCiAg
ICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKICAgICAsIG1fbnVtTm9kZUxp
c3RDYWNoZXMoMCkKIHsKICAgICBBU1NFUlQocm9vdE5vZGUpOwpAQCAtOTMsMTEgKzk1LDEzIEBA
IEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50SWQpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVudEJ5SWQoY29uc3QgQXRv
bWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgbV9lbGVtZW50
c0J5SWQuYWRkKGVsZW1lbnRJZC5pbXBsKCksIGVsZW1lbnQpOworICAgIG1faWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKIH0KIAogdm9pZCBUcmVl
U2NvcGU6OnJlbW92ZUVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkLCBF
bGVtZW50KiBlbGVtZW50KQogewogICAgIG1fZWxlbWVudHNCeUlkLnJlbW92ZShlbGVtZW50SWQu
aW1wbCgpLCBlbGVtZW50KTsKKyAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5
T2JzZXJ2ZXJzKGVsZW1lbnRJZCk7CiB9CiAKIE5vZGUqIFRyZWVTY29wZTo6YW5jZXN0b3JJblRo
aXNTY29wZShOb2RlKiBub2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IDVlY2Mw
MzkyZjM3MTcwYmVlMzA1Mzk5MjE0MjQ5N2NmYWI3YWNiMGIuLjI5MjNlYzUzMGMwYjFmZTJjYmE2
ODdlOGYzZTU4NTZmYWU0YmFlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTM2LDYgKzM2
LDcgQEAgY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVNlbGVjdGlvbjsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKK2NsYXNzIElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeTsKIGNsYXNzIE5vZGU7CiAKIC8vIEEgY2xhc3Mgd2hpY2ggaW5oZXJpdHMgYm90aCBOb2Rl
IGFuZCBUcmVlU2NvcGUgbXVzdCBjYWxsIGNsZWFyUmFyZURhdGEoKSBpbiBpdHMgZGVzdHJ1Y3Rv
cgpAQCAtODIsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICBDb250YWluZXJOb2RlKiByb290Tm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7IH0KIAorICAgIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeSYgaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gKm1faWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmdldCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBUcmVlU2Nv
cGUoQ29udGFpbmVyTm9kZSopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwpAQCAtOTUsNiAr
OTgsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsK
ICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9pbWFnZU1hcHNCeU5hbWU7CiAKKyAgICBPd25QdHI8
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PiBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTsKKwog
ICAgIHVuc2lnbmVkIG1fbnVtTm9kZUxpc3RDYWNoZXM7CiAKICAgICBtdXRhYmxlIFJlZlB0cjxE
T01TZWxlY3Rpb24+IG1fc2VsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNz
b2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDIxNzkxZjA5NjBhZTQ3YzhmMThlOWJmMzBiMTFjZDdh
NjdmNjg0NTMuLjJjZjY4YWIwZDcyODE0ZmVkNDU1ZTNhMzkwZWY2ZWJmN2I3ZTMzZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTI1LDYg
KzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuaCIKIAorI2luY2x1ZGUgIkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgpAQCAtNTgsNyArNTksNyBAQCB2b2lk
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9s
ZERvY3VtZW50KQogewogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0
aGlzKTsKICAgICBpZiAob2xkRG9jdW1lbnQgJiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShm
b3JtQXR0cikpCi0gICAgICAgIG9sZERvY3VtZW50LT5mb3JtQ29udHJvbGxlcigpLT51bnJlZ2lz
dGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgc2V0TmV3Rm9y
bUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCkBAIC02OSwx
NCArNzAsMTQgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250
YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIAogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0g
dG9IVE1MRWxlbWVudCh0aGlzKTsKICAgICBpZiAoZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShm
b3JtQXR0cikpCi0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPmZvcm1Db250cm9sbGVyKCkt
PnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgc2V0
TmV3Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0
ZWRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsK
ICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAgICAgaWYg
KGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0
ZShmb3JtQXR0cikpCi0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPmZvcm1Db250cm9sbGVy
KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKHRoaXMpOworICAgICAg
ICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CiAgICAgLy8gSWYgdGhl
IGZvcm0gYW5kIGVsZW1lbnQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdHJlZSwgcHJlc2VydmUgdGhl
IGNvbm5lY3Rpb24gdG8gdGhlIGZvcm0uCiAgICAgLy8gT3RoZXJ3aXNlLCBudWxsIG91dCBvdXIg
Zm9ybSBhbmQgcmVtb3ZlIG91cnNlbHZlcyBmcm9tIHRoZSBmb3JtJ3MgbGlzdCBvZiBlbGVtZW50
cy4KICAgICBpZiAobV9mb3JtICYmIGVsZW1lbnQtPmhpZ2hlc3RBbmNlc3RvcigpICE9IG1fZm9y
bS0+aGlnaGVzdEFuY2VzdG9yKCkpCkBAIC0xNTMsOSArMTU0LDExIEBAIHZvaWQgRm9ybUFzc29j
aWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgaWYgKCFlbGVtZW50LT5m
YXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkgewogICAgICAgICAvLyBUaGUgZm9ybSBhdHRyaWJ1
dGUgcmVtb3ZlZC4gV2UgbmVlZCB0byByZXNldCBmb3JtIG93bmVyIGhlcmUuCiAgICAgICAgIHNl
dEZvcm0oZWxlbWVudC0+ZmluZEZvcm1BbmNlc3RvcigpKTsKLSAgICAgICAgZWxlbWVudC0+ZG9j
dW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1B
dHRyaWJ1dGUodGhpcyk7Ci0gICAgfSBlbHNlCisgICAgICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdl
dE9ic2VydmVyID0gbnVsbHB0cjsKKyAgICB9IGVsc2UgewogICAgICAgICByZXNldEZvcm1Pd25l
cigpOworICAgICAgICBzZXROZXdGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKKyAgICB9
CiB9CiAKIGJvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21FcnJvcigpIGNvbnN0CkBA
IC0yMjEsNiArMjI0LDE2IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21W
YWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogICAgIG1fY3VzdG9tVmFsaWRhdGlvbk1lc3Nh
Z2UgPSBlcnJvcjsKIH0KIAordm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldE5ld0Zvcm1B
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCit7CisgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIgPSBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OmNyZWF0ZSh0b0hUTUxFbGVtZW50
KHRoaXMpLT5mYXN0R2V0QXR0cmlidXRlKGZvcm1BdHRyKSwgdGhpcyk7Cit9CisKK3ZvaWQgRm9y
bUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCit7CisgICAg
cmVzZXRGb3JtT3duZXIoKTsKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ6Om5hbWUoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9
IHRvSFRNTEVsZW1lbnQodGhpcyktPmdldE5hbWVBdHRyaWJ1dGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCmluZGV4IDVhNDdlYTA3NmRiMmE3NGVmNTBl
OTQ1NjVhZTdjYjRmMGJhNTAyMTEuLmVkMDJjOTZmYmE1OWM5MjNiMzY2YTYwNGY1MjhiZDE1Zjdk
NjNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaApA
QCAtMjQsNiArMjQsNyBAQAogI2lmbmRlZiBGb3JtQXNzb2NpYXRlZEVsZW1lbnRfaAogI2RlZmlu
ZSBGb3JtQXNzb2NpYXRlZEVsZW1lbnRfaAogCisjaW5jbHVkZSAiRm9ybUF0dHJpYnV0ZVRhcmdl
dE9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNzksNiArODAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB2YWxpZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKTsKIAorICAg
IHZvaWQgc2V0TmV3Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CisgICAgdm9pZCBmb3Jt
QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpOworCiBwcm90ZWN0ZWQ6CiAgICAgRm9ybUFzc29jaWF0
ZWRFbGVtZW50KCk7CiAKQEAgLTEwMSw2ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCByZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRl
cmVmRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgPSAwOwogCisgICAgT3duUHRyPEZvcm1BdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlcj4gbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI7CiAgICAgSFRN
TEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgT3duUHRyPFZhbGlkaXR5U3RhdGU+IG1fdmFsaWRp
dHlTdGF0ZTsKICAgICBTdHJpbmcgbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNzcyODA5YWE3YzZiZTc0NzZjNzY5ZDk1OGQ1NWEzMWRlMjJkMDhmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXIuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvcm1BdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlci5oIgorCisjaW5jbHVkZSAiRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxGb3JtQXR0cmlidXRlVGFyZ2V0
T2JzZXJ2ZXI+IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcihpZCwgZWxlbWVudCkp
OworfQorCitGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OkZvcm1BdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlcihjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVs
ZW1lbnQpCisgICAgOiBJZFRhcmdldE9ic2VydmVyKHRvSFRNTEVsZW1lbnQoZWxlbWVudCktPnRy
ZWVTY29wZSgpLT5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKSwgaWQpCisgICAgLCBtX2VsZW1l
bnQoZWxlbWVudCkKK3sKK30KKwordm9pZCBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6Omlk
VGFyZ2V0Q2hhbmdlZCgpCit7CisgICAgbV9lbGVtZW50LT5mb3JtQXR0cmlidXRlVGFyZ2V0Q2hh
bmdlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjI1Mzdk
MjNjZDUzOGM4NTJiZGZmOTAxMmQwZGVlN2FkNTAxN2IwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIuaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyX2gKKyNkZWZpbmUgRm9ybUF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyX2gKKworI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7CisKK2NsYXNz
IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA6IElkVGFyZ2V0T2JzZXJ2ZXIgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOworICAg
IHZpcnR1YWwgdm9pZCBpZFRhcmdldENoYW5nZWQoKTsKKworcHJpdmF0ZToKKyAgICBGb3JtQXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRm9ybUFzc29jaWF0
ZWRFbGVtZW50Kik7CisKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIG1fZWxlbWVudDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEZvcm1BdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IGI3
YzM4ZTJhOGI2OTQxNGRiZWQ1OTJmZDMzNmFjZGU5ZjIyYTExNzIuLjI1NjA1ZmU4N2RiNGI5ZjQw
NzQyZmIxYzE1ZmE3M2ZiOGZmZGYwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCkBAIC0yMzcsMjUgKzIzNyw2IEBAIHZvaWQgRm9ybUNvbnRyb2xsZXI6OndpbGxEZWxl
dGVGb3JtKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9y
LT53aWxsRGVsZXRlRm9ybShmb3JtKTsKIH0KIAotdm9pZCBGb3JtQ29udHJvbGxlcjo6cmVnaXN0
ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxl
bWVudCkKLXsKLSAgICBBU1NFUlQodG9IVE1MRWxlbWVudChlbGVtZW50KS0+ZmFzdEhhc0F0dHJp
YnV0ZShmb3JtQXR0cikpOwotICAgIG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGUuYWRk
KGVsZW1lbnQpOwotfQotCi12b2lkIEZvcm1Db250cm9sbGVyOjp1bnJlZ2lzdGVyRm9ybUVsZW1l
bnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0g
ICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5yZW1vdmUoZWxlbWVudCk7Ci19Ci0K
LXZvaWQgRm9ybUNvbnRyb2xsZXI6OnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoKQotewotICAgIHR5
cGVkZWYgRm9ybUFzc29jaWF0ZWRFbGVtZW50TGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIEl0ZXJhdG9y
OwotICAgIEl0ZXJhdG9yIGVuZCA9IG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGUuZW5k
KCk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1
dGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+cmVzZXRGb3JtT3du
ZXIoKTsKLX0KLQogRm9ybUVsZW1lbnRLZXk6OkZvcm1FbGVtZW50S2V5KEF0b21pY1N0cmluZ0lt
cGwqIG5hbWUsIEF0b21pY1N0cmluZ0ltcGwqIHR5cGUsIEF0b21pY1N0cmluZ0ltcGwqIGZvcm1L
ZXkpCiAgICAgOiBtX25hbWUobmFtZSkKICAgICAsIG1fdHlwZSh0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Gb3JtQ29udHJvbGxlci5oCmluZGV4IGUxNWMxZGMyNGE5ODBmNjQ0N2E5OGIyZTMyNmQxOTZk
NmUzNjMyYTIuLmU5OGQxYTA0OWNjMDliZDcxY2ZmMGQ5MjdhZjRhNGM1ODVlY2YzZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKQEAgLTEzMiwxMCArMTMyLDYgQEAgcHVibGlj
OgogICAgIEZvcm1Db250cm9sU3RhdGUgdGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRN
TEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYpOwogICAgIHZvaWQgd2lsbERlbGV0ZUZvcm0o
SFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9y
bUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJG
b3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOwotICAg
IHZvaWQgcmVzZXRGb3JtRWxlbWVudHNPd25lcigpOwotCiBwcml2YXRlOgogICAgIEZvcm1Db250
cm9sbGVyKCk7CiAKQEAgLTE0Myw4ICsxMzksNiBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBM
aXN0SGFzaFNldDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKiwgNjQ+IEZvcm1FbGVt
ZW50TGlzdEhhc2hTZXQ7CiAgICAgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCBtX2Zvcm1FbGVtZW50
c1dpdGhTdGF0ZTsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ+LCAzMj4gRm9ybUFzc29jaWF0ZWRFbGVtZW50TGlzdEhhc2hTZXQ7Ci0gICAgRm9y
bUFzc29jaWF0ZWRFbGVtZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJp
YnV0ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxGb3JtRWxlbWVudEtleSwgRGVxdWU8Rm9ybUNv
bnRyb2xTdGF0ZT4sIEZvcm1FbGVtZW50S2V5SGFzaCwgRm9ybUVsZW1lbnRLZXlIYXNoVHJhaXRz
PiBGb3JtRWxlbWVudFN0YXRlTWFwOwogICAgIEZvcm1FbGVtZW50U3RhdGVNYXAgbV9zdGF0ZUZv
ck5ld0Zvcm1FbGVtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApp
bmRleCAzYzhiYjA3M2NmZjcwZTBiNDg3MDkwNDY0YzA4MTAyOWVjMjUxNzI1Li4yZjUzMjFhZDIx
MGM1NDg2YjJjZDk4YTdhOWIyZDQxMThlNDU5NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCkBAIC0xNDEsMTQgKzE0MSw2IEBAIE5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgSFRNTEZvcm1FbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSoKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6
OmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQotewotICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKLSAgICBI
VE1MRWxlbWVudDo6ZGlkTm90aWZ5RGVzY2VuZGFudEluc2VydGlvbnMoaW5zZXJ0aW9uUG9pbnQp
OwotICAgIGlmIChoYXNJRCgpKQotICAgICAgICBkb2N1bWVudCgpLT5mb3JtQ29udHJvbGxlcigp
LT5yZXNldEZvcm1FbGVtZW50c093bmVyKCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgTm9kZSogZmlu
ZFJvb3QoTm9kZSogbikKIHsKICAgICBOb2RlKiByb290ID0gbjsKQEAgLTE2NCw4ICsxNTYsNiBA
QCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0
aW9uUG9pbnQpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFzc29jaWF0ZWRFbGVtZW50
cy5zaXplKCk7ICsraSkKICAgICAgICAgYXNzb2NpYXRlZEVsZW1lbnRzW2ldLT5mb3JtUmVtb3Zl
ZEZyb21UcmVlKHJvb3QpOwogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Q
b2ludCk7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgaGFzSUQoKSkK
LSAgICAgICAgZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+cmVzZXRGb3JtRWxlbWVudHNP
d25lcigpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6aGFuZGxlTG9jYWxFdmVudHMoRXZl
bnQqIGV2ZW50KQpAQCAtNDM2LDMzICs0MjYsMzMgQEAgdGVtcGxhdGU8Y2xhc3MgVCwgc2l6ZV90
IG4+IHN0YXRpYyB2b2lkIHJlbW92ZUZyb21WZWN0b3IoVmVjdG9yPFQqLCBuPiAmIHZlYywgVCoK
ICAgICAgICAgfQogfQogCi11bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5k
ZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50KQordW5zaWduZWQgSFRNTEZvcm1F
bGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVu
dCwgdW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWduZWQgcmFuZ2VFbmQpCiB7Ci0gICAgLy8gQ29t
cGFyZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmb3JtIGVsZW1lbnQgYW5kIHRoZSBpbnNlcnRlZCBl
bGVtZW50LgotICAgIC8vIFVwZGF0ZXMgdGhlIGluZGVjZXMgaW4gb3JkZXIgdG8gdGhlIHJlbGF0
aW9uIG9mIHRoZSBwb3NpdGlvbjoKLSAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IGNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQpOwotICAgIGlmIChwb3NpdGlvbiAmIChET0NVTUVO
VF9QT1NJVElPTl9DT05UQUlOUyB8IERPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSkpCi0g
ICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OwotICAgIGVsc2UgaWYgKHBv
c2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HKSB7Ci0gICAgICAgICsrbV9hc3Nv
Y2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKLSAgICAgICAgKyttX2Fzc29jaWF0ZWRFbGVtZW50
c0FmdGVySW5kZXg7Ci0gICAgfQotCiAgICAgaWYgKG1fYXNzb2NpYXRlZEVsZW1lbnRzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBBU1NFUlQocmFuZ2VTdGFydCA8PSByYW5n
ZUVuZCk7CisKKyAgICBpZiAocmFuZ2VTdGFydCA9PSByYW5nZUVuZCkKKyAgICAgICAgcmV0dXJu
IHJhbmdlU3RhcnQ7CisKKyAgICB1bnNpZ25lZCBsZWZ0ID0gcmFuZ2VTdGFydDsKKyAgICB1bnNp
Z25lZCByaWdodCA9IHJhbmdlRW5kIC0gMTsKKyAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbjsK
KwogICAgIC8vIERvZXMgYmluYXJ5IHNlYXJjaCBvbiBtX2Fzc29jaWF0ZWRFbGVtZW50cyBpbiBv
cmRlciB0byBmaW5kIHRoZSBpbmRleAogICAgIC8vIHRvIGJlIGluc2VydGVkLgotICAgIHVuc2ln
bmVkIGxlZnQgPSAwLCByaWdodCA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKSAtIDE7CiAg
ICAgd2hpbGUgKGxlZnQgIT0gcmlnaHQpIHsKICAgICAgICAgdW5zaWduZWQgbWlkZGxlID0gbGVm
dCArICgocmlnaHQgLSBsZWZ0KSAvIDIpOworICAgICAgICBBU1NFUlQobWlkZGxlIDwgbV9hc3Nv
Y2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCB8fCBtaWRkbGUgPj0gbV9hc3NvY2lhdGVkRWxlbWVu
dHNBZnRlckluZGV4KTsKICAgICAgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVsZW1lbnRzW21pZGRsZV0pKTsK
ICAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKQogICAg
ICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxlZnQg
PSBtaWRkbGUgKyAxOwogICAgIH0KLQorICAgIAorICAgIEFTU0VSVChsZWZ0IDwgbV9hc3NvY2lh
dGVkRWxlbWVudHNCZWZvcmVJbmRleCB8fCBsZWZ0ID49IG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0
ZXJJbmRleCk7CiAgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVsZW1lbnRzW2xlZnRdKSk7CiAgICAgaWYgKHBv
c2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKQogICAgICAgICByZXR1cm4gbGVm
dDsKQEAgLTQ3NCw4ICs0NjQsMTYgQEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxl
bWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW0KICAgICBIVE1M
RWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoYXNzb2NpYXRlZEVsZW1lbnQpOwogICAg
IC8vIFRyZWF0cyBzZXBhcmF0ZWx5IHRoZSBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBoYXMgdGhl
IGZvcm0gYXR0cmlidXRlCiAgICAgLy8gZm9yIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb24uCi0g
ICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICByZXR1
cm4gZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKGVsZW1lbnQpOworICAgIGlmIChl
bGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkgeworICAgICAgICB1bnNpZ25lZCBz
aG9ydCBwb3NpdGlvbiA9IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQpOworICAgICAg
ICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpIHsKKyAgICAgICAg
ICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKKyAgICAgICAgICAgICsrbV9h
c3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OworICAgICAgICAgICAgcmV0dXJuIEhUTUxGb3Jt
RWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKGVsZW1lbnQsIDAsIG1f
YXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggLSAxKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcgJiYgIShwb3NpdGlvbiAm
IERPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSkpCisgICAgICAgICAgICByZXR1cm4gSFRN
TEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoZWxlbWVudCwg
bV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4LCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXpl
KCkpOworICAgIH0KIAogICAgIC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRo
aXMgZWxlbWVudCBpcyB0aGUgdmVyeSBsYXN0IHRoaW5nIGluCiAgICAgLy8gdGhlIGZvcm0ncyB0
cmVlIG9mIGNoaWxkcmVuOyB3ZSBkb24ndCB3YW50IHRvIHdhbGsgdGhlIGVudGlyZSB0cmVlIGlu
IHRoYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IGVlOWNjZjM5Yjdh
MTY0ZmVhNGNhN2VkMGE3YmE5MWI0MTEzNWUyZmEuLjZmN2E4NjNkOGRjZGVkMmQ1ZmM5NTQzNTY4
YWYxMTI5YmI3OWZmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAt
MTE5LDcgKzExOSw2IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhDb250YWlu
ZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhF
dmVudCopOwpAQCAtMTM1LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN1Ym1pdChF
dmVudCosIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0
dXJlLCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogCi0gICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJ
bmRleFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqKTsKKyAgICB1bnNpZ25lZCBmb3JtRWxlbWVu
dEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCosIHVuc2lnbmVkIHJhbmdlU3RhcnQsIHVu
c2lnbmVkIHJhbmdlRW5kKTsKICAgICB1bnNpZ25lZCBmb3JtRWxlbWVudEluZGV4KEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCopOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdWJtaXNzaW9u
IHNob3VsZCBwcm9jZWVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiZGRkNTE0OTdiNDFmMDI4ODQzZTJkMGYwZDU4YjQ4
MTY3MzkyYjEuLmUyZWUwZDE1OGNiYjZjZGUyMGEzMGU2YThhZTcxY2VmZmYzZWQ0NTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0xMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBGb3JtIG9mIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCBpcyBub3Qg
dXBkYXRlZCB3aGVuIGlkIHRhcmdldCBjaGFuZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRl
LWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3VwZGF0
ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTA5ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRl
bmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0
cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRh
dGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkZDAz
MDc0ZDJkMmYwNGJjOGVkZTlmMzgwNTliN2JlM2Y0MDUzMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1Rlc3QgZm9yIHRoZSBkYXRhbGlzdCBlbGVtZW50Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdCAxOiBJbnNlcnQgbmV3IGlucHV0
IGFmdGVyIGZvcm0uCitQQVNTIGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybS5l
bGVtZW50c1swXSBpcyBpbnB1dAorVGVzdCAyOiBJbnNlcnQgdHdvIGZvcm1zIHdpdGggc2FtZSBp
ZC4KK1BBU1MgZm9ybTEuZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybTIuZWxlbWVudHMu
bGVuZ3RoIGlzIDAKK1BBU1MgZm9ybTEuZWxlbWVudHNbMF0gaXMgaW5wdXQKK1Rlc3QgMzogQ2hh
bmdlIGZvcm0gaWQuCitQQVNTIGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybS5l
bGVtZW50c1swXSBpcyBpbnB1dAorVGVzdCA0OiBPcmRlci4KK1BBU1MgZm9ybS5lbGVtZW50cy5s
ZW5ndGggaXMgNQorUEFTUyBmb3JtLmVsZW1lbnRzWzBdIGlzIGlucHV0MQorUEFTUyBmb3JtLmVs
ZW1lbnRzWzFdIGlzIGlucHV0MgorUEFTUyBmb3JtLmVsZW1lbnRzWzJdIGlzIGlucHV0MworUEFT
UyBmb3JtLmVsZW1lbnRzWzNdIGlzIGlucHV0NAorUEFTUyBmb3JtLmVsZW1lbnRzWzRdIGlzIGlu
cHV0NQorUEFTUyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyA0CitQQVNTIGZvcm0uZWxlbWVudHNb
MF0gaXMgaW5wdXQxCitQQVNTIGZvcm0uZWxlbWVudHNbMV0gaXMgaW5wdXQzCitQQVNTIGZvcm0u
ZWxlbWVudHNbMl0gaXMgaW5wdXQ0CitQQVNTIGZvcm0uZWxlbWVudHNbM10gaXMgaW5wdXQ1CitQ
QVNTIGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDMKK1BBU1MgZm9ybS5lbGVtZW50c1swXSBpcyBp
bnB1dDEKK1BBU1MgZm9ybS5lbGVtZW50c1sxXSBpcyBpbnB1dDIKK1BBU1MgZm9ybS5lbGVtZW50
c1syXSBpcyBpbnB1dDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mb3Jt
LWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1m
b3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhNGYwNzc4NzkxNzU1Y2I4
NzFkYjYwNjY2ZWU4MDc0OGM2NDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDEw
NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIHN0eWxlPSJk
aXNwbGF5Om5vbmU7Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB0
aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsKKwordmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3QiKTsKKworZnVuY3Rpb24gY3JlYXRlRm9ybShpZCkgeworICAgIHZh
ciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpOworICAgIGZvcm0uaWQgPSBp
ZDsKKyAgICB0ZXN0RWxlbWVudC5hcHBlbmRDaGlsZChmb3JtKTsKKyAgICByZXR1cm4gZm9ybTsK
K307CisKK2Z1bmN0aW9uIGNyZWF0ZUlucHV0KGZvcm0pIHsKKyAgICB2YXIgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGlucHV0LnNldEF0dHJpYnV0ZSgiZm9y
bSIsIGZvcm0pOworICAgIHRlc3RFbGVtZW50LmFwcGVuZENoaWxkKGlucHV0KTsKKyAgICByZXR1
cm4gaW5wdXQ7Cit9OworCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBkZWJ1ZygiVGVzdCAxOiBJ
bnNlcnQgbmV3IGlucHV0IGFmdGVyIGZvcm0uIik7CisgICAgZm9ybSA9IGNyZWF0ZUZvcm0oInRl
c3QxIik7CisgICAgaW5wdXQgPSBjcmVhdGVJbnB1dCgidGVzdDEiKTsKKyAgICBzaG91bGRCZSgn
Zm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRz
WzBdJywgJ2lucHV0Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1ZygiVGVz
dCAyOiBJbnNlcnQgdHdvIGZvcm1zIHdpdGggc2FtZSBpZC4iKTsKKyAgICBpbnB1dCA9IGNyZWF0
ZUlucHV0KCJ0ZXN0MiIpOworICAgIGZvcm0xID0gY3JlYXRlRm9ybSgidGVzdDIiKTsKKyAgICBm
b3JtMiA9IGNyZWF0ZUZvcm0oInRlc3QyIik7CisgICAgc2hvdWxkQmUoJ2Zvcm0xLmVsZW1lbnRz
Lmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0yLmVsZW1lbnRzLmxlbmd0aCcsICcw
Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0xLmVsZW1lbnRzWzBdJywgJ2lucHV0Jyk7Cit9OworCitm
dW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1ZygiVGVzdCAzOiBDaGFuZ2UgZm9ybSBpZC4iKTsK
KyAgICBmb3JtID0gY3JlYXRlRm9ybSgidGVzdDMtMSIpOworICAgIGlucHV0ID0gY3JlYXRlSW5w
dXQoInRlc3QzLTIiKTsKKyAgICBmb3JtLmlkID0gInRlc3QzLTIiOworICAgIHNob3VsZEJlKCdm
b3JtLmVsZW1lbnRzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNb
MF0nLCAnaW5wdXQnKTsKK307CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAgIGRlYnVnKCJUZXN0
IDQ6IE9yZGVyLiIpOworICAgIGlucHV0MSA9IGNyZWF0ZUlucHV0KCJ0ZXN0NCIpOworICAgIGlu
cHV0MiA9IGNyZWF0ZUlucHV0KCJ0ZXN0NCIpOworICAgIGZvcm0gPSBjcmVhdGVGb3JtKCJ0ZXN0
NCIpOworICAgIGlucHV0MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAg
Zm9ybS5hcHBlbmRDaGlsZChpbnB1dDMpOworICAgIGlucHV0NCA9IGNyZWF0ZUlucHV0KCJ0ZXN0
NCIpOworICAgIGlucHV0NSA9IGNyZWF0ZUlucHV0KCJ0ZXN0NCIpOworICAgIAorICAgIHNob3Vs
ZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICc1Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHNbMF0nLCAnaW5wdXQxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAn
aW5wdXQyJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMl0nLCAnaW5wdXQzJyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbM10nLCAnaW5wdXQ0Jyk7CisgICAgc2hvdWxkQmUo
J2Zvcm0uZWxlbWVudHNbNF0nLCAnaW5wdXQ1Jyk7CisKKyAgICBpbnB1dDIuc2V0QXR0cmlidXRl
KCJmb3JtIiwgIiIpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICc0Jyk7
CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7CisgICAgc2hvdWxk
QmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAnaW5wdXQzJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHNbMl0nLCAnaW5wdXQ0Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbM10nLCAn
aW5wdXQ1Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBmb3JtID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZm9ybSIpOworICAgIGZvcm0uaWQgPSAidGVzdDUiOworICAgIGZvcm0u
aW5uZXJIVE1MID0gIjx0ZXh0YXJlYSBpZD1cInRlc3Q1LWlucHV0MVwiPjwvdGV4dGFyZWE+PGlu
cHV0IGZvcm09dGVzdDUgaWQ9XCJ0ZXN0NS1pbnB1dDJcIj48c2VsZWN0IGlkPVwidGVzdDUtaW5w
dXQzXCI+IjsKKyAgICB0ZXN0LmFwcGVuZENoaWxkKGZvcm0pOworICAgIGlucHV0MSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NS1pbnB1dDEiKTsKKyAgICBpbnB1dDIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdDUtaW5wdXQyIik7CisgICAgaW5wdXQzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3Q1LWlucHV0MyIpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1l
bnRzLmxlbmd0aCcsICczJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5w
dXQxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAnaW5wdXQyJyk7CisgICAg
c2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMl0nLCAnaW5wdXQzJyk7Cit9OworCit0ZXN0MSgpOwor
dGVzdDIoKTsKK3Rlc3QzKCk7Cit0ZXN0NCgpOwordGVzdDUoKTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152174</attachid>
            <date>2012-07-13 00:46:38 -0700</date>
            <delta_ts>2012-07-13 01:23:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91042-20120713164636.patch</filename>
            <type>text/plain</type>
            <size>46916</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZjRiZjNmZmU5MTYzM2M3OGNhNDJjNzk3ZjBiOTBkNzZlMjk3OGM5Li4z
M2VkNGZiYTNjNTgzNTMwZWRlZWU3Yjc3ZDg0MDA1OGJlYjM5ZGNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzMgQEAKKzIwMTItMDctMTIgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgRm9ybSBvZiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgaXMgbm90IHVwZGF0
ZWQgd2hlbiBpZCB0YXJnZXQgY2hhbmdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUt
ZWxlbWVudC5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBJZFRhcmdl
dE9ic2VydmVyIGFuZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgY2xhc3MuCisgICAgICAgIFRo
ZXkgY2FuIGJlIHVzZWQgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgZWxlbWVudCB0aGF0IGFuIGlk
IGlzIHBvaW50aW5nIHRvICh0aGUgaWQgdGFyZ2V0KQorICAgICAgICBjaGFuZ2VzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS57aCxj
cHB9IGFuZCBJZFRhcmdldE9ic2VydmVyLntoLGNwcH0KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IERpdHRvLgorICAgICAgICAqIGRvbS9JZFRhcmdldE9ic2VydmVyLmNwcDogQWRkZWQuIFdoZW4g
eW91IHdhbnQgbm90aWZpZWQgb2YgY2hhbmdlcyB0byBhbiBpZCB0YXJnZXQsIHlvdSBzaG91bGQg
Y3JlYXRlIGEgbmV3IGNsYXNzIHRoYXQgaW5oZXJpdHMgdGhpcy4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlcjo6SWRUYXJnZXRPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyOjp+SWRUYXJnZXRPYnNlcnZlcik6
CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKElkVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcik6IFJlZ2lzdGVy
IGFuIElkVGFyZ2V0T2JzZXJ2ZXIgdG8gb2JzZXJ2ZSBhbiBpZCB0YXJnZXQuCisgICAgICAgIChX
ZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OnJlbW92ZU9ic2VydmVyKTogVW5yZWdp
c3RlcnMgYW4gSWRUYXJnZXRPYnNlcnZlciBmcm9tIG9ic2VydmluZy4KKyAgICAgICAgKFdlYkNv
cmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwpOgor
ICAgICAgICAqIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSk6CisgICAgICAg
IChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlm
eU9ic2VydmVycyk6IENhbGxzIGlkVGFyZ2V0Q2hhbmdlZCBvbiBhbGwgb2JzZXJ2ZXJzIGZvciBh
biBpZC4gSW5saW5pbmcgZmlyc3QgcGFydCBvZiBmdW5jdGlvbiBmb3IgcGVyZm9ybWFuY2UuCisg
ICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlk
KTogQ2FsbHMgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMgYmVjYXVz
ZSB0aGUgaWQgdGFyZ2V0IG1pZ2h0IGhhdmUgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6cmVtb3ZlRWxlbWVudEJ5SWQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vVHJlZVNj
b3BlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
aWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFRyZWVTY29wZSk6CisgICAgICAg
ICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOiBPYnNlcnZlciBmb3IgaWQgdGFyZ2V0
cyBkZWZpbmVkIGJ5IHRoZSBmb3JtIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0
T2JzZXJ2ZXIpOiBDcmVhdGVzIGFuZCBzZXRzIHVwIGEgbmV3IEZvcm1BdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29j
aWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6Omlk
VGFyZ2V0Q2hhbmdlZCk6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDoK
KyAgICAgICAgKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCk6CisgICAgICAgICogaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHA6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5oOgorICAgICAgICAo
Rm9ybUNvbnRyb2xsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1
dGUpOiBNb2RpZmllZCB0byB0YWtlIGEgcmFuZ2UuIEl0CisgICAgICAgIHNjYW5zIHRoZSByYW5n
ZSBhbmQgcmV0dXJucyB0aGUgaW5kZXggdG8gaW5zZXJ0IHRoZSBlbGVtZW50IGluIG1fYXNzb2Np
YXRlZEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVt
ZW50SW5kZXgpOiBNb2RpZmllZCB0byBvbmx5IHNjYW4gdGhlIGVsZW1lbnRzIGluCisgICAgICAg
IG1fYXNzb2NpYXRlZEVsZW1lbnQgdGhhdCBwcmVjZWRlIGFuZCBmb2xsb3cgdGhlIGZvcm0gZWxl
bWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZv
cm1FbGVtZW50KToKKwogMjAxMi0wNy0xMiAgRG9uZ3dvbyBJbSAgPGR3LmltQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIENvZGVHZW5lcmF0b3JKUy5wbSBuZWVkIHRvIGhhbmRsZSB0aGUgYXR0cmli
dXRlIHdoaWNoIGhhcyAiQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCIgb3B0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjMDJiMjExZTQxMjYxNzRmZmJkY2IyYWFkYWVjMGY4Zjgy
NjdlNWRjLi5jZTU4Njg4NjgyOWJmMTM5YmQ3ZjIzNzAwZGFjYzg3MWIxNTJkNWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNjEwLDYgKzYxMCw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAg
ICBkb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcAogICAgIGRvbS9HZW5lcmljRXZlbnRR
dWV1ZS5jcHAKICAgICBkb20vSWNvblVSTC5jcHAKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlci5j
cHAKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAogICAgIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKICAgICBkb20vTWVzc2FnZUV2
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNjNiMTcwYTA3MTEwYzky
N2E0N2Q3MGViOGY1NDlmMjkwMzRlOWRjOC4uNWFhNzMyMjEwNzAxYzYyY2QyMDJhNjI4NDViMDdm
ZWFlNTM3NzQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xOTQyLDYgKzE5
NDIsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJp
Y0V2ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vSWNvblVSTC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmggXAor
CVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDk0OTQxYjEyMGMyMzk5YjFmNWQ0NThhZjI1MTgzMmIyZDBkZmI1OWUuLmQzZTIz
NDE2OTQ0Y2M2MzI0M2M5Yzc1Yzg2MTU1MTBmODFkNWU0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTcz
LDYgKzU3Myw4IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuY3BwIFwKICAgICBkb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwIFwKICAgICBkb20vSWNvblVS
TC5jcHAgXAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyLmNwcCBcCisgICAgZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgXAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmNwcCBcCiAgICAg
ZG9tL01lc3NhZ2VDaGFubmVsLmNwcCBcCiAgICAgZG9tL01lc3NhZ2VFdmVudC5jcHAgXApAQCAt
MTc1OSw2ICsxNzYxLDggQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuaCBc
CiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbi5oIFwKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlci5oIFwKKyAgICBkb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmggXAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmggXAogICAgIGRv
bS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgZG9tL01lc3NhZ2VDaGFubmVsLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGUxYjAyMDQxOTQxZDBjZmEyNzVjZTZhZTBlNmY1NDY4NzQzNmI1
YjguLjBmOWM2ZjM1NDk1ZGUzNmI4ODBhYWRmZDE3MGNmZGFmZGEwMjYxZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTUxNzksNiArNTE3OSwxMCBAQAogICAgICAgICAgICAgJ2RvbS9JZ25vcmVEZXN0
cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oJywKICAgICAgICAgICAgICdkb20vSWNvblVS
TC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAorICAgICAgICAgICAgJ2RvbS9J
ZFRhcmdldE9ic2VydmVyLmNwcCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIu
aCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAnLAorICAg
ICAgICAgICAgJ2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAn
ZG9tL0tleWJvYXJkRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5NTExOGRjODdl
OTY5NmYyZDY5NmY0OTMwODcwMmM4ZGI0YWZkNzQzLi4wZDgyYWNhZjUyNTRlNTA5ZTEzMzM0ODBj
MWNhNzMxZmNkMDE1YWFhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNTExOTgsNiArNTExOTgsMTE4IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cSWNvblVSTC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAgCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRUYXJnZXRPYnNl
cnZlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KIAkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxkb21cSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKIAkJ
CQk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggM2IzYmIyZGY5YmQ0YWIxODYwNTM5NzJlZGNmZTc0MjQxMDIyZjc2ZC4uNzAwZjU5
M2UxYzUxYThkNTAzMDQwYzkwYzkzYjEwYWQ3MGUxYzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcyNCw2ICs1NzI0LDEw
IEBACiAJCUMzM0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlu
cHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5
cGUuY3BwICovOyB9OwogCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJs
ZVdpdGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtl
eUlucHV0VHlwZS5oICovOyB9OwogCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JD
aG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMzdDREVCQzE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzNDRjE3QTQx
NUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTAxNUIwMDYzRjAwMjc2RDM5IC8q
IElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovOyB9OworCQlDM0NGMTdBNTE1QjAwNjNGMDAyNzZEMzkg
LyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDM0NG
MTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0EyMTVCMDA2
M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9OworCQlDM0NG
MTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1QjAwNjNG
MDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYxMjExOUQyMzAwOEI0NkUw
IC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3Bw
ICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTUxMjEx
OUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3Rv
cmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAg
Ki87IH07CkBAIC0xMjk0Myw2ICsxMjk0NywxMCBAQAogCQlDMzNFRTVDMjE0RkI0OTYxMDAwMjA5
NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzNFRTVDMzE0RkI0OTYxMDAwMjA5NUEgLyog
QmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzM3Q0RFQkMxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3NlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNob29zZXJDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNDRjE3QTAxNUIwMDYzRjAwMjc2
RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMzQ0YxN0ExMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDM0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5RDIzMDA4
QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDQ3LDYgKzIxNDU1LDEwIEBA
CiAJCQkJODQ4MkI3NDQxMTk4QzMyRTAwQkZCMDA1IC8qIEhhc2hDaGFuZ2VFdmVudC5pZGwgKi8s
CiAJCQkJNDUwOTlDNDAxMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwICovLAogCQkJCTQ1
QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8sCisJCQkJQzNDRjE3QTAxNUIw
MDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovLAorCQkJCUMzQ0YxN0ExMTVC
MDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8sCisJCQkJQzNDRjE3QTIxNUIw
MDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8sCisJCQkJQzND
RjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovLAog
CQkJCThBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291
bnRJbmNyZW1lbnRlci5oICovLAogCQkJCTg1MDMxQjJEMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXli
b2FyZEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyRTBBNDRFRkM3MDBGOTkyRTAgLyogS2V5Ym9h
cmRFdmVudC5oICovLApAQCAtMjUxOTMsNiArMjUyMDUsOCBAQAogCQkJCUUxQkU1MTJFMENGNkM1
MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0Uy
RTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4MjUwLDYgKzI4MjY0LDggQEAKIAkJCQlFMUJF
NTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDM0NGMTdBNDE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNl
cnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyog
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmYWRkMzhmOTA4MTRjOTkxNjAz
YzBlMjI1Y2U5MGQ4OGNhYzQxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vSWRUYXJnZXRPYnNlcnZlci5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSWRUYXJnZXRPYnNlcnZlci5oIgorCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSWRUYXJnZXRPYnNlcnZlcjo6SWRU
YXJnZXRPYnNlcnZlcihJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkmIHJlZ2lzdHJ5LCBjb25zdCBB
dG9taWNTdHJpbmcmIGlkKQorICAgIDogbV9yZWdpc3RyeSgmcmVnaXN0cnkpCisgICAgLCBtX2lk
KGlkKQoreworICAgIG1fcmVnaXN0cnktPmFkZE9ic2VydmVyKG1faWQsIHRoaXMpOworfQorCitJ
ZFRhcmdldE9ic2VydmVyOjp+SWRUYXJnZXRPYnNlcnZlcigpCit7CisgICAgaWYgKG1fcmVnaXN0
cnkpCisgICAgICAgIG1fcmVnaXN0cnktPnJlbW92ZU9ic2VydmVyKG1faWQsIHRoaXMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SWRUYXJnZXRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mOTAwN2M0NzgwMjVmODBiNDk3YWZhYTJiMGQ5NTQxMWFlNjY4NWI1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaApA
QCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSWRUYXJnZXRPYnNlcnZlcl9oCisjZGVmaW5lIElkVGFyZ2V0T2JzZXJ2
ZXJfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OworCitjbGFzcyBJZFRh
cmdldE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JZFRhcmdldE9ic2VydmVyKCk7
CisgICAgdmlydHVhbCB2b2lkIGlkVGFyZ2V0Q2hhbmdlZCgpID0gMDsKKworcHJvdGVjdGVkOgor
ICAgIElkVGFyZ2V0T2JzZXJ2ZXIoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5JiwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZCk7CisKK3ByaXZhdGU6CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
KiBtX3JlZ2lzdHJ5OworICAgIEF0b21pY1N0cmluZyBtX2lkOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSWRUYXJnZXRPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYzI2
YWNmZWUzMzJlYjdkMmQ2MTliYTU5MjBjNzMzZjViYjBmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMCwwICsx
LDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIK
KworI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzT3duUHRyPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4gSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5KCkpOworfQorCit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRk
T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciogb2JzZXJ2
ZXIpCit7CisgICAgaWYgKGlkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVnaXN0cnkuYWRkKGlk
LmltcGwoKSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGFkb3B0UHRyKG5ldyBPYnNlcnZlclNldCgpKTsKKwor
ICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5hZGQob2JzZXJ2ZXIpOworfQorCit2b2lkIElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6cmVtb3ZlT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCwgSWRUYXJnZXRPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGlkLmlzRW1wdHko
KSB8fCBtX3JlZ2lzdHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSWRUb09i
c2VydmVyU2V0TWFwOjppdGVyYXRvciBpdGVyID0gbV9yZWdpc3RyeS5maW5kKGlkLmltcGwoKSk7
CisKKyAgICBPYnNlcnZlclNldCogc2V0ID0gaXRlci0+c2Vjb25kLmdldCgpOworICAgIHNldC0+
cmVtb3ZlKG9ic2VydmVyKTsKKyAgICBpZiAoc2V0LT5pc0VtcHR5KCkgJiYgc2V0ICE9IG1fbm90
aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQpCisgICAgICAgIG1fcmVnaXN0cnkucmVtb3ZlKGl0ZXIpOwor
fQorCit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzSW50ZXJu
YWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKK3sKKyAgICBBU1NFUlQoIWlkLmlzRW1wdHkoKSk7
CisgICAgQVNTRVJUKCFtX3JlZ2lzdHJ5LmlzRW1wdHkoKSk7CisKKyAgICBtX25vdGlmeWluZ09i
c2VydmVyc0luU2V0ID0gbV9yZWdpc3RyeS5nZXQoaWQuaW1wbCgpKTsKKyAgICBpZiAoIW1fbm90
aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxJZFRh
cmdldE9ic2VydmVyKj4gY29weTsKKyAgICBjb3B5VG9WZWN0b3IoKm1fbm90aWZ5aW5nT2JzZXJ2
ZXJzSW5TZXQsIGNvcHkpOworICAgIGZvciAoVmVjdG9yPElkVGFyZ2V0T2JzZXJ2ZXIqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjb3B5LmJlZ2luKCk7IGl0ICE9IGNvcHkuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgaWYgKG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQtPmNvbnRhaW5zKCppdCkpCisg
ICAgICAgICAgICAoKml0KS0+aWRUYXJnZXRDaGFuZ2VkKCk7CisgICAgfQorCisgICAgaWYgKG1f
bm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQtPmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZWdpc3RyeS5y
ZW1vdmUoaWQuaW1wbCgpKTsKKworICAgIG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQgPSAwOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJhNzU1MjEwMGU0ZTk3ZTBmNjc3OGEy
OWRkNGY3YWI0ZDQ1MzAxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9J
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5X2gKKyNkZWZpbmUgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5X2gKKworI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSWRU
YXJnZXRPYnNlcnZlcjsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5IHsKKyAgICBm
cmllbmQgY2xhc3MgSWRUYXJnZXRPYnNlcnZlcjsKKworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
T3duUHRyPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4gY3JlYXRlKCk7CisgICAgdm9pZCBub3Rp
ZnlPYnNlcnZlcnMoY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CisKK3ByaXZhdGU6CisgICAgSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkgOiBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0KDApIHsg
fQorICAgIHZvaWQgYWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRP
YnNlcnZlciopOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwo
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CisKKyAgICB0eXBlZGVmIEhhc2hTZXQ8SWRUYXJnZXRP
YnNlcnZlcio+IE9ic2VydmVyU2V0OworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJ
bXBsKiwgT3duUHRyPE9ic2VydmVyU2V0PiA+IElkVG9PYnNlcnZlclNldE1hcDsKKyAgICBJZFRv
T2JzZXJ2ZXJTZXRNYXAgbV9yZWdpc3RyeTsKKyAgICBPYnNlcnZlclNldCogbV9ub3RpZnlpbmdP
YnNlcnZlcnNJblNldDsKK307CisKK2lubGluZSB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCit7CisgICAgQVNTRVJU
KCFtX25vdGlmeWluZ09ic2VydmVyc0luU2V0KTsKKyAgICBpZiAoaWQuaXNFbXB0eSgpIHx8IG1f
cmVnaXN0cnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnNJbnRlcm5hbChpZCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IGJmMDQ5YjFkYWIwMjFiYzg1YmQ1NjY2OWFjYjBkYzQz
NjA5NWMyNDMuLmU4OGIxM2FiODhlNzVlYTEzNDcxZDQ5MGQ2ZDllMzZiOTM5Yzc5MTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSFRNTEZy
YW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCkBAIC01NCw2ICs1NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiBUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkKICAgICA6IG1f
cm9vdE5vZGUocm9vdE5vZGUpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9p
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUo
KSkKIHsKICAgICBBU1NFUlQocm9vdE5vZGUpOwogfQpAQCAtOTIsMTEgKzk0LDEzIEBAIEVsZW1l
bnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50
SWQpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgbV9lbGVtZW50c0J5SWQu
YWRkKGVsZW1lbnRJZC5pbXBsKCksIGVsZW1lbnQpOworICAgIG1faWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKIH0KIAogdm9pZCBUcmVlU2NvcGU6
OnJlbW92ZUVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkLCBFbGVtZW50
KiBlbGVtZW50KQogewogICAgIG1fZWxlbWVudHNCeUlkLnJlbW92ZShlbGVtZW50SWQuaW1wbCgp
LCBlbGVtZW50KTsKKyAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2
ZXJzKGVsZW1lbnRJZCk7CiB9CiAKIE5vZGUqIFRyZWVTY29wZTo6YW5jZXN0b3JJblRoaXNTY29w
ZShOb2RlKiBub2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IDc3ZTIzMDdjMTVj
NmNmZTQ4NGE2OThkNmNjOTQ0ZjllNTViY2Y1ZDQuLjg0MWJiYjZjMWNiYjljYzE5NmYwMTk0MjA4
YzRhNzBlOTgyMWQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTM2LDYgKzM2LDcgQEAg
Y2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERPTVNlbGVjdGlvbjsKIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKK2NsYXNzIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTsK
IGNsYXNzIE5vZGU7CiAKIC8vIEEgY2xhc3Mgd2hpY2ggaW5oZXJpdHMgYm90aCBOb2RlIGFuZCBU
cmVlU2NvcGUgbXVzdCBjYWxsIGNsZWFyUmFyZURhdGEoKSBpbiBpdHMgZGVzdHJ1Y3RvcgpAQCAt
NzgsNiArNzksOCBAQCBwdWJsaWM6CiAKICAgICBDb250YWluZXJOb2RlKiByb290Tm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7IH0KIAorICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eSYgaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkgY29uc3QgeyByZXR1cm4gKm1faWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmdldCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBUcmVlU2NvcGUoQ29u
dGFpbmVyTm9kZSopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwpAQCAtOTEsNiArOTQsOCBA
QCBwcml2YXRlOgogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKICAgICBE
b2N1bWVudE9yZGVyZWRNYXAgbV9pbWFnZU1hcHNCeU5hbWU7CiAKKyAgICBPd25QdHI8SWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5PiBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTsKKwogICAgIG11
dGFibGUgUmVmUHRyPERPTVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggMjE3OTFmMDk2MGFl
NDdjOGYxOGU5YmYzMGIxMWNkN2E2N2Y2ODQ1My4uYmQ3N2QxMDQxMDhlZjJiYmUxMDBiNTE1ZGFl
NmI2YmIwYzliMzVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2Np
YXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmNwcApAQCAtMzAsMTIgKzMwLDI0IEBACiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyLmgiCiAjaW5jbHVkZSAiVmFsaWRpdHlTdGF0
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKK2NsYXNzIEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA6IElkVGFyZ2V0T2JzZXJ2ZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCopOworICAgIHZpcnR1YWwgdm9pZCBpZFRhcmdldENoYW5nZWQoKSBPVkVSUklERTsKKworcHJp
dmF0ZToKKyAgICBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCwgRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7CisKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQqIG1fZWxlbWVudDsKK307CisKIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Rm9ybUFzc29jaWF0
ZWRFbGVtZW50KCkKICAgICA6IG1fZm9ybSgwKQogewpAQCAtNTgsNyArNzAsNyBAQCB2b2lkIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERv
Y3VtZW50KQogewogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlz
KTsKICAgICBpZiAob2xkRG9jdW1lbnQgJiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3Jt
QXR0cikpCi0gICAgICAgIG9sZERvY3VtZW50LT5mb3JtQ29udHJvbGxlcigpLT51bnJlZ2lzdGVy
Rm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgcmVzZXRGb3JtQXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKIH0KIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6
Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKQEAgLTY5LDE0ICs4
MSwxNCBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqIGluc2VydGlvblBvaW50KQogCiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hU
TUxFbGVtZW50KHRoaXMpOwogICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1B
dHRyKSkKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+cmVn
aXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKHRoaXMpOworICAgICAgICByZXNldEZv
cm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAg
SFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOwogICAgIGlmIChpbnNl
cnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmIGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9y
bUF0dHIpKQotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT5mb3JtQ29udHJvbGxlcigpLT51
bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgbV9m
b3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwogICAgIC8vIElmIHRoZSBmb3Jt
IGFuZCBlbGVtZW50IGFyZSBib3RoIGluIHRoZSBzYW1lIHRyZWUsIHByZXNlcnZlIHRoZSBjb25u
ZWN0aW9uIHRvIHRoZSBmb3JtLgogICAgIC8vIE90aGVyd2lzZSwgbnVsbCBvdXQgb3VyIGZvcm0g
YW5kIHJlbW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgZm9ybSdzIGxpc3Qgb2YgZWxlbWVudHMuCiAg
ICAgaWYgKG1fZm9ybSAmJiBlbGVtZW50LT5oaWdoZXN0QW5jZXN0b3IoKSAhPSBtX2Zvcm0tPmhp
Z2hlc3RBbmNlc3RvcigpKQpAQCAtMTUzLDkgKzE2NSwxMSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNoYW5nZWQoKQogICAgIGlmICghZWxlbWVudC0+ZmFzdEhh
c0F0dHJpYnV0ZShmb3JtQXR0cikpIHsKICAgICAgICAgLy8gVGhlIGZvcm0gYXR0cmlidXRlIHJl
bW92ZWQuIFdlIG5lZWQgdG8gcmVzZXQgZm9ybSBvd25lciBoZXJlLgogICAgICAgICBzZXRGb3Jt
KGVsZW1lbnQtPmZpbmRGb3JtQW5jZXN0b3IoKSk7Ci0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50
KCktPmZvcm1Db250cm9sbGVyKCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmli
dXRlKHRoaXMpOwotICAgIH0gZWxzZQorICAgICAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlciA9IG51bGxwdHI7CisgICAgfSBlbHNlIHsKICAgICAgICAgcmVzZXRGb3JtT3duZXIoKTsK
KyAgICAgICAgcmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKKyAgICB9CiB9CiAK
IGJvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21FcnJvcigpIGNvbnN0CkBAIC0yMjEs
NiArMjM1LDE2IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0
eShjb25zdCBTdHJpbmcmIGVycm9yKQogICAgIG1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgPSBl
cnJvcjsKIH0KIAordm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyKCkKK3sKKyAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9
IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6Y3JlYXRlKHRvSFRNTEVsZW1lbnQodGhpcykt
PmZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0dHIpLCB0aGlzKTsKK30KKwordm9pZCBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKK3sKKyAgICByZXNldEZv
cm1Pd25lcigpOworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6bmFtZSgpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gdG9IVE1M
RWxlbWVudCh0aGlzKS0+Z2V0TmFtZUF0dHJpYnV0ZSgpOwpAQCAtMjQyLDQgKzI2NiwyMCBAQCBI
VE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0
ZWRFbGVtZW50KQogICAgIHJldHVybiBjb25zdF9jYXN0PEhUTUxFbGVtZW50Kj4odG9IVE1MRWxl
bWVudChzdGF0aWNfY2FzdDxjb25zdCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPihhc3NvY2lhdGVk
RWxlbWVudCkpKTsKIH0KIAorUGFzc093blB0cjxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+
IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcihpZCwgZWxlbWVudCkpOworfQorCitG
b3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcihj
b25zdCBBdG9taWNTdHJpbmcmIGlkLCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCisg
ICAgOiBJZFRhcmdldE9ic2VydmVyKHRvSFRNTEVsZW1lbnQoZWxlbWVudCktPnRyZWVTY29wZSgp
LT5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKSwgaWQpCisgICAgLCBtX2VsZW1lbnQoZWxlbWVu
dCkKK3sKK30KKwordm9pZCBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OmlkVGFyZ2V0Q2hh
bmdlZCgpCit7CisgICAgbV9lbGVtZW50LT5mb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNz
b2NpYXRlZEVsZW1lbnQuaAppbmRleCA1YTQ3ZWEwNzZkYjJhNzRlZjUwZTk0NTY1YWU3Y2I0ZjBi
YTUwMjExLi43ZDQzNGYwMDE3MTI1ZDExMGM4MTBkYTkyZmI3NmM0NDRlMmJjODU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKQEAgLTI4LDYgKzI4LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXI7CiBjbGFzcyBGb3JtRGF0YUxpc3Q7CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiBjbGFz
cyBWYWxpZGF0aW9uTWVzc2FnZTsKQEAgLTc5LDYgKzgwLDkgQEAgcHVibGljOgogICAgIGJvb2wg
dmFsaWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3Qg
U3RyaW5nJik7CiAKKyAgICB2b2lkIHJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7
CisgICAgdm9pZCBmb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAKQEAgLTEwMSw2ICsxMDUsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCByZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRlcmVmRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgPSAwOwogCisgICAgT3du
UHRyPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4gbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXI7CiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgT3duUHRyPFZhbGlkaXR5
U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsKICAgICBTdHJpbmcgbV9jdXN0b21WYWxpZGF0aW9uTWVz
c2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggOTQxMDdhNjZm
NGYxODk4M2MyOWFmYTg3ZjEyMjlmODM4YWZhNTk4MS4uNmIyOWI2ZmU3YzA3YTEzY2JkMTkwYmNk
YmE0Yzk3ODBiZDJmYzhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
QEAgLTI0MCwyNSArMjQwLDYgQEAgdm9pZCBGb3JtQ29udHJvbGxlcjo6d2lsbERlbGV0ZUZvcm0o
SFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3ItPndpbGxE
ZWxldGVGb3JtKGZvcm0pOwogfQogCi12b2lkIEZvcm1Db250cm9sbGVyOjpyZWdpc3RlckZvcm1F
bGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50KQot
ewotICAgIEFTU0VSVCh0b0hUTUxFbGVtZW50KGVsZW1lbnQpLT5mYXN0SGFzQXR0cmlidXRlKGZv
cm1BdHRyKSk7Ci0gICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5hZGQoZWxlbWVu
dCk7Ci19Ci0KLXZvaWQgRm9ybUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhG
b3JtQXR0cmlidXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBtX2Zv
cm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLnJlbW92ZShlbGVtZW50KTsKLX0KLQotdm9pZCBG
b3JtQ29udHJvbGxlcjo6cmVzZXRGb3JtRWxlbWVudHNPd25lcigpCi17Ci0gICAgdHlwZWRlZiBG
b3JtQXNzb2NpYXRlZEVsZW1lbnRMaXN0SGFzaFNldDo6aXRlcmF0b3IgSXRlcmF0b3I7Ci0gICAg
SXRlcmF0b3IgZW5kID0gbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5lbmQoKTsKLSAg
ICBmb3IgKEl0ZXJhdG9yIGl0ID0gbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZS5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5yZXNldEZvcm1Pd25lcigpOwot
fQotCiBGb3JtRWxlbWVudEtleTo6Rm9ybUVsZW1lbnRLZXkoQXRvbWljU3RyaW5nSW1wbCogbmFt
ZSwgQXRvbWljU3RyaW5nSW1wbCogdHlwZSwgQXRvbWljU3RyaW5nSW1wbCogZm9ybUtleSkKICAg
ICA6IG1fbmFtZShuYW1lKQogICAgICwgbV90eXBlKHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmgKaW5kZXggZTE1YzFkYzI0YTk4MGY2NDQ3YTk4YjJlMzI2ZDE5NmQ2ZTM2MzJh
Mi4uZTk4ZDFhMDQ5Y2MwOWJkNzFjZmYwZDkyN2FmNGE0YzU4NWVjZjNmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUNvbnRyb2xsZXIuaApAQCAtMTMyLDEwICsxMzIsNiBAQCBwdWJsaWM6CiAgICAg
Rm9ybUNvbnRyb2xTdGF0ZSB0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlJik7CiAgICAgdm9pZCB3aWxsRGVsZXRlRm9ybShIVE1MRm9y
bUVsZW1lbnQqKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmli
dXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOwotICAgIHZvaWQgdW5yZWdpc3RlckZvcm1FbGVt
ZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7Ci0gICAgdm9pZCBy
ZXNldEZvcm1FbGVtZW50c093bmVyKCk7Ci0KIHByaXZhdGU6CiAgICAgRm9ybUNvbnRyb2xsZXIo
KTsKIApAQCAtMTQzLDggKzEzOSw2IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIExpc3RIYXNo
U2V0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUqLCA2ND4gRm9ybUVsZW1lbnRMaXN0
SGFzaFNldDsKICAgICBGb3JtRWxlbWVudExpc3RIYXNoU2V0IG1fZm9ybUVsZW1lbnRzV2l0aFN0
YXRlOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dD4sIDMyPiBGb3JtQXNzb2NpYXRlZEVsZW1lbnRMaXN0SGFzaFNldDsKLSAgICBGb3JtQXNzb2Np
YXRlZEVsZW1lbnRMaXN0SGFzaFNldCBtX2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlOwog
CiAgICAgdHlwZWRlZiBIYXNoTWFwPEZvcm1FbGVtZW50S2V5LCBEZXF1ZTxGb3JtQ29udHJvbFN0
YXRlPiwgRm9ybUVsZW1lbnRLZXlIYXNoLCBGb3JtRWxlbWVudEtleUhhc2hUcmFpdHM+IEZvcm1F
bGVtZW50U3RhdGVNYXA7CiAgICAgRm9ybUVsZW1lbnRTdGF0ZU1hcCBtX3N0YXRlRm9yTmV3Rm9y
bUVsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDNj
OGJiMDczY2ZmNzBlMGI0ODcwOTA0NjRjMDgxMDI5ZWMyNTE3MjUuLjJmNTMyMWFkMjEwYzU0ODZi
MmNkOThhN2E5YjJkNDExOGU0NTk1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAKQEAgLTE0MSwxNCArMTQxLDYgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBIVE1MRm9ybUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKgogICAg
IHJldHVybiBJbnNlcnRpb25Eb25lOwogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6ZGlkTm90
aWZ5RGVzY2VuZGFudEluc2VydGlvbnMoQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCi17
Ci0gICAgQVNTRVJUKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwotICAgIEhUTUxFbGVt
ZW50OjpkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhpbnNlcnRpb25Qb2ludCk7Ci0gICAg
aWYgKGhhc0lEKCkpCi0gICAgICAgIGRvY3VtZW50KCktPmZvcm1Db250cm9sbGVyKCktPnJlc2V0
Rm9ybUVsZW1lbnRzT3duZXIoKTsKLX0KLQogc3RhdGljIGlubGluZSBOb2RlKiBmaW5kUm9vdChO
b2RlKiBuKQogewogICAgIE5vZGUqIHJvb3QgPSBuOwpAQCAtMTY0LDggKzE1Niw2IEBAIHZvaWQg
SFRNTEZvcm1FbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUo
KTsgKytpKQogICAgICAgICBhc3NvY2lhdGVkRWxlbWVudHNbaV0tPmZvcm1SZW1vdmVkRnJvbVRy
ZWUocm9vdCk7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsK
LSAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAmJiBoYXNJRCgpKQotICAgICAg
ICBkb2N1bWVudCgpLT5mb3JtQ29udHJvbGxlcigpLT5yZXNldEZvcm1FbGVtZW50c093bmVyKCk7
CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZl
bnQpCkBAIC00MzYsMzMgKzQyNiwzMyBAQCB0ZW1wbGF0ZTxjbGFzcyBULCBzaXplX3Qgbj4gc3Rh
dGljIHZvaWQgcmVtb3ZlRnJvbVZlY3RvcihWZWN0b3I8VCosIG4+ICYgdmVjLCBUKgogICAgICAg
ICB9CiB9CiAKLXVuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhG
b3JtQXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQpCit1bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6
OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50LCB1bnNp
Z25lZCByYW5nZVN0YXJ0LCB1bnNpZ25lZCByYW5nZUVuZCkKIHsKLSAgICAvLyBDb21wYXJlcyB0
aGUgcG9zaXRpb24gb2YgdGhlIGZvcm0gZWxlbWVudCBhbmQgdGhlIGluc2VydGVkIGVsZW1lbnQu
Ci0gICAgLy8gVXBkYXRlcyB0aGUgaW5kZWNlcyBpbiBvcmRlciB0byB0aGUgcmVsYXRpb24gb2Yg
dGhlIHBvc2l0aW9uOgotICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9uID0gY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24oZWxlbWVudCk7Ci0gICAgaWYgKHBvc2l0aW9uICYgKERPQ1VNRU5UX1BPU0lU
SU9OX0NPTlRBSU5TIHwgRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKSkKLSAgICAgICAg
KyttX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7Ci0gICAgZWxzZSBpZiAocG9zaXRpb24g
JiBET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpIHsKLSAgICAgICAgKyttX2Fzc29jaWF0ZWRF
bGVtZW50c0JlZm9yZUluZGV4OwotICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJ
bmRleDsKLSAgICB9Ci0KICAgICBpZiAobV9hc3NvY2lhdGVkRWxlbWVudHMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKIAorICAgIEFTU0VSVChyYW5nZVN0YXJ0IDw9IHJhbmdlRW5kKTsK
KworICAgIGlmIChyYW5nZVN0YXJ0ID09IHJhbmdlRW5kKQorICAgICAgICByZXR1cm4gcmFuZ2VT
dGFydDsKKworICAgIHVuc2lnbmVkIGxlZnQgPSByYW5nZVN0YXJ0OworICAgIHVuc2lnbmVkIHJp
Z2h0ID0gcmFuZ2VFbmQgLSAxOworICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9uOworCiAgICAg
Ly8gRG9lcyBiaW5hcnkgc2VhcmNoIG9uIG1fYXNzb2NpYXRlZEVsZW1lbnRzIGluIG9yZGVyIHRv
IGZpbmQgdGhlIGluZGV4CiAgICAgLy8gdG8gYmUgaW5zZXJ0ZWQuCi0gICAgdW5zaWduZWQgbGVm
dCA9IDAsIHJpZ2h0ID0gbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpIC0gMTsKICAgICB3aGls
ZSAobGVmdCAhPSByaWdodCkgewogICAgICAgICB1bnNpZ25lZCBtaWRkbGUgPSBsZWZ0ICsgKChy
aWdodCAtIGxlZnQpIC8gMik7CisgICAgICAgIEFTU0VSVChtaWRkbGUgPCBtX2Fzc29jaWF0ZWRF
bGVtZW50c0JlZm9yZUluZGV4IHx8IG1pZGRsZSA+PSBtX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVy
SW5kZXgpOwogICAgICAgICBwb3NpdGlvbiA9IGVsZW1lbnQtPmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKHRvSFRNTEVsZW1lbnQobV9hc3NvY2lhdGVkRWxlbWVudHNbbWlkZGxlXSkpOwogICAgICAg
ICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpCiAgICAgICAgICAg
ICByaWdodCA9IG1pZGRsZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbGVmdCA9IG1pZGRs
ZSArIDE7CiAgICAgfQotCisgICAgCisgICAgQVNTRVJUKGxlZnQgPCBtX2Fzc29jaWF0ZWRFbGVt
ZW50c0JlZm9yZUluZGV4IHx8IGxlZnQgPj0gbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4
KTsKICAgICBwb3NpdGlvbiA9IGVsZW1lbnQtPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRvSFRN
TEVsZW1lbnQobV9hc3NvY2lhdGVkRWxlbWVudHNbbGVmdF0pKTsKICAgICBpZiAocG9zaXRpb24g
JiBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpCiAgICAgICAgIHJldHVybiBsZWZ0OwpAQCAt
NDc0LDggKzQ2NCwxNiBAQCB1bnNpZ25lZCBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5k
ZXgoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbQogICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChhc3NvY2lhdGVkRWxlbWVudCk7CiAgICAgLy8gVHJl
YXRzIHNlcGFyYXRlbHkgdGhlIGNhc2Ugd2hlcmUgdGhpcyBlbGVtZW50IGhhcyB0aGUgZm9ybSBh
dHRyaWJ1dGUKICAgICAvLyBmb3IgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbi4KLSAgICBpZiAo
ZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCi0gICAgICAgIHJldHVybiBmb3Jt
RWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoZWxlbWVudCk7CisgICAgaWYgKGVsZW1lbnQt
PmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IHBv
c2l0aW9uID0gY29tcGFyZURvY3VtZW50UG9zaXRpb24oZWxlbWVudCk7CisgICAgICAgIGlmIChw
b3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORykgeworICAgICAgICAgICAgKytt
X2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OworICAgICAgICAgICAgKyttX2Fzc29jaWF0
ZWRFbGVtZW50c0FmdGVySW5kZXg7CisgICAgICAgICAgICByZXR1cm4gSFRNTEZvcm1FbGVtZW50
Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoZWxlbWVudCwgMCwgbV9hc3NvY2lh
dGVkRWxlbWVudHNCZWZvcmVJbmRleCAtIDEpOworICAgICAgICB9CisgICAgICAgIGlmIChwb3Np
dGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyAmJiAhKHBvc2l0aW9uICYgRE9DVU1F
TlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKSkKKyAgICAgICAgICAgIHJldHVybiBIVE1MRm9ybUVs
ZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShlbGVtZW50LCBtX2Fzc29j
aWF0ZWRFbGVtZW50c0FmdGVySW5kZXgsIG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKSk7Cisg
ICAgfQogCiAgICAgLy8gQ2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhpcyBlbGVt
ZW50IGlzIHRoZSB2ZXJ5IGxhc3QgdGhpbmcgaW4KICAgICAvLyB0aGUgZm9ybSdzIHRyZWUgb2Yg
Y2hpbGRyZW47IHdlIGRvbid0IHdhbnQgdG8gd2FsayB0aGUgZW50aXJlIHRyZWUgaW4gdGhhdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggZWU5Y2NmMzliN2ExNjRmZWE0
Y2E3ZWQwYTdiYTkxYjQxMTM1ZTJmYS4uNmY3YTg2M2Q4ZGNkZWQyZDVmYzk1NDM1NjhhZjExMjli
Yjc5ZmZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC0xMTksNyAr
MTE5LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmlj
YXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50Kik7
CkBAIC0xMzUsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3VibWl0KEV2ZW50Kiwg
Ym9vbCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIEZv
cm1TdWJtaXNzaW9uVHJpZ2dlcik7CiAKLSAgICB1bnNpZ25lZCBmb3JtRWxlbWVudEluZGV4V2l0
aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCopOworICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXhX
aXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiwgdW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWduZWQg
cmFuZ2VFbmQpOwogICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXgoRm9ybUFzc29jaWF0ZWRF
bGVtZW50Kik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHN1Ym1pc3Npb24gc2hvdWxk
IHByb2NlZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMjFmODY4YTA3ZDgyNWNkNzY4MDhiZmMyNWRkNzBjNzZjOGYxZWQ1
MC4uMDViYjBiMDU5MjU1NWYxNmVkZjdlODRhYTkxYjllNDdjOGI2ZmZjOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTA3LTEzICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZvcm0gb2YgRm9ybUFzc29jaWF0ZWRFbGVtZW50IGlzIG5vdCB1cGRhdGVk
IHdoZW4gaWQgdGFyZ2V0IGNoYW5nZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTA0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNo
IGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0
aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1h
dHRyaWJ1dGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMTItMDct
MTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgcHJvcGVy
dHkgYWNjZXNzIHN0dWJzIHNob3VsZCB1c2Ugc3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2lu
dHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmli
dXRlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUt
Zm9ybS1hdHRyaWJ1dGUtZWxlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk1OGU2NzI5
YzI4YWUzOWRiOTBhMTkxMDljOTgyMDdiZWI1OTU5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzYgQEAKK1Rlc3QgZm9yIHRoZSBkYXRhbGlzdCBlbGVtZW50LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdCAxOiBJbnNlcnQgbmV3IGlucHV0IGFm
dGVyIGZvcm0uCitQQVNTIGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybS5lbGVt
ZW50c1swXSBpcyBpbnB1dAorVGVzdCAyOiBJbnNlcnQgdHdvIGZvcm1zIHdpdGggc2FtZSBpZC4K
K1BBU1MgZm9ybTEuZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybTIuZWxlbWVudHMubGVu
Z3RoIGlzIDAKK1BBU1MgZm9ybTEuZWxlbWVudHNbMF0gaXMgaW5wdXQKK1Rlc3QgMzogQ2hhbmdl
IGZvcm0gaWQuCitQQVNTIGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1MgZm9ybS5lbGVt
ZW50c1swXSBpcyBpbnB1dAorVGVzdCA0OiBPcmRlci4KK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5n
dGggaXMgNQorUEFTUyBmb3JtLmVsZW1lbnRzWzBdIGlzIGlucHV0MQorUEFTUyBmb3JtLmVsZW1l
bnRzWzFdIGlzIGlucHV0MgorUEFTUyBmb3JtLmVsZW1lbnRzWzJdIGlzIGlucHV0MworUEFTUyBm
b3JtLmVsZW1lbnRzWzNdIGlzIGlucHV0NAorUEFTUyBmb3JtLmVsZW1lbnRzWzRdIGlzIGlucHV0
NQorUEFTUyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyA0CitQQVNTIGZvcm0uZWxlbWVudHNbMF0g
aXMgaW5wdXQxCitQQVNTIGZvcm0uZWxlbWVudHNbMV0gaXMgaW5wdXQzCitQQVNTIGZvcm0uZWxl
bWVudHNbMl0gaXMgaW5wdXQ0CitQQVNTIGZvcm0uZWxlbWVudHNbM10gaXMgaW5wdXQ1CitUZXN0
IDU6IEFkZCBuZXcgZWxlbWVudCB3aXRoIGZvcm0gYXR0cmlidXRlIHRvIHRoZSBmb3JtLgorUEFT
UyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAzCitQQVNTIGZvcm0uZWxlbWVudHNbMF0gaXMgaW5w
dXQxCitQQVNTIGZvcm0uZWxlbWVudHNbMV0gaXMgaW5wdXQyCitQQVNTIGZvcm0uZWxlbWVudHNb
Ml0gaXMgaW5wdXQzCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1h
dHRyaWJ1dGUtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZm9y
bS1hdHRyaWJ1dGUtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExY2FlMWU4NTkzMjVhYjFiYjgx
NzNiNGE0MmQ4MDJlZTM1YzdmODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSwxMDcg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0IiBzdHlsZT0iZGlz
cGxheTpub25lOyI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBmb3IgdGhl
IGRhdGFsaXN0IGVsZW1lbnQuJyk7CisKK3ZhciB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0Iik7CisKK2Z1bmN0aW9uIGNyZWF0ZUZvcm0oaWQpIHsKKyAgICB2YXIg
Zm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTsKKyAgICBmb3JtLmlkID0gaWQ7
CisgICAgdGVzdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZm9ybSk7CisgICAgcmV0dXJuIGZvcm07Cit9
OworCitmdW5jdGlvbiBjcmVhdGVJbnB1dChmb3JtKSB7CisgICAgdmFyIGlucHV0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImZvcm0i
LCBmb3JtKTsKKyAgICB0ZXN0RWxlbWVudC5hcHBlbmRDaGlsZChpbnB1dCk7CisgICAgcmV0dXJu
IGlucHV0OworfTsKKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWcoIlRlc3QgMTogSW5z
ZXJ0IG5ldyBpbnB1dCBhZnRlciBmb3JtLiIpOworICAgIGZvcm0gPSBjcmVhdGVGb3JtKCJ0ZXN0
MSIpOworICAgIGlucHV0ID0gY3JlYXRlSW5wdXQoInRlc3QxIik7CisgICAgc2hvdWxkQmUoJ2Zv
cm0uZWxlbWVudHMubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1sw
XScsICdpbnB1dCcpOworfTsKKworZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgZGVidWcoIlRlc3Qg
MjogSW5zZXJ0IHR3byBmb3JtcyB3aXRoIHNhbWUgaWQuIik7CisgICAgaW5wdXQgPSBjcmVhdGVJ
bnB1dCgidGVzdDIiKTsKKyAgICBmb3JtMSA9IGNyZWF0ZUZvcm0oInRlc3QyIik7CisgICAgZm9y
bTIgPSBjcmVhdGVGb3JtKCJ0ZXN0MiIpOworICAgIHNob3VsZEJlKCdmb3JtMS5lbGVtZW50cy5s
ZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdmb3JtMi5lbGVtZW50cy5sZW5ndGgnLCAnMCcp
OworICAgIHNob3VsZEJlKCdmb3JtMS5lbGVtZW50c1swXScsICdpbnB1dCcpOworfTsKKworZnVu
Y3Rpb24gdGVzdDMoKSB7CisgICAgZGVidWcoIlRlc3QgMzogQ2hhbmdlIGZvcm0gaWQuIik7Cisg
ICAgZm9ybSA9IGNyZWF0ZUZvcm0oInRlc3QzLTEiKTsKKyAgICBpbnB1dCA9IGNyZWF0ZUlucHV0
KCJ0ZXN0My0yIik7CisgICAgZm9ybS5pZCA9ICJ0ZXN0My0yIjsKKyAgICBzaG91bGRCZSgnZm9y
bS5lbGVtZW50cy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzBd
JywgJ2lucHV0Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICBkZWJ1ZygiVGVzdCA0
OiBPcmRlci4iKTsKKyAgICBpbnB1dDEgPSBjcmVhdGVJbnB1dCgidGVzdDQiKTsKKyAgICBpbnB1
dDIgPSBjcmVhdGVJbnB1dCgidGVzdDQiKTsKKyAgICBmb3JtID0gY3JlYXRlRm9ybSgidGVzdDQi
KTsKKyAgICBpbnB1dDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGZv
cm0uYXBwZW5kQ2hpbGQoaW5wdXQzKTsKKyAgICBpbnB1dDQgPSBjcmVhdGVJbnB1dCgidGVzdDQi
KTsKKyAgICBpbnB1dDUgPSBjcmVhdGVJbnB1dCgidGVzdDQiKTsKKyAgICAKKyAgICBzaG91bGRC
ZSgnZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnNScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1l
bnRzWzBdJywgJ2lucHV0MScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzFdJywgJ2lu
cHV0MicpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzJdJywgJ2lucHV0MycpOworICAg
IHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzNdJywgJ2lucHV0NCcpOworICAgIHNob3VsZEJlKCdm
b3JtLmVsZW1lbnRzWzRdJywgJ2lucHV0NScpOworCisgICAgaW5wdXQyLnNldEF0dHJpYnV0ZSgi
Zm9ybSIsICIiKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnNCcpOwor
ICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzBdJywgJ2lucHV0MScpOworICAgIHNob3VsZEJl
KCdmb3JtLmVsZW1lbnRzWzFdJywgJ2lucHV0MycpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1l
bnRzWzJdJywgJ2lucHV0NCcpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzNdJywgJ2lu
cHV0NScpOworfTsKKworZnVuY3Rpb24gdGVzdDUoKSB7CisgICAgZGVidWcoIlRlc3QgNTogQWRk
IG5ldyBlbGVtZW50IHdpdGggZm9ybSBhdHRyaWJ1dGUgdG8gdGhlIGZvcm0uIik7CisgICAgZm9y
bSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTsKKyAgICBmb3JtLmlkID0gInRlc3Q1
IjsKKyAgICBmb3JtLmlubmVySFRNTCA9ICI8dGV4dGFyZWEgaWQ9XCJ0ZXN0NS1pbnB1dDFcIj48
L3RleHRhcmVhPjxpbnB1dCBmb3JtPXRlc3Q1IGlkPVwidGVzdDUtaW5wdXQyXCI+PHNlbGVjdCBp
ZD1cInRlc3Q1LWlucHV0M1wiPiI7CisgICAgdGVzdC5hcHBlbmRDaGlsZChmb3JtKTsKKyAgICBp
bnB1dDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDUtaW5wdXQxIik7CisgICAgaW5w
dXQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q1LWlucHV0MiIpOworICAgIGlucHV0
MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NS1pbnB1dDMiKTsKKyAgICBzaG91bGRC
ZSgnZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnMycpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1l
bnRzWzBdJywgJ2lucHV0MScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzFdJywgJ2lu
cHV0MicpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzJdJywgJ2lucHV0MycpOworfTsK
KwordGVzdDEoKTsKK3Rlc3QyKCk7Cit0ZXN0MygpOwordGVzdDQoKTsKK3Rlc3Q1KCk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152181</attachid>
            <date>2012-07-13 01:23:23 -0700</date>
            <delta_ts>2012-07-13 02:01:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91042-20120713172321.patch</filename>
            <type>text/plain</type>
            <size>46890</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZjRiZjNmZmU5MTYzM2M3OGNhNDJjNzk3ZjBiOTBkNzZlMjk3OGM5Li4z
M2VkNGZiYTNjNTgzNTMwZWRlZWU3Yjc3ZDg0MDA1OGJlYjM5ZGNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzMgQEAKKzIwMTItMDctMTIgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgRm9ybSBvZiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgaXMgbm90IHVwZGF0
ZWQgd2hlbiBpZCB0YXJnZXQgY2hhbmdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUt
ZWxlbWVudC5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBJZFRhcmdl
dE9ic2VydmVyIGFuZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgY2xhc3MuCisgICAgICAgIFRo
ZXkgY2FuIGJlIHVzZWQgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgZWxlbWVudCB0aGF0IGFuIGlk
IGlzIHBvaW50aW5nIHRvICh0aGUgaWQgdGFyZ2V0KQorICAgICAgICBjaGFuZ2VzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS57aCxj
cHB9IGFuZCBJZFRhcmdldE9ic2VydmVyLntoLGNwcH0KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IERpdHRvLgorICAgICAgICAqIGRvbS9JZFRhcmdldE9ic2VydmVyLmNwcDogQWRkZWQuIFdoZW4g
eW91IHdhbnQgbm90aWZpZWQgb2YgY2hhbmdlcyB0byBhbiBpZCB0YXJnZXQsIHlvdSBzaG91bGQg
Y3JlYXRlIGEgbmV3IGNsYXNzIHRoYXQgaW5oZXJpdHMgdGhpcy4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlcjo6SWRUYXJnZXRPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyOjp+SWRUYXJnZXRPYnNlcnZlcik6
CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKElkVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcik6IFJlZ2lzdGVy
IGFuIElkVGFyZ2V0T2JzZXJ2ZXIgdG8gb2JzZXJ2ZSBhbiBpZCB0YXJnZXQuCisgICAgICAgIChX
ZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OnJlbW92ZU9ic2VydmVyKTogVW5yZWdp
c3RlcnMgYW4gSWRUYXJnZXRPYnNlcnZlciBmcm9tIG9ic2VydmluZy4KKyAgICAgICAgKFdlYkNv
cmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwpOgor
ICAgICAgICAqIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSk6CisgICAgICAg
IChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlm
eU9ic2VydmVycyk6IENhbGxzIGlkVGFyZ2V0Q2hhbmdlZCBvbiBhbGwgb2JzZXJ2ZXJzIGZvciBh
biBpZC4gSW5saW5pbmcgZmlyc3QgcGFydCBvZiBmdW5jdGlvbiBmb3IgcGVyZm9ybWFuY2UuCisg
ICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlk
KTogQ2FsbHMgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnMgYmVjYXVz
ZSB0aGUgaWQgdGFyZ2V0IG1pZ2h0IGhhdmUgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6cmVtb3ZlRWxlbWVudEJ5SWQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vVHJlZVNj
b3BlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
aWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFRyZWVTY29wZSk6CisgICAgICAg
ICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOiBPYnNlcnZlciBmb3IgaWQgdGFyZ2V0
cyBkZWZpbmVkIGJ5IHRoZSBmb3JtIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG8pOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0
T2JzZXJ2ZXIpOiBDcmVhdGVzIGFuZCBzZXRzIHVwIGEgbmV3IEZvcm1BdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29j
aWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6Omlk
VGFyZ2V0Q2hhbmdlZCk6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDoK
KyAgICAgICAgKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCk6CisgICAgICAgICogaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHA6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5oOgorICAgICAgICAo
Rm9ybUNvbnRyb2xsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1
dGUpOiBNb2RpZmllZCB0byB0YWtlIGEgcmFuZ2UuIEl0CisgICAgICAgIHNjYW5zIHRoZSByYW5n
ZSBhbmQgcmV0dXJucyB0aGUgaW5kZXggdG8gaW5zZXJ0IHRoZSBlbGVtZW50IGluIG1fYXNzb2Np
YXRlZEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVt
ZW50SW5kZXgpOiBNb2RpZmllZCB0byBvbmx5IHNjYW4gdGhlIGVsZW1lbnRzIGluCisgICAgICAg
IG1fYXNzb2NpYXRlZEVsZW1lbnQgdGhhdCBwcmVjZWRlIGFuZCBmb2xsb3cgdGhlIGZvcm0gZWxl
bWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZv
cm1FbGVtZW50KToKKwogMjAxMi0wNy0xMiAgRG9uZ3dvbyBJbSAgPGR3LmltQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIENvZGVHZW5lcmF0b3JKUy5wbSBuZWVkIHRvIGhhbmRsZSB0aGUgYXR0cmli
dXRlIHdoaWNoIGhhcyAiQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCIgb3B0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjMDJiMjExZTQxMjYxNzRmZmJkY2IyYWFkYWVjMGY4Zjgy
NjdlNWRjLi5jZTU4Njg4NjgyOWJmMTM5YmQ3ZjIzNzAwZGFjYzg3MWIxNTJkNWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNjEwLDYgKzYxMCw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAg
ICBkb20vRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcAogICAgIGRvbS9HZW5lcmljRXZlbnRR
dWV1ZS5jcHAKICAgICBkb20vSWNvblVSTC5jcHAKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlci5j
cHAKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAogICAgIGRvbS9LZXlib2Fy
ZEV2ZW50LmNwcAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKICAgICBkb20vTWVzc2FnZUV2
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNjNiMTcwYTA3MTEwYzky
N2E0N2Q3MGViOGY1NDlmMjkwMzRlOWRjOC4uNWFhNzMyMjEwNzAxYzYyY2QyMDJhNjI4NDViMDdm
ZWFlNTM3NzQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xOTQyLDYgKzE5
NDIsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJp
Y0V2ZW50UXVldWUuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vSWNvblVSTC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmggXAor
CVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDk0OTQxYjEyMGMyMzk5YjFmNWQ0NThhZjI1MTgzMmIyZDBkZmI1OWUuLmQzZTIz
NDE2OTQ0Y2M2MzI0M2M5Yzc1Yzg2MTU1MTBmODFkNWU0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTcz
LDYgKzU3Myw4IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuY3BwIFwKICAgICBkb20vR2VuZXJpY0V2ZW50UXVldWUuY3BwIFwKICAgICBkb20vSWNvblVS
TC5jcHAgXAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyLmNwcCBcCisgICAgZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgXAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmNwcCBcCiAgICAg
ZG9tL01lc3NhZ2VDaGFubmVsLmNwcCBcCiAgICAgZG9tL01lc3NhZ2VFdmVudC5jcHAgXApAQCAt
MTc1OSw2ICsxNzYxLDggQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuaCBc
CiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbi5oIFwKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlci5oIFwKKyAgICBkb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmggXAogICAgIGRvbS9LZXlib2FyZEV2ZW50LmggXAogICAgIGRv
bS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgZG9tL01lc3NhZ2VDaGFubmVsLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGUxYjAyMDQxOTQxZDBjZmEyNzVjZTZhZTBlNmY1NDY4NzQzNmI1
YjguLjBmOWM2ZjM1NDk1ZGUzNmI4ODBhYWRmZDE3MGNmZGFmZGEwMjYxZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTUxNzksNiArNTE3OSwxMCBAQAogICAgICAgICAgICAgJ2RvbS9JZ25vcmVEZXN0
cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oJywKICAgICAgICAgICAgICdkb20vSWNvblVS
TC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAorICAgICAgICAgICAgJ2RvbS9J
ZFRhcmdldE9ic2VydmVyLmNwcCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIu
aCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAnLAorICAg
ICAgICAgICAgJ2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAn
ZG9tL0tleWJvYXJkRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5NTExOGRjODdl
OTY5NmYyZDY5NmY0OTMwODcwMmM4ZGI0YWZkNzQzLi4yZTAzZDBkNzhjYTk0YzlhMWY4MGY1YzQ4
YmI5MGQ3YjAzMmE4NDIxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNTExOTksNiArNTExOTksMTE4IEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxJZFRhcmdldE9ic2VydmVyLmNwcCIK
KwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAiCisJ
CQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdf
QWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0
aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGRvbVxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3Vu
dEluY3JlbWVudGVyLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiM2JiMmRmOWJkNGFiMTg2
MDUzOTcyZWRjZmU3NDI0MTAyMmY3NmQuLjcwMGY1OTNlMWM1MWE4ZDUwMzA0MGM5MGM5M2IxMGFk
NzBlMWM0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTU3MjQsNiArNTcyNCwxMCBAQAogCQlDMzNFRTVDNDE0RkI0OTYxMDAw
MjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVB
IC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJQzMzRUU1QzUx
NEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMzE0RkI0OTYx
MDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLzsgfTsKIAkJQzM3
Q0RFQkQxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3NlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzM3Q0RFQkMxNDlFRjIwMzAwNDIw
OTBEIC8qIENvbG9yQ2hvb3NlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUMzQ0YxN0E0MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMzQ0YxN0EwMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmNwcCAqLzsg
fTsKKwkJQzNDRjE3QTUxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0ExMTVCMDA2
M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LmNwcCAqLzsgfTsKKwkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE0MTIxMTlE
MjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQzUwQjU2MTcxMjExOUQy
MzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRp
bmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzUwRDBFODIwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwRDBFODAwRkY0MjcyOTAw
QUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovOyB9OwpAQCAtMTI5NDMsNiArMTI5NDcs
MTAgQEAKIAkJQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5
SW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VD
bGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzMzRUU1QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRU
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VDbGlja2FibGVXaXRo
S2V5SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzN0NERUJDMTQ5
RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29sb3JDaG9vc2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMzQ0YxN0EwMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDM0NGMTdBMTE1QjAwNjNGMDAyNzZE
MzkgLyogSWRUYXJnZXRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJZFRhcmdldE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMzQ0Yx
N0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNDRjE3QTMxNUIwMDYzRjAwMjc2
RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAv
KiBHcm91cFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3Vw
U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0Mjcy
OTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTQ0Nyw2ICsyMTQ1NSwxMCBAQAogCQkJCTg0ODJCNzQ0MTE5OEMzMkUwMEJG
QjAwNSAvKiBIYXNoQ2hhbmdlRXZlbnQuaWRsICovLAogCQkJCTQ1MDk5QzQwMTM3MEE3ODAwMDU4
RDUxMyAvKiBJY29uVVJMLmNwcCAqLywKIAkJCQk0NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyog
SWNvblVSTC5oICovLAorCQkJCUMzQ0YxN0EwMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9i
c2VydmVyLmNwcCAqLywKKwkJCQlDM0NGMTdBMTE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRP
YnNlcnZlci5oICovLAorCQkJCUMzQ0YxN0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuY3BwICovLAorCQkJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLywKIAkJCQk4QUI0QkM3NjEyNkZEQjcxMDBERUI3
MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCAqLywKIAkJCQk4
NTAzMUIyRDBBNDRFRkM3MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5jcHAgKi8sCiAJCQkJODUw
MzFCMkUwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJvYXJkRXZlbnQuaCAqLywKQEAgLTI1MTkzLDYg
KzI1MjA1LDggQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVT
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNT
QXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8q
IFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDM0NGMTdBNTE1QjAwNjNGMDAyNzZEMzkg
LyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzNDRjE3QTcxNUIwMDYz
RjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yODI1MCw2ICsyODI2NCw4IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhT
TFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBD
MTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2
NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzNDRjE3QTQx
NUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdl
dE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hZmFkZDM4ZjkwODE0Yzk5MTYwM2MwZTIyNWNlOTBkODhjYWM0MTI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXIuaCIK
KworI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0lkVGFyZ2V0T2JzZXJ2ZXI6OklkVGFyZ2V0T2JzZXJ2ZXIoSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5JiByZWdpc3RyeSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKKyAgICA6IG1f
cmVnaXN0cnkoJnJlZ2lzdHJ5KQorICAgICwgbV9pZChpZCkKK3sKKyAgICBtX3JlZ2lzdHJ5LT5h
ZGRPYnNlcnZlcihtX2lkLCB0aGlzKTsKK30KKworSWRUYXJnZXRPYnNlcnZlcjo6fklkVGFyZ2V0
T2JzZXJ2ZXIoKQoreworICAgIGlmIChtX3JlZ2lzdHJ5KQorICAgICAgICBtX3JlZ2lzdHJ5LT5y
ZW1vdmVPYnNlcnZlcihtX2lkLCB0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkwMDdjNDc4MDI1
ZjgwYjQ5N2FmYWEyYjBkOTU0MTFhZTY2ODViNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElkVGFyZ2V0T2Jz
ZXJ2ZXJfaAorI2RlZmluZSBJZFRhcmdldE9ic2VydmVyX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeTsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlciB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+SWRUYXJnZXRPYnNlcnZlcigpOworICAgIHZpcnR1YWwgdm9pZCBpZFRhcmdl
dENoYW5nZWQoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBJZFRhcmdldE9ic2VydmVyKElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeSYsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpOworCitwcml2YXRl
OgorICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSogbV9yZWdpc3RyeTsKKyAgICBBdG9taWNT
dHJpbmcgbV9pZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIElk
VGFyZ2V0T2JzZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmMyNmFjZmVlMzMyZWI3ZDJkNjE5YmE1OTIwYzcz
M2Y1YmIwZjcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlICJJZFRhcmdldE9ic2Vy
dmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnk+IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpKTsKK30KKwordm9p
ZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIGlmIChpZC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBJZFRvT2JzZXJ2ZXJTZXRNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX3JlZ2lzdHJ5LmFkZChpZC5pbXBsKCksIG51bGxwdHIpOworICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBh
ZG9wdFB0cihuZXcgT2JzZXJ2ZXJTZXQoKSk7CisKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZC0+YWRkKG9ic2VydmVyKTsKK30KKwordm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OnJl
bW92ZU9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqIG9i
c2VydmVyKQoreworICAgIGlmIChpZC5pc0VtcHR5KCkgfHwgbV9yZWdpc3RyeS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIElkVG9PYnNlcnZlclNldE1hcDo6aXRlcmF0b3IgaXRl
ciA9IG1fcmVnaXN0cnkuZmluZChpZC5pbXBsKCkpOworCisgICAgT2JzZXJ2ZXJTZXQqIHNldCA9
IGl0ZXItPnNlY29uZC5nZXQoKTsKKyAgICBzZXQtPnJlbW92ZShvYnNlcnZlcik7CisgICAgaWYg
KHNldC0+aXNFbXB0eSgpICYmIHNldCAhPSBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0KQorICAg
ICAgICBtX3JlZ2lzdHJ5LnJlbW92ZShpdGVyKTsKK30KKwordm9pZCBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6Om5vdGlmeU9ic2VydmVyc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgaWQp
Cit7CisgICAgQVNTRVJUKCFpZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9yZWdpc3RyeS5p
c0VtcHR5KCkpOworCisgICAgbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCA9IG1fcmVnaXN0cnku
Z2V0KGlkLmltcGwoKSk7CisgICAgaWYgKCFtX25vdGlmeWluZ09ic2VydmVyc0luU2V0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8SWRUYXJnZXRPYnNlcnZlcio+IGNvcHk7CisgICAg
Y29weVRvVmVjdG9yKCptX25vdGlmeWluZ09ic2VydmVyc0luU2V0LCBjb3B5KTsKKyAgICBmb3Ig
KFZlY3RvcjxJZFRhcmdldE9ic2VydmVyKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29weS5iZWdp
bigpOyBpdCAhPSBjb3B5LmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChtX25vdGlmeWluZ09i
c2VydmVyc0luU2V0LT5jb250YWlucygqaXQpKQorICAgICAgICAgICAgKCppdCktPmlkVGFyZ2V0
Q2hhbmdlZCgpOworICAgIH0KKworICAgIGlmIChtX25vdGlmeWluZ09ic2VydmVyc0luU2V0LT5p
c0VtcHR5KCkpCisgICAgICAgIG1fcmVnaXN0cnkucmVtb3ZlKGlkLmltcGwoKSk7CisKKyAgICBt
X25vdGlmeWluZ09ic2VydmVyc0luU2V0ID0gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFiYTc1NTIxMDBlNGU5N2UwZjY3NzhhMjlkZDRmN2FiNGQ0NTMwMWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCisjZGVmaW5lIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElkVGFyZ2V0T2JzZXJ2ZXI7CisKK2NsYXNzIElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSB7CisgICAgZnJpZW5kIGNsYXNzIElkVGFyZ2V0T2JzZXJ2
ZXI7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJZFRhcmdldE9ic2VydmVyUmVn
aXN0cnk+IGNyZWF0ZSgpOworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQpOworCitwcml2YXRlOgorICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSgpIDog
bV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCgwKSB7IH0KKyAgICB2b2lkIGFkZE9ic2VydmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHJlbW92
ZU9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZXIqKTsKKyAg
ICB2b2lkIG5vdGlmeU9ic2VydmVyc0ludGVybmFsKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpOwor
CisgICAgdHlwZWRlZiBIYXNoU2V0PElkVGFyZ2V0T2JzZXJ2ZXIqPiBPYnNlcnZlclNldDsKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIE93blB0cjxPYnNlcnZlclNldD4g
PiBJZFRvT2JzZXJ2ZXJTZXRNYXA7CisgICAgSWRUb09ic2VydmVyU2V0TWFwIG1fcmVnaXN0cnk7
CisgICAgT2JzZXJ2ZXJTZXQqIG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQ7Cit9OworCitpbmxp
bmUgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVycyhjb25zdCBB
dG9taWNTdHJpbmcmIGlkKQoreworICAgIEFTU0VSVCghbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNl
dCk7CisgICAgaWYgKGlkLmlzRW1wdHkoKSB8fCBtX3JlZ2lzdHJ5LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJz
SW50ZXJuYWwoaWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCBi
ZjA0OWIxZGFiMDIxYmM4NWJkNTY2NjlhY2IwZGM0MzYwOTVjMjQzLi5lODhiMTNhYjg4ZTc1ZWEx
MzQ3MWQ0OTBkNmQ5ZTM2YjkzOWM3OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxNYXBFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtNTQsNiArNTUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogVHJlZVNjb3BlOjpUcmVlU2NvcGUoQ29u
dGFpbmVyTm9kZSogcm9vdE5vZGUpCiAgICAgOiBtX3Jvb3ROb2RlKHJvb3ROb2RlKQogICAgICwg
bV9wYXJlbnRUcmVlU2NvcGUoMCkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6Y3JlYXRlKCkpCiB7CiAgICAgQVNTRVJUKHJvb3ROb2Rl
KTsKIH0KQEAgLTkyLDExICs5NCwxMyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRC
eUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkLCBFbGVtZW50KiBl
bGVtZW50KQogewogICAgIG1fZWxlbWVudHNCeUlkLmFkZChlbGVtZW50SWQuaW1wbCgpLCBlbGVt
ZW50KTsKKyAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVs
ZW1lbnRJZCk7CiB9CiAKIHZvaWQgVHJlZVNjb3BlOjpyZW1vdmVFbGVtZW50QnlJZChjb25zdCBB
dG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBtX2VsZW1l
bnRzQnlJZC5yZW1vdmUoZWxlbWVudElkLmltcGwoKSwgZWxlbWVudCk7CisgICAgbV9pZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnktPm5vdGlmeU9ic2VydmVycyhlbGVtZW50SWQpOwogfQogCiBOb2Rl
KiBUcmVlU2NvcGU6OmFuY2VzdG9ySW5UaGlzU2NvcGUoTm9kZSogbm9kZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuaAppbmRleCA3N2UyMzA3YzE1YzZjZmU0ODRhNjk4ZDZjYzk0NGY5ZTU1YmNm
NWQ0Li44NDFiYmI2YzFjYmI5Y2MxOTZmMDE5NDIwOGM0YTcwZTk4MjFkOGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFz
cyBET01TZWxlY3Rpb247CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7Citj
bGFzcyBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk7CiBjbGFzcyBOb2RlOwogCiAvLyBBIGNsYXNz
IHdoaWNoIGluaGVyaXRzIGJvdGggTm9kZSBhbmQgVHJlZVNjb3BlIG11c3QgY2FsbCBjbGVhclJh
cmVEYXRhKCkgaW4gaXRzIGRlc3RydWN0b3IKQEAgLTc4LDYgKzc5LDggQEAgcHVibGljOgogCiAg
ICAgQ29udGFpbmVyTm9kZSogcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9
CiAKKyAgICBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkmIGlkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eSgpIGNvbnN0IHsgcmV0dXJuICptX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5nZXQoKTsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqKTsKICAgICB2aXJ0dWFs
IH5UcmVlU2NvcGUoKTsKQEAgLTkxLDYgKzk0LDggQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudE9y
ZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CiAgICAgRG9jdW1lbnRPcmRlcmVkTWFwIG1faW1hZ2VN
YXBzQnlOYW1lOwogCisgICAgT3duUHRyPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4gbV9pZFRh
cmdldE9ic2VydmVyUmVnaXN0cnk7CisKICAgICBtdXRhYmxlIFJlZlB0cjxET01TZWxlY3Rpb24+
IG1fc2VsZWN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwCmluZGV4IDIxNzkxZjA5NjBhZTQ3YzhmMThlOWJmMzBiMTFjZDdhNjdmNjg0
NTMuLmJkNzdkMTA0MTA4ZWYyYmJlMTAwYjUxNWRhZTZiNmJiMGM5YjM1ZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTMwLDEyICszMCwy
NCBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNl
cnZlci5oIgogI2luY2x1ZGUgIlZhbGlkaXR5U3RhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitjbGFzcyBGb3JtQXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXIgOiBJZFRhcmdldE9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIGlkLCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRU
YXJnZXRDaGFuZ2VkKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgRm9ybUF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCopOworCisgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCiBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpCiAgICAgOiBtX2Zvcm0o
MCkKIHsKQEAgLTU4LDcgKzcwLDcgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1v
dmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKICAgICBIVE1MRWxlbWVu
dCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKG9sZERvY3VtZW50ICYm
IGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICBvbGREb2N1bWVu
dC0+Zm9ybUNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1
dGUodGhpcyk7CisgICAgICAgIHJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiB9
CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSogaW5zZXJ0aW9uUG9pbnQpCkBAIC02OSwxNCArODEsMTQgQEAgdm9pZCBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIAog
ICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKICAgICBpZiAo
ZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCi0gICAgICAgIGVsZW1lbnQtPmRv
Y3VtZW50KCktPmZvcm1Db250cm9sbGVyKCktPnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0
dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgcmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIo
KTsKIH0KIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUqIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9I
VE1MRWxlbWVudCh0aGlzKTsKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAm
JiBlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKLSAgICAgICAgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZv
cm1BdHRyaWJ1dGUodGhpcyk7CisgICAgICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
ID0gbnVsbHB0cjsKICAgICAvLyBJZiB0aGUgZm9ybSBhbmQgZWxlbWVudCBhcmUgYm90aCBpbiB0
aGUgc2FtZSB0cmVlLCBwcmVzZXJ2ZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgZm9ybS4KICAgICAv
LyBPdGhlcndpc2UsIG51bGwgb3V0IG91ciBmb3JtIGFuZCByZW1vdmUgb3Vyc2VsdmVzIGZyb20g
dGhlIGZvcm0ncyBsaXN0IG9mIGVsZW1lbnRzLgogICAgIGlmIChtX2Zvcm0gJiYgZWxlbWVudC0+
aGlnaGVzdEFuY2VzdG9yKCkgIT0gbV9mb3JtLT5oaWdoZXN0QW5jZXN0b3IoKSkKQEAgLTE1Myw5
ICsxNjUsMTEgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVDaGFu
Z2VkKCkKICAgICBpZiAoIWVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKSB7CiAg
ICAgICAgIC8vIFRoZSBmb3JtIGF0dHJpYnV0ZSByZW1vdmVkLiBXZSBuZWVkIHRvIHJlc2V0IGZv
cm0gb3duZXIgaGVyZS4KICAgICAgICAgc2V0Rm9ybShlbGVtZW50LT5maW5kRm9ybUFuY2VzdG9y
KCkpOwotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT5mb3JtQ29udHJvbGxlcigpLT51bnJl
Z2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKLSAgICB9IGVsc2UKKyAg
ICAgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOworICAgIH0gZWxz
ZSB7CiAgICAgICAgIHJlc2V0Rm9ybU93bmVyKCk7CisgICAgICAgIHJlc2V0Rm9ybUF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyKCk7CisgICAgfQogfQogCiBib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6Y3VzdG9tRXJyb3IoKSBjb25zdApAQCAtMjIxLDYgKzIzNSwxNiBAQCB2b2lkIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKICAg
ICBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlID0gZXJyb3I7CiB9CiAKK3ZvaWQgRm9ybUFzc29j
aWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCit7CisgICAg
bV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXI6OmNyZWF0ZSh0b0hUTUxFbGVtZW50KHRoaXMpLT5mYXN0R2V0QXR0cmlidXRlKGZvcm1BdHRy
KSwgdGhpcyk7Cit9CisKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRl
VGFyZ2V0Q2hhbmdlZCgpCit7CisgICAgcmVzZXRGb3JtT3duZXIoKTsKK30KKwogY29uc3QgQXRv
bWljU3RyaW5nJiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Om5hbWUoKSBjb25zdAogewogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IHRvSFRNTEVsZW1lbnQodGhpcyktPmdldE5hbWVBdHRy
aWJ1dGUoKTsKQEAgLTI0Miw0ICsyNjYsMjAgQEAgSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQo
Rm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbWVudCkKICAgICByZXR1cm4gY29u
c3RfY2FzdDxIVE1MRWxlbWVudCo+KHRvSFRNTEVsZW1lbnQoc3RhdGljX2Nhc3Q8Y29uc3QgRm9y
bUFzc29jaWF0ZWRFbGVtZW50Kj4oYXNzb2NpYXRlZEVsZW1lbnQpKSk7CiB9CiAKK1Bhc3NPd25Q
dHI8Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPiBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXI6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGb3JtQXR0cmlidXRlVGFyZ2V0
T2JzZXJ2ZXIoaWQsIGVsZW1lbnQpKTsKK30KKworRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
OjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRm9y
bUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50KQorICAgIDogSWRUYXJnZXRPYnNlcnZlcih0b0hU
TUxFbGVtZW50KGVsZW1lbnQpLT50cmVlU2NvcGUoKS0+aWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
KCksIGlkKQorICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCit7Cit9CisKK3ZvaWQgRm9ybUF0dHJp
YnV0ZVRhcmdldE9ic2VydmVyOjppZFRhcmdldENoYW5nZWQoKQoreworICAgIG1fZWxlbWVudC0+
Zm9ybUF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViY29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKaW5kZXggNWE0
N2VhMDc2ZGIyYTc0ZWY1MGU5NDU2NWFlN2NiNGYwYmE1MDIxMS4uN2Q0MzRmMDAxNzEyNWQxMTBj
ODEwZGE5MmZiNzZjNDQ0ZTJiYzg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQXNzb2NpYXRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyOwogY2xhc3MgRm9ybURhdGFMaXN0
OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2U7CkBAIC03
OSw2ICs4MCw5IEBAIHB1YmxpYzoKICAgICBib29sIHZhbGlkKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCByZXNl
dEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOworICAgIHZvaWQgZm9ybUF0dHJpYnV0ZVRh
cmdldENoYW5nZWQoKTsKKwogcHJvdGVjdGVkOgogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCgp
OwogCkBAIC0xMDEsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVmRm9y
bUFzc29jaWF0ZWRFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCgpID0gMDsKIAorICAgIE93blB0cjxGb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXI+IG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyOwogICAgIEhUTUxGb3JtRWxlbWVu
dCogbV9mb3JtOwogICAgIE93blB0cjxWYWxpZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7CiAg
ICAgU3RyaW5nIG1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwCmluZGV4IDk0MTA3YTY2ZjRmMTg5ODNjMjlhZmE4N2YxMjI5ZjgzOGFm
YTU5ODEuLjZiMjliNmZlN2MwN2ExM2NiZDE5MGJjZGJhNGM5NzgwYmQyZmM4YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC0yNDAsMjUgKzI0MCw2IEBAIHZvaWQg
Rm9ybUNvbnRyb2xsZXI6OndpbGxEZWxldGVGb3JtKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAg
ICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yLT53aWxsRGVsZXRlRm9ybShmb3JtKTsKIH0KIAotdm9p
ZCBGb3JtQ29udHJvbGxlcjo6cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZv
cm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQodG9IVE1MRWxlbWVu
dChlbGVtZW50KS0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpOwotICAgIG1fZm9ybUVsZW1l
bnRzV2l0aEZvcm1BdHRyaWJ1dGUuYWRkKGVsZW1lbnQpOwotfQotCi12b2lkIEZvcm1Db250cm9s
bGVyOjp1bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgbV9mb3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0
ZS5yZW1vdmUoZWxlbWVudCk7Ci19Ci0KLXZvaWQgRm9ybUNvbnRyb2xsZXI6OnJlc2V0Rm9ybUVs
ZW1lbnRzT3duZXIoKQotewotICAgIHR5cGVkZWYgRm9ybUFzc29jaWF0ZWRFbGVtZW50TGlzdEhh
c2hTZXQ6Oml0ZXJhdG9yIEl0ZXJhdG9yOwotICAgIEl0ZXJhdG9yIGVuZCA9IG1fZm9ybUVsZW1l
bnRzV2l0aEZvcm1BdHRyaWJ1dGUuZW5kKCk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IG1fZm9y
bUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAg
ICAgICAoKml0KS0+cmVzZXRGb3JtT3duZXIoKTsKLX0KLQogRm9ybUVsZW1lbnRLZXk6OkZvcm1F
bGVtZW50S2V5KEF0b21pY1N0cmluZ0ltcGwqIG5hbWUsIEF0b21pY1N0cmluZ0ltcGwqIHR5cGUs
IEF0b21pY1N0cmluZ0ltcGwqIGZvcm1LZXkpCiAgICAgOiBtX25hbWUobmFtZSkKICAgICAsIG1f
dHlwZSh0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCmluZGV4IGUxNWMxZGMy
NGE5ODBmNjQ0N2E5OGIyZTMyNmQxOTZkNmUzNjMyYTIuLmU5OGQxYTA0OWNjMDliZDcxY2ZmMGQ5
MjdhZjRhNGM1ODVlY2YzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKQEAg
LTEzMiwxMCArMTMyLDYgQEAgcHVibGljOgogICAgIEZvcm1Db250cm9sU3RhdGUgdGFrZVN0YXRl
Rm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSYpOwog
ICAgIHZvaWQgd2lsbERlbGV0ZUZvcm0oSFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICB2b2lkIHJl
Z2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
KTsKLSAgICB2b2lkIHVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKEZvcm1B
c3NvY2lhdGVkRWxlbWVudCopOwotICAgIHZvaWQgcmVzZXRGb3JtRWxlbWVudHNPd25lcigpOwot
CiBwcml2YXRlOgogICAgIEZvcm1Db250cm9sbGVyKCk7CiAKQEAgLTE0Myw4ICsxMzksNiBAQCBw
cml2YXRlOgogCiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
V2l0aFN0YXRlKiwgNjQ+IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQ7CiAgICAgRm9ybUVsZW1lbnRM
aXN0SGFzaFNldCBtX2Zvcm1FbGVtZW50c1dpdGhTdGF0ZTsKLSAgICB0eXBlZGVmIExpc3RIYXNo
U2V0PFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+LCAzMj4gRm9ybUFzc29jaWF0ZWRFbGVt
ZW50TGlzdEhhc2hTZXQ7Ci0gICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50TGlzdEhhc2hTZXQgbV9m
b3JtRWxlbWVudHNXaXRoRm9ybUF0dHJpYnV0ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxGb3Jt
RWxlbWVudEtleSwgRGVxdWU8Rm9ybUNvbnRyb2xTdGF0ZT4sIEZvcm1FbGVtZW50S2V5SGFzaCwg
Rm9ybUVsZW1lbnRLZXlIYXNoVHJhaXRzPiBGb3JtRWxlbWVudFN0YXRlTWFwOwogICAgIEZvcm1F
bGVtZW50U3RhdGVNYXAgbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAzYzhiYjA3M2NmZjcwZTBiNDg3MDkwNDY0YzA4
MTAyOWVjMjUxNzI1Li4yZjUzMjFhZDIxMGM1NDg2YjJjZDk4YTdhOWIyZDQxMThlNDU5NTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0xNDEsMTQgKzE0MSw2
IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEZvcm1FbGVtZW50Ojpp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSoKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0K
IAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKENv
bnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQotewotICAgIEFTU0VSVChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpKTsKLSAgICBIVE1MRWxlbWVudDo6ZGlkTm90aWZ5RGVzY2VuZGFudElu
c2VydGlvbnMoaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChoYXNJRCgpKQotICAgICAgICBkb2N1
bWVudCgpLT5mb3JtQ29udHJvbGxlcigpLT5yZXNldEZvcm1FbGVtZW50c093bmVyKCk7Ci19Ci0K
IHN0YXRpYyBpbmxpbmUgTm9kZSogZmluZFJvb3QoTm9kZSogbikKIHsKICAgICBOb2RlKiByb290
ID0gbjsKQEAgLTE2NCw4ICsxNTYsNiBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGFzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgYXNzb2NpYXRl
ZEVsZW1lbnRzW2ldLT5mb3JtUmVtb3ZlZEZyb21UcmVlKHJvb3QpOwogICAgIEhUTUxFbGVtZW50
OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7Ci0gICAgaWYgKGluc2VydGlvblBvaW50LT5p
bkRvY3VtZW50KCkgJiYgaGFzSUQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xs
ZXIoKS0+cmVzZXRGb3JtRWxlbWVudHNPd25lcigpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KQpAQCAtNDM2LDMzICs0MjYsMzMgQEAg
dGVtcGxhdGU8Y2xhc3MgVCwgc2l6ZV90IG4+IHN0YXRpYyB2b2lkIHJlbW92ZUZyb21WZWN0b3Io
VmVjdG9yPFQqLCBuPiAmIHZlYywgVCoKICAgICAgICAgfQogfQogCi11bnNpZ25lZCBIVE1MRm9y
bUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBlbGVt
ZW50KQordW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1B
dHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgcmFuZ2VTdGFydCwgdW5zaWduZWQg
cmFuZ2VFbmQpCiB7Ci0gICAgLy8gQ29tcGFyZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmb3JtIGVs
ZW1lbnQgYW5kIHRoZSBpbnNlcnRlZCBlbGVtZW50LgotICAgIC8vIFVwZGF0ZXMgdGhlIGluZGVj
ZXMgaW4gb3JkZXIgdG8gdGhlIHJlbGF0aW9uIG9mIHRoZSBwb3NpdGlvbjoKLSAgICB1bnNpZ25l
ZCBzaG9ydCBwb3NpdGlvbiA9IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGVsZW1lbnQpOwotICAg
IGlmIChwb3NpdGlvbiAmIChET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUyB8IERPQ1VNRU5UX1BP
U0lUSU9OX0NPTlRBSU5FRF9CWSkpCi0gICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRl
ckluZGV4OwotICAgIGVsc2UgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VE
SU5HKSB7Ci0gICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleDsKLSAgICAg
ICAgKyttX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXg7Ci0gICAgfQotCiAgICAgaWYgKG1f
YXNzb2NpYXRlZEVsZW1lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBB
U1NFUlQocmFuZ2VTdGFydCA8PSByYW5nZUVuZCk7CisKKyAgICBpZiAocmFuZ2VTdGFydCA9PSBy
YW5nZUVuZCkKKyAgICAgICAgcmV0dXJuIHJhbmdlU3RhcnQ7CisKKyAgICB1bnNpZ25lZCBsZWZ0
ID0gcmFuZ2VTdGFydDsKKyAgICB1bnNpZ25lZCByaWdodCA9IHJhbmdlRW5kIC0gMTsKKyAgICB1
bnNpZ25lZCBzaG9ydCBwb3NpdGlvbjsKKwogICAgIC8vIERvZXMgYmluYXJ5IHNlYXJjaCBvbiBt
X2Fzc29jaWF0ZWRFbGVtZW50cyBpbiBvcmRlciB0byBmaW5kIHRoZSBpbmRleAogICAgIC8vIHRv
IGJlIGluc2VydGVkLgotICAgIHVuc2lnbmVkIGxlZnQgPSAwLCByaWdodCA9IG1fYXNzb2NpYXRl
ZEVsZW1lbnRzLnNpemUoKSAtIDE7CiAgICAgd2hpbGUgKGxlZnQgIT0gcmlnaHQpIHsKICAgICAg
ICAgdW5zaWduZWQgbWlkZGxlID0gbGVmdCArICgocmlnaHQgLSBsZWZ0KSAvIDIpOworICAgICAg
ICBBU1NFUlQobWlkZGxlIDwgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCB8fCBtaWRk
bGUgPj0gbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4KTsKICAgICAgICAgcG9zaXRpb24g
PSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2Np
YXRlZEVsZW1lbnRzW21pZGRsZV0pKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRf
UE9TSVRJT05fRk9MTE9XSU5HKQogICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwogICAgIH0KLQorICAgIAorICAg
IEFTU0VSVChsZWZ0IDwgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCB8fCBsZWZ0ID49
IG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCk7CiAgICAgcG9zaXRpb24gPSBlbGVtZW50
LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVsZW1l
bnRzW2xlZnRdKSk7CiAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9X
SU5HKQogICAgICAgICByZXR1cm4gbGVmdDsKQEAgLTQ3NCw4ICs0NjQsMTYgQEAgdW5zaWduZWQg
SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
YXNzb2NpYXRlZEVsZW0KICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQo
YXNzb2NpYXRlZEVsZW1lbnQpOwogICAgIC8vIFRyZWF0cyBzZXBhcmF0ZWx5IHRoZSBjYXNlIHdo
ZXJlIHRoaXMgZWxlbWVudCBoYXMgdGhlIGZvcm0gYXR0cmlidXRlCiAgICAgLy8gZm9yIHBlcmZv
cm1hbmNlIGNvbnNpZGVyYXRpb24uCi0gICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUo
Zm9ybUF0dHIpKQotICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmli
dXRlKGVsZW1lbnQpOworICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRy
KSkgeworICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IGNvbXBhcmVEb2N1bWVudFBv
c2l0aW9uKGVsZW1lbnQpOworICAgICAgICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElP
Tl9QUkVDRURJTkcpIHsKKyAgICAgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJ
bmRleDsKKyAgICAgICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OworICAg
ICAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhGb3Jt
QXR0cmlidXRlKGVsZW1lbnQsIDAsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggLSAx
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9G
T0xMT1dJTkcgJiYgIShwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSkp
CisgICAgICAgICAgICByZXR1cm4gSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0
aEZvcm1BdHRyaWJ1dGUoZWxlbWVudCwgbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4LCBt
X2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkpOworICAgIH0KIAogICAgIC8vIENoZWNrIGZvciB0
aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBpcyB0aGUgdmVyeSBsYXN0IHRoaW5n
IGluCiAgICAgLy8gdGhlIGZvcm0ncyB0cmVlIG9mIGNoaWxkcmVuOyB3ZSBkb24ndCB3YW50IHRv
IHdhbGsgdGhlIGVudGlyZSB0cmVlIGluIHRoYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oCmluZGV4IGVlOWNjZjM5YjdhMTY0ZmVhNGNhN2VkMGE3YmE5MWI0MTEzNWUyZmEuLjZm
N2E4NjNkOGRjZGVkMmQ1ZmM5NTQzNTY4YWYxMTI5YmI3OWZmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMTE5LDcgKzExOSw2IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
OwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8o
Q29udGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWROb3RpZnlEZXNj
ZW5kYW50SW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCopOwpAQCAtMTM1LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHN1Ym1pdChFdmVudCosIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24s
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogCi0g
ICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqKTsK
KyAgICB1bnNpZ25lZCBmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCos
IHVuc2lnbmVkIHJhbmdlU3RhcnQsIHVuc2lnbmVkIHJhbmdlRW5kKTsKICAgICB1bnNpZ25lZCBm
b3JtRWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBzdWJtaXNzaW9uIHNob3VsZCBwcm9jZWVkLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIxZjg2OGEw
N2Q4MjVjZDc2ODA4YmZjMjVkZDcwYzc2YzhmMWVkNTAuLjA1YmIwYjA1OTI1NTVmMTZlZGY3ZTg0
YWE5MWI5ZTQ3YzhiNmZmYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xMyAgS2Vp
c2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAgICBGb3JtIG9mIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCBpcyBub3QgdXBkYXRlZCB3aGVuIGlkIHRhcmdldCBjaGFuZ2VzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFs
IGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQ
bGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1l
bGVtZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgREZHIHByb3BlcnR5IGFjY2VzcyBzdHVicyBzaG91bGQgdXNl
IHN0cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NThlNjcyOWMyOGFlMzlkYjkwYTE5MTA5Yzk4MjA3YmVi
NTk1OTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1m
b3JtLWF0dHJpYnV0ZS1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2IEBACitUZXN0
IGZvciB0aGUgZGF0YWxpc3QgZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1Rlc3QgMTogSW5zZXJ0IG5ldyBpbnB1dCBhZnRlciBmb3JtLgorUEFTUyBmb3JtLmVsZW1l
bnRzLmxlbmd0aCBpcyAxCitQQVNTIGZvcm0uZWxlbWVudHNbMF0gaXMgaW5wdXQKK1Rlc3QgMjog
SW5zZXJ0IHR3byBmb3JtcyB3aXRoIHNhbWUgaWQuCitQQVNTIGZvcm0xLmVsZW1lbnRzLmxlbmd0
aCBpcyAxCitQQVNTIGZvcm0yLmVsZW1lbnRzLmxlbmd0aCBpcyAwCitQQVNTIGZvcm0xLmVsZW1l
bnRzWzBdIGlzIGlucHV0CitUZXN0IDM6IENoYW5nZSBmb3JtIGlkLgorUEFTUyBmb3JtLmVsZW1l
bnRzLmxlbmd0aCBpcyAxCitQQVNTIGZvcm0uZWxlbWVudHNbMF0gaXMgaW5wdXQKK1Rlc3QgNDog
T3JkZXIuCitQQVNTIGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDUKK1BBU1MgZm9ybS5lbGVtZW50
c1swXSBpcyBpbnB1dDEKK1BBU1MgZm9ybS5lbGVtZW50c1sxXSBpcyBpbnB1dDIKK1BBU1MgZm9y
bS5lbGVtZW50c1syXSBpcyBpbnB1dDMKK1BBU1MgZm9ybS5lbGVtZW50c1szXSBpcyBpbnB1dDQK
K1BBU1MgZm9ybS5lbGVtZW50c1s0XSBpcyBpbnB1dDUKK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5n
dGggaXMgNAorUEFTUyBmb3JtLmVsZW1lbnRzWzBdIGlzIGlucHV0MQorUEFTUyBmb3JtLmVsZW1l
bnRzWzFdIGlzIGlucHV0MworUEFTUyBmb3JtLmVsZW1lbnRzWzJdIGlzIGlucHV0NAorUEFTUyBm
b3JtLmVsZW1lbnRzWzNdIGlzIGlucHV0NQorVGVzdCA1OiBBZGQgbmV3IGVsZW1lbnQgd2l0aCBm
b3JtIGF0dHJpYnV0ZSB0byB0aGUgZm9ybS4KK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMg
MworUEFTUyBmb3JtLmVsZW1lbnRzWzBdIGlzIGlucHV0MQorUEFTUyBmb3JtLmVsZW1lbnRzWzFd
IGlzIGlucHV0MgorUEFTUyBmb3JtLmVsZW1lbnRzWzJdIGlzIGlucHV0MworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMWNhZTFlODU5MzI1YWIxYmI4MTczYjRhNDJkODAyZWUzNWM3Zjg3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1
dGUtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsMTA3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPGRpdiBpZD0idGVzdCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIHRoZSBkYXRhbGlzdCBlbGVtZW50LicpOworCit2
YXIgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworCitmdW5j
dGlvbiBjcmVhdGVGb3JtKGlkKSB7CisgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJmb3JtIik7CisgICAgZm9ybS5pZCA9IGlkOworICAgIHRlc3RFbGVtZW50LmFwcGVuZENo
aWxkKGZvcm0pOworICAgIHJldHVybiBmb3JtOworfTsKKworZnVuY3Rpb24gY3JlYXRlSW5wdXQo
Zm9ybSkgeworICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7
CisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJmb3JtIiwgZm9ybSk7CisgICAgdGVzdEVsZW1lbnQu
YXBwZW5kQ2hpbGQoaW5wdXQpOworICAgIHJldHVybiBpbnB1dDsKK307CisKK2Z1bmN0aW9uIHRl
c3QxKCkgeworICAgIGRlYnVnKCJUZXN0IDE6IEluc2VydCBuZXcgaW5wdXQgYWZ0ZXIgZm9ybS4i
KTsKKyAgICBmb3JtID0gY3JlYXRlRm9ybSgidGVzdDEiKTsKKyAgICBpbnB1dCA9IGNyZWF0ZUlu
cHV0KCJ0ZXN0MSIpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICcxJyk7
CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQnKTsKK307CisKK2Z1bmN0
aW9uIHRlc3QyKCkgeworICAgIGRlYnVnKCJUZXN0IDI6IEluc2VydCB0d28gZm9ybXMgd2l0aCBz
YW1lIGlkLiIpOworICAgIGlucHV0ID0gY3JlYXRlSW5wdXQoInRlc3QyIik7CisgICAgZm9ybTEg
PSBjcmVhdGVGb3JtKCJ0ZXN0MiIpOworICAgIGZvcm0yID0gY3JlYXRlRm9ybSgidGVzdDIiKTsK
KyAgICBzaG91bGRCZSgnZm9ybTEuZWxlbWVudHMubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRC
ZSgnZm9ybTIuZWxlbWVudHMubGVuZ3RoJywgJzAnKTsKKyAgICBzaG91bGRCZSgnZm9ybTEuZWxl
bWVudHNbMF0nLCAnaW5wdXQnKTsKK307CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGRlYnVn
KCJUZXN0IDM6IENoYW5nZSBmb3JtIGlkLiIpOworICAgIGZvcm0gPSBjcmVhdGVGb3JtKCJ0ZXN0
My0xIik7CisgICAgaW5wdXQgPSBjcmVhdGVJbnB1dCgidGVzdDMtMiIpOworICAgIGZvcm0uaWQg
PSAidGVzdDMtMiI7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMubGVuZ3RoJywgJzEnKTsK
KyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1swXScsICdpbnB1dCcpOworfTsKKworZnVuY3Rp
b24gdGVzdDQoKSB7CisgICAgZGVidWcoIlRlc3QgNDogT3JkZXIuIik7CisgICAgaW5wdXQxID0g
Y3JlYXRlSW5wdXQoInRlc3Q0Iik7CisgICAgaW5wdXQyID0gY3JlYXRlSW5wdXQoInRlc3Q0Iik7
CisgICAgZm9ybSA9IGNyZWF0ZUZvcm0oInRlc3Q0Iik7CisgICAgaW5wdXQzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICBmb3JtLmFwcGVuZENoaWxkKGlucHV0Myk7Cisg
ICAgaW5wdXQ0ID0gY3JlYXRlSW5wdXQoInRlc3Q0Iik7CisgICAgaW5wdXQ1ID0gY3JlYXRlSW5w
dXQoInRlc3Q0Iik7CisgICAgCisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMubGVuZ3RoJywg
JzUnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1swXScsICdpbnB1dDEnKTsKKyAgICBz
aG91bGRCZSgnZm9ybS5lbGVtZW50c1sxXScsICdpbnB1dDInKTsKKyAgICBzaG91bGRCZSgnZm9y
bS5lbGVtZW50c1syXScsICdpbnB1dDMnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1sz
XScsICdpbnB1dDQnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1s0XScsICdpbnB1dDUn
KTsKKworICAgIGlucHV0Mi5zZXRBdHRyaWJ1dGUoImZvcm0iLCAiIik7CisgICAgc2hvdWxkQmUo
J2Zvcm0uZWxlbWVudHMubGVuZ3RoJywgJzQnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50
c1swXScsICdpbnB1dDEnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1sxXScsICdpbnB1
dDMnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1syXScsICdpbnB1dDQnKTsKKyAgICBz
aG91bGRCZSgnZm9ybS5lbGVtZW50c1szXScsICdpbnB1dDUnKTsKK307CisKK2Z1bmN0aW9uIHRl
c3Q1KCkgeworICAgIGRlYnVnKCJUZXN0IDU6IEFkZCBuZXcgZWxlbWVudCB3aXRoIGZvcm0gYXR0
cmlidXRlIHRvIHRoZSBmb3JtLiIpOworICAgIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJmb3JtIik7CisgICAgZm9ybS5pZCA9ICJ0ZXN0NSI7CisgICAgZm9ybS5pbm5lckhUTUwgPSAi
PHRleHRhcmVhIGlkPVwidGVzdDUtaW5wdXQxXCI+PC90ZXh0YXJlYT48aW5wdXQgZm9ybT10ZXN0
NSBpZD1cInRlc3Q1LWlucHV0MlwiPjxzZWxlY3QgaWQ9XCJ0ZXN0NS1pbnB1dDNcIj4iOworICAg
IHRlc3QuYXBwZW5kQ2hpbGQoZm9ybSk7CisgICAgaW5wdXQxID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3Q1LWlucHV0MSIpOworICAgIGlucHV0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0NS1pbnB1dDIiKTsKKyAgICBpbnB1dDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdDUtaW5wdXQzIik7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHMubGVuZ3RoJywg
JzMnKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50c1swXScsICdpbnB1dDEnKTsKKyAgICBz
aG91bGRCZSgnZm9ybS5lbGVtZW50c1sxXScsICdpbnB1dDInKTsKKyAgICBzaG91bGRCZSgnZm9y
bS5lbGVtZW50c1syXScsICdpbnB1dDMnKTsKK307CisKK3Rlc3QxKCk7Cit0ZXN0MigpOwordGVz
dDMoKTsKK3Rlc3Q0KCk7Cit0ZXN0NSgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152190</attachid>
            <date>2012-07-13 02:01:59 -0700</date>
            <delta_ts>2012-07-13 07:03:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91042-20120713180157.patch</filename>
            <type>text/plain</type>
            <size>47464</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZjRiZjNmZmU5MTYzM2M3OGNhNDJjNzk3ZjBiOTBkNzZlMjk3OGM5Li5k
ZDk3MjZlYzk0YzQwOTg3OGNjYjMzZTEwZjdmMWMwZTExYzliZTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzQgQEAKKzIwMTItMDctMTMgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgRm9ybSBvZiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgaXMgbm90IHVwZGF0
ZWQgd2hlbiBpZCB0YXJnZXQgY2hhbmdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUt
ZWxlbWVudC5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBJZFRhcmdl
dE9ic2VydmVyIGFuZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgY2xhc3MuCisgICAgICAgIFRo
ZXkgY2FuIGJlIHVzZWQgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgZWxlbWVudCB0aGF0IGFuIGlk
IGlzIHBvaW50aW5nIHRvICh0aGUgaWQgdGFyZ2V0KQorICAgICAgICBjaGFuZ2VzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS57aCxj
cHB9IGFuZCBJZFRhcmdldE9ic2VydmVyLntoLGNwcH0KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IERpdHRvLgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0lk
VGFyZ2V0T2JzZXJ2ZXIuY3BwOiBBZGRlZC4gV2hlbiB5b3Ugd2FudCBub3RpZmllZCBvZiBjaGFu
Z2VzIHRvIGFuIGlkIHRhcmdldCwgeW91IHNob3VsZCBjcmVhdGUgYSBuZXcgY2xhc3MgdGhhdCBp
bmhlcml0cyB0aGlzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRh
cmdldE9ic2VydmVyOjpJZFRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklkVGFy
Z2V0T2JzZXJ2ZXI6On5JZFRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBkb20vSWRUYXJnZXRP
YnNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSWRUYXJnZXRP
YnNlcnZlcik6CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6OmFkZE9ic2VydmVyKTogUmVnaXN0ZXIgYW4gSWRUYXJnZXRPYnNlcnZlciB0byBv
YnNlcnZlIGFuIGlkIHRhcmdldC4KKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeTo6cmVtb3ZlT2JzZXJ2ZXIpOiBVbnJlZ2lzdGVycyBhbiBJZFRhcmdldE9ic2VydmVy
IGZyb20gb2JzZXJ2aW5nLgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5Ojpub3RpZnlPYnNlcnZlcnNJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzKTogQ2FsbHMgaWRUYXJn
ZXRDaGFuZ2VkIG9uIGFsbCBvYnNlcnZlcnMgZm9yIGFuIGlkLiBJbmxpbmluZyBmaXJzdCBwYXJ0
IG9mIGZ1bmN0aW9uIGZvciBwZXJmb3JtYW5jZS4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyZWVTY29wZTo6YWRkRWxlbWVudEJ5SWQpOiBDYWxscyBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6Om5vdGlmeU9ic2VydmVycyBiZWNhdXNlIHRoZSBpZCB0YXJnZXQgbWlnaHQgaGF2
ZSBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpyZW1vdmVFbGVtZW50QnlJ
ZCk6IERpdHRvLgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjppZFRhcmdldE9ic2VydmVyUmVnaXN0cnkp
OgorICAgICAgICAoVHJlZVNjb3BlKToKKyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHA6IE9ic2VydmVyIGZvciBpZCB0YXJnZXRzIGRlZmluZWQgYnkgdGhlIGZvcm0gYXR0
cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3Zl
VG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6
Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6
OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6
Zm9ybUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRF
bGVtZW50OjpyZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6IENyZWF0ZXMgYW5kIHNl
dHMgdXAgYSBuZXcgRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1
dGVUYXJnZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1BdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1BdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlcjo6Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6aWRUYXJnZXRDaGFuZ2VkKToKKyAgICAgICAg
KiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBo
dG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChGb3JtQ29udHJvbGxlcik6CisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6
OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZSk6IE1vZGlmaWVkIHRvIHRha2UgYSBy
YW5nZS4gSXQKKyAgICAgICAgc2NhbnMgdGhlIHJhbmdlIGFuZCByZXR1cm5zIHRoZSBpbmRleCB0
byBpbnNlcnQgdGhlIGVsZW1lbnQgaW4gbV9hc3NvY2lhdGVkRWxlbWVudC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleCk6IE1vZGlmaWVkIHRvIG9u
bHkgc2NhbiB0aGUgZWxlbWVudHMgaW4KKyAgICAgICAgbV9hc3NvY2lhdGVkRWxlbWVudCB0aGF0
IHByZWNlZGUgYW5kIGZvbGxvdyB0aGUgZm9ybSBlbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1FbGVtZW50Lmg6CisgICAgICAgIChIVE1MRm9ybUVsZW1lbnQpOgorCiAyMDEyLTA3LTEy
ICBEb25nd29vIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgQ29kZUdlbmVyYXRv
ckpTLnBtIG5lZWQgdG8gaGFuZGxlIHRoZSBhdHRyaWJ1dGUgd2hpY2ggaGFzICJDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0IiBvcHRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGMw
MmIyMTFlNDEyNjE3NGZmYmRjYjJhYWRhZWMwZjhmODI2N2U1ZGMuLmNlNTg2ODg2ODI5YmYxMzli
ZDdmMjM3MDBkYWNjODcxYjE1MmQ1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC02MTAsNiAr
NjEwLDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9FeGNlcHRpb25Db2RlUGxhY2Vo
b2xkZXIuY3BwCiAgICAgZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAogICAgIGRvbS9JY29uVVJM
LmNwcAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyLmNwcAorICAgIGRvbS9JZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuY3BwCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwCiAgICAgZG9tL01lc3Nh
Z2VDaGFubmVsLmNwcAogICAgIGRvbS9NZXNzYWdlRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA2M2IxNzBhMDcxMTBjOTI3YTQ3ZDcwZWI4ZjU0OWYyOTAzNGU5ZGM4
Li41YWE3MzIyMTA3MDFjNjJjZDIwMmE2Mjg0NWIwN2ZlYWU1Mzc3NDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5NDIsNiArMTk0MiwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vSWNvblVSTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9LZXlib2FyZEV2ZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggOTQ5NDFiMTIwYzIzOTli
MWY1ZDQ1OGFmMjUxODMyYjJkMGRmYjU5ZS4uZDNlMjM0MTY5NDRjYzYzMjQzYzljNzVjODYxNTUx
MGY4MWQ1ZTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC01NzMsNiArNTczLDggQEAgU09VUkNFUyArPSBc
CiAgICAgZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5jcHAgXAogICAgIGRvbS9HZW5lcmlj
RXZlbnRRdWV1ZS5jcHAgXAogICAgIGRvbS9JY29uVVJMLmNwcCBcCisgICAgZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXIuY3BwIFwKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBcCiAg
ICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKICAgICBkb20vTWVzc2FnZUNoYW5uZWwuY3BwIFwK
ICAgICBkb20vTWVzc2FnZUV2ZW50LmNwcCBcCkBAIC0xNzU5LDYgKzE3NjEsOCBAQCBIRUFERVJT
ICs9IFwKICAgICBkb20vRXhjZXB0aW9uQmFzZS5oIFwKICAgICBkb20vRXhjZXB0aW9uQ29kZS5o
IFwKICAgICBkb20vRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggXAorICAgIGRvbS9JZFRh
cmdldE9ic2VydmVyLmggXAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBcCiAg
ICAgZG9tL0tleWJvYXJkRXZlbnQuaCBcCiAgICAgZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
IFwKICAgICBkb20vTWVzc2FnZUNoYW5uZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTFiMDIw
NDE5NDFkMGNmYTI3NWNlNmFlMGU2ZjU0Njg3NDM2YjViOC4uMGY5YzZmMzU0OTVkZTM2Yjg4MGFh
ZGZkMTcwY2ZkYWZkYTAyNjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTE3OSw2ICs1MTc5LDEw
IEBACiAgICAgICAgICAgICAnZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVu
dGVyLmgnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmNwcCcsCiAgICAgICAgICAgICAnZG9t
L0ljb25VUkwuaCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwJywKKyAg
ICAgICAgICAgICdkb20vSWRUYXJnZXRPYnNlcnZlci5oJywKKyAgICAgICAgICAgICdkb20vSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdkb20vS2V5Ym9hcmRFdmVudC5jcHAnLAog
ICAgICAgICAgICAgJ2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAn
ZG9tL01lc3NhZ2VDaGFubmVsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDk1MTE4ZGM4N2U5Njk2ZjJkNjk2ZjQ5MzA4NzAyYzhkYjRh
ZmQ3NDMuLjJlMDNkMGQ3OGNhOTRjOWExZjgwZjVjNDhiYjkwZDdiMDMyYTg0MjEgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MTE5OSw2ICs1
MTE5OSwxMTggQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRUYXJnZXRPYnNlcnZlci5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggM2IzYmIyZGY5YmQ0YWIxODYwNTM5NzJlZGNmZTc0MjQxMDIyZjc2ZC4u
NzAwZjU5M2UxYzUxYThkNTAzMDQwYzkwYzkzYjEwYWQ3MGUxYzRlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcyNCw2ICs1
NzI0LDEwIEBACiAJCUMzM0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0
aEtleUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJ
bnB1dFR5cGUuY3BwICovOyB9OwogCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNs
aWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxl
V2l0aEtleUlucHV0VHlwZS5oICovOyB9OwogCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyog
Q29sb3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMzdDREVCQzE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzND
RjE3QTQxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTAxNUIwMDYzRjAwMjc2
RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovOyB9OworCQlDM0NGMTdBNTE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0Ey
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owor
CQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYxMjExOUQyMzAw
OEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGlu
Z3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5n
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2
MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQg
LyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFj
ZS5jcHAgKi87IH07CkBAIC0xMjk0Myw2ICsxMjk0NywxMCBAQAogCQlDMzNFRTVDMjE0RkI0OTYx
MDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzNFRTVDMzE0RkI0OTYxMDAwMjA5
NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzM3Q0RFQkMxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hv
b3NlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNob29z
ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNDRjE3QTAxNUIwMDYz
RjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMzQ0YxN0ExMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDM0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDQ3LDYgKzIxNDU1
LDEwIEBACiAJCQkJODQ4MkI3NDQxMTk4QzMyRTAwQkZCMDA1IC8qIEhhc2hDaGFuZ2VFdmVudC5p
ZGwgKi8sCiAJCQkJNDUwOTlDNDAxMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwICovLAog
CQkJCTQ1QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8sCisJCQkJQzNDRjE3
QTAxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovLAorCQkJCUMzQ0Yx
N0ExMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8sCisJCQkJQzNDRjE3
QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8sCisJ
CQkJQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5o
ICovLAogCQkJCThBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2ZVdy
aXRlQ291bnRJbmNyZW1lbnRlci5oICovLAogCQkJCTg1MDMxQjJEMEE0NEVGQzcwMEY5OTJFMCAv
KiBLZXlib2FyZEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyRTBBNDRFRkM3MDBGOTkyRTAgLyog
S2V5Ym9hcmRFdmVudC5oICovLApAQCAtMjUxOTMsNiArMjUyMDUsOCBAQAogCQkJCUUxQkU1MTJF
MENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4MjUwLDYgKzI4MjY0LDggQEAKIAkJ
CQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDM0NGMTdBNDE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJn
ZXRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZE
MzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggNTkyZDcyOTkyYWM0ZjM0ZjBiM2Y5YjBjMDMzYjI4
YWJhMmU4ODM0OC4uOWJkNGNiNGQ5MTZlMDQyYzJjZWJhN2UwMmFmMWQ4NTUwYjYwNDAwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC04NCw2ICs4NCw4IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uQmFzZS5jcHAiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNw
cCIKICNpbmNsdWRlICJJY29uVVJMLmNwcCIKKyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyLmNw
cCIKKyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIgogI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuY3BwIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmNwcCIKICNpbmNsdWRl
ICJNZXNzYWdlRXZlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFy
Z2V0T2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFmYWRkMzhmOTA4MTRjOTkxNjAzYzBlMjI1Y2U5MGQ4OGNhYzQxMjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5jcHAK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlci5o
IgorCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSWRUYXJnZXRPYnNlcnZlcjo6SWRUYXJnZXRPYnNlcnZlcihJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkmIHJlZ2lzdHJ5LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorICAgIDog
bV9yZWdpc3RyeSgmcmVnaXN0cnkpCisgICAgLCBtX2lkKGlkKQoreworICAgIG1fcmVnaXN0cnkt
PmFkZE9ic2VydmVyKG1faWQsIHRoaXMpOworfQorCitJZFRhcmdldE9ic2VydmVyOjp+SWRUYXJn
ZXRPYnNlcnZlcigpCit7CisgICAgaWYgKG1fcmVnaXN0cnkpCisgICAgICAgIG1fcmVnaXN0cnkt
PnJlbW92ZU9ic2VydmVyKG1faWQsIHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTAwN2M0Nzgw
MjVmODBiNDk3YWZhYTJiMGQ5NTQxMWFlNjY4NWI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSWRUYXJnZXRP
YnNlcnZlcl9oCisjZGVmaW5lIElkVGFyZ2V0T2JzZXJ2ZXJfaAorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5OworCitjbGFzcyBJZFRhcmdldE9ic2VydmVyIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5JZFRhcmdldE9ic2VydmVyKCk7CisgICAgdmlydHVhbCB2b2lkIGlkVGFy
Z2V0Q2hhbmdlZCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIElkVGFyZ2V0T2JzZXJ2ZXIoSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5JiwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CisKK3ByaXZh
dGU6CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KiBtX3JlZ2lzdHJ5OworICAgIEF0b21p
Y1N0cmluZyBtX2lkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
SWRUYXJnZXRPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYzI2YWNmZWUzMzJlYjdkMmQ2MTliYTU5MjBj
NzMzZjViYjBmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIklkVGFyZ2V0T2Jz
ZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPElkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeT4gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFB0cihuZXcgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkpOworfQorCit2
b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGlkLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fcmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CisgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9
IGFkb3B0UHRyKG5ldyBPYnNlcnZlclNldCgpKTsKKworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kLT5hZGQob2JzZXJ2ZXIpOworfQorCit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6
cmVtb3ZlT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciog
b2JzZXJ2ZXIpCit7CisgICAgaWYgKGlkLmlzRW1wdHkoKSB8fCBtX3JlZ2lzdHJ5LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSWRUb09ic2VydmVyU2V0TWFwOjppdGVyYXRvciBp
dGVyID0gbV9yZWdpc3RyeS5maW5kKGlkLmltcGwoKSk7CisKKyAgICBPYnNlcnZlclNldCogc2V0
ID0gaXRlci0+c2Vjb25kLmdldCgpOworICAgIHNldC0+cmVtb3ZlKG9ic2VydmVyKTsKKyAgICBp
ZiAoc2V0LT5pc0VtcHR5KCkgJiYgc2V0ICE9IG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQpCisg
ICAgICAgIG1fcmVnaXN0cnkucmVtb3ZlKGl0ZXIpOworfQorCit2b2lkIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCkKK3sKKyAgICBBU1NFUlQoIWlkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3JlZ2lzdHJ5
LmlzRW1wdHkoKSk7CisKKyAgICBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0ID0gbV9yZWdpc3Ry
eS5nZXQoaWQuaW1wbCgpKTsKKyAgICBpZiAoIW1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxJZFRhcmdldE9ic2VydmVyKj4gY29weTsKKyAg
ICBjb3B5VG9WZWN0b3IoKm1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQsIGNvcHkpOworICAgIGZv
ciAoVmVjdG9yPElkVGFyZ2V0T2JzZXJ2ZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3B5LmJl
Z2luKCk7IGl0ICE9IGNvcHkuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKG1fbm90aWZ5aW5n
T2JzZXJ2ZXJzSW5TZXQtPmNvbnRhaW5zKCppdCkpCisgICAgICAgICAgICAoKml0KS0+aWRUYXJn
ZXRDaGFuZ2VkKCk7CisgICAgfQorCisgICAgaWYgKG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQt
PmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZWdpc3RyeS5yZW1vdmUoaWQuaW1wbCgpKTsKKworICAg
IG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWJhNzU1MjEwMGU0ZTk3ZTBmNjc3OGEyOWRkNGY3YWI0ZDQ1MzAxYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
aApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5X2gKKyNkZWZpbmUgSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5X2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlcjsKKworY2xhc3Mg
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5IHsKKyAgICBmcmllbmQgY2xhc3MgSWRUYXJnZXRPYnNl
cnZlcjsKKworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeT4gY3JlYXRlKCk7CisgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCk7CisKK3ByaXZhdGU6CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkg
OiBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0KDApIHsgfQorICAgIHZvaWQgYWRkT2JzZXJ2ZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgcmVt
b3ZlT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOwor
ICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7
CisKKyAgICB0eXBlZGVmIEhhc2hTZXQ8SWRUYXJnZXRPYnNlcnZlcio+IE9ic2VydmVyU2V0Owor
ICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgT3duUHRyPE9ic2VydmVyU2V0
PiA+IElkVG9PYnNlcnZlclNldE1hcDsKKyAgICBJZFRvT2JzZXJ2ZXJTZXRNYXAgbV9yZWdpc3Ry
eTsKKyAgICBPYnNlcnZlclNldCogbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldDsKK307CisKK2lu
bGluZSB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpCit7CisgICAgQVNTRVJUKCFtX25vdGlmeWluZ09ic2VydmVyc0lu
U2V0KTsKKyAgICBpZiAoaWQuaXNFbXB0eSgpIHx8IG1fcmVnaXN0cnkuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZl
cnNJbnRlcm5hbChpZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4
IGJmMDQ5YjFkYWIwMjFiYzg1YmQ1NjY2OWFjYjBkYzQzNjA5NWMyNDMuLmU4OGIxM2FiODhlNzVl
YTEzNDcxZDQ5MGQ2ZDllMzZiOTM5Yzc5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC01NCw2ICs1
NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBUcmVlU2NvcGU6OlRyZWVTY29wZShD
b250YWluZXJOb2RlKiByb290Tm9kZSkKICAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCiAgICAg
LCBtX3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnko
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKIHsKICAgICBBU1NFUlQocm9vdE5v
ZGUpOwogfQpAQCAtOTIsMTEgKzk0LDEzIEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVu
dEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB2b2lkIFRyZWVTY29w
ZTo6YWRkRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAgICAgbV9lbGVtZW50c0J5SWQuYWRkKGVsZW1lbnRJZC5pbXBsKCksIGVs
ZW1lbnQpOworICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMo
ZWxlbWVudElkKTsKIH0KIAogdm9pZCBUcmVlU2NvcGU6OnJlbW92ZUVsZW1lbnRCeUlkKGNvbnN0
IEF0b21pY1N0cmluZyYgZWxlbWVudElkLCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIG1fZWxl
bWVudHNCeUlkLnJlbW92ZShlbGVtZW50SWQuaW1wbCgpLCBlbGVtZW50KTsKKyAgICBtX2lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJZCk7CiB9CiAKIE5v
ZGUqIFRyZWVTY29wZTo6YW5jZXN0b3JJblRoaXNTY29wZShOb2RlKiBub2RlKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5oCmluZGV4IDc3ZTIzMDdjMTVjNmNmZTQ4NGE2OThkNmNjOTQ0ZjllNTVi
Y2Y1ZDQuLjg0MWJiYjZjMWNiYjljYzE5NmYwMTk0MjA4YzRhNzBlOTgyMWQ4ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNs
YXNzIERPTVNlbGVjdGlvbjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsK
K2NsYXNzIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTsKIGNsYXNzIE5vZGU7CiAKIC8vIEEgY2xh
c3Mgd2hpY2ggaW5oZXJpdHMgYm90aCBOb2RlIGFuZCBUcmVlU2NvcGUgbXVzdCBjYWxsIGNsZWFy
UmFyZURhdGEoKSBpbiBpdHMgZGVzdHJ1Y3RvcgpAQCAtNzgsNiArNzksOCBAQCBwdWJsaWM6CiAK
ICAgICBDb250YWluZXJOb2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7
IH0KIAorICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgaWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5KCkgY29uc3QgeyByZXR1cm4gKm1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmdldCgpOyB9
CisKIHByb3RlY3RlZDoKICAgICBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOwogICAgIHZpcnR1
YWwgflRyZWVTY29wZSgpOwpAQCAtOTEsNiArOTQsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50
T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9pbWFn
ZU1hcHNCeU5hbWU7CiAKKyAgICBPd25QdHI8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PiBtX2lk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTsKKwogICAgIG11dGFibGUgUmVmUHRyPERPTVNlbGVjdGlv
bj4gbV9zZWxlY3Rpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lh
dGVkRWxlbWVudC5jcHAKaW5kZXggMjE3OTFmMDk2MGFlNDdjOGYxOGU5YmYzMGIxMWNkN2E2N2Y2
ODQ1My4uYmQ3N2QxMDQxMDhlZjJiYmUxMDBiNTE1ZGFlNmI2YmIwYzliMzVlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtMzAsMTIgKzMw
LDI0IEBACiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJZFRhcmdldE9i
c2VydmVyLmgiCiAjaW5jbHVkZSAiVmFsaWRpdHlTdGF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK2NsYXNzIEZvcm1BdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlciA6IElkVGFyZ2V0T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBp
ZFRhcmdldENoYW5nZWQoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBGb3JtQXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Kik7CisKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIG1fZWxlbWVudDsKK307CisKIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50KCkKICAgICA6IG1fZm9y
bSgwKQogewpAQCAtNTgsNyArNzAsNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlk
TW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewogICAgIEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKICAgICBpZiAob2xkRG9jdW1lbnQg
JiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCi0gICAgICAgIG9sZERvY3Vt
ZW50LT5mb3JtQ29udHJvbGxlcigpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJp
YnV0ZSh0aGlzKTsKKyAgICAgICAgcmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsK
IH0KIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJO
b2RlKiBpbnNlcnRpb25Qb2ludCkKQEAgLTY5LDE0ICs4MSwxNCBAQCB2b2lkIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQog
CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOwogICAgIGlm
IChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKLSAgICAgICAgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3Jt
QXR0cmlidXRlKHRoaXMpOworICAgICAgICByZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
cigpOwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0
b0hUTUxFbGVtZW50KHRoaXMpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgp
ICYmIGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICBlbGVtZW50
LT5kb2N1bWVudCgpLT5mb3JtQ29udHJvbGxlcigpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRo
Rm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXIgPSBudWxscHRyOwogICAgIC8vIElmIHRoZSBmb3JtIGFuZCBlbGVtZW50IGFyZSBib3RoIGlu
IHRoZSBzYW1lIHRyZWUsIHByZXNlcnZlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBmb3JtLgogICAg
IC8vIE90aGVyd2lzZSwgbnVsbCBvdXQgb3VyIGZvcm0gYW5kIHJlbW92ZSBvdXJzZWx2ZXMgZnJv
bSB0aGUgZm9ybSdzIGxpc3Qgb2YgZWxlbWVudHMuCiAgICAgaWYgKG1fZm9ybSAmJiBlbGVtZW50
LT5oaWdoZXN0QW5jZXN0b3IoKSAhPSBtX2Zvcm0tPmhpZ2hlc3RBbmNlc3RvcigpKQpAQCAtMTUz
LDkgKzE2NSwxMSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNo
YW5nZWQoKQogICAgIGlmICghZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpIHsK
ICAgICAgICAgLy8gVGhlIGZvcm0gYXR0cmlidXRlIHJlbW92ZWQuIFdlIG5lZWQgdG8gcmVzZXQg
Zm9ybSBvd25lciBoZXJlLgogICAgICAgICBzZXRGb3JtKGVsZW1lbnQtPmZpbmRGb3JtQW5jZXN0
b3IoKSk7Ci0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPmZvcm1Db250cm9sbGVyKCktPnVu
cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKHRoaXMpOwotICAgIH0gZWxzZQor
ICAgICAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CisgICAgfSBl
bHNlIHsKICAgICAgICAgcmVzZXRGb3JtT3duZXIoKTsKKyAgICAgICAgcmVzZXRGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKKyAgICB9CiB9CiAKIGJvb2wgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpjdXN0b21FcnJvcigpIGNvbnN0CkBAIC0yMjEsNiArMjM1LDE2IEBAIHZvaWQgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQog
ICAgIG1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgPSBlcnJvcjsKIH0KIAordm9pZCBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKK3sKKyAg
ICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcjo6Y3JlYXRlKHRvSFRNTEVsZW1lbnQodGhpcyktPmZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0
dHIpLCB0aGlzKTsKK30KKwordm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1
dGVUYXJnZXRDaGFuZ2VkKCkKK3sKKyAgICByZXNldEZvcm1Pd25lcigpOworfQorCiBjb25zdCBB
dG9taWNTdHJpbmcmIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7CiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gdG9IVE1MRWxlbWVudCh0aGlzKS0+Z2V0TmFtZUF0
dHJpYnV0ZSgpOwpAQCAtMjQyLDQgKzI2NiwyMCBAQCBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVu
dChGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50KQogICAgIHJldHVybiBj
b25zdF9jYXN0PEhUTUxFbGVtZW50Kj4odG9IVE1MRWxlbWVudChzdGF0aWNfY2FzdDxjb25zdCBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqPihhc3NvY2lhdGVkRWxlbWVudCkpKTsKIH0KIAorUGFzc093
blB0cjxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcjo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZvcm1BdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlcihpZCwgZWxlbWVudCkpOworfQorCitGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXI6OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcihjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBJZFRhcmdldE9ic2VydmVyKHRv
SFRNTEVsZW1lbnQoZWxlbWVudCktPnRyZWVTY29wZSgpLT5pZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkoKSwgaWQpCisgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKK3sKK30KKwordm9pZCBGb3JtQXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6OmlkVGFyZ2V0Q2hhbmdlZCgpCit7CisgICAgbV9lbGVtZW50
LT5mb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJj
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCA1
YTQ3ZWEwNzZkYjJhNzRlZjUwZTk0NTY1YWU3Y2I0ZjBiYTUwMjExLi44MDRmMmNiOGM3NTNlZGMy
NGY4NWM2ZjMzMzdjOTdkYzA5OTkwYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI7CiBjbGFzcyBGb3JtRGF0YUxp
c3Q7CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZTsKQEAg
LTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIGJvb2wgdmFsaWQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGZv
cm1BdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCk7CisKIHByb3RlY3RlZDoKICAgICBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQoKTsKIApAQCAtMTAxLDYgKzEwNCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHJlZkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSA9IDA7CiAKKyAgICB2b2lkIHJlc2V0Rm9ybUF0
dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CisKKyAgICBPd25QdHI8Rm9ybUF0dHJpYnV0ZVRhcmdl
dE9ic2VydmVyPiBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKICAgICBIVE1MRm9ybUVs
ZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRl
OwogICAgIFN0cmluZyBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA5NDEwN2E2NmY0ZjE4OTgzYzI5YWZhODdmMTIyOWY4
MzhhZmE1OTgxLi42YjI5YjZmZTdjMDdhMTNjYmQxOTBiY2RiYTRjOTc4MGJkMmZjOGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMjQwLDI1ICsyNDAsNiBAQCB2
b2lkIEZvcm1Db250cm9sbGVyOjp3aWxsRGVsZXRlRm9ybShIVE1MRm9ybUVsZW1lbnQqIGZvcm0p
CiAgICAgICAgIG1fZm9ybUtleUdlbmVyYXRvci0+d2lsbERlbGV0ZUZvcm0oZm9ybSk7CiB9CiAK
LXZvaWQgRm9ybUNvbnRyb2xsZXI6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0
ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKHRvSFRNTEVs
ZW1lbnQoZWxlbWVudCktPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKTsKLSAgICBtX2Zvcm1F
bGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLmFkZChlbGVtZW50KTsKLX0KLQotdm9pZCBGb3JtQ29u
dHJvbGxlcjo6dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29j
aWF0ZWRFbGVtZW50KiBlbGVtZW50KQotewotICAgIG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRy
aWJ1dGUucmVtb3ZlKGVsZW1lbnQpOwotfQotCi12b2lkIEZvcm1Db250cm9sbGVyOjpyZXNldEZv
cm1FbGVtZW50c093bmVyKCkKLXsKLSAgICB0eXBlZGVmIEZvcm1Bc3NvY2lhdGVkRWxlbWVudExp
c3RIYXNoU2V0OjppdGVyYXRvciBJdGVyYXRvcjsKLSAgICBJdGVyYXRvciBlbmQgPSBtX2Zvcm1F
bGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLmVuZCgpOwotICAgIGZvciAoSXRlcmF0b3IgaXQgPSBt
X2Zvcm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgKCppdCktPnJlc2V0Rm9ybU93bmVyKCk7Ci19Ci0KIEZvcm1FbGVtZW50S2V5OjpG
b3JtRWxlbWVudEtleShBdG9taWNTdHJpbmdJbXBsKiBuYW1lLCBBdG9taWNTdHJpbmdJbXBsKiB0
eXBlLCBBdG9taWNTdHJpbmdJbXBsKiBmb3JtS2V5KQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAg
LCBtX3R5cGUodHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAppbmRleCBlMTVj
MWRjMjRhOTgwZjY0NDdhOThiMmUzMjZkMTk2ZDZlMzYzMmEyLi5lOThkMWEwNDljYzA5YmQ3MWNm
ZjBkOTI3YWY0YTRjNTg1ZWNmM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5o
CkBAIC0xMzIsMTAgKzEzMiw2IEBAIHB1YmxpYzoKICAgICBGb3JtQ29udHJvbFN0YXRlIHRha2VT
dGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUm
KTsKICAgICB2b2lkIHdpbGxEZWxldGVGb3JtKEhUTUxGb3JtRWxlbWVudCopOwogCi0gICAgdm9p
ZCByZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqKTsKLSAgICB2b2lkIHJlc2V0Rm9ybUVsZW1lbnRzT3duZXIo
KTsKLQogcHJpdmF0ZToKICAgICBGb3JtQ29udHJvbGxlcigpOwogCkBAIC0xNDMsOCArMTM5LDYg
QEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8SFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZSosIDY0PiBGb3JtRWxlbWVudExpc3RIYXNoU2V0OwogICAgIEZvcm1FbGVt
ZW50TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNXaXRoU3RhdGU7Ci0gICAgdHlwZWRlZiBMaXN0
SGFzaFNldDxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50PiwgMzI+IEZvcm1Bc3NvY2lhdGVk
RWxlbWVudExpc3RIYXNoU2V0OwotICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudExpc3RIYXNoU2V0
IG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
Rm9ybUVsZW1lbnRLZXksIERlcXVlPEZvcm1Db250cm9sU3RhdGU+LCBGb3JtRWxlbWVudEtleUhh
c2gsIEZvcm1FbGVtZW50S2V5SGFzaFRyYWl0cz4gRm9ybUVsZW1lbnRTdGF0ZU1hcDsKICAgICBG
b3JtRWxlbWVudFN0YXRlTWFwIG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggM2M4YmIwNzNjZmY3MGUwYjQ4NzA5MDQ2
NGMwODEwMjllYzI1MTcyNS4uMmY1MzIxYWQyMTBjNTQ4NmIyY2Q5OGE3YTliMmQ0MTE4ZTQ1OTUw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMTQxLDE0ICsx
NDEsNiBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxGb3JtRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqCiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7
CiB9CiAKLXZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9u
cyhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBBU1NFUlQoaW5zZXJ0aW9u
UG9pbnQtPmluRG9jdW1lbnQoKSk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE5vdGlmeURlc2NlbmRh
bnRJbnNlcnRpb25zKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoaGFzSUQoKSkKLSAgICAgICAg
ZG9jdW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+cmVzZXRGb3JtRWxlbWVudHNPd25lcigpOwot
fQotCiBzdGF0aWMgaW5saW5lIE5vZGUqIGZpbmRSb290KE5vZGUqIG4pCiB7CiAgICAgTm9kZSog
cm9vdCA9IG47CkBAIC0xNjQsOCArMTU2LDYgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGFzc29j
aWF0ZWRFbGVtZW50c1tpXS0+Zm9ybVJlbW92ZWRGcm9tVHJlZShyb290KTsKICAgICBIVE1MRWxl
bWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpICYmIGhhc0lEKCkpCi0gICAgICAgIGRvY3VtZW50KCktPmZvcm1Db250
cm9sbGVyKCktPnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKQEAgLTQzNiwzMyArNDI2LDMz
IEBAIHRlbXBsYXRlPGNsYXNzIFQsIHNpemVfdCBuPiBzdGF0aWMgdm9pZCByZW1vdmVGcm9tVmVj
dG9yKFZlY3RvcjxUKiwgbj4gJiB2ZWMsIFQqCiAgICAgICAgIH0KIH0KIAotdW5zaWduZWQgSFRN
TEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCog
ZWxlbWVudCkKK3Vuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhG
b3JtQXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJhbmdlU3RhcnQsIHVuc2ln
bmVkIHJhbmdlRW5kKQogewotICAgIC8vIENvbXBhcmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZm9y
bSBlbGVtZW50IGFuZCB0aGUgaW5zZXJ0ZWQgZWxlbWVudC4KLSAgICAvLyBVcGRhdGVzIHRoZSBp
bmRlY2VzIGluIG9yZGVyIHRvIHRoZSByZWxhdGlvbiBvZiB0aGUgcG9zaXRpb246Ci0gICAgdW5z
aWduZWQgc2hvcnQgcG9zaXRpb24gPSBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlbGVtZW50KTsK
LSAgICBpZiAocG9zaXRpb24gJiAoRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMgfCBET0NVTUVO
VF9QT1NJVElPTl9DT05UQUlORURfQlkpKQotICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRz
QWZ0ZXJJbmRleDsKLSAgICBlbHNlIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX1BS
RUNFRElORykgewotICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7Ci0g
ICAgICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OwotICAgIH0KLQogICAgIGlm
IChtX2Fzc29jaWF0ZWRFbGVtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCisg
ICAgQVNTRVJUKHJhbmdlU3RhcnQgPD0gcmFuZ2VFbmQpOworCisgICAgaWYgKHJhbmdlU3RhcnQg
PT0gcmFuZ2VFbmQpCisgICAgICAgIHJldHVybiByYW5nZVN0YXJ0OworCisgICAgdW5zaWduZWQg
bGVmdCA9IHJhbmdlU3RhcnQ7CisgICAgdW5zaWduZWQgcmlnaHQgPSByYW5nZUVuZCAtIDE7Cisg
ICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb247CisKICAgICAvLyBEb2VzIGJpbmFyeSBzZWFyY2gg
b24gbV9hc3NvY2lhdGVkRWxlbWVudHMgaW4gb3JkZXIgdG8gZmluZCB0aGUgaW5kZXgKICAgICAv
LyB0byBiZSBpbnNlcnRlZC4KLSAgICB1bnNpZ25lZCBsZWZ0ID0gMCwgcmlnaHQgPSBtX2Fzc29j
aWF0ZWRFbGVtZW50cy5zaXplKCkgLSAxOwogICAgIHdoaWxlIChsZWZ0ICE9IHJpZ2h0KSB7CiAg
ICAgICAgIHVuc2lnbmVkIG1pZGRsZSA9IGxlZnQgKyAoKHJpZ2h0IC0gbGVmdCkgLyAyKTsKKyAg
ICAgICAgQVNTRVJUKG1pZGRsZSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggfHwg
bWlkZGxlID49IG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCk7CiAgICAgICAgIHBvc2l0
aW9uID0gZWxlbWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24odG9IVE1MRWxlbWVudChtX2Fz
c29jaWF0ZWRFbGVtZW50c1ttaWRkbGVdKSk7CiAgICAgICAgIGlmIChwb3NpdGlvbiAmIERPQ1VN
RU5UX1BPU0lUSU9OX0ZPTExPV0lORykKICAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBsZWZ0ID0gbWlkZGxlICsgMTsKICAgICB9Ci0KKyAgICAK
KyAgICBBU1NFUlQobGVmdCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggfHwgbGVm
dCA+PSBtX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXgpOwogICAgIHBvc2l0aW9uID0gZWxl
bWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24odG9IVE1MRWxlbWVudChtX2Fzc29jaWF0ZWRF
bGVtZW50c1tsZWZ0XSkpOwogICAgIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX0ZP
TExPV0lORykKICAgICAgICAgcmV0dXJuIGxlZnQ7CkBAIC00NzQsOCArNDY0LDE2IEBAIHVuc2ln
bmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleChGb3JtQXNzb2NpYXRlZEVsZW1l
bnQqIGFzc29jaWF0ZWRFbGVtCiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVt
ZW50KGFzc29jaWF0ZWRFbGVtZW50KTsKICAgICAvLyBUcmVhdHMgc2VwYXJhdGVseSB0aGUgY2Fz
ZSB3aGVyZSB0aGlzIGVsZW1lbnQgaGFzIHRoZSBmb3JtIGF0dHJpYnV0ZQogICAgIC8vIGZvciBw
ZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9uLgotICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmli
dXRlKGZvcm1BdHRyKSkKLSAgICAgICAgcmV0dXJuIGZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0
dHJpYnV0ZShlbGVtZW50KTsKKyAgICBpZiAoZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3Jt
QXR0cikpIHsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBjb21wYXJlRG9jdW1l
bnRQb3NpdGlvbihlbGVtZW50KTsKKyAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9T
SVRJT05fUFJFQ0VESU5HKSB7CisgICAgICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQmVm
b3JlSW5kZXg7CisgICAgICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsK
KyAgICAgICAgICAgIHJldHVybiBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRo
Rm9ybUF0dHJpYnV0ZShlbGVtZW50LCAwLCBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4
IC0gMSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJ
T05fRk9MTE9XSU5HICYmICEocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURf
QlkpKQorICAgICAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRl
eFdpdGhGb3JtQXR0cmlidXRlKGVsZW1lbnQsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRl
eCwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpKTsKKyAgICB9CiAKICAgICAvLyBDaGVjayBm
b3IgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGlzIGVsZW1lbnQgaXMgdGhlIHZlcnkgbGFzdCB0
aGluZyBpbgogICAgIC8vIHRoZSBmb3JtJ3MgdHJlZSBvZiBjaGlsZHJlbjsgd2UgZG9uJ3Qgd2Fu
dCB0byB3YWxrIHRoZSBlbnRpcmUgdHJlZSBpbiB0aGF0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaAppbmRleCBlZTljY2YzOWI3YTE2NGZlYTRjYTdlZDBhN2JhOTFiNDExMzVlMmZh
Li42ZjdhODYzZDhkY2RlZDJkNWZjOTU0MzU2OGFmMTEyOWJiNzlmZmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTExOSw3ICsxMTksNiBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTm90aWZ5
RGVzY2VuZGFudEluc2VydGlvbnMoQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqKTsKQEAgLTEzNSw3ICsxMzQsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBzdWJtaXQoRXZlbnQqLCBib29sIGFjdGl2YXRlU3VibWl0QnV0
dG9uLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyKTsK
IAotICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50
Kik7CisgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKEVsZW1l
bnQqLCB1bnNpZ25lZCByYW5nZVN0YXJ0LCB1bnNpZ25lZCByYW5nZUVuZCk7CiAgICAgdW5zaWdu
ZWQgZm9ybUVsZW1lbnRJbmRleChGb3JtQXNzb2NpYXRlZEVsZW1lbnQqKTsKIAogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgc3VibWlzc2lvbiBzaG91bGQgcHJvY2VlZC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMWY4
NjhhMDdkODI1Y2Q3NjgwOGJmYzI1ZGQ3MGM3NmM4ZjFlZDUwLi4wNWJiMGIwNTkyNTU1ZjE2ZWRm
N2U4NGFhOTFiOWU0N2M4YjZmZmM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMTMg
IEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9ybSBvZiBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQgaXMgbm90IHVwZGF0ZWQgd2hlbiBpZCB0YXJnZXQgY2hhbmdl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFs
ZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1
dGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBwcm9wZXJ0eSBhY2Nlc3Mgc3R1YnMgc2hvdWxk
IHVzZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTU4ZTY3MjljMjhhZTM5ZGI5MGExOTEwOWM5ODIw
N2JlYjU5NTk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRh
dGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNiBAQAor
VGVzdCBmb3IgdGhlIGRhdGFsaXN0IGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitUZXN0IDE6IEluc2VydCBuZXcgaW5wdXQgYWZ0ZXIgZm9ybS4KK1BBU1MgZm9ybS5l
bGVtZW50cy5sZW5ndGggaXMgMQorUEFTUyBmb3JtLmVsZW1lbnRzWzBdIGlzIGlucHV0CitUZXN0
IDI6IEluc2VydCB0d28gZm9ybXMgd2l0aCBzYW1lIGlkLgorUEFTUyBmb3JtMS5lbGVtZW50cy5s
ZW5ndGggaXMgMQorUEFTUyBmb3JtMi5lbGVtZW50cy5sZW5ndGggaXMgMAorUEFTUyBmb3JtMS5l
bGVtZW50c1swXSBpcyBpbnB1dAorVGVzdCAzOiBDaGFuZ2UgZm9ybSBpZC4KK1BBU1MgZm9ybS5l
bGVtZW50cy5sZW5ndGggaXMgMQorUEFTUyBmb3JtLmVsZW1lbnRzWzBdIGlzIGlucHV0CitUZXN0
IDQ6IE9yZGVyLgorUEFTUyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyA1CitQQVNTIGZvcm0uZWxl
bWVudHNbMF0gaXMgaW5wdXQxCitQQVNTIGZvcm0uZWxlbWVudHNbMV0gaXMgaW5wdXQyCitQQVNT
IGZvcm0uZWxlbWVudHNbMl0gaXMgaW5wdXQzCitQQVNTIGZvcm0uZWxlbWVudHNbM10gaXMgaW5w
dXQ0CitQQVNTIGZvcm0uZWxlbWVudHNbNF0gaXMgaW5wdXQ1CitQQVNTIGZvcm0uZWxlbWVudHMu
bGVuZ3RoIGlzIDQKK1BBU1MgZm9ybS5lbGVtZW50c1swXSBpcyBpbnB1dDEKK1BBU1MgZm9ybS5l
bGVtZW50c1sxXSBpcyBpbnB1dDMKK1BBU1MgZm9ybS5lbGVtZW50c1syXSBpcyBpbnB1dDQKK1BB
U1MgZm9ybS5lbGVtZW50c1szXSBpcyBpbnB1dDUKK1Rlc3QgNTogQWRkIG5ldyBlbGVtZW50IHdp
dGggZm9ybSBhdHRyaWJ1dGUgdG8gdGhlIGZvcm0uCitQQVNTIGZvcm0uZWxlbWVudHMubGVuZ3Ro
IGlzIDMKK1BBU1MgZm9ybS5lbGVtZW50c1swXSBpcyBpbnB1dDEKK1BBU1MgZm9ybS5lbGVtZW50
c1sxXSBpcyBpbnB1dDIKK1BBU1MgZm9ybS5lbGVtZW50c1syXSBpcyBpbnB1dDMKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTFjYWUxZTg1OTMyNWFiMWJiODE3M2I0YTQyZDgwMmVlMzVjN2Y4Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0
cmlidXRlLWVsZW1lbnQuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxkaXYgaWQ9InRlc3QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L2Rpdj4KKwor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB0aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsK
KwordmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKwor
ZnVuY3Rpb24gY3JlYXRlRm9ybShpZCkgeworICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZm9ybSIpOworICAgIGZvcm0uaWQgPSBpZDsKKyAgICB0ZXN0RWxlbWVudC5hcHBl
bmRDaGlsZChmb3JtKTsKKyAgICByZXR1cm4gZm9ybTsKK307CisKK2Z1bmN0aW9uIGNyZWF0ZUlu
cHV0KGZvcm0pIHsKKyAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1
dCIpOworICAgIGlucHV0LnNldEF0dHJpYnV0ZSgiZm9ybSIsIGZvcm0pOworICAgIHRlc3RFbGVt
ZW50LmFwcGVuZENoaWxkKGlucHV0KTsKKyAgICByZXR1cm4gaW5wdXQ7Cit9OworCitmdW5jdGlv
biB0ZXN0MSgpIHsKKyAgICBkZWJ1ZygiVGVzdCAxOiBJbnNlcnQgbmV3IGlucHV0IGFmdGVyIGZv
cm0uIik7CisgICAgZm9ybSA9IGNyZWF0ZUZvcm0oInRlc3QxIik7CisgICAgaW5wdXQgPSBjcmVh
dGVJbnB1dCgidGVzdDEiKTsKKyAgICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAn
MScpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzWzBdJywgJ2lucHV0Jyk7Cit9OworCitm
dW5jdGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1ZygiVGVzdCAyOiBJbnNlcnQgdHdvIGZvcm1zIHdp
dGggc2FtZSBpZC4iKTsKKyAgICBpbnB1dCA9IGNyZWF0ZUlucHV0KCJ0ZXN0MiIpOworICAgIGZv
cm0xID0gY3JlYXRlRm9ybSgidGVzdDIiKTsKKyAgICBmb3JtMiA9IGNyZWF0ZUZvcm0oInRlc3Qy
Iik7CisgICAgc2hvdWxkQmUoJ2Zvcm0xLmVsZW1lbnRzLmxlbmd0aCcsICcxJyk7CisgICAgc2hv
dWxkQmUoJ2Zvcm0yLmVsZW1lbnRzLmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0x
LmVsZW1lbnRzWzBdJywgJ2lucHV0Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBk
ZWJ1ZygiVGVzdCAzOiBDaGFuZ2UgZm9ybSBpZC4iKTsKKyAgICBmb3JtID0gY3JlYXRlRm9ybSgi
dGVzdDMtMSIpOworICAgIGlucHV0ID0gY3JlYXRlSW5wdXQoInRlc3QzLTIiKTsKKyAgICBmb3Jt
LmlkID0gInRlc3QzLTIiOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICcx
Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQnKTsKK307CisKK2Z1
bmN0aW9uIHRlc3Q0KCkgeworICAgIGRlYnVnKCJUZXN0IDQ6IE9yZGVyLiIpOworICAgIGlucHV0
MSA9IGNyZWF0ZUlucHV0KCJ0ZXN0NCIpOworICAgIGlucHV0MiA9IGNyZWF0ZUlucHV0KCJ0ZXN0
NCIpOworICAgIGZvcm0gPSBjcmVhdGVGb3JtKCJ0ZXN0NCIpOworICAgIGlucHV0MyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgZm9ybS5hcHBlbmRDaGlsZChpbnB1dDMp
OworICAgIGlucHV0NCA9IGNyZWF0ZUlucHV0KCJ0ZXN0NCIpOworICAgIGlucHV0NSA9IGNyZWF0
ZUlucHV0KCJ0ZXN0NCIpOworICAgIAorICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0
aCcsICc1Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAnaW5wdXQyJyk7CisgICAgc2hvdWxkQmUo
J2Zvcm0uZWxlbWVudHNbMl0nLCAnaW5wdXQzJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVu
dHNbM10nLCAnaW5wdXQ0Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbNF0nLCAnaW5w
dXQ1Jyk7CisKKyAgICBpbnB1dDIuc2V0QXR0cmlidXRlKCJmb3JtIiwgIiIpOworICAgIHNob3Vs
ZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICc0Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHNbMF0nLCAnaW5wdXQxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAn
aW5wdXQzJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMl0nLCAnaW5wdXQ0Jyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbM10nLCAnaW5wdXQ1Jyk7Cit9OworCitmdW5jdGlv
biB0ZXN0NSgpIHsKKyAgICBkZWJ1ZygiVGVzdCA1OiBBZGQgbmV3IGVsZW1lbnQgd2l0aCBmb3Jt
IGF0dHJpYnV0ZSB0byB0aGUgZm9ybS4iKTsKKyAgICBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZm9ybSIpOworICAgIGZvcm0uaWQgPSAidGVzdDUiOworICAgIGZvcm0uaW5uZXJIVE1M
ID0gIjx0ZXh0YXJlYSBpZD1cInRlc3Q1LWlucHV0MVwiPjwvdGV4dGFyZWE+PGlucHV0IGZvcm09
dGVzdDUgaWQ9XCJ0ZXN0NS1pbnB1dDJcIj48c2VsZWN0IGlkPVwidGVzdDUtaW5wdXQzXCI+IjsK
KyAgICB0ZXN0LmFwcGVuZENoaWxkKGZvcm0pOworICAgIGlucHV0MSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0NS1pbnB1dDEiKTsKKyAgICBpbnB1dDIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdDUtaW5wdXQyIik7CisgICAgaW5wdXQzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3Q1LWlucHV0MyIpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0
aCcsICczJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAnaW5wdXQyJyk7CisgICAgc2hvdWxkQmUo
J2Zvcm0uZWxlbWVudHNbMl0nLCAnaW5wdXQzJyk7Cit9OworCit0ZXN0MSgpOwordGVzdDIoKTsK
K3Rlc3QzKCk7Cit0ZXN0NCgpOwordGVzdDUoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152250</attachid>
            <date>2012-07-13 07:03:56 -0700</date>
            <delta_ts>2012-07-13 08:37:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91042-20120713230354.patch</filename>
            <type>text/plain</type>
            <size>47329</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZjRiZjNmZmU5MTYzM2M3OGNhNDJjNzk3ZjBiOTBkNzZlMjk3OGM5Li5l
NjkwODY4ZDlkYzRjOWE2MTYwMDY3MGUzYzRmY2IzOGYwN2QwM2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzQgQEAKKzIwMTItMDctMTMgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgRm9ybSBvZiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgaXMgbm90IHVwZGF0
ZWQgd2hlbiBpZCB0YXJnZXQgY2hhbmdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11
cmEuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxl
bWVudC5odG1sCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBJZFRhcmdldE9i
c2VydmVyIGFuZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgY2xhc3MuCisgICAgICAgIFRoZXkg
Y2FuIGJlIHVzZWQgdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgZWxlbWVudCB0aGF0IGFuIGlkIGlz
IHBvaW50aW5nIHRvICh0aGUgaWQgdGFyZ2V0KQorICAgICAgICBjaGFuZ2VzLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS57aCxjcHB9
IGFuZCBJZFRhcmdldE9ic2VydmVyLntoLGNwcH0KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERp
dHRvLgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0lkVGFy
Z2V0T2JzZXJ2ZXIuY3BwOiBBZGRlZC4gV2hlbiB5b3Ugd2FudCBub3RpZmllZCBvZiBjaGFuZ2Vz
IHRvIGFuIGlkIHRhcmdldCwgeW91IHNob3VsZCBjcmVhdGUgYSBuZXcgY2xhc3MgdGhhdCBpbmhl
cml0cyB0aGlzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdl
dE9ic2VydmVyOjpJZFRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0
T2JzZXJ2ZXI6On5JZFRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNl
cnZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSWRUYXJnZXRPYnNl
cnZlcik6CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVn
aXN0cnk6OmFkZE9ic2VydmVyKTogUmVnaXN0ZXIgYW4gSWRUYXJnZXRPYnNlcnZlciB0byBvYnNl
cnZlIGFuIGlkIHRhcmdldC4KKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeTo6cmVtb3ZlT2JzZXJ2ZXIpOiBVbnJlZ2lzdGVycyBhbiBJZFRhcmdldE9ic2VydmVyIGZy
b20gb2JzZXJ2aW5nLgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
Ojpub3RpZnlPYnNlcnZlcnNJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Oklk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzKTogQ2FsbHMgaWRUYXJnZXRD
aGFuZ2VkIG9uIGFsbCBvYnNlcnZlcnMgZm9yIGFuIGlkLiBJbmxpbmluZyBmaXJzdCBwYXJ0IG9m
IGZ1bmN0aW9uIGZvciBwZXJmb3JtYW5jZS4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6YWRkRWxlbWVudEJ5SWQpOiBDYWxscyBJZFRhcmdldE9ic2VydmVyUmVn
aXN0cnk6Om5vdGlmeU9ic2VydmVycyBiZWNhdXNlIHRoZSBpZCB0YXJnZXQgbWlnaHQgaGF2ZSBj
aGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpyZW1vdmVFbGVtZW50QnlJZCk6
IERpdHRvLgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjppZFRhcmdldE9ic2VydmVyUmVnaXN0cnkpOgor
ICAgICAgICAoVHJlZVNjb3BlKToKKyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5jcHA6IE9ic2VydmVyIGZvciBpZCB0YXJnZXRzIGRlZmluZWQgYnkgdGhlIGZvcm0gYXR0cmli
dXRlLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omlu
c2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJl
bW92ZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9y
bUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpyZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6IENyZWF0ZXMgYW5kIHNldHMg
dXAgYSBuZXcgRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVU
YXJnZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcjo6Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
cm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6aWRUYXJnZXRDaGFuZ2VkKToKKyAgICAgICAgKiBo
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVt
ZW50KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBodG1s
L0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgIChGb3JtQ29udHJvbGxlcik6CisgICAgICAgICog
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVt
ZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmZv
cm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZSk6IE1vZGlmaWVkIHRvIHRha2UgYSByYW5n
ZS4gSXQKKyAgICAgICAgc2NhbnMgdGhlIHJhbmdlIGFuZCByZXR1cm5zIHRoZSBpbmRleCB0byBp
bnNlcnQgdGhlIGVsZW1lbnQgaW4gbV9hc3NvY2lhdGVkRWxlbWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleCk6IE1vZGlmaWVkIHRvIG9ubHkg
c2NhbiB0aGUgZWxlbWVudHMgaW4KKyAgICAgICAgbV9hc3NvY2lhdGVkRWxlbWVudCB0aGF0IHBy
ZWNlZGUgYW5kIGZvbGxvdyB0aGUgZm9ybSBlbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTEZv
cm1FbGVtZW50Lmg6CisgICAgICAgIChIVE1MRm9ybUVsZW1lbnQpOgorCiAyMDEyLTA3LTEyICBE
b25nd29vIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgQ29kZUdlbmVyYXRvckpT
LnBtIG5lZWQgdG8gaGFuZGxlIHRoZSBhdHRyaWJ1dGUgd2hpY2ggaGFzICJDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0IiBvcHRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGMwMmIy
MTFlNDEyNjE3NGZmYmRjYjJhYWRhZWMwZjhmODI2N2U1ZGMuLmNlNTg2ODg2ODI5YmYxMzliZDdm
MjM3MDBkYWNjODcxYjE1MmQ1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC02MTAsNiArNjEw
LDggQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9FeGNlcHRpb25Db2RlUGxhY2Vob2xk
ZXIuY3BwCiAgICAgZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcAogICAgIGRvbS9JY29uVVJMLmNw
cAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyLmNwcAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkuY3BwCiAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwCiAgICAgZG9tL01lc3NhZ2VD
aGFubmVsLmNwcAogICAgIGRvbS9NZXNzYWdlRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCA2M2IxNzBhMDcxMTBjOTI3YTQ3ZDcwZWI4ZjU0OWYyOTAzNGU5ZGM4Li41
YWE3MzIyMTA3MDFjNjJjZDIwMmE2Mjg0NWIwN2ZlYWU1Mzc3NDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTE5NDIsNiArMTk0MiwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vSWNvblVSTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmggXAor
CVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2RvbS9LZXlib2FyZEV2ZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggOTQ5NDFiMTIwYzIzOTliMWY1
ZDQ1OGFmMjUxODMyYjJkMGRmYjU5ZS4uZDNlMjM0MTY5NDRjYzYzMjQzYzljNzVjODYxNTUxMGY4
MWQ1ZTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC01NzMsNiArNTczLDggQEAgU09VUkNFUyArPSBcCiAg
ICAgZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5jcHAgXAogICAgIGRvbS9HZW5lcmljRXZl
bnRRdWV1ZS5jcHAgXAogICAgIGRvbS9JY29uVVJMLmNwcCBcCisgICAgZG9tL0lkVGFyZ2V0T2Jz
ZXJ2ZXIuY3BwIFwKKyAgICBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBcCiAgICAg
ZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKICAgICBkb20vTWVzc2FnZUNoYW5uZWwuY3BwIFwKICAg
ICBkb20vTWVzc2FnZUV2ZW50LmNwcCBcCkBAIC0xNzU5LDYgKzE3NjEsOCBAQCBIRUFERVJTICs9
IFwKICAgICBkb20vRXhjZXB0aW9uQmFzZS5oIFwKICAgICBkb20vRXhjZXB0aW9uQ29kZS5oIFwK
ICAgICBkb20vRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggXAorICAgIGRvbS9JZFRhcmdl
dE9ic2VydmVyLmggXAorICAgIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBcCiAgICAg
ZG9tL0tleWJvYXJkRXZlbnQuaCBcCiAgICAgZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwK
ICAgICBkb20vTWVzc2FnZUNoYW5uZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTFiMDIwNDE5
NDFkMGNmYTI3NWNlNmFlMGU2ZjU0Njg3NDM2YjViOC4uMGY5YzZmMzU0OTVkZTM2Yjg4MGFhZGZk
MTcwY2ZkYWZkYTAyNjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTE3OSw2ICs1MTc5LDEwIEBA
CiAgICAgICAgICAgICAnZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVy
LmgnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmNwcCcsCiAgICAgICAgICAgICAnZG9tL0lj
b25VUkwuaCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwJywKKyAgICAg
ICAgICAgICdkb20vSWRUYXJnZXRPYnNlcnZlci5oJywKKyAgICAgICAgICAgICdkb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCcsCisgICAgICAgICAgICAnZG9tL0lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdkb20vS2V5Ym9hcmRFdmVudC5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnZG9t
L01lc3NhZ2VDaGFubmVsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDk1MTE4ZGM4N2U5Njk2ZjJkNjk2ZjQ5MzA4NzAyYzhkYjRhZmQ3
NDMuLjJlMDNkMGQ3OGNhOTRjOWExZjgwZjVjNDhiYjkwZDdiMDMyYTg0MjEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MTE5OSw2ICs1MTE5
OSwxMTggQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRUYXJnZXRPYnNlcnZlci5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggM2IzYmIyZGY5YmQ0YWIxODYwNTM5NzJlZGNmZTc0MjQxMDIyZjc2ZC4uNzAw
ZjU5M2UxYzUxYThkNTAzMDQwYzkwYzkzYjEwYWQ3MGUxYzRlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTcyNCw2ICs1NzI0
LDEwIEBACiAJCUMzM0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtl
eUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1
dFR5cGUuY3BwICovOyB9OwogCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNr
YWJsZVdpdGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0
aEtleUlucHV0VHlwZS5oICovOyB9OwogCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMzdDREVCQzE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzNDRjE3
QTQxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTAxNUIwMDYzRjAwMjc2RDM5
IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovOyB9OworCQlDM0NGMTdBNTE1QjAwNjNGMDAyNzZE
MzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
M0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0EyMTVC
MDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9OworCQlD
M0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1QjAw
NjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYxMjExOUQyMzAwOEI0
NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3Mu
Y3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTUx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyog
U3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5j
cHAgKi87IH07CkBAIC0xMjk0Myw2ICsxMjk0NywxMCBAQAogCQlDMzNFRTVDMjE0RkI0OTYxMDAw
MjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzNFRTVDMzE0RkI0OTYxMDAwMjA5NUEg
LyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzM3Q0RFQkMxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3Nl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNob29zZXJD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNDRjE3QTAxNUIwMDYzRjAw
Mjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMzQ0YxN0ExMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDM0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5RDIz
MDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFtZXNw
YWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDQ3LDYgKzIxNDU1LDEw
IEBACiAJCQkJODQ4MkI3NDQxMTk4QzMyRTAwQkZCMDA1IC8qIEhhc2hDaGFuZ2VFdmVudC5pZGwg
Ki8sCiAJCQkJNDUwOTlDNDAxMzcwQTc4MDAwNThENTEzIC8qIEljb25VUkwuY3BwICovLAogCQkJ
CTQ1QkFDMkFGMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggKi8sCisJCQkJQzNDRjE3QTAx
NUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuY3BwICovLAorCQkJCUMzQ0YxN0Ex
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8sCisJCQkJQzNDRjE3QTIx
NUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8sCisJCQkJ
QzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICov
LAogCQkJCThBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRl
Q291bnRJbmNyZW1lbnRlci5oICovLAogCQkJCTg1MDMxQjJEMEE0NEVGQzcwMEY5OTJFMCAvKiBL
ZXlib2FyZEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyRTBBNDRFRkM3MDBGOTkyRTAgLyogS2V5
Ym9hcmRFdmVudC5oICovLApAQCAtMjUxOTMsNiArMjUyMDUsOCBAQAogCQkJCUUxQkU1MTJFMENG
NkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4MjUwLDYgKzI4MjY0LDggQEAKIAkJCQlF
MUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDM0NGMTdBNDE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRP
YnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkg
LyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01BbGxJbk9uZS5jcHAKaW5kZXggNTkyZDcyOTkyYWM0ZjM0ZjBiM2Y5YjBjMDMzYjI4YWJh
MmU4ODM0OC4uOWJkNGNiNGQ5MTZlMDQyYzJjZWJhN2UwMmFmMWQ4NTUwYjYwNDAwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC04NCw2ICs4NCw4IEBACiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQmFzZS5jcHAiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmNwcCIK
ICNpbmNsdWRlICJJY29uVVJMLmNwcCIKKyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyLmNwcCIK
KyNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIgogI2luY2x1ZGUgIktleWJv
YXJkRXZlbnQuY3BwIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmNwcCIKICNpbmNsdWRlICJN
ZXNzYWdlRXZlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFmYWRkMzhmOTA4MTRjOTkxNjAzYzBlMjI1Y2U5MGQ4OGNhYzQxMjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5jcHAKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlci5oIgor
CisjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworSWRUYXJnZXRPYnNlcnZlcjo6SWRUYXJnZXRPYnNlcnZlcihJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkmIHJlZ2lzdHJ5LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorICAgIDogbV9y
ZWdpc3RyeSgmcmVnaXN0cnkpCisgICAgLCBtX2lkKGlkKQoreworICAgIG1fcmVnaXN0cnktPmFk
ZE9ic2VydmVyKG1faWQsIHRoaXMpOworfQorCitJZFRhcmdldE9ic2VydmVyOjp+SWRUYXJnZXRP
YnNlcnZlcigpCit7CisgICAgaWYgKG1fcmVnaXN0cnkpCisgICAgICAgIG1fcmVnaXN0cnktPnJl
bW92ZU9ic2VydmVyKG1faWQsIHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTAwN2M0NzgwMjVm
ODBiNDk3YWZhYTJiMGQ5NTQxMWFlNjY4NWI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSWRUYXJnZXRPYnNl
cnZlcl9oCisjZGVmaW5lIElkVGFyZ2V0T2JzZXJ2ZXJfaAorCisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5OworCitjbGFzcyBJZFRhcmdldE9ic2VydmVyIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5JZFRhcmdldE9ic2VydmVyKCk7CisgICAgdmlydHVhbCB2b2lkIGlkVGFyZ2V0
Q2hhbmdlZCgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIElkVGFyZ2V0T2JzZXJ2ZXIoSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5JiwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CisKK3ByaXZhdGU6
CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KiBtX3JlZ2lzdHJ5OworICAgIEF0b21pY1N0
cmluZyBtX2lkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSWRU
YXJnZXRPYnNlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYzI2YWNmZWUzMzJlYjdkMmQ2MTliYTU5MjBjNzMz
ZjViYjBmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIklkVGFyZ2V0T2JzZXJ2
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeT4gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKQoreworICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkpOworfQorCit2b2lk
IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCwgSWRUYXJnZXRPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGlkLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1fcmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CisgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGFk
b3B0UHRyKG5ldyBPYnNlcnZlclNldCgpKTsKKworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
LT5hZGQob2JzZXJ2ZXIpOworfQorCit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6cmVt
b3ZlT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciogb2Jz
ZXJ2ZXIpCit7CisgICAgaWYgKGlkLmlzRW1wdHkoKSB8fCBtX3JlZ2lzdHJ5LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSWRUb09ic2VydmVyU2V0TWFwOjppdGVyYXRvciBpdGVy
ID0gbV9yZWdpc3RyeS5maW5kKGlkLmltcGwoKSk7CisKKyAgICBPYnNlcnZlclNldCogc2V0ID0g
aXRlci0+c2Vjb25kLmdldCgpOworICAgIHNldC0+cmVtb3ZlKG9ic2VydmVyKTsKKyAgICBpZiAo
c2V0LT5pc0VtcHR5KCkgJiYgc2V0ICE9IG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQpCisgICAg
ICAgIG1fcmVnaXN0cnkucmVtb3ZlKGl0ZXIpOworfQorCit2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkK
K3sKKyAgICBBU1NFUlQoIWlkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3JlZ2lzdHJ5Lmlz
RW1wdHkoKSk7CisKKyAgICBtX25vdGlmeWluZ09ic2VydmVyc0luU2V0ID0gbV9yZWdpc3RyeS5n
ZXQoaWQuaW1wbCgpKTsKKyAgICBpZiAoIW1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQpCisgICAg
ICAgIHJldHVybjsKKworICAgIFZlY3RvcjxJZFRhcmdldE9ic2VydmVyKj4gY29weTsKKyAgICBj
b3B5VG9WZWN0b3IoKm1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQsIGNvcHkpOworICAgIGZvciAo
VmVjdG9yPElkVGFyZ2V0T2JzZXJ2ZXIqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3B5LmJlZ2lu
KCk7IGl0ICE9IGNvcHkuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKG1fbm90aWZ5aW5nT2Jz
ZXJ2ZXJzSW5TZXQtPmNvbnRhaW5zKCppdCkpCisgICAgICAgICAgICAoKml0KS0+aWRUYXJnZXRD
aGFuZ2VkKCk7CisgICAgfQorCisgICAgaWYgKG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQtPmlz
RW1wdHkoKSkKKyAgICAgICAgbV9yZWdpc3RyeS5yZW1vdmUoaWQuaW1wbCgpKTsKKworICAgIG1f
bm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWJhNzU1MjEwMGU0ZTk3ZTBmNjc3OGEyOWRkNGY3YWI0ZDQ1MzAxYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaApA
QCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5X2gKKyNkZWZpbmUgSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5X2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSWRUYXJnZXRPYnNlcnZlcjsKKworY2xhc3MgSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5IHsKKyAgICBmcmllbmQgY2xhc3MgSWRUYXJnZXRPYnNlcnZl
cjsKKworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeT4gY3JlYXRlKCk7CisgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCk7CisKK3ByaXZhdGU6CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkgOiBt
X25vdGlmeWluZ09ic2VydmVyc0luU2V0KDApIHsgfQorICAgIHZvaWQgYWRkT2JzZXJ2ZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAgIHZvaWQgcmVtb3Zl
T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlciopOworICAg
IHZvaWQgbm90aWZ5T2JzZXJ2ZXJzSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CisK
KyAgICB0eXBlZGVmIEhhc2hTZXQ8SWRUYXJnZXRPYnNlcnZlcio+IE9ic2VydmVyU2V0OworICAg
IHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgT3duUHRyPE9ic2VydmVyU2V0PiA+
IElkVG9PYnNlcnZlclNldE1hcDsKKyAgICBJZFRvT2JzZXJ2ZXJTZXRNYXAgbV9yZWdpc3RyeTsK
KyAgICBPYnNlcnZlclNldCogbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldDsKK307CisKK2lubGlu
ZSB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQpCit7CisgICAgQVNTRVJUKCFtX25vdGlmeWluZ09ic2VydmVyc0luU2V0
KTsKKyAgICBpZiAoaWQuaXNFbXB0eSgpIHx8IG1fcmVnaXN0cnkuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnNlcnZlcnNJ
bnRlcm5hbChpZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IGJm
MDQ5YjFkYWIwMjFiYzg1YmQ1NjY2OWFjYjBkYzQzNjA5NWMyNDMuLmU4OGIxM2FiODhlNzVlYTEz
NDcxZDQ5MGQ2ZDllMzZiOTM5Yzc5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC01NCw2ICs1NSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBUcmVlU2NvcGU6OlRyZWVTY29wZShDb250
YWluZXJOb2RlKiByb290Tm9kZSkKICAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCiAgICAgLCBt
X3BhcmVudFRyZWVTY29wZSgwKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpjcmVhdGUoKSkKIHsKICAgICBBU1NFUlQocm9vdE5vZGUp
OwogfQpAQCAtOTIsMTEgKzk0LDEzIEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6
YWRkRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqIGVs
ZW1lbnQpCiB7CiAgICAgbV9lbGVtZW50c0J5SWQuYWRkKGVsZW1lbnRJZC5pbXBsKCksIGVsZW1l
bnQpOworICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxl
bWVudElkKTsKIH0KIAogdm9pZCBUcmVlU2NvcGU6OnJlbW92ZUVsZW1lbnRCeUlkKGNvbnN0IEF0
b21pY1N0cmluZyYgZWxlbWVudElkLCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIG1fZWxlbWVu
dHNCeUlkLnJlbW92ZShlbGVtZW50SWQuaW1wbCgpLCBlbGVtZW50KTsKKyAgICBtX2lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJZCk7CiB9CiAKIE5vZGUq
IFRyZWVTY29wZTo6YW5jZXN0b3JJblRoaXNTY29wZShOb2RlKiBub2RlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5oCmluZGV4IDc3ZTIzMDdjMTVjNmNmZTQ4NGE2OThkNmNjOTQ0ZjllNTViY2Y1
ZDQuLjg0MWJiYjZjMWNiYjljYzE5NmYwMTk0MjA4YzRhNzBlOTgyMWQ4ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNz
IERPTVNlbGVjdGlvbjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKK2Ns
YXNzIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTsKIGNsYXNzIE5vZGU7CiAKIC8vIEEgY2xhc3Mg
d2hpY2ggaW5oZXJpdHMgYm90aCBOb2RlIGFuZCBUcmVlU2NvcGUgbXVzdCBjYWxsIGNsZWFyUmFy
ZURhdGEoKSBpbiBpdHMgZGVzdHJ1Y3RvcgpAQCAtNzgsNiArNzksOCBAQCBwdWJsaWM6CiAKICAg
ICBDb250YWluZXJOb2RlKiByb290Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdE5vZGU7IH0K
IAorICAgIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeSYgaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
KCkgY29uc3QgeyByZXR1cm4gKm1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmdldCgpOyB9CisK
IHByb3RlY3RlZDoKICAgICBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOwogICAgIHZpcnR1YWwg
flRyZWVTY29wZSgpOwpAQCAtOTEsNiArOTQsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50T3Jk
ZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9pbWFnZU1h
cHNCeU5hbWU7CiAKKyAgICBPd25QdHI8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PiBtX2lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeTsKKwogICAgIG11dGFibGUgUmVmUHRyPERPTVNlbGVjdGlvbj4g
bV9zZWxlY3Rpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1B
c3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKaW5kZXggMjE3OTFmMDk2MGFlNDdjOGYxOGU5YmYzMGIxMWNkN2E2N2Y2ODQ1
My4uYmQ3N2QxMDQxMDhlZjJiYmUxMDBiNTE1ZGFlNmI2YmIwYzliMzVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtMzAsMTIgKzMwLDI0
IEBACiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJZFRhcmdldE9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiVmFsaWRpdHlTdGF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK2NsYXNzIEZvcm1BdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlciA6IElkVGFyZ2V0T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
T3duUHRyPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBpZFRh
cmdldENoYW5nZWQoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBGb3JtQXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRm9ybUFzc29jaWF0ZWRFbGVtZW50
Kik7CisKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIG1fZWxlbWVudDsKK307CisKIEZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50KCkKICAgICA6IG1fZm9ybSgw
KQogewpAQCAtNTgsNyArNzAsNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewogICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKICAgICBpZiAob2xkRG9jdW1lbnQgJiYg
ZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCi0gICAgICAgIG9sZERvY3VtZW50
LT5mb3JtQ29udHJvbGxlcigpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0
ZSh0aGlzKTsKKyAgICAgICAgcmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKIH0K
IAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2Rl
KiBpbnNlcnRpb25Qb2ludCkKQEAgLTY5LDE0ICs4MSwxNCBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogCiAg
ICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOwogICAgIGlmIChl
bGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKLSAgICAgICAgZWxlbWVudC0+ZG9j
dW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0
cmlidXRlKHRoaXMpOworICAgICAgICByZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigp
OwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVy
Tm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hU
TUxFbGVtZW50KHRoaXMpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYm
IGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICBlbGVtZW50LT5k
b2N1bWVudCgpLT5mb3JtQ29udHJvbGxlcigpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9y
bUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIg
PSBudWxscHRyOwogICAgIC8vIElmIHRoZSBmb3JtIGFuZCBlbGVtZW50IGFyZSBib3RoIGluIHRo
ZSBzYW1lIHRyZWUsIHByZXNlcnZlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBmb3JtLgogICAgIC8v
IE90aGVyd2lzZSwgbnVsbCBvdXQgb3VyIGZvcm0gYW5kIHJlbW92ZSBvdXJzZWx2ZXMgZnJvbSB0
aGUgZm9ybSdzIGxpc3Qgb2YgZWxlbWVudHMuCiAgICAgaWYgKG1fZm9ybSAmJiBlbGVtZW50LT5o
aWdoZXN0QW5jZXN0b3IoKSAhPSBtX2Zvcm0tPmhpZ2hlc3RBbmNlc3RvcigpKQpAQCAtMTUzLDkg
KzE2NSwxMSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNoYW5n
ZWQoKQogICAgIGlmICghZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpIHsKICAg
ICAgICAgLy8gVGhlIGZvcm0gYXR0cmlidXRlIHJlbW92ZWQuIFdlIG5lZWQgdG8gcmVzZXQgZm9y
bSBvd25lciBoZXJlLgogICAgICAgICBzZXRGb3JtKGVsZW1lbnQtPmZpbmRGb3JtQW5jZXN0b3Io
KSk7Ci0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPmZvcm1Db250cm9sbGVyKCktPnVucmVn
aXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKHRoaXMpOwotICAgIH0gZWxzZQorICAg
ICAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CisgICAgfSBlbHNl
IHsKICAgICAgICAgcmVzZXRGb3JtT3duZXIoKTsKKyAgICAgICAgcmVzZXRGb3JtQXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXIoKTsKKyAgICB9CiB9CiAKIGJvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50
OjpjdXN0b21FcnJvcigpIGNvbnN0CkBAIC0yMjEsNiArMjM1LDE2IEBAIHZvaWQgRm9ybUFzc29j
aWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogICAg
IG1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgPSBlcnJvcjsKIH0KIAordm9pZCBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKK3sKKyAgICBt
X2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
cjo6Y3JlYXRlKHRvSFRNTEVsZW1lbnQodGhpcyktPmZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0dHIp
LCB0aGlzKTsKK30KKwordm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVU
YXJnZXRDaGFuZ2VkKCkKK3sKKyAgICByZXNldEZvcm1Pd25lcigpOworfQorCiBjb25zdCBBdG9t
aWNTdHJpbmcmIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lID0gdG9IVE1MRWxlbWVudCh0aGlzKS0+Z2V0TmFtZUF0dHJp
YnV0ZSgpOwpAQCAtMjQyLDQgKzI2NiwyMCBAQCBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50KQogICAgIHJldHVybiBjb25z
dF9jYXN0PEhUTUxFbGVtZW50Kj4odG9IVE1MRWxlbWVudChzdGF0aWNfY2FzdDxjb25zdCBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQqPihhc3NvY2lhdGVkRWxlbWVudCkpKTsKIH0KIAorUGFzc093blB0
cjxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
cjo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZvcm1BdHRyaWJ1dGVUYXJnZXRP
YnNlcnZlcihpZCwgZWxlbWVudCkpOworfQorCitGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI6
OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcihjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCisgICAgOiBJZFRhcmdldE9ic2VydmVyKHRvSFRN
TEVsZW1lbnQoZWxlbWVudCktPnRyZWVTY29wZSgpLT5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnko
KSwgaWQpCisgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKK3sKK30KKwordm9pZCBGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXI6OmlkVGFyZ2V0Q2hhbmdlZCgpCit7CisgICAgbV9lbGVtZW50LT5m
b3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCA1YTQ3
ZWEwNzZkYjJhNzRlZjUwZTk0NTY1YWU3Y2I0ZjBiYTUwMjExLi44MDRmMmNiOGM3NTNlZGMyNGY4
NWM2ZjMzMzdjOTdkYzA5OTkwYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI7CiBjbGFzcyBGb3JtRGF0YUxpc3Q7
CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZTsKQEAgLTc5
LDYgKzgwLDggQEAgcHVibGljOgogICAgIGJvb2wgdmFsaWQoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGZvcm1B
dHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCk7CisKIHByb3RlY3RlZDoKICAgICBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQoKTsKIApAQCAtMTAxLDYgKzEwNCw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHJlZkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSA9IDA7CiAKKyAgICB2b2lkIHJlc2V0Rm9ybUF0dHJp
YnV0ZVRhcmdldE9ic2VydmVyKCk7CisKKyAgICBPd25QdHI8Rm9ybUF0dHJpYnV0ZVRhcmdldE9i
c2VydmVyPiBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKICAgICBIVE1MRm9ybUVsZW1l
bnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRlOwog
ICAgIFN0cmluZyBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmNwcAppbmRleCA5NDEwN2E2NmY0ZjE4OTgzYzI5YWZhODdmMTIyOWY4Mzhh
ZmE1OTgxLi42YjI5YjZmZTdjMDdhMTNjYmQxOTBiY2RiYTRjOTc4MGJkMmZjOGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMjQwLDI1ICsyNDAsNiBAQCB2b2lk
IEZvcm1Db250cm9sbGVyOjp3aWxsRGVsZXRlRm9ybShIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiAg
ICAgICAgIG1fZm9ybUtleUdlbmVyYXRvci0+d2lsbERlbGV0ZUZvcm0oZm9ybSk7CiB9CiAKLXZv
aWQgRm9ybUNvbnRyb2xsZXI6OnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKHRvSFRNTEVsZW1l
bnQoZWxlbWVudCktPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKTsKLSAgICBtX2Zvcm1FbGVt
ZW50c1dpdGhGb3JtQXR0cmlidXRlLmFkZChlbGVtZW50KTsKLX0KLQotdm9pZCBGb3JtQ29udHJv
bGxlcjo6dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0
ZWRFbGVtZW50KiBlbGVtZW50KQotewotICAgIG1fZm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1
dGUucmVtb3ZlKGVsZW1lbnQpOwotfQotCi12b2lkIEZvcm1Db250cm9sbGVyOjpyZXNldEZvcm1F
bGVtZW50c093bmVyKCkKLXsKLSAgICB0eXBlZGVmIEZvcm1Bc3NvY2lhdGVkRWxlbWVudExpc3RI
YXNoU2V0OjppdGVyYXRvciBJdGVyYXRvcjsKLSAgICBJdGVyYXRvciBlbmQgPSBtX2Zvcm1FbGVt
ZW50c1dpdGhGb3JtQXR0cmlidXRlLmVuZCgpOwotICAgIGZvciAoSXRlcmF0b3IgaXQgPSBtX2Zv
cm1FbGVtZW50c1dpdGhGb3JtQXR0cmlidXRlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgKCppdCktPnJlc2V0Rm9ybU93bmVyKCk7Ci19Ci0KIEZvcm1FbGVtZW50S2V5OjpGb3Jt
RWxlbWVudEtleShBdG9taWNTdHJpbmdJbXBsKiBuYW1lLCBBdG9taWNTdHJpbmdJbXBsKiB0eXBl
LCBBdG9taWNTdHJpbmdJbXBsKiBmb3JtS2V5KQogICAgIDogbV9uYW1lKG5hbWUpCiAgICAgLCBt
X3R5cGUodHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAppbmRleCBlMTVjMWRj
MjRhOTgwZjY0NDdhOThiMmUzMjZkMTk2ZDZlMzYzMmEyLi5lOThkMWEwNDljYzA5YmQ3MWNmZjBk
OTI3YWY0YTRjNTg1ZWNmM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCkBA
IC0xMzIsMTAgKzEzMiw2IEBAIHB1YmxpYzoKICAgICBGb3JtQ29udHJvbFN0YXRlIHRha2VTdGF0
ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUmKTsK
ICAgICB2b2lkIHdpbGxEZWxldGVGb3JtKEhUTUxGb3JtRWxlbWVudCopOwogCi0gICAgdm9pZCBy
ZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50
Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZShGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQqKTsKLSAgICB2b2lkIHJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoKTsK
LQogcHJpdmF0ZToKICAgICBGb3JtQ29udHJvbGxlcigpOwogCkBAIC0xNDMsOCArMTM5LDYgQEAg
cHJpdmF0ZToKIAogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8SFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZSosIDY0PiBGb3JtRWxlbWVudExpc3RIYXNoU2V0OwogICAgIEZvcm1FbGVtZW50
TGlzdEhhc2hTZXQgbV9mb3JtRWxlbWVudHNXaXRoU3RhdGU7Ci0gICAgdHlwZWRlZiBMaXN0SGFz
aFNldDxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50PiwgMzI+IEZvcm1Bc3NvY2lhdGVkRWxl
bWVudExpc3RIYXNoU2V0OwotICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudExpc3RIYXNoU2V0IG1f
Zm9ybUVsZW1lbnRzV2l0aEZvcm1BdHRyaWJ1dGU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8Rm9y
bUVsZW1lbnRLZXksIERlcXVlPEZvcm1Db250cm9sU3RhdGU+LCBGb3JtRWxlbWVudEtleUhhc2gs
IEZvcm1FbGVtZW50S2V5SGFzaFRyYWl0cz4gRm9ybUVsZW1lbnRTdGF0ZU1hcDsKICAgICBGb3Jt
RWxlbWVudFN0YXRlTWFwIG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggM2M4YmIwNzNjZmY3MGUwYjQ4NzA5MDQ2NGMw
ODEwMjllYzI1MTcyNS4uMmY1MzIxYWQyMTBjNTQ4NmIyY2Q5OGE3YTliMmQ0MTE4ZTQ1OTUwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMTQxLDE0ICsxNDEs
NiBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxGb3JtRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqCiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9
CiAKLXZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucyhD
b250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBBU1NFUlQoaW5zZXJ0aW9uUG9p
bnQtPmluRG9jdW1lbnQoKSk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE5vdGlmeURlc2NlbmRhbnRJ
bnNlcnRpb25zKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoaGFzSUQoKSkKLSAgICAgICAgZG9j
dW1lbnQoKS0+Zm9ybUNvbnRyb2xsZXIoKS0+cmVzZXRGb3JtRWxlbWVudHNPd25lcigpOwotfQot
CiBzdGF0aWMgaW5saW5lIE5vZGUqIGZpbmRSb290KE5vZGUqIG4pCiB7CiAgICAgTm9kZSogcm9v
dCA9IG47CkBAIC0xNjQsOCArMTU2LDYgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZWRG
cm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGFzc29jaWF0
ZWRFbGVtZW50c1tpXS0+Zm9ybVJlbW92ZWRGcm9tVHJlZShyb290KTsKICAgICBIVE1MRWxlbWVu
dDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwotICAgIGlmIChpbnNlcnRpb25Qb2ludC0+
aW5Eb2N1bWVudCgpICYmIGhhc0lEKCkpCi0gICAgICAgIGRvY3VtZW50KCktPmZvcm1Db250cm9s
bGVyKCktPnJlc2V0Rm9ybUVsZW1lbnRzT3duZXIoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUVsZW1l
bnQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkKQEAgLTQzNiwzMyArNDI2LDMzIEBA
IHRlbXBsYXRlPGNsYXNzIFQsIHNpemVfdCBuPiBzdGF0aWMgdm9pZCByZW1vdmVGcm9tVmVjdG9y
KFZlY3RvcjxUKiwgbj4gJiB2ZWMsIFQqCiAgICAgICAgIH0KIH0KIAotdW5zaWduZWQgSFRNTEZv
cm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCogZWxl
bWVudCkKK3Vuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhGb3Jt
QXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJhbmdlU3RhcnQsIHVuc2lnbmVk
IHJhbmdlRW5kKQogewotICAgIC8vIENvbXBhcmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZm9ybSBl
bGVtZW50IGFuZCB0aGUgaW5zZXJ0ZWQgZWxlbWVudC4KLSAgICAvLyBVcGRhdGVzIHRoZSBpbmRl
Y2VzIGluIG9yZGVyIHRvIHRoZSByZWxhdGlvbiBvZiB0aGUgcG9zaXRpb246Ci0gICAgdW5zaWdu
ZWQgc2hvcnQgcG9zaXRpb24gPSBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlbGVtZW50KTsKLSAg
ICBpZiAocG9zaXRpb24gJiAoRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMgfCBET0NVTUVOVF9Q
T1NJVElPTl9DT05UQUlORURfQlkpKQotICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0
ZXJJbmRleDsKLSAgICBlbHNlIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX1BSRUNF
RElORykgewotICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7Ci0gICAg
ICAgICsrbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRlckluZGV4OwotICAgIH0KLQogICAgIGlmICht
X2Fzc29jaWF0ZWRFbGVtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAg
QVNTRVJUKHJhbmdlU3RhcnQgPD0gcmFuZ2VFbmQpOworCisgICAgaWYgKHJhbmdlU3RhcnQgPT0g
cmFuZ2VFbmQpCisgICAgICAgIHJldHVybiByYW5nZVN0YXJ0OworCisgICAgdW5zaWduZWQgbGVm
dCA9IHJhbmdlU3RhcnQ7CisgICAgdW5zaWduZWQgcmlnaHQgPSByYW5nZUVuZCAtIDE7CisgICAg
dW5zaWduZWQgc2hvcnQgcG9zaXRpb247CisKICAgICAvLyBEb2VzIGJpbmFyeSBzZWFyY2ggb24g
bV9hc3NvY2lhdGVkRWxlbWVudHMgaW4gb3JkZXIgdG8gZmluZCB0aGUgaW5kZXgKICAgICAvLyB0
byBiZSBpbnNlcnRlZC4KLSAgICB1bnNpZ25lZCBsZWZ0ID0gMCwgcmlnaHQgPSBtX2Fzc29jaWF0
ZWRFbGVtZW50cy5zaXplKCkgLSAxOwogICAgIHdoaWxlIChsZWZ0ICE9IHJpZ2h0KSB7CiAgICAg
ICAgIHVuc2lnbmVkIG1pZGRsZSA9IGxlZnQgKyAoKHJpZ2h0IC0gbGVmdCkgLyAyKTsKKyAgICAg
ICAgQVNTRVJUKG1pZGRsZSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggfHwgbWlk
ZGxlID49IG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCk7CiAgICAgICAgIHBvc2l0aW9u
ID0gZWxlbWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24odG9IVE1MRWxlbWVudChtX2Fzc29j
aWF0ZWRFbGVtZW50c1ttaWRkbGVdKSk7CiAgICAgICAgIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5U
X1BPU0lUSU9OX0ZPTExPV0lORykKICAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBsZWZ0ID0gbWlkZGxlICsgMTsKICAgICB9Ci0KKyAgICAKKyAg
ICBBU1NFUlQobGVmdCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggfHwgbGVmdCA+
PSBtX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXgpOwogICAgIHBvc2l0aW9uID0gZWxlbWVu
dC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24odG9IVE1MRWxlbWVudChtX2Fzc29jaWF0ZWRFbGVt
ZW50c1tsZWZ0XSkpOwogICAgIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExP
V0lORykKICAgICAgICAgcmV0dXJuIGxlZnQ7CkBAIC00NzQsOCArNDY0LDE2IEBAIHVuc2lnbmVk
IEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleChGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IGFzc29jaWF0ZWRFbGVtCiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50
KGFzc29jaWF0ZWRFbGVtZW50KTsKICAgICAvLyBUcmVhdHMgc2VwYXJhdGVseSB0aGUgY2FzZSB3
aGVyZSB0aGlzIGVsZW1lbnQgaGFzIHRoZSBmb3JtIGF0dHJpYnV0ZQogICAgIC8vIGZvciBwZXJm
b3JtYW5jZSBjb25zaWRlcmF0aW9uLgotICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRl
KGZvcm1BdHRyKSkKLSAgICAgICAgcmV0dXJuIGZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJp
YnV0ZShlbGVtZW50KTsKKyAgICBpZiAoZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0
cikpIHsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBjb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbihlbGVtZW50KTsKKyAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJ
T05fUFJFQ0VESU5HKSB7CisgICAgICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3Jl
SW5kZXg7CisgICAgICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKKyAg
ICAgICAgICAgIHJldHVybiBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9y
bUF0dHJpYnV0ZShlbGVtZW50LCAwLCBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4IC0g
MSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05f
Rk9MTE9XSU5HICYmICEocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkp
KQorICAgICAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdp
dGhGb3JtQXR0cmlidXRlKGVsZW1lbnQsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCwg
bV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpKTsKKyAgICB9CiAKICAgICAvLyBDaGVjayBmb3Ig
dGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGlzIGVsZW1lbnQgaXMgdGhlIHZlcnkgbGFzdCB0aGlu
ZyBpbgogICAgIC8vIHRoZSBmb3JtJ3MgdHJlZSBvZiBjaGlsZHJlbjsgd2UgZG9uJ3Qgd2FudCB0
byB3YWxrIHRoZSBlbnRpcmUgdHJlZSBpbiB0aGF0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAppbmRleCBlZTljY2YzOWI3YTE2NGZlYTRjYTdlZDBhN2JhOTFiNDExMzVlMmZhLi42
ZjdhODYzZDhkY2RlZDJkNWZjOTU0MzU2OGFmMTEyOWJiNzlmZmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTExOSw3ICsxMTksNiBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTm90aWZ5RGVz
Y2VuZGFudEluc2VydGlvbnMoQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqKTsKQEAgLTEzNSw3ICsxMzQsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBzdWJtaXQoRXZlbnQqLCBib29sIGFjdGl2YXRlU3VibWl0QnV0dG9u
LCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyKTsKIAot
ICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50Kik7
CisgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQq
LCB1bnNpZ25lZCByYW5nZVN0YXJ0LCB1bnNpZ25lZCByYW5nZUVuZCk7CiAgICAgdW5zaWduZWQg
Zm9ybUVsZW1lbnRJbmRleChGb3JtQXNzb2NpYXRlZEVsZW1lbnQqKTsKIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgc3VibWlzc2lvbiBzaG91bGQgcHJvY2VlZC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMWY4Njhh
MDdkODI1Y2Q3NjgwOGJmYzI1ZGQ3MGM3NmM4ZjFlZDUwLi41Y2MzNmMwOTMxZDcyNGQ0Y2I3ODdl
MjY5ZmIwOWUxY2U5OTgyOWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDctMTMgIEtl
aXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9ybSBvZiBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQgaXMgbm90IHVwZGF0ZWQgd2hlbiBpZCB0YXJnZXQgY2hhbmdlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC5odG1sOiBBZGRl
ZC4KKwogMjAxMi0wNy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIERGRyBwcm9wZXJ0eSBhY2Nlc3Mgc3R1YnMgc2hvdWxkIHVzZSBzdHJ1Y3R1cmUgdHJhbnNp
dGlvbiB3YXRjaHBvaW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRh
dGUtZm9ybS1hdHRyaWJ1dGUtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zOTU4ZTY3MjljMjhhZTM5ZGI5MGExOTEwOWM5ODIwN2JlYjU5NTk2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy91cGRhdGUtZm9ybS1hdHRyaWJ1dGUtZWxl
bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNiBAQAorVGVzdCBmb3IgdGhlIGRhdGFsaXN0
IGVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0IDE6IEluc2Vy
dCBuZXcgaW5wdXQgYWZ0ZXIgZm9ybS4KK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMQor
UEFTUyBmb3JtLmVsZW1lbnRzWzBdIGlzIGlucHV0CitUZXN0IDI6IEluc2VydCB0d28gZm9ybXMg
d2l0aCBzYW1lIGlkLgorUEFTUyBmb3JtMS5lbGVtZW50cy5sZW5ndGggaXMgMQorUEFTUyBmb3Jt
Mi5lbGVtZW50cy5sZW5ndGggaXMgMAorUEFTUyBmb3JtMS5lbGVtZW50c1swXSBpcyBpbnB1dAor
VGVzdCAzOiBDaGFuZ2UgZm9ybSBpZC4KK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMQor
UEFTUyBmb3JtLmVsZW1lbnRzWzBdIGlzIGlucHV0CitUZXN0IDQ6IE9yZGVyLgorUEFTUyBmb3Jt
LmVsZW1lbnRzLmxlbmd0aCBpcyA1CitQQVNTIGZvcm0uZWxlbWVudHNbMF0gaXMgaW5wdXQxCitQ
QVNTIGZvcm0uZWxlbWVudHNbMV0gaXMgaW5wdXQyCitQQVNTIGZvcm0uZWxlbWVudHNbMl0gaXMg
aW5wdXQzCitQQVNTIGZvcm0uZWxlbWVudHNbM10gaXMgaW5wdXQ0CitQQVNTIGZvcm0uZWxlbWVu
dHNbNF0gaXMgaW5wdXQ1CitQQVNTIGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDQKK1BBU1MgZm9y
bS5lbGVtZW50c1swXSBpcyBpbnB1dDEKK1BBU1MgZm9ybS5lbGVtZW50c1sxXSBpcyBpbnB1dDMK
K1BBU1MgZm9ybS5lbGVtZW50c1syXSBpcyBpbnB1dDQKK1BBU1MgZm9ybS5lbGVtZW50c1szXSBp
cyBpbnB1dDUKK1Rlc3QgNTogQWRkIG5ldyBlbGVtZW50IHdpdGggZm9ybSBhdHRyaWJ1dGUgdG8g
dGhlIGZvcm0uCitQQVNTIGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDMKK1BBU1MgZm9ybS5lbGVt
ZW50c1swXSBpcyBpbnB1dDEKK1BBU1MgZm9ybS5lbGVtZW50c1sxXSBpcyBpbnB1dDIKK1BBU1Mg
Zm9ybS5lbGVtZW50c1syXSBpcyBpbnB1dDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3VwZGF0ZS1mb3JtLWF0dHJpYnV0ZS1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFjYWUx
ZTg1OTMyNWFiMWJiODE3M2I0YTQyZDgwMmVlMzVjN2Y4NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdXBkYXRlLWZvcm0tYXR0cmlidXRlLWVsZW1lbnQuaHRtbApA
QCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxkaXYgaWQ9InRl
c3QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0IGZvciB0aGUgZGF0YWxpc3QgZWxlbWVudC4nKTsKKwordmFyIHRlc3RFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKworZnVuY3Rpb24gY3JlYXRlRm9ybShp
ZCkgeworICAgIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpOworICAg
IGZvcm0uaWQgPSBpZDsKKyAgICB0ZXN0RWxlbWVudC5hcHBlbmRDaGlsZChmb3JtKTsKKyAgICBy
ZXR1cm4gZm9ybTsKK307CisKK2Z1bmN0aW9uIGNyZWF0ZUlucHV0KGZvcm0pIHsKKyAgICB2YXIg
aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgIGlucHV0LnNldEF0
dHJpYnV0ZSgiZm9ybSIsIGZvcm0pOworICAgIHRlc3RFbGVtZW50LmFwcGVuZENoaWxkKGlucHV0
KTsKKyAgICByZXR1cm4gaW5wdXQ7Cit9OworCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBkZWJ1
ZygiVGVzdCAxOiBJbnNlcnQgbmV3IGlucHV0IGFmdGVyIGZvcm0uIik7CisgICAgZm9ybSA9IGNy
ZWF0ZUZvcm0oInRlc3QxIik7CisgICAgaW5wdXQgPSBjcmVhdGVJbnB1dCgidGVzdDEiKTsKKyAg
ICBzaG91bGRCZSgnZm9ybS5lbGVtZW50cy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdm
b3JtLmVsZW1lbnRzWzBdJywgJ2lucHV0Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0MigpIHsKKyAg
ICBkZWJ1ZygiVGVzdCAyOiBJbnNlcnQgdHdvIGZvcm1zIHdpdGggc2FtZSBpZC4iKTsKKyAgICBp
bnB1dCA9IGNyZWF0ZUlucHV0KCJ0ZXN0MiIpOworICAgIGZvcm0xID0gY3JlYXRlRm9ybSgidGVz
dDIiKTsKKyAgICBmb3JtMiA9IGNyZWF0ZUZvcm0oInRlc3QyIik7CisgICAgc2hvdWxkQmUoJ2Zv
cm0xLmVsZW1lbnRzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0yLmVsZW1lbnRz
Lmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0xLmVsZW1lbnRzWzBdJywgJ2lucHV0
Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBkZWJ1ZygiVGVzdCAzOiBDaGFuZ2Ug
Zm9ybSBpZC4iKTsKKyAgICBmb3JtID0gY3JlYXRlRm9ybSgidGVzdDMtMSIpOworICAgIGlucHV0
ID0gY3JlYXRlSW5wdXQoInRlc3QzLTIiKTsKKyAgICBmb3JtLmlkID0gInRlc3QzLTIiOworICAg
IHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2Zv
cm0uZWxlbWVudHNbMF0nLCAnaW5wdXQnKTsKK307CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAg
IGRlYnVnKCJUZXN0IDQ6IE9yZGVyLiIpOworICAgIGlucHV0MSA9IGNyZWF0ZUlucHV0KCJ0ZXN0
NCIpOworICAgIGlucHV0MiA9IGNyZWF0ZUlucHV0KCJ0ZXN0NCIpOworICAgIGZvcm0gPSBjcmVh
dGVGb3JtKCJ0ZXN0NCIpOworICAgIGlucHV0MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7CisgICAgZm9ybS5hcHBlbmRDaGlsZChpbnB1dDMpOworICAgIGlucHV0NCA9IGNyZWF0
ZUlucHV0KCJ0ZXN0NCIpOworICAgIGlucHV0NSA9IGNyZWF0ZUlucHV0KCJ0ZXN0NCIpOworICAg
IAorICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICc1Jyk7CisgICAgc2hvdWxk
QmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHNbMV0nLCAnaW5wdXQyJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMl0nLCAn
aW5wdXQzJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbM10nLCAnaW5wdXQ0Jyk7Cisg
ICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbNF0nLCAnaW5wdXQ1Jyk7CisKKyAgICBpbnB1dDIu
c2V0QXR0cmlidXRlKCJmb3JtIiwgIiIpOworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxl
bmd0aCcsICc0Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7
CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMV0nLCAnaW5wdXQzJyk7CisgICAgc2hvdWxk
QmUoJ2Zvcm0uZWxlbWVudHNbMl0nLCAnaW5wdXQ0Jyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHNbM10nLCAnaW5wdXQ1Jyk7Cit9OworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBkZWJ1
ZygiVGVzdCA1OiBBZGQgbmV3IGVsZW1lbnQgd2l0aCBmb3JtIGF0dHJpYnV0ZSB0byB0aGUgZm9y
bS4iKTsKKyAgICBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpOworICAgIGZv
cm0uaWQgPSAidGVzdDUiOworICAgIGZvcm0uaW5uZXJIVE1MID0gIjx0ZXh0YXJlYSBpZD1cInRl
c3Q1LWlucHV0MVwiPjwvdGV4dGFyZWE+PGlucHV0IGZvcm09dGVzdDUgaWQ9XCJ0ZXN0NS1pbnB1
dDJcIj48c2VsZWN0IGlkPVwidGVzdDUtaW5wdXQzXCI+IjsKKyAgICB0ZXN0LmFwcGVuZENoaWxk
KGZvcm0pOworICAgIGlucHV0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NS1pbnB1
dDEiKTsKKyAgICBpbnB1dDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDUtaW5wdXQy
Iik7CisgICAgaW5wdXQzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q1LWlucHV0MyIp
OworICAgIHNob3VsZEJlKCdmb3JtLmVsZW1lbnRzLmxlbmd0aCcsICczJyk7CisgICAgc2hvdWxk
QmUoJ2Zvcm0uZWxlbWVudHNbMF0nLCAnaW5wdXQxJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxl
bWVudHNbMV0nLCAnaW5wdXQyJyk7CisgICAgc2hvdWxkQmUoJ2Zvcm0uZWxlbWVudHNbMl0nLCAn
aW5wdXQzJyk7Cit9OworCit0ZXN0MSgpOwordGVzdDIoKTsKK3Rlc3QzKCk7Cit0ZXN0NCgpOwor
dGVzdDUoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>