<?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>154133</bug_id>
          
          <creation_ts>2016-02-11 14:24:42 -0800</creation_ts>
          <short_desc>Refine SimulatedMouseEvent to support Event.isTrusted</short_desc>
          <delta_ts>2016-02-15 13:38:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76121</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1163876</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-02-11 14:24:42 -0800</bug_when>
    <thetext>Add new create method/constructor to SimulatedMouseEvent to be called by bindings exclusively.

Also, separate EventDispatcher::dispatchSimulatedClick into two: one for bindings, and the other for user agent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163879</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-11 14:26:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/24616246&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164015</commentid>
    <comment_count>2</comment_count>
      <attachid>271132</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-02-11 21:25:30 -0800</bug_when>
    <thetext>Created attachment 271132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164017</commentid>
    <comment_count>3</comment_count>
      <attachid>271133</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-02-11 21:28:15 -0800</bug_when>
    <thetext>Created attachment 271133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164172</commentid>
    <comment_count>4</comment_count>
      <attachid>271133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-12 09:31:29 -0800</bug_when>
    <thetext>Comment on attachment 271133
Patch

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

This patch is OK, but I have a better idea of how to do this. You can land it as-is, but then I see a way to make this cleaner.

&gt; Source/WebCore/dom/EventDispatcher.cpp:171
&gt; +    if (creationOptions == SimulatedClickCreationOptions::FromUserAgent) {
&gt; +        if (mouseEventOptions == SendMouseOverUpDownEvents)
&gt; +            dispatchEvent(element, SimulatedMouseEvent::create(eventNames().mouseoverEvent, element-&gt;document().defaultView(), underlyingEvent, element));
&gt; +
&gt; +        if (mouseEventOptions != SendNoEvents)
&gt; +            dispatchEvent(element, SimulatedMouseEvent::create(eventNames().mousedownEvent, element-&gt;document().defaultView(), underlyingEvent, element));
&gt; +        element-&gt;setActive(true, visualOptions == ShowPressedLook);
&gt; +        if (mouseEventOptions != SendNoEvents)
&gt; +            dispatchEvent(element, SimulatedMouseEvent::create(eventNames().mouseupEvent, element-&gt;document().defaultView(), underlyingEvent, element));
&gt; +        element-&gt;setActive(false);
&gt; +
&gt; +        // always send click
&gt; +        dispatchEvent(element, SimulatedMouseEvent::create(eventNames().clickEvent, element-&gt;document().defaultView(), underlyingEvent, element));
&gt; +    } else if (creationOptions == SimulatedClickCreationOptions::FromBindings) {
&gt; +        SimulatedMouseEventInit init;
&gt; +        init.bubbles = true;
&gt; +        init.cancelable = true;
&gt; +        init.view = element-&gt;document().defaultView();
&gt; +        init.isSimulated = true;
&gt; +        init.underlyingEvent = underlyingEvent;
&gt; +        init.target = element;
&gt; +
&gt; +        if (mouseEventOptions == SendMouseOverUpDownEvents)
&gt; +            dispatchEvent(element, SimulatedMouseEvent::createForBindings(eventNames().mouseoverEvent, init));
&gt; +
&gt; +        if (mouseEventOptions != SendNoEvents)
&gt; +            dispatchEvent(element, SimulatedMouseEvent::createForBindings(eventNames().mousedownEvent, init));
&gt; +        element-&gt;setActive(true, visualOptions == ShowPressedLook);
&gt; +        if (mouseEventOptions != SendNoEvents)
&gt; +            dispatchEvent(element, SimulatedMouseEvent::createForBindings(eventNames().mouseupEvent, init));
&gt; +        element-&gt;setActive(false);
&gt; +
&gt; +        // always send click
&gt; +        dispatchEvent(element, SimulatedMouseEvent::createForBindings(eventNames().clickEvent, init));
&gt; +    }

This seems excessive. I don’t think we need to make any changes to SimulatedMouseEvent itself (although changing PassRefPtr to RefPtr&amp;&amp; is nice!). Instead, I think the code should just use a private helper function, dispatchSimulatedMouseEvent that would say:

    auto event = SimulatedMouseEvent::create(&lt;arguments&gt;);
    if (creationOptions == SimulatedClickCreationOptions::FromBindings)
        event.get().setUntrusted();
    dispatchEvent(element, event.get());

I know that’s not the pattern we use elsewhere, but I think it’s fine here. No need to create the events in an entirely different way and pretend they were created directly by JavaScript when that’s not the real way the code flows.

I also think that SimulatedMouseEvent should be moved out of the public headers so no one is tempted to use it in a different way. It’s should be used only by this function, dispatchSimulatedClick. So what I would suggest is that we move this function and the SimulatedMouseEvent class into a new file, SimulatedClick.h/cpp. The header file would have only one function, dispatchSimulatedClick, and the implementation file would contain the entire SimulatedMouseEvent class, which would be removed from MouseEvent.h and MouseEvent.cpp. Note that this header would also be included only by Element.cpp!

I would also put SimulatedClickCreationOptions into SimulatedClick.h instead of SimulatedClickOptions.h. The options are for the functions that code uses directly, the ones in the Element class. Whereas the SimulatedClickCreationOptions is only for use inside Element.cpp.

We could also consider renaming this function. I’m not sure that “dispatch” is a great name for a function that creates new events and dispatches them. The other “dispatch” functions take an existing event and dispatch it. I think a better name for the function would be “simulateClick”.

&gt; Source/WebCore/dom/EventDispatcher.h:42
&gt; +void dispatchSimulatedClick(Element*, Event* underlyingEvent, SimulatedClickMouseEventOptions, SimulatedClickVisualOptions, SimulatedClickCreationOptions);

The element argument should be Element&amp;, not Element*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164435</commentid>
    <comment_count>5</comment_count>
      <attachid>271248</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-02-12 16:56:47 -0800</bug_when>
    <thetext>Created attachment 271248
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164442</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-12 17:07:33 -0800</bug_when>
    <thetext>Attachment 271248 did not pass style-queue:


ERROR: Source/WebCore/dom/SimulatedClick.cpp:51:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/SimulatedClick.cpp:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/SimulatedClick.cpp:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164490</commentid>
    <comment_count>7</comment_count>
      <attachid>271269</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-02-12 21:52:06 -0800</bug_when>
    <thetext>Created attachment 271269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164491</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-12 21:54:39 -0800</bug_when>
    <thetext>Attachment 271269 did not pass style-queue:


ERROR: Source/WebCore/dom/SimulatedClick.cpp:51:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/SimulatedClick.cpp:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/SimulatedClick.cpp:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164627</commentid>
    <comment_count>9</comment_count>
      <attachid>271269</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-14 14:16:41 -0800</bug_when>
    <thetext>Comment on attachment 271269
Patch

Rejecting attachment 271269 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 271269, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
m/SimulatedClick.cpp
patching file Source/WebCore/dom/SimulatedClick.h
patching file Source/WebCore/html/HTMLElement.cpp
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/imported/blink/fast/events/event-trusted-expected.txt
patching file LayoutTests/imported/blink/fast/events/event-trusted.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Darin Adler&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/832061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164628</commentid>
    <comment_count>10</comment_count>
      <attachid>271269</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-14 14:21:27 -0800</bug_when>
    <thetext>Comment on attachment 271269
Patch

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

&gt; Source/WebCore/dom/Element.h:462
&gt; +    void dispatchSimulatedClickForBindings(Event* underlyingEvent, SimulatedClickMouseEventOptions = SendNoEvents, SimulatedClickVisualOptions = ShowPressedLook);

I suggest we remove the options arguments from this function and instead have it always use the options &quot;SendNoEvents&quot; and &quot;DoNotShowPressedLook&quot;, since the only caller wants those options. We can always add the options later if needed.

&gt; Source/WebCore/dom/SimulatedClick.cpp:47
&gt; +    virtual ~SimulatedMouseEvent()
&gt; +    {
&gt; +    }

This is not needed and should just be removed.

&gt; Source/WebCore/dom/SimulatedClick.cpp:77
&gt; +static void simulateClickInternal(const AtomicString&amp; eventType, Element&amp; element, Event* underlyingEvent, SimulatedClickCreationOptions creationOptions)

I’d name this simulateMouseEvent.

&gt; Source/WebCore/dom/SimulatedClick.cpp:104
&gt; +    // always send click

We should remove this comment, unless we replace it with a longer one that says *why* we always send a click event. I think there’s no need for a comment.

&gt; Source/WebCore/dom/SimulatedClick.h:36
&gt; +enum SimulatedClickCreationOptions {

Should change this to an enum class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164630</commentid>
    <comment_count>11</comment_count>
      <attachid>271269</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-14 14:23:06 -0800</bug_when>
    <thetext>Comment on attachment 271269
Patch

Rejecting attachment 271269 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 271269, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
m/SimulatedClick.cpp
patching file Source/WebCore/dom/SimulatedClick.h
patching file Source/WebCore/html/HTMLElement.cpp
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/imported/blink/fast/events/event-trusted-expected.txt
patching file LayoutTests/imported/blink/fast/events/event-trusted.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Darin Adler&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/832086</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164795</commentid>
    <comment_count>12</comment_count>
      <attachid>271352</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-02-15 11:42:59 -0800</bug_when>
    <thetext>Created attachment 271352
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164822</commentid>
    <comment_count>13</comment_count>
      <attachid>271359</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-02-15 12:39:55 -0800</bug_when>
    <thetext>Created attachment 271359
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164823</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-15 12:42:34 -0800</bug_when>
    <thetext>Attachment 271359 did not pass style-queue:


ERROR: Source/WebCore/dom/SimulatedClick.cpp:47:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebCore/dom/SimulatedClick.cpp:49:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/SimulatedClick.cpp:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164872</commentid>
    <comment_count>15</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-02-15 13:38:27 -0800</bug_when>
    <thetext>Committed r196598: &lt;http://trac.webkit.org/changeset/196598&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271132</attachid>
            <date>2016-02-11 21:25:30 -0800</date>
            <delta_ts>2016-02-11 21:28:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154133-20160211212508.patch</filename>
            <type>text/plain</type>
            <size>15239</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVkNjU1N2U4YTc3ZDY4
YjZmMDBjZTM2NDFhNjljOThkMDZhNjM2NC4uMzE4OWY0MzI1NjFjOTVmNmM2YzA3MDE1Y2MyMjcx
YWU3NTkyOTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTAyLTExICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmaW5lIFNpbXVsYXRl
ZE1vdXNlRXZlbnQgdG8gc3VwcG9ydCBFdmVudC5pc1RydXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEzMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjQ2MTYyNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzIGFuZCBj
b3JyZXNwb25kaW5nIGNvbnN0cnVjdG9yIHRvIHNlcGFyYXRlCisgICAgICAgIHRoZSB3YXkgU2lt
dWxhdGVkTW91c2VFdmVudCBpcyBjcmVhdGVkIHRvIHN1cHBvcnQgRXZlbnQuaXNUcnVzdGVkLiBF
dmVudERpc3BhdGNoZXI6OgorICAgICAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrIGlzIGFkZGVk
IHdpdGggcGFyYW1ldGVyIFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zIHRvIHRlbGwKKyAg
ICAgICAgd2hldGhlciB0aGUgY2FsbCBzaXRlIGlzIGluIHRoZSBwYXRoIG9mIGJpbmRpbmdzL3Vz
ZXIgYWdlbnQuIEEgbmV3IG1ldGhvZCBpcyBhZGRlZCB0bworICAgICAgICBFbGVtZW50IHRoYXQg
ZGlzcGF0Y2hlcyBzaW11bGF0ZWQgY2xpY2sgZm9yIGJpbmRpbmdzIGV4Y2x1c2l2ZWx5LgorCisg
ICAgICAgIE5vIGNoYW5nZXMgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2tGb3JCaW5k
aW5ncyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnREaXNw
YXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hT
aW11bGF0ZWRDbGljayk6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgorICAgICAg
ICAqIGRvbS9Nb3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZE1vdXNl
RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50Ojpj
cmVhdGVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50
OjpTaW11bGF0ZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZE1vdXNl
RXZlbnQ6OmluaXQpOgorICAgICAgICAqIGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgICogZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50
Lmg6CisgICAgICAgICogZG9tL1NpbXVsYXRlZENsaWNrT3B0aW9ucy5oOgorICAgICAgICAqIGh0
bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNsaWNr
KToKKwogMjAxNi0wMi0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuYW1lIEVsZW1lbnQ6OnN0eWxlKCkgdG8gRWxlbWVudDo6Y3Nzb21TdHlsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNDA4OGQ4NGQwZTJmOThlM2JiNWY1ZmU3YjMzMmRhMDVj
MzAzNDVmNy4uOWYxYjNiNjM4ZGQxMTgxNGFmZTc0NzU3MWI1YjhlNWMzZTQwZTFjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtMzEyLDcgKzMxMiwxMiBAQCBib29sIEVsZW1lbnQ6OmRpc3Bh
dGNoS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50KQog
CiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soRXZlbnQqIHVuZGVybHlpbmdF
dmVudCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2ZW50T3B0aW9ucyBldmVudE9wdGlvbnMsIFNpbXVs
YXRlZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRpb25zKQogewotICAgIEV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayh0aGlzLCB1bmRlcmx5aW5nRXZlbnQsIGV2ZW50
T3B0aW9ucywgdmlzdWFsT3B0aW9ucyk7CisgICAgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNp
bXVsYXRlZENsaWNrKHRoaXMsIHVuZGVybHlpbmdFdmVudCwgZXZlbnRPcHRpb25zLCB2aXN1YWxP
cHRpb25zLCBTaW11bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9uczo6RnJvbVVzZXJBZ2VudCk7Cit9
CisKK3ZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGlja0ZvckJpbmRpbmdzKEV2ZW50
KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgZXZlbnRP
cHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9ucykKK3sKKyAg
ICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sodGhpcywgdW5kZXJseWlu
Z0V2ZW50LCBldmVudE9wdGlvbnMsIHZpc3VhbE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrQ3JlYXRp
b25PcHRpb25zOjpGcm9tQmluZGluZ3MpOwogfQogCiBSZWY8Tm9kZT4gRWxlbWVudDo6Y2xvbmVO
b2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0aW9uIHR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2N2I2M2VhZjBmNmQxMzQ3MTk0NDQ0ODMzOWFhOGU5
NzYyNjdkMTkxLi5lMTkzZDcxOGI5NjZjYThkOWU3NjNmNGUxZDQ5MDM2MzY0OTQ5ZGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKQEAgLTQ1OSw2ICs0NTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNw
YXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgYm9vbCBkaXNw
YXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgZGlz
cGF0Y2hTaW11bGF0ZWRDbGljayhFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlj
a01vdXNlRXZlbnRPcHRpb25zID0gU2VuZE5vRXZlbnRzLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9w
dGlvbnMgPSBTaG93UHJlc3NlZExvb2spOworICAgIHZvaWQgZGlzcGF0Y2hTaW11bGF0ZWRDbGlj
a0ZvckJpbmRpbmdzKEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VF
dmVudE9wdGlvbnMgPSBTZW5kTm9FdmVudHMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyA9
IFNob3dQcmVzc2VkTG9vayk7CiAgICAgdm9pZCBkaXNwYXRjaEZvY3VzSW5FdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1l
bnQpOwogICAgIHZvaWQgZGlzcGF0Y2hGb2N1c091dEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2Vk
RWxlbWVudCwgRm9jdXNEaXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVy
LmNwcAppbmRleCAzZjEwZmQ4ZThhZTc4ZTE3NWNlN2MwNDdlOTM0M2NjM2VkMDQwNjUwLi42OGM3
MGI1YmI3ZDg5MTFkMzc2NmExOTI3OTVjM2Q0ODE2MWVmNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNjb3BlZEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICBT
Y29wZWRFdmVudFF1ZXVlOjpzaW5nbGV0b24oKS5lbnF1ZXVlRXZlbnQoZXZlbnQpOwogfQogCi12
b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50KiBlbGVt
ZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRp
b25zIG1vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFs
T3B0aW9ucykKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEVs
ZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91
c2VFdmVudE9wdGlvbnMgbW91c2VFdmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0
aW9ucyB2aXN1YWxPcHRpb25zLCBTaW11bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9ucyBjcmVhdGlv
bk9wdGlvbnMpCiB7CiAgICAgaWYgKGVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMzQsMTggKzEzNCw0MSBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50KiBlbGVtZW50LCBFdmVudCogdW5kZXJs
eWluZwogICAgIGlmICghZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcy5nZXQoKS5h
ZGQoZWxlbWVudCkuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1vdXNl
RXZlbnRPcHRpb25zID09IFNlbmRNb3VzZU92ZXJVcERvd25FdmVudHMpCi0gICAgICAgIGRpc3Bh
dGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5tb3VzZW92ZXJFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRl
cmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsKLQotICAgIGlmIChtb3VzZUV2ZW50T3B0aW9ucyAhPSBT
ZW5kTm9FdmVudHMpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91
c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCwgZWxlbWVudC0+ZG9j
dW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsKLSAgICBl
bGVtZW50LT5zZXRBY3RpdmUodHJ1ZSwgdmlzdWFsT3B0aW9ucyA9PSBTaG93UHJlc3NlZExvb2sp
OwotICAgIGlmIChtb3VzZUV2ZW50T3B0aW9ucyAhPSBTZW5kTm9FdmVudHMpCi0gICAgICAgIGRp
c3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5tb3VzZXVwRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5k
ZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7Ci0gICAgZWxlbWVudC0+c2V0QWN0aXZlKGZhbHNlKTsK
LQotICAgIC8vIGFsd2F5cyBzZW5kIGNsaWNrCi0gICAgZGlzcGF0Y2hFdmVudChlbGVtZW50LCBT
aW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGVsZW1l
bnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7
CisgICAgaWYgKGNyZWF0aW9uT3B0aW9ucyA9PSBTaW11bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9u
czo6RnJvbVVzZXJBZ2VudCkgeworICAgICAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgPT0gU2Vu
ZE1vdXNlT3ZlclVwRG93bkV2ZW50cykKKyAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVu
dCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVu
dCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVs
ZW1lbnQpKTsKKworICAgICAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRz
KQorICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChlbGVtZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50LCBlbGVtZW50LT5kb2N1bWVudCgp
LmRlZmF1bHRWaWV3KCksIHVuZGVybHlpbmdFdmVudCwgZWxlbWVudCkpOworICAgICAgICBlbGVt
ZW50LT5zZXRBY3RpdmUodHJ1ZSwgdmlzdWFsT3B0aW9ucyA9PSBTaG93UHJlc3NlZExvb2spOwor
ICAgICAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRzKQorICAgICAgICAg
ICAgZGlzcGF0Y2hFdmVudChlbGVtZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLm1vdXNldXBFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0Vmlldygp
LCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsKKyAgICAgICAgZWxlbWVudC0+c2V0QWN0aXZl
KGZhbHNlKTsKKworICAgICAgICAvLyBhbHdheXMgc2VuZCBjbGljaworICAgICAgICBkaXNwYXRj
aEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y2xpY2tFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5n
RXZlbnQsIGVsZW1lbnQpKTsKKyAgICB9IGVsc2UgaWYgKGNyZWF0aW9uT3B0aW9ucyA9PSBTaW11
bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9uczo6RnJvbUJpbmRpbmdzKSB7CisgICAgICAgIFNpbXVs
YXRlZE1vdXNlRXZlbnRJbml0IGluaXQ7CisgICAgICAgIGluaXQuYnViYmxlcyA9IHRydWU7Cisg
ICAgICAgIGluaXQuY2FuY2VsYWJsZSA9IHRydWU7CisgICAgICAgIGluaXQudmlldyA9IGVsZW1l
bnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKTsKKyAgICAgICAgaW5pdC5pc1NpbXVsYXRlZCA9
IHRydWU7CisgICAgICAgIGluaXQudW5kZXJseWluZ0V2ZW50ID0gdW5kZXJseWluZ0V2ZW50Owor
ICAgICAgICBpbml0LnRhcmdldCA9IGVsZW1lbnQ7CisKKyAgICAgICAgaWYgKG1vdXNlRXZlbnRP
cHRpb25zID09IFNlbmRNb3VzZU92ZXJVcERvd25FdmVudHMpCisgICAgICAgICAgICBkaXNwYXRj
aEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKGV2
ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCwgaW5pdCkpOworCisgICAgICAgIGlmIChtb3VzZUV2
ZW50T3B0aW9ucyAhPSBTZW5kTm9FdmVudHMpCisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KGVs
ZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKGV2ZW50TmFtZXMo
KS5tb3VzZWRvd25FdmVudCwgaW5pdCkpOworICAgICAgICBlbGVtZW50LT5zZXRBY3RpdmUodHJ1
ZSwgdmlzdWFsT3B0aW9ucyA9PSBTaG93UHJlc3NlZExvb2spOworICAgICAgICBpZiAobW91c2VF
dmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRzKQorICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChl
bGVtZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncyhldmVudE5hbWVz
KCkubW91c2V1cEV2ZW50LCBpbml0KSk7CisgICAgICAgIGVsZW1lbnQtPnNldEFjdGl2ZShmYWxz
ZSk7CisKKyAgICAgICAgLy8gYWx3YXlzIHNlbmQgY2xpY2sKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChlbGVtZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncyhldmVudE5h
bWVzKCkuY2xpY2tFdmVudCwgaW5pdCkpOworICAgIH0KIAogICAgIGVsZW1lbnRzRGlzcGF0Y2hp
bmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkucmVtb3ZlKGVsZW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IGJhNDNlZWRiZTQ5MjU0NWM2M2I1MGU0NGZiNmI5YWY2
NzE1MjdmZWIuLmUyMzEwNDhhNjdiZDNhMDY5ZGI3OGYzMjUxMDMxZTVhZWJkM2Y1OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IEV2ZW50RGlzcGF0Y2hlciB7CiAKIGJvb2wgZGlzcGF0Y2hFdmVudChOb2RlKiwgRXZlbnQmKTsK
IHZvaWQgZGlzcGF0Y2hTY29wZWRFdmVudChOb2RlJiwgRXZlbnQmKTsKLXZvaWQgZGlzcGF0Y2hT
aW11bGF0ZWRDbGljayhFbGVtZW50KiwgRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVk
Q2xpY2tNb3VzZUV2ZW50T3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tWaXN1YWxPcHRpb25zKTsKK3Zv
aWQgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50KiwgRXZlbnQqIHVuZGVybHlpbmdFdmVu
dCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2ZW50T3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tWaXN1YWxP
cHRpb25zLCBTaW11bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9ucyk7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlRXZlbnQuY3BwCmluZGV4IDdhMzI5YjZjZjM1YjczZDQxNjYyNGEwYWJiMjM2NzUzMTVj
MmYzYTMuLmJhZjE2NDIwZThiOTgwZTk3NTkzMTFjNzY1NmYzZjNkOGRjNWY1YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5jcHAKQEAgLTI1MSwyMiArMjUxLDM4IEBAIFJlZjxFdmVudD4gTW91
c2VFdmVudDo6Y2xvbmVGb3IoSFRNTElGcmFtZUVsZW1lbnQqIGlmcmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gV1RGTW92ZShjbG9uZWRNb3VzZUV2ZW50KTsKIH0KIAotUmVmPFNpbXVsYXRlZE1vdXNl
RXZlbnQ+IFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiB2aWV3LCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5n
RXZlbnQsIEVsZW1lbnQqIHRhcmdldCkKK1JlZjxTaW11bGF0ZWRNb3VzZUV2ZW50PiBTaW11bGF0
ZWRNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3Ry
YWN0VmlldyogdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCog
dGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNpbXVsYXRlZE1vdXNlRXZlbnQo
ZXZlbnRUeXBlLCB2aWV3LCB1bmRlcmx5aW5nRXZlbnQsIHRhcmdldCkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNpbXVsYXRlZE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB2aWV3LCBXVEZNb3Zl
KHVuZGVybHlpbmdFdmVudCksIHRhcmdldCkpOworfQorCitSZWY8U2ltdWxhdGVkTW91c2VFdmVu
dD4gU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGNvbnN0IFNpbXVsYXRlZE1vdXNlRXZlbnRJbml0JiBpbml0KQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNpbXVsYXRlZE1vdXNlRXZlbnQoZXZlbnRUeXBlLCBp
bml0KSk7CiB9CiAKIFNpbXVsYXRlZE1vdXNlRXZlbnQ6On5TaW11bGF0ZWRNb3VzZUV2ZW50KCkK
IHsKIH0KIAotU2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiB2aWV3LCBQYXNzUmVmUHRyPEV2
ZW50PiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCkKK1NpbXVsYXRlZE1vdXNlRXZl
bnQ6OlNpbXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFi
c3RyYWN0VmlldyogdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVu
dCogdGFyZ2V0KQogICAgIDogTW91c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVy
bHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVudC0+dGltZVN0YW1wKCkgOiBjdXJyZW50VGltZSgp
LCB2aWV3LCAwLCAwLCAwLCAwLCAwLAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgICAg
ICAgICAgICAgIDAsIDAsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIDAsIDAsIDAsIDAsIHRydWUpCiB7CisgICAgaW5pdChXVEZNb3ZlKHVuZGVy
bHlpbmdFdmVudCksIHRhcmdldCk7Cit9CisKK1NpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVsYXRl
ZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFNpbXVsYXRl
ZE1vdXNlRXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBl
LCBpbml0aWFsaXplcikKK3sKKyAgICBpbml0KGluaXRpYWxpemVyLnVuZGVybHlpbmdFdmVudC5j
b3B5UmVmKCksIGluaXRpYWxpemVyLnRhcmdldCk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkTW91c2VF
dmVudDo6aW5pdChSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50KiB0YXJn
ZXQpCit7CiAgICAgaWYgKFVJRXZlbnRXaXRoS2V5U3RhdGUqIGtleVN0YXRlRXZlbnQgPSBmaW5k
RXZlbnRXaXRoS2V5U3RhdGUodW5kZXJseWluZ0V2ZW50LmdldCgpKSkgewogICAgICAgICBtX2N0
cmxLZXkgPSBrZXlTdGF0ZUV2ZW50LT5jdHJsS2V5KCk7CiAgICAgICAgIG1fYWx0S2V5ID0ga2V5
U3RhdGVFdmVudC0+YWx0S2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRleCAwMjU3MTFl
YWFiNGEyZTAzYTA3ZTIzZDliN2M3NTNjYTljZTk3ZWI4Li40M2IzYzY1OGE3ZmE4OGEzYTEwMjVl
MzA1Y2E5YmZkN2U1YmQ4MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAgLTMyLDkgKzMy
LDkgQEAgY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogCiBz
dHJ1Y3QgTW91c2VFdmVudEluaXQgOiBwdWJsaWMgTW91c2VSZWxhdGVkRXZlbnRJbml0IHsKLSAg
ICBpbnQgY2xpZW50WCB7MH07Ci0gICAgaW50IGNsaWVudFkgezB9OwotICAgIHVuc2lnbmVkIHNo
b3J0IGJ1dHRvbiB7MH07CisgICAgaW50IGNsaWVudFggeyAwIH07CisgICAgaW50IGNsaWVudFkg
eyAwIH07CisgICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uIHsgMCB9OwogICAgIFJlZlB0cjxFdmVu
dFRhcmdldD4gcmVsYXRlZFRhcmdldDsKIH07CiAKQEAgLTEyOSwxMyArMTI5LDIyIEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gbV9kYXRhVHJhbnNmZXI7CiB9OwogCitzdHJ1
Y3QgU2ltdWxhdGVkTW91c2VFdmVudEluaXQgOiBwdWJsaWMgTW91c2VFdmVudEluaXQgeworICAg
IFJlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50OworICAgIEVsZW1lbnQqIHRhcmdldCB7IG51
bGxwdHIgfTsKK307CisKIGNsYXNzIFNpbXVsYXRlZE1vdXNlRXZlbnQgZmluYWwgOiBwdWJsaWMg
TW91c2VFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaW11bGF0ZWRNb3VzZUV2ZW50
PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyosIFBh
c3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCogdGFyZ2V0KTsKKyAgICBz
dGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiwgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVu
dCwgRWxlbWVudCogdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+
IGNyZWF0ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBT
aW11bGF0ZWRNb3VzZUV2ZW50SW5pdCYpOwogICAgIHZpcnR1YWwgflNpbXVsYXRlZE1vdXNlRXZl
bnQoKTsKIAogcHJpdmF0ZToKLSAgICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBBYnN0cmFjdFZpZXcqLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5
aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCk7CisgICAgU2ltdWxhdGVkTW91c2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiwgUmVmUHRyPEV2ZW50PiYm
IHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCogdGFyZ2V0KTsKKyAgICBTaW11bGF0ZWRNb3VzZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTaW11bGF0ZWRNb3VzZUV2
ZW50SW5pdCYpOworCisgICAgdm9pZCBpbml0KFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZl
bnQsIEVsZW1lbnQqIHRhcmdldCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAppbmRleCAxYjYzNWE2Yjc1YzMyN2Qz
M2IzMGFhNDQ5NjBhMTNiYTE0MGJkOTk4Li5lZTUzMjI2MzM4NDBhNDY0NzY0MmI2ZWQyMzg2OTdj
NjNmNWUzM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKQEAg
LTc3LDkgKzc3LDkgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBNb3VzZVIKICNpZiBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQogICAgICwgbV9tb3ZlbWVudERlbHRhKEludFBvaW50KDAsIDApKQogI2VuZGlmCi0g
ICAgLCBtX2lzU2ltdWxhdGVkKGZhbHNlKQorICAgICwgbV9pc1NpbXVsYXRlZChpbml0aWFsaXpl
ci5pc1NpbXVsYXRlZCkKIHsKLSAgICBpbml0KGZhbHNlLCBJbnRQb2ludCgwLCAwKSk7CisgICAg
aW5pdChpbml0aWFsaXplci5pc1NpbXVsYXRlZCwgSW50UG9pbnQoMCwgMCkpOwogfQogCiB2b2lk
IE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0KGJvb2wgaXNTaW11bGF0ZWQsIGNvbnN0IEludFBvaW50
JiB3aW5kb3dMb2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKaW5k
ZXggNDgxMTgyZjNjNDNhNDhmMDcxYmMzNTNkM2I0MWY5NDdmMGYzMGIwNi4uNWEwZjZlNGM4OThj
Y2RjMmNmMDc1NGMwZmJiZjY0YmI2Y2JjYzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0
IE1vdXNlUmVsYXRlZEV2ZW50SW5pdCA6IHB1YmxpYyBVSUV2ZW50V2l0aEtleVN0YXRlSW5pdCB7
CiAgICAgaW50IHNjcmVlblggeyAwIH07CiAgICAgaW50IHNjcmVlblkgeyAwIH07CisgICAgYm9v
bCBpc1NpbXVsYXRlZCB7IGZhbHNlIH07CiB9OwogCiAvLyBJbnRlcm5hbCBvbmx5OiBIZWxwZXIg
Y2xhc3MgZm9yIHdoYXQncyBjb21tb24gYmV0d2VlbiBtb3VzZSBhbmQgd2hlZWwgZXZlbnRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrT3B0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrT3B0aW9ucy5oCmluZGV4IGE0OWVkNzQ5
NjUwOGNjNTYzZmM0MzhiNjZjYjlkNDEwOGJjZGY1YTcuLmZiZDUwMjViM2NjZDlhYjJhZGU2MDYw
YzdiOTE4YzI0NWE0NGY5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0
ZWRDbGlja09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2tP
cHRpb25zLmgKQEAgLTM0LDYgKzM0LDExIEBAIGVudW0gU2ltdWxhdGVkQ2xpY2tWaXN1YWxPcHRp
b25zIHsKICAgICBTaG93UHJlc3NlZExvb2sKIH07CiAKK2VudW0gU2ltdWxhdGVkQ2xpY2tDcmVh
dGlvbk9wdGlvbnMgeworICAgIEZyb21CaW5kaW5ncywKKyAgICBGcm9tVXNlckFnZW50Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTaW11bGF0ZWRDbGlja09wdGlv
bnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBjZTM1YTBmYTBjYTQ4ZjEz
ZDZiNjgyN2I1OWI4NzlmNjZiZjE0NGU0Li42NmU2NTQ3N2VjNzA2Y2IxNTdhYmY5NjM5NWNiNzVk
MTU2NWIxZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtODA5LDcgKzgw
OSw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFNwZWxsY2hlY2soYm9vbCBlbmFibGUpCiAKIHZv
aWQgSFRNTEVsZW1lbnQ6OmNsaWNrKCkKIHsKLSAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKG51
bGxwdHIsIFNlbmROb0V2ZW50cywgRG9Ob3RTaG93UHJlc3NlZExvb2spOworICAgIGRpc3BhdGNo
U2ltdWxhdGVkQ2xpY2tGb3JCaW5kaW5ncyhudWxscHRyLCBTZW5kTm9FdmVudHMsIERvTm90U2hv
d1ByZXNzZWRMb29rKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJv
b2wgc2VuZE1vdXNlRXZlbnRzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271133</attachid>
            <date>2016-02-11 21:28:15 -0800</date>
            <delta_ts>2016-02-12 21:52:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154133-20160211212753.patch</filename>
            <type>text/plain</type>
            <size>15360</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVkNjU1N2U4YTc3ZDY4
YjZmMDBjZTM2NDFhNjljOThkMDZhNjM2NC4uMzNmN2E2YzM3MWI4NWY3Y2QxNWM1N2YwMjE3OWFm
OTg0MGQwMWFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTAyLTExICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmaW5lIFNpbXVsYXRl
ZE1vdXNlRXZlbnQgdG8gc3VwcG9ydCBFdmVudC5pc1RydXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEzMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjQ2MTYyNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzIGFuZCBj
b3JyZXNwb25kaW5nIGNvbnN0cnVjdG9yIHRvIHNlcGFyYXRlCisgICAgICAgIHRoZSB3YXkgU2lt
dWxhdGVkTW91c2VFdmVudCBpcyBjcmVhdGVkIHRvIHN1cHBvcnQgRXZlbnQuaXNUcnVzdGVkLiBF
dmVudERpc3BhdGNoZXI6OgorICAgICAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrIGlzIGFkZGVk
IHdpdGggcGFyYW1ldGVyIFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zIHRvIHRlbGwKKyAg
ICAgICAgd2hldGhlciB0aGUgY2FsbCBzaXRlIGlzIGluIHRoZSBwYXRoIG9mIGJpbmRpbmdzL3Vz
ZXIgYWdlbnQuIEEgbmV3IG1ldGhvZCBpcyBhZGRlZCB0bworICAgICAgICBFbGVtZW50IHRoYXQg
ZGlzcGF0Y2hlcyBzaW11bGF0ZWQgY2xpY2sgZm9yIGJpbmRpbmdzIGV4Y2x1c2l2ZWx5LgorCisg
ICAgICAgIFNvbWUgb2YgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCByZWZlcnJlZCBCbGluayBy
MjAwNDAxOgorICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEyODU3OTMw
MDQKKworICAgICAgICBObyBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hTaW11bGF0ZWRD
bGljayk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENsaWNr
Rm9yQmluZGluZ3MpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2spOgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuaDoK
KyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0
ZWRNb3VzZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91c2VF
dmVudDo6Y3JlYXRlRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91
c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0
ZWRNb3VzZUV2ZW50Ojppbml0KToKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5oOgorICAgICAg
ICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJl
bGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQpOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5oOgorICAgICAgICAqIGRvbS9TaW11bGF0ZWRDbGlja09wdGlvbnMuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpjbGljayk6CisKIDIwMTYtMDItMTEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSBFbGVtZW50OjpzdHlsZSgpIHRvIEVsZW1lbnQ6OmNzc29tU3R5
bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDQwODhkODRkMGUyZjk4ZTNiYjVmNWZlN2Iz
MzJkYTA1YzMwMzQ1ZjcuLjlmMWIzYjYzOGRkMTE4MTRhZmU3NDc1NzFiNWI4ZTVjM2U0MGUxYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMxMiw3ICszMTIsMTIgQEAgYm9vbCBFbGVtZW50
OjpkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1F
dmVudCkKIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEV2ZW50KiB1bmRl
cmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgZXZlbnRPcHRpb25z
LCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9ucykKIHsKLSAgICBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sodGhpcywgdW5kZXJseWluZ0V2ZW50
LCBldmVudE9wdGlvbnMsIHZpc3VhbE9wdGlvbnMpOworICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hTaW11bGF0ZWRDbGljayh0aGlzLCB1bmRlcmx5aW5nRXZlbnQsIGV2ZW50T3B0aW9ucywg
dmlzdWFsT3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9wdGlvbnM6OkZyb21Vc2VyQWdl
bnQpOworfQorCit2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2tGb3JCaW5kaW5n
cyhFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25z
IGV2ZW50T3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tWaXN1YWxPcHRpb25zIHZpc3VhbE9wdGlvbnMp
Cit7CisgICAgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKHRoaXMsIHVu
ZGVybHlpbmdFdmVudCwgZXZlbnRPcHRpb25zLCB2aXN1YWxPcHRpb25zLCBTaW11bGF0ZWRDbGlj
a0NyZWF0aW9uT3B0aW9uczo6RnJvbUJpbmRpbmdzKTsKIH0KIAogUmVmPE5vZGU+IEVsZW1lbnQ6
OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJh
dGlvbiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjdiNjNlYWYwZjZkMTM0NzE5NDQ0NDgz
MzlhYThlOTc2MjY3ZDE5MS4uZTE5M2Q3MThiOTY2Y2E4ZDllNzYzZjRlMWQ0OTAzNjM2NDk0OWRi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00NTksNiArNDU5LDcgQEAgcHVibGljOgogICAgIGJv
b2wgZGlzcGF0Y2hXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIGJv
b2wgZGlzcGF0Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKICAgICB2
b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxh
dGVkQ2xpY2tNb3VzZUV2ZW50T3B0aW9ucyA9IFNlbmROb0V2ZW50cywgU2ltdWxhdGVkQ2xpY2tW
aXN1YWxPcHRpb25zID0gU2hvd1ByZXNzZWRMb29rKTsKKyAgICB2b2lkIGRpc3BhdGNoU2ltdWxh
dGVkQ2xpY2tGb3JCaW5kaW5ncyhFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlj
a01vdXNlRXZlbnRPcHRpb25zID0gU2VuZE5vRXZlbnRzLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9w
dGlvbnMgPSBTaG93UHJlc3NlZExvb2spOwogICAgIHZvaWQgZGlzcGF0Y2hGb2N1c0luRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3Vz
ZWRFbGVtZW50KTsKICAgICB2b2lkIGRpc3BhdGNoRm9jdXNPdXRFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xk
Rm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlz
cGF0Y2hlci5jcHAKaW5kZXggM2YxMGZkOGU4YWU3OGUxNzVjZTdjMDQ3ZTkzNDNjYzNlZDA0MDY1
MC4uNjhjNzBiNWJiN2Q4OTExZDM3NjZhMTkyNzk1YzNkNDgxNjFlZjZjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTY29wZWRFdmVudChOb2RlJiBub2RlLCBFdmVudCYgZXZlbnQp
CiAgICAgU2NvcGVkRXZlbnRRdWV1ZTo6c2luZ2xldG9uKCkuZW5xdWV1ZUV2ZW50KGV2ZW50KTsK
IH0KIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soRWxlbWVu
dCogZWxlbWVudCwgRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2
ZW50T3B0aW9ucyBtb3VzZUV2ZW50T3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tWaXN1YWxPcHRpb25z
IHZpc3VhbE9wdGlvbnMpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRD
bGljayhFbGVtZW50KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRD
bGlja01vdXNlRXZlbnRPcHRpb25zIG1vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zp
c3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9wdGlvbnMg
Y3JlYXRpb25PcHRpb25zKQogewogICAgIGlmIChlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0LDE4ICsxMzQsNDEgQEAgdm9pZCBFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soRWxlbWVudCogZWxlbWVudCwgRXZlbnQq
IHVuZGVybHlpbmcKICAgICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3Mu
Z2V0KCkuYWRkKGVsZW1lbnQpLmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChtb3VzZUV2ZW50T3B0aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQotICAgICAg
ICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkubW91c2VvdmVyRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXco
KSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7Ci0KLSAgICBpZiAobW91c2VFdmVudE9wdGlv
bnMgIT0gU2VuZE5vRXZlbnRzKQotICAgICAgICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVs
YXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQsIGVsZW1l
bnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7
Ci0gICAgZWxlbWVudC0+c2V0QWN0aXZlKHRydWUsIHZpc3VhbE9wdGlvbnMgPT0gU2hvd1ByZXNz
ZWRMb29rKTsKLSAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRzKQotICAg
ICAgICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBlbGVtZW50LT5kb2N1bWVudCgpLmRlZmF1bHRWaWV3
KCksIHVuZGVybHlpbmdFdmVudCwgZWxlbWVudCkpOwotICAgIGVsZW1lbnQtPnNldEFjdGl2ZShm
YWxzZSk7Ci0KLSAgICAvLyBhbHdheXMgc2VuZCBjbGljawotICAgIGRpc3BhdGNoRXZlbnQoZWxl
bWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50
LCBlbGVtZW50LT5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHVuZGVybHlpbmdFdmVudCwgZWxl
bWVudCkpOworICAgIGlmIChjcmVhdGlvbk9wdGlvbnMgPT0gU2ltdWxhdGVkQ2xpY2tDcmVhdGlv
bk9wdGlvbnM6OkZyb21Vc2VyQWdlbnQpIHsKKyAgICAgICAgaWYgKG1vdXNlRXZlbnRPcHRpb25z
ID09IFNlbmRNb3VzZU92ZXJVcERvd25FdmVudHMpCisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50
KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubW91c2Vv
dmVyRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2
ZW50LCBlbGVtZW50KSk7CisKKyAgICAgICAgaWYgKG1vdXNlRXZlbnRPcHRpb25zICE9IFNlbmRO
b0V2ZW50cykKKyAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91
c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCwgZWxlbWVudC0+ZG9j
dW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsKKyAgICAg
ICAgZWxlbWVudC0+c2V0QWN0aXZlKHRydWUsIHZpc3VhbE9wdGlvbnMgPT0gU2hvd1ByZXNzZWRM
b29rKTsKKyAgICAgICAgaWYgKG1vdXNlRXZlbnRPcHRpb25zICE9IFNlbmROb0V2ZW50cykKKyAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVs
dFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7CisgICAgICAgIGVsZW1lbnQtPnNl
dEFjdGl2ZShmYWxzZSk7CisKKyAgICAgICAgLy8gYWx3YXlzIHNlbmQgY2xpY2sKKyAgICAgICAg
ZGlzcGF0Y2hFdmVudChlbGVtZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5k
ZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7CisgICAgfSBlbHNlIGlmIChjcmVhdGlvbk9wdGlvbnMg
PT0gU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9wdGlvbnM6OkZyb21CaW5kaW5ncykgeworICAgICAg
ICBTaW11bGF0ZWRNb3VzZUV2ZW50SW5pdCBpbml0OworICAgICAgICBpbml0LmJ1YmJsZXMgPSB0
cnVlOworICAgICAgICBpbml0LmNhbmNlbGFibGUgPSB0cnVlOworICAgICAgICBpbml0LnZpZXcg
PSBlbGVtZW50LT5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCk7CisgICAgICAgIGluaXQuaXNTaW11
bGF0ZWQgPSB0cnVlOworICAgICAgICBpbml0LnVuZGVybHlpbmdFdmVudCA9IHVuZGVybHlpbmdF
dmVudDsKKyAgICAgICAgaW5pdC50YXJnZXQgPSBlbGVtZW50OworCisgICAgICAgIGlmIChtb3Vz
ZUV2ZW50T3B0aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQorICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudChlbGVtZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGVGb3JCaW5k
aW5ncyhldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQsIGluaXQpKTsKKworICAgICAgICBpZiAo
bW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRzKQorICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudChlbGVtZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncyhldmVu
dE5hbWVzKCkubW91c2Vkb3duRXZlbnQsIGluaXQpKTsKKyAgICAgICAgZWxlbWVudC0+c2V0QWN0
aXZlKHRydWUsIHZpc3VhbE9wdGlvbnMgPT0gU2hvd1ByZXNzZWRMb29rKTsKKyAgICAgICAgaWYg
KG1vdXNlRXZlbnRPcHRpb25zICE9IFNlbmROb0V2ZW50cykKKyAgICAgICAgICAgIGRpc3BhdGNo
RXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoZXZl
bnROYW1lcygpLm1vdXNldXBFdmVudCwgaW5pdCkpOworICAgICAgICBlbGVtZW50LT5zZXRBY3Rp
dmUoZmFsc2UpOworCisgICAgICAgIC8vIGFsd2F5cyBzZW5kIGNsaWNrCisgICAgICAgIGRpc3Bh
dGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3Mo
ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGluaXQpKTsKKyAgICB9CiAKICAgICBlbGVtZW50c0Rp
c3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmdldCgpLnJlbW92ZShlbGVtZW50KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAppbmRleCBiYTQzZWVkYmU0OTI1NDVjNjNiNTBlNDRm
YjZiOWFmNjcxNTI3ZmViLi5lMjMxMDQ4YTY3YmQzYTA2OWRiNzhmMzI1MTAzMWU1YWViZDNmNTk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBFdmVudERpc3BhdGNoZXIgewogCiBib29sIGRpc3BhdGNoRXZlbnQoTm9kZSosIEV2
ZW50Jik7CiB2b2lkIGRpc3BhdGNoU2NvcGVkRXZlbnQoTm9kZSYsIEV2ZW50Jik7Ci12b2lkIGRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2soRWxlbWVudCosIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNp
bXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9u
cyk7Cit2b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soRWxlbWVudCosIEV2ZW50KiB1bmRlcmx5
aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNr
VmlzdWFsT3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9wdGlvbnMpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAppbmRleCA3YTMyOWI2Y2YzNWI3M2Q0MTY2MjRhMGFiYjIz
Njc1MzE1YzJmM2EzLi5iYWYxNjQyMGU4Yjk4MGU5NzU5MzExYzc2NTZmM2YzZDhkYzVmNWM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC0yNTEsMjIgKzI1MSwzOCBAQCBSZWY8RXZl
bnQ+IE1vdXNlRXZlbnQ6OmNsb25lRm9yKEhUTUxJRnJhbWVFbGVtZW50KiBpZnJhbWUpIGNvbnN0
CiAgICAgcmV0dXJuIFdURk1vdmUoY2xvbmVkTW91c2VFdmVudCk7CiB9CiAKLVJlZjxTaW11bGF0
ZWRNb3VzZUV2ZW50PiBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyogdmlldywgUGFzc1JlZlB0cjxFdmVudD4gdW5k
ZXJseWluZ0V2ZW50LCBFbGVtZW50KiB0YXJnZXQpCitSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4g
U2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBBYnN0cmFjdFZpZXcqIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVs
ZW1lbnQqIHRhcmdldCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3Vz
ZUV2ZW50KGV2ZW50VHlwZSwgdmlldywgdW5kZXJseWluZ0V2ZW50LCB0YXJnZXQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdmlldywg
V1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQpKTsKK30KKworUmVmPFNpbXVsYXRlZE1v
dXNlRXZlbnQ+IFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTaW11bGF0ZWRNb3VzZUV2ZW50SW5pdCYgaW5p
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50KGV2ZW50
VHlwZSwgaW5pdCkpOwogfQogCiBTaW11bGF0ZWRNb3VzZUV2ZW50Ojp+U2ltdWxhdGVkTW91c2VF
dmVudCgpCiB7CiB9CiAKLVNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVsYXRlZE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyogdmlldywgUGFzc1Jl
ZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50KiB0YXJnZXQpCitTaW11bGF0ZWRN
b3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBBYnN0cmFjdFZpZXcqIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQs
IEVsZW1lbnQqIHRhcmdldCkKICAgICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB0cnVlLCB0cnVl
LCB1bmRlcmx5aW5nRXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVTdGFtcCgpIDogY3VycmVu
dFRpbWUoKSwgdmlldywgMCwgMCwgMCwgMCwgMCwKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQog
ICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAwLCAwLCAwLCAwLCB0cnVlKQogeworICAgIGluaXQoV1RGTW92
ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQpOworfQorCitTaW11bGF0ZWRNb3VzZUV2ZW50OjpT
aW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBT
aW11bGF0ZWRNb3VzZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAgOiBNb3VzZUV2ZW50KGV2
ZW50VHlwZSwgaW5pdGlhbGl6ZXIpCit7CisgICAgaW5pdChpbml0aWFsaXplci51bmRlcmx5aW5n
RXZlbnQuY29weVJlZigpLCBpbml0aWFsaXplci50YXJnZXQpOworfQorCit2b2lkIFNpbXVsYXRl
ZE1vdXNlRXZlbnQ6OmluaXQoUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVu
dCogdGFyZ2V0KQorewogICAgIGlmIChVSUV2ZW50V2l0aEtleVN0YXRlKiBrZXlTdGF0ZUV2ZW50
ID0gZmluZEV2ZW50V2l0aEtleVN0YXRlKHVuZGVybHlpbmdFdmVudC5nZXQoKSkpIHsKICAgICAg
ICAgbV9jdHJsS2V5ID0ga2V5U3RhdGVFdmVudC0+Y3RybEtleSgpOwogICAgICAgICBtX2FsdEtl
eSA9IGtleVN0YXRlRXZlbnQtPmFsdEtleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKaW5kZXgg
MDI1NzExZWFhYjRhMmUwM2EwN2UyM2Q5YjdjNzUzY2E5Y2U5N2ViOC4uNDNiM2M2NThhN2ZhODhh
M2ExMDI1ZTMwNWNhOWJmZDdlNWJkODBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCkBAIC0z
Miw5ICszMiw5IEBAIGNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKIAogc3RydWN0IE1vdXNlRXZlbnRJbml0IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50SW5p
dCB7Ci0gICAgaW50IGNsaWVudFggezB9OwotICAgIGludCBjbGllbnRZIHswfTsKLSAgICB1bnNp
Z25lZCBzaG9ydCBidXR0b24gezB9OworICAgIGludCBjbGllbnRYIHsgMCB9OworICAgIGludCBj
bGllbnRZIHsgMCB9OworICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiB7IDAgfTsKICAgICBSZWZQ
dHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQ7CiB9OwogCkBAIC0xMjksMTMgKzEyOSwyMiBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxEYXRhVHJhbnNmZXI+IG1fZGF0YVRyYW5zZmVyOwogfTsK
IAorc3RydWN0IFNpbXVsYXRlZE1vdXNlRXZlbnRJbml0IDogcHVibGljIE1vdXNlRXZlbnRJbml0
IHsKKyAgICBSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudDsKKyAgICBFbGVtZW50KiB0YXJn
ZXQgeyBudWxscHRyIH07Cit9OworCiBjbGFzcyBTaW11bGF0ZWRNb3VzZUV2ZW50IGZpbmFsIDog
cHVibGljIE1vdXNlRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91
c2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBBYnN0cmFjdFZp
ZXcqLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCk7
CisgICAgc3RhdGljIFJlZjxTaW11bGF0ZWRNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyosIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5
aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxTaW11bGF0ZWRNb3Vz
ZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
Y29uc3QgU2ltdWxhdGVkTW91c2VFdmVudEluaXQmKTsKICAgICB2aXJ0dWFsIH5TaW11bGF0ZWRN
b3VzZUV2ZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgU2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiwgUGFzc1JlZlB0cjxFdmVudD4g
dW5kZXJseWluZ0V2ZW50LCBFbGVtZW50KiB0YXJnZXQpOworICAgIFNpbXVsYXRlZE1vdXNlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyosIFJlZlB0cjxF
dmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCk7CisgICAgU2ltdWxhdGVk
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU2ltdWxhdGVk
TW91c2VFdmVudEluaXQmKTsKKworICAgIHZvaWQgaW5pdChSZWZQdHI8RXZlbnQ+JiYgdW5kZXJs
eWluZ0V2ZW50LCBFbGVtZW50KiB0YXJnZXQpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKaW5kZXggMWI2MzVhNmI3
NWMzMjdkMzNiMzBhYTQ0OTYwYTEzYmExNDBiZDk5OC4uZWU1MzIyNjMzODQwYTQ2NDc2NDJiNmVk
MjM4Njk3YzYzZjVlMzNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVs
YXRlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQu
Y3BwCkBAIC03Nyw5ICs3Nyw5IEBAIE1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgTW91c2VSCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKICAgICAsIG1fbW92ZW1lbnREZWx0YShJbnRQb2ludCgwLCAwKSkKICNl
bmRpZgotICAgICwgbV9pc1NpbXVsYXRlZChmYWxzZSkKKyAgICAsIG1faXNTaW11bGF0ZWQoaW5p
dGlhbGl6ZXIuaXNTaW11bGF0ZWQpCiB7Ci0gICAgaW5pdChmYWxzZSwgSW50UG9pbnQoMCwgMCkp
OworICAgIGluaXQoaW5pdGlhbGl6ZXIuaXNTaW11bGF0ZWQsIEludFBvaW50KDAsIDApKTsKIH0K
IAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdChib29sIGlzU2ltdWxhdGVkLCBjb25zdCBJ
bnRQb2ludCYgd2luZG93TG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVu
dC5oCmluZGV4IDQ4MTE4MmYzYzQzYTQ4ZjA3MWJjMzUzZDNiNDFmOTQ3ZjBmMzBiMDYuLjVhMGY2
ZTRjODk4Y2NkYzJjZjA3NTRjMGZiYmY2NGJiNmNiY2M0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHN0cnVjdCBNb3VzZVJlbGF0ZWRFdmVudEluaXQgOiBwdWJsaWMgVUlFdmVudFdpdGhLZXlTdGF0
ZUluaXQgewogICAgIGludCBzY3JlZW5YIHsgMCB9OwogICAgIGludCBzY3JlZW5ZIHsgMCB9Owor
ICAgIGJvb2wgaXNTaW11bGF0ZWQgeyBmYWxzZSB9OwogfTsKIAogLy8gSW50ZXJuYWwgb25seTog
SGVscGVyIGNsYXNzIGZvciB3aGF0J3MgY29tbW9uIGJldHdlZW4gbW91c2UgYW5kIHdoZWVsIGV2
ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGlja09wdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGlja09wdGlvbnMuaAppbmRleCBh
NDllZDc0OTY1MDhjYzU2M2ZjNDM4YjY2Y2I5ZDQxMDhiY2RmNWE3Li5mYmQ1MDI1YjNjY2Q5YWIy
YWRlNjA2MGM3YjkxOGMyNDVhNDRmOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2ltdWxhdGVkQ2xpY2tPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRl
ZENsaWNrT3B0aW9ucy5oCkBAIC0zNCw2ICszNCwxMSBAQCBlbnVtIFNpbXVsYXRlZENsaWNrVmlz
dWFsT3B0aW9ucyB7CiAgICAgU2hvd1ByZXNzZWRMb29rCiB9OwogCitlbnVtIFNpbXVsYXRlZENs
aWNrQ3JlYXRpb25PcHRpb25zIHsKKyAgICBGcm9tQmluZGluZ3MsCisgICAgRnJvbVVzZXJBZ2Vu
dAorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU2ltdWxhdGVkQ2xp
Y2tPcHRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggY2UzNWEwZmEw
Y2E0OGYxM2Q2YjY4MjdiNTliODc5ZjY2YmYxNDRlNC4uNjZlNjU0NzdlYzcwNmNiMTU3YWJmOTYz
OTVjYjc1ZDE1NjViMWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTgw
OSw3ICs4MDksNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRTcGVsbGNoZWNrKGJvb2wgZW5hYmxl
KQogCiB2b2lkIEhUTUxFbGVtZW50OjpjbGljaygpCiB7Ci0gICAgZGlzcGF0Y2hTaW11bGF0ZWRD
bGljayhudWxscHRyLCBTZW5kTm9FdmVudHMsIERvTm90U2hvd1ByZXNzZWRMb29rKTsKKyAgICBk
aXNwYXRjaFNpbXVsYXRlZENsaWNrRm9yQmluZGluZ3MobnVsbHB0ciwgU2VuZE5vRXZlbnRzLCBE
b05vdFNob3dQcmVzc2VkTG9vayk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OmFjY2Vzc0tleUFj
dGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271248</attachid>
            <date>2016-02-12 16:56:47 -0800</date>
            <delta_ts>2016-02-12 21:52:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154133-20160212165625.patch</filename>
            <type>text/plain</type>
            <size>24891</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ZmExNjA1Y2QyM2M2
MjMyMWEzZjIzYjBhOWRlNzRhMWVjYWZhYy4uOTQ1ZWY4Njc5ODZjNWViMTUzZjRmM2UyZDY5YThj
ZTJjZjZiMjE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDE2LTAyLTEyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmaW5lIFNpbXVsYXRl
ZE1vdXNlRXZlbnQgdG8gc3VwcG9ydCBFdmVudC5pc1RydXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEzMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjQ2MTYyNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBleHRyYWN0cyBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gY3JlYXRlL2Rp
c3BhdGNoIFNpbXVsYXRlZE1vdXNlRXZlbnQgZnJvbSBNb3VzZUV2ZW50LmgvY3BwCisgICAgICAg
IGFuZCBFdmVudERpc3BhdGNoZXIuaC9jcHAsIGFuZCBwcm9kdWNlcyBTaW11bGF0ZUNsaWNrLmgv
Y3BwIHdoaWNoIHdpbGwgaGFuZGxlIHNpbXVsYXRlZCBjbGljayBzb2xlbHkuCisgICAgICAgIEFm
dGVyIHRoYXQsIHdlIGhpZGUgdGhlIFNpbXVsYXRlZE1vdXNlRXZlbnQgYW5kIG9ubHkgZXhwb3Nl
IHNpbXVsYXRlQ2xpY2sgdG8gYmUgY2FsbGVkLiBUaGUgcmVhc29uIGlzCisgICAgICAgIHRoYXQg
d2UgYm90aCB3YW50IHRvIHRlbGwgd2hldGhlciB0aGUgY2FsbCBzaXRlcyBhcmUgZnJvbSB1c2Vy
IGFnZW50L2JpbmRpbmdzIGFuZCBrZWVwIHRoZQorICAgICAgICBTaW11bGF0ZWRNb3VzZUV2ZW50
IGludGFjdC4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIHNlcGFyYXRlIEVsZW1lbnQ6OmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2sgaW50byB0d286IG9uZSBmb3IgdGhlIHVzZXIgYWdlbnQsIGFu
ZCBhbm90aGVyCisgICAgICAgIGZvciB0aGUgYmluZGluZ3MuIFRoZXJlZm9yZSwgSFRNTEVsZW1l
bnQuY2xpY2sgd2lsbCBiZSB0cmVhdGVkIGFzIHVudHJ1c3RlZC4KKworICAgICAgICBTb21lIG9m
IHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggcmVmZXJyZWQgQmxpbmsgcjIwMDQwMToKKyAgICAg
ICAgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMjg1NzkzMDA0CisKKyAgICAgICAg
TW9kaWZpZWQgdGVzdDoKKyAgICAgICAgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFzdC9l
dmVudHMvZXZlbnQtdHJ1c3RlZC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrRm9yQmluZGluZ3MpOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2spOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBkb20v
TW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50Ojpj
cmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6
flNpbXVsYXRlZE1vdXNlRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxh
dGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vU2ltdWxhdGVkQ2xpY2suY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNpbXVsYXRlQ2xpY2tJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpzaW11bGF0ZUNsaWNrKToKKyAgICAgICAgKiBkb20vU2ltdWxhdGVkQ2xpY2suaDog
QWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRWxlbWVudDo6Y2xpY2spOgorCisyMDE2LTAyLTEyICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViS2l0IHNob3VsZCBleHBvc2UgdGhlIERPTSA0
IEV2ZW50LmlzVHJ1c3RlZCBwcm9wZXJ0eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjEKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNTU4NDk0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGFhYzFlZmFmYTQ1ODFjMGEyMGU2ZDAyZGFlODJhNzI2NGUzZjY4OTQuLjhmZjRjMmJm
ODc4ODE3OGZhZGQ3ZTUyNzM1ZDJlYzEyODkwMGU1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMTAsNiArMjMxMCw4IEBA
CiAJCTUzRUY3NjZDMTY1MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkg
R2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNF
Rjc2NkExNjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTU1MEEw
QkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTcyQTdGMjExQzZF
NTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxh
dGVkQ2xpY2suaCAqLzsgfTsKKwkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRl
ZENsaWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJ
CTU4MDM3MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkg
LyogQ2xpcFJlY3QuY3BwICovOyB9OwogCQk1ODAzNzE2MjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xp
cFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4
MDM3MTYwMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU4MDM3MTY0MUE2NkYxRDMwMEJBRjUxOSAv
KiBMYXllckZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1ODAzNzE2MzFBNjZGMUQzMDBCQUY1MTkgLyogTGF5ZXJGcmFnbWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05ODQzLDYgKzk4
NDUsOCBAQAogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBR
dWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNs
aWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0
OSAvKiBTaW11bGF0ZWRDbGljay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aW11bGF0ZWRDbGljay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzJBN0YyMjFD
NkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpcFJlY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1ODAzNzE2MDFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFJlY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTgwMzcxNjMxQTY2RjFEMzAwQkFGNTE5IC8qIExheWVyRnJh
Z21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJGcmFnbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQzNDAsNiArMjQzNDQsOCBAQAogCQkJ
CUE2RDE2OTYxMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAqLywKIAkJCQlBNkQx
Njk2MzEzNDZCNEMxMDAwRUI3NzAgLyogU2hhZG93Um9vdC5oICovLAogCQkJCTlCMTlCNjdFMUI5
NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLywKKwkJCQk1NzJBN0YyMDFDNkU1NzE5
MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLywKKwkJCQk1NzJBN0YyMjFDNkU1QTY2MDA5
QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovLAogCQkJCTMxNzQxQUFCMTY2MzVFNDUwMDhB
NUI3RSAvKiBTaW11bGF0ZWRDbGlja09wdGlvbnMuaCAqLywKIAkJCQk5QjUzMkVBMTFCQTkyODU3
MDAzOEE4MjcgLyogU2xvdEFzc2lnbm1lbnQuY3BwICovLAogCQkJCTlCNTMyRUEyMUJBOTI4NTcw
MDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oICovLApAQCAtMjgwNDQsNiArMjgwNTAsNyBAQAog
CQkJCTE5N0IxODBDMTUwNjM1MzIwMEU0QURBOCAvKiBTVkdSZW5kZXJpbmdDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0FBMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUmVuZGVyaW5n
SW50ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzQ3OTBFODM2NkUyMDBFN0Y5NzUgLyog
U1ZHUmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MkE3RjIxMUM2RTU3MTkwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjc0N0IwRTgz
NjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVmcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDM2NzA4RjIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1JlbmRlclN1cHBvcnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQzNjcwOEY0MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJUcmVlQXNUZXh0
LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNDE1LDYgKzMxNDIyLDcgQEAKIAkJCQk3RThGQURDNDE5
OUE5NUIxMDA3MTQ5NjggLyogU3VicmVzb3VyY2VMb2FkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUUxRkY4RjVGMTgwNzQ0MjEwMDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTNCMkQ4MTgwRjk5MjBFRTAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNp
bXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NzU1OEM1MTNCNEE1N0QwMEY0
OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjJDMTIxN0MxMUFCOUU3NzAwM0M0NjJDIC8qIFN1c3BlbmRhYmxlVGltZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5NzMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDQwODhkODRkMGUy
Zjk4ZTNiYjVmNWZlN2IzMzJkYTA1YzMwMzQ1ZjcuLjdmNmUzODk5YjMxMTE5YWRiZGZkMWE4YmY0
NDk5YzQzMTRjZDFlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAK
ICNpbmNsdWRlICJTY3JvbGxMYXRjaGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVy
eS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2suaCIK
ICNpbmNsdWRlICJTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgiCiAjaW5jbHVkZSAiU3R5bGVQ
cm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgpAQCAtMzEyLDcgKzMxMywx
MiBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBwbGF0Zm9ybUV2ZW50KQogCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoU2ltdWxhdGVk
Q2xpY2soRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2ZW50T3B0
aW9ucyBldmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRp
b25zKQogewotICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayh0aGlz
LCB1bmRlcmx5aW5nRXZlbnQsIGV2ZW50T3B0aW9ucywgdmlzdWFsT3B0aW9ucyk7CisgICAgc2lt
dWxhdGVDbGljaygqdGhpcywgdW5kZXJseWluZ0V2ZW50LCBldmVudE9wdGlvbnMsIHZpc3VhbE9w
dGlvbnMsIFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zOjpGcm9tVXNlckFnZW50KTsKK30K
Kwordm9pZCBFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrRm9yQmluZGluZ3MoRXZlbnQq
IHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2ZW50T3B0aW9ucyBldmVudE9w
dGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRpb25zKQoreworICAg
IHNpbXVsYXRlQ2xpY2soKnRoaXMsIHVuZGVybHlpbmdFdmVudCwgZXZlbnRPcHRpb25zLCB2aXN1
YWxPcHRpb25zLCBTaW11bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9uczo6RnJvbUJpbmRpbmdzKTsK
IH0KIAogUmVmPE5vZGU+IEVsZW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJn
ZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
NjdiNjNlYWYwZjZkMTM0NzE5NDQ0NDgzMzlhYThlOTc2MjY3ZDE5MS4uZTE5M2Q3MThiOTY2Y2E4
ZDllNzYzZjRlMWQ0OTAzNjM2NDk0OWRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00NTksNiAr
NDU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgZGlzcGF0Y2hXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpOwogICAgIGJvb2wgZGlzcGF0Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQmKTsKICAgICB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soRXZlbnQq
IHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2ZW50T3B0aW9ucyA9IFNlbmRO
b0V2ZW50cywgU2ltdWxhdGVkQ2xpY2tWaXN1YWxPcHRpb25zID0gU2hvd1ByZXNzZWRMb29rKTsK
KyAgICB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2tGb3JCaW5kaW5ncyhFdmVudCogdW5kZXJs
eWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zID0gU2VuZE5vRXZlbnRz
LCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgPSBTaG93UHJlc3NlZExvb2spOwogICAgIHZv
aWQgZGlzcGF0Y2hGb2N1c0luRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50KTsKICAgICB2b2lkIGRpc3BhdGNoRm9j
dXNPdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQ+
JiYgbmV3Rm9jdXNlZEVsZW1lbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZl
bnQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggM2YxMGZkOGU4YWU3OGUx
NzVjZTdjMDQ3ZTkzNDNjYzNlZDA0MDY1MC4uMDEzOGY0NDA2MGY0MzE1YmJmODdmYTZjZTQzMmZl
NDY2YjAxNjI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTEy
NSwzMSArMTI1LDYgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2NvcGVkRXZlbnQo
Tm9kZSYgbm9kZSwgRXZlbnQmIGV2ZW50KQogICAgIFNjb3BlZEV2ZW50UXVldWU6OnNpbmdsZXRv
bigpLmVucXVldWVFdmVudChldmVudCk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaFNpbXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiB1bmRlcmx5aW5nRXZl
bnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgbW91c2VFdmVudE9wdGlvbnMsIFNp
bXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRpb25zKQotewotICAgIGlmIChlbGVt
ZW50LT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8RWxlbWVudCo+PiBlbGVtZW50c0Rpc3BhdGNoaW5n
U2ltdWxhdGVkQ2xpY2tzOwotICAgIGlmICghZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENs
aWNrcy5nZXQoKS5hZGQoZWxlbWVudCkuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKG1vdXNlRXZlbnRPcHRpb25zID09IFNlbmRNb3VzZU92ZXJVcERvd25FdmVudHMpCi0g
ICAgICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0
VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsKLQotICAgIGlmIChtb3VzZUV2ZW50
T3B0aW9ucyAhPSBTZW5kTm9FdmVudHMpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwg
U2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCwg
ZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1l
bnQpKTsKLSAgICBlbGVtZW50LT5zZXRBY3RpdmUodHJ1ZSwgdmlzdWFsT3B0aW9ucyA9PSBTaG93
UHJlc3NlZExvb2spOwotICAgIGlmIChtb3VzZUV2ZW50T3B0aW9ucyAhPSBTZW5kTm9FdmVudHMp
Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVs
dFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7Ci0gICAgZWxlbWVudC0+c2V0QWN0
aXZlKGZhbHNlKTsKLQotICAgIC8vIGFsd2F5cyBzZW5kIGNsaWNrCi0gICAgZGlzcGF0Y2hFdmVu
dChlbGVtZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50
LCBlbGVtZW50KSk7Ci0KLSAgICBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmdl
dCgpLnJlbW92ZShlbGVtZW50KTsKLX0KLQogc3RhdGljIHZvaWQgY2FsbERlZmF1bHRFdmVudEhh
bmRsZXJzSW5UaGVCdWJibGluZ09yZGVyKEV2ZW50JiBldmVudCwgY29uc3QgRXZlbnRQYXRoJiBw
YXRoKQogewogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3Bh
dGNoZXIuaAppbmRleCBiYTQzZWVkYmU0OTI1NDVjNjNiNTBlNDRmYjZiOWFmNjcxNTI3ZmViLi42
NTRkOGY4Y2I3NzkwZTBlYWE0MWZjMmEwNzdiYmE1MTU4Y2ZjNTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVzcGFjZSBFdmVudERpc3Bh
dGNoZXIgewogCiBib29sIGRpc3BhdGNoRXZlbnQoTm9kZSosIEV2ZW50Jik7CiB2b2lkIGRpc3Bh
dGNoU2NvcGVkRXZlbnQoTm9kZSYsIEV2ZW50Jik7Ci12b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xp
Y2soRWxlbWVudCosIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VF
dmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyk7CiAKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCmluZGV4IDdhMzI5YjZjZjM1YjczZDQxNjYyNGEwYWJiMjM2NzUz
MTVjMmYzYTMuLjk5NDRmYTYwZDNjNDljZTk0NWViYmY2NzkyMWE1ZTQ5NzYzYjI0NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5jcHAKQEAgLTI1MSwzOCArMjUxLDQgQEAgUmVmPEV2ZW50PiBN
b3VzZUV2ZW50OjpjbG9uZUZvcihIVE1MSUZyYW1lRWxlbWVudCogaWZyYW1lKSBjb25zdAogICAg
IHJldHVybiBXVEZNb3ZlKGNsb25lZE1vdXNlRXZlbnQpOwogfQogCi1SZWY8U2ltdWxhdGVkTW91
c2VFdmVudD4gU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBBYnN0cmFjdFZpZXcqIHZpZXcsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlp
bmdFdmVudCwgRWxlbWVudCogdGFyZ2V0KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNp
bXVsYXRlZE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB2aWV3LCB1bmRlcmx5aW5nRXZlbnQsIHRhcmdl
dCkpOwotfQotCi1TaW11bGF0ZWRNb3VzZUV2ZW50Ojp+U2ltdWxhdGVkTW91c2VFdmVudCgpCi17
Ci19Ci0KLVNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyogdmlldywgUGFzc1JlZlB0cjxFdmVu
dD4gdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50KiB0YXJnZXQpCi0gICAgOiBNb3VzZUV2ZW50KGV2
ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50
aW1lU3RhbXAoKSA6IGN1cnJlbnRUaW1lKCksIHZpZXcsIDAsIDAsIDAsIDAsIDAsCi0jaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKLSAgICAgICAgICAgICAgICAgMCwgMCwKLSNlbmRpZgotICAgICAg
ICAgICAgICAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgMCwgMCwgMCwgdHJ1ZSkK
LXsKLSAgICBpZiAoVUlFdmVudFdpdGhLZXlTdGF0ZSoga2V5U3RhdGVFdmVudCA9IGZpbmRFdmVu
dFdpdGhLZXlTdGF0ZSh1bmRlcmx5aW5nRXZlbnQuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY3RybEtl
eSA9IGtleVN0YXRlRXZlbnQtPmN0cmxLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSBrZXlTdGF0
ZUV2ZW50LT5hbHRLZXkoKTsKLSAgICAgICAgbV9zaGlmdEtleSA9IGtleVN0YXRlRXZlbnQtPnNo
aWZ0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IGtleVN0YXRlRXZlbnQtPm1ldGFLZXkoKTsK
LSAgICB9Ci0gICAgc2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudC5nZXQoKSk7Ci0K
LSAgICBpZiAoaXM8TW91c2VFdmVudD4odGhpcy0+dW5kZXJseWluZ0V2ZW50KCkpKSB7Ci0gICAg
ICAgIE1vdXNlRXZlbnQmIG1vdXNlRXZlbnQgPSBkb3duY2FzdDxNb3VzZUV2ZW50PigqdGhpcy0+
dW5kZXJseWluZ0V2ZW50KCkpOwotICAgICAgICBtX3NjcmVlbkxvY2F0aW9uID0gbW91c2VFdmVu
dC5zY3JlZW5Mb2NhdGlvbigpOwotICAgICAgICBpbml0Q29vcmRpbmF0ZXMobW91c2VFdmVudC5j
bGllbnRMb2NhdGlvbigpKTsKLSAgICB9IGVsc2UgaWYgKHRhcmdldCkgewotICAgICAgICBtX3Nj
cmVlbkxvY2F0aW9uID0gdGFyZ2V0LT5zY3JlZW5SZWN0KCkuY2VudGVyKCk7Ci0gICAgICAgIGlu
aXRDb29yZGluYXRlcyhMYXlvdXRQb2ludCh0YXJnZXQtPmNsaWVudFJlY3QoKS5jZW50ZXIoKSkp
OwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmgKaW5kZXggMDI1NzExZWFhYjRhMmUwM2EwN2UyM2Q5YjdjNzUzY2E5Y2U5N2ViOC4uYTYzMzFh
MjZmNjU5NTM2Y2UyNjI3ZWQ4NmJhOTJlNWFhZGFmYWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVu
dC5oCkBAIC0zMiw5ICszMiw5IEBAIGNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIFBsYXRmb3Jt
TW91c2VFdmVudDsKIAogc3RydWN0IE1vdXNlRXZlbnRJbml0IDogcHVibGljIE1vdXNlUmVsYXRl
ZEV2ZW50SW5pdCB7Ci0gICAgaW50IGNsaWVudFggezB9OwotICAgIGludCBjbGllbnRZIHswfTsK
LSAgICB1bnNpZ25lZCBzaG9ydCBidXR0b24gezB9OworICAgIGludCBjbGllbnRYIHsgMCB9Owor
ICAgIGludCBjbGllbnRZIHsgMCB9OworICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiB7IDAgfTsK
ICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQ7CiB9OwogCkBAIC0xMjksMTUg
KzEyOSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gbV9kYXRhVHJhbnNm
ZXI7CiB9OwogCi1jbGFzcyBTaW11bGF0ZWRNb3VzZUV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNl
RXZlbnQgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBBYnN0cmFjdFZpZXcqLCBQYXNzUmVm
UHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCk7Ci0gICAgdmlydHVh
bCB+U2ltdWxhdGVkTW91c2VFdmVudCgpOwotCi1wcml2YXRlOgotICAgIFNpbXVsYXRlZE1vdXNl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyosIFBhc3NS
ZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCogdGFyZ2V0KTsKLX07Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FVkVOVChNb3Vz
ZUV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI4
NGM4NzFhMmQ4NWNmZWVjMzVlNjFlODM5Zjk1NTg0ZjMzZWQ2YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKQEAgLTAsMCArMSwxMTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2suaCIKKworI2luY2x1ZGUgIkRhdGFU
cmFuc2Zlci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudERpc3BhdGNo
ZXIuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiB2aWV3LCBSZWZQdHI8
RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdmll
dywgV1RGTW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5TaW11bGF0ZWRNb3VzZUV2ZW50KCkKKyAgICB7CisgICAgfQorICAgIAorcHJpdmF0ZToK
KyAgICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBB
YnN0cmFjdFZpZXcqIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1l
bnQmIHRhcmdldCkKKyAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwg
dW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3RhbXAoKSA6IGN1cnJlbnRU
aW1lKCksIHZpZXcsIDAsIDAsIDAsIDAsIDAsCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCAwLCAwLCAwLCB0cnVlKQorICAgIHsKKyAgICAg
ICAgaWYgKFVJRXZlbnRXaXRoS2V5U3RhdGUqIGtleVN0YXRlRXZlbnQgPSBmaW5kRXZlbnRXaXRo
S2V5U3RhdGUodW5kZXJseWluZ0V2ZW50LmdldCgpKSkgeworICAgICAgICAgICAgbV9jdHJsS2V5
ID0ga2V5U3RhdGVFdmVudC0+Y3RybEtleSgpOworICAgICAgICAgICAgbV9hbHRLZXkgPSBrZXlT
dGF0ZUV2ZW50LT5hbHRLZXkoKTsKKyAgICAgICAgICAgIG1fc2hpZnRLZXkgPSBrZXlTdGF0ZUV2
ZW50LT5zaGlmdEtleSgpOworICAgICAgICAgICAgbV9tZXRhS2V5ID0ga2V5U3RhdGVFdmVudC0+
bWV0YUtleSgpOworICAgICAgICB9CisgICAgICAgIHNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5
aW5nRXZlbnQuZ2V0KCkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KHRo
aXMtPnVuZGVybHlpbmdFdmVudCgpKSkgeworICAgICAgICAgICAgTW91c2VFdmVudCYgbW91c2VF
dmVudCA9IGRvd25jYXN0PE1vdXNlRXZlbnQ+KCp0aGlzLT51bmRlcmx5aW5nRXZlbnQoKSk7Cisg
ICAgICAgICAgICBtX3NjcmVlbkxvY2F0aW9uID0gbW91c2VFdmVudC5zY3JlZW5Mb2NhdGlvbigp
OworICAgICAgICAgICAgaW5pdENvb3JkaW5hdGVzKG1vdXNlRXZlbnQuY2xpZW50TG9jYXRpb24o
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3NjcmVlbkxvY2F0aW9uID0gdGFy
Z2V0LnNjcmVlblJlY3QoKS5jZW50ZXIoKTsKKyAgICAgICAgICAgIGluaXRDb29yZGluYXRlcyhM
YXlvdXRQb2ludCh0YXJnZXQuY2xpZW50UmVjdCgpLmNlbnRlcigpKSk7CisgICAgICAgIH0KKyAg
ICB9CisKK307CisKK3N0YXRpYyB2b2lkIHNpbXVsYXRlQ2xpY2tJbnRlcm5hbChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgZWxlbWVudCwgRXZlbnQqIHVuZGVybHlpbmdF
dmVudCwgU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9wdGlvbnMgY3JlYXRpb25PcHRpb25zKQorewor
ICAgIGF1dG8gZXZlbnQgPSBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBl
bGVtZW50LmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50
KTsKKyAgICBpZiAoY3JlYXRpb25PcHRpb25zID09IFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRp
b25zOjpGcm9tQmluZGluZ3MpCisgICAgICAgIGV2ZW50LmdldCgpLnNldFVudHJ1c3RlZCgpOwor
ICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCgmZWxlbWVudCwgZXZlbnQuZ2V0KCkp
OworfQorCit2b2lkIHNpbXVsYXRlQ2xpY2soRWxlbWVudCYgZWxlbWVudCwgRXZlbnQqIHVuZGVy
bHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2ZW50T3B0aW9ucyBtb3VzZUV2ZW50T3B0
aW9ucywgU2ltdWxhdGVkQ2xpY2tWaXN1YWxPcHRpb25zIHZpc3VhbE9wdGlvbnMsIFNpbXVsYXRl
ZENsaWNrQ3JlYXRpb25PcHRpb25zIGNyZWF0aW9uT3B0aW9ucykKK3sKKyAgICBpZiAoZWxlbWVu
dC5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGlu
Z1NpbXVsYXRlZENsaWNrczsKKyAgICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRD
bGlja3MuZ2V0KCkuYWRkKCZlbGVtZW50KS5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgaWYgKG1vdXNlRXZlbnRPcHRpb25zID09IFNlbmRNb3VzZU92ZXJVcERvd25FdmVu
dHMpCisgICAgICAgIHNpbXVsYXRlQ2xpY2tJbnRlcm5hbChldmVudE5hbWVzKCkubW91c2VvdmVy
RXZlbnQsIGVsZW1lbnQsIHVuZGVybHlpbmdFdmVudCwgY3JlYXRpb25PcHRpb25zKTsKKyAgICAK
KyAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRzKQorICAgICAgICBzaW11
bGF0ZUNsaWNrSW50ZXJuYWwoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50LCBlbGVtZW50LCB1
bmRlcmx5aW5nRXZlbnQsIGNyZWF0aW9uT3B0aW9ucyk7CisgICAgZWxlbWVudC5zZXRBY3RpdmUo
dHJ1ZSwgdmlzdWFsT3B0aW9ucyA9PSBTaG93UHJlc3NlZExvb2spOworICAgIGlmIChtb3VzZUV2
ZW50T3B0aW9ucyAhPSBTZW5kTm9FdmVudHMpCisgICAgICAgIHNpbXVsYXRlQ2xpY2tJbnRlcm5h
bChldmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBlbGVtZW50LCB1bmRlcmx5aW5nRXZlbnQsIGNy
ZWF0aW9uT3B0aW9ucyk7CisgICAgZWxlbWVudC5zZXRBY3RpdmUoZmFsc2UpOworICAgIAorICAg
IC8vIGFsd2F5cyBzZW5kIGNsaWNrCisgICAgc2ltdWxhdGVDbGlja0ludGVybmFsKGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50LCBlbGVtZW50LCB1bmRlcmx5aW5nRXZlbnQsIGNyZWF0aW9uT3B0aW9u
cyk7CisKKyAgICBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmdldCgpLnJlbW92
ZSgmZWxlbWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXVsYXRlZENsaWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkZjA5MTYyZmY5MmVlOGQzM2RjYjA1NmYyYjE5
NTExMDczMjM4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0
ZWRDbGljay5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNpbXVsYXRlZENsaWNrX2gKKyNkZWZpbmUgU2ltdWxh
dGVkQ2xpY2tfaAorCisjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50OworCitlbnVtIFNp
bXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zIHsKKyAgICBGcm9tQmluZGluZ3MsCisgICAgRnJv
bVVzZXJBZ2VudAorfTsKKwordm9pZCBzaW11bGF0ZUNsaWNrKEVsZW1lbnQmLCBFdmVudCogdW5k
ZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRD
bGlja1Zpc3VhbE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zKTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLyogU2ltdWxhdGVkQ2xpY2tfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBjZTM1YTBmYTBjYTQ4ZjEzZDZiNjgyN2I1
OWI4NzlmNjZiZjE0NGU0Li42NmU2NTQ3N2VjNzA2Y2IxNTdhYmY5NjM5NWNiNzVkMTU2NWIxZGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtODA5LDcgKzgwOSw3IEBAIHZv
aWQgSFRNTEVsZW1lbnQ6OnNldFNwZWxsY2hlY2soYm9vbCBlbmFibGUpCiAKIHZvaWQgSFRNTEVs
ZW1lbnQ6OmNsaWNrKCkKIHsKLSAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKG51bGxwdHIsIFNl
bmROb0V2ZW50cywgRG9Ob3RTaG93UHJlc3NlZExvb2spOworICAgIGRpc3BhdGNoU2ltdWxhdGVk
Q2xpY2tGb3JCaW5kaW5ncyhudWxscHRyLCBTZW5kTm9FdmVudHMsIERvTm90U2hvd1ByZXNzZWRM
b29rKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1v
dXNlRXZlbnRzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDYzNWRmOWJjN2U3MDA0YzZjNGY4ZDBjNDhmZDQ3YjE4NmRmZmY4
NGIuLmRiZmRiZjI4Y2E1YTM4ZjM0M2ViODk3ZWVhMmMwOTMwNjFiYzRjMDMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNiBAQAogMjAxNi0wMi0xMiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgogCisgICAgICAgIFJlZmluZSBTaW11bGF0ZWRNb3VzZUV2ZW50IHRvIHN1cHBvcnQgRXZlbnQu
aXNUcnVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTQxMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NjE2MjQ2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogaW1wb3J0ZWQvYmxpbmsvZmFzdC9l
dmVudHMvZXZlbnQtdHJ1c3RlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW1wb3J0ZWQvYmxp
bmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC5odG1sOgorCisyMDE2LTAyLTEyICBKaWV3ZW4g
VGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViS2l0IHNob3VsZCBleHBv
c2UgdGhlIERPTSA0IEV2ZW50LmlzVHJ1c3RlZCBwcm9wZXJ0eQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjEKICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIyNTU4NDk0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFz
dC9ldmVudHMvZXZlbnQtdHJ1c3RlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLWV4cGVjdGVkLnR4dAppbmRleCA2Zjc2
YzVjMDI4ODFmMDM5MTY0ZWFkZDQ0Mjg4NGI4MDc0NGU5NDk0Li40NzNmZTZmM2RmMThhZTczYjdm
MDRjNTUwYzM2MmE2ZGViZTYzNjlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9i
bGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLWV4cGVjdGVkLnR4
dApAQCAtOCw2ICs4LDcgQEAgUEFTUyBjcmVhdGVBbmRJbml0RXZlbnQoKS5pc1RydXN0ZWQgaXMg
ZmFsc2UKIFBBU1Mgb3JpZ2luYWxFdmVudC5pc1RydXN0ZWQgaXMgdHJ1ZQogUEFTUyByZWRpc3Bh
dGNoZWQgaXMgdHJ1ZQogUEFTUyBvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCBpcyBmYWxzZQorUEFT
UyBvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCBpcyBmYWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLmh0bWwKaW5kZXggYjFkMTQz
NDc1NTE5MjRkMmU0NzUxYWQyY2RlNDlkYmFkODk0NjAyOC4uN2RlY2EwZjE2Y2JjMjhlMDgwZDY4
MmNjY2YyOGY5OTdlZTc1ZWYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvYmxp
bmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL2JsaW5rL2Zhc3QvZXZlbnRzL2V2ZW50LXRydXN0ZWQuaHRtbApAQCAtMzYsNiArMzYsMTIg
QEAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChv
cmlnaW5hbEV2ZW50KTsKICAgICBzaG91bGRCZVRydWUoInJlZGlzcGF0Y2hlZCIpOwogICAgIHNo
b3VsZEJlRmFsc2UoIm9yaWdpbmFsRXZlbnQuaXNUcnVzdGVkIik7CisKKyAgICBvcmlnaW5hbEV2
ZW50ID0gbnVsbDsKKyAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVk
aXNwYXRjaCk7CisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9yaWdpbmFs
RGlzcGF0Y2gpOworICAgIGVsZW1lbnQuY2xpY2soKTsKKyAgICBzaG91bGRCZUZhbHNlKCJvcmln
aW5hbEV2ZW50LmlzVHJ1c3RlZCIpOwogfQogCiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271269</attachid>
            <date>2016-02-12 21:52:06 -0800</date>
            <delta_ts>2016-02-14 14:23:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154133-20160212215144.patch</filename>
            <type>text/plain</type>
            <size>25374</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ZmExNjA1Y2QyM2M2
MjMyMWEzZjIzYjBhOWRlNzRhMWVjYWZhYy4uMzNjNjM4YzA4ZjdkNTcxMWU1NDhkNDU0MTc5MDc2
MTlhZjU4MWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDE2LTAyLTEyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmaW5lIFNpbXVsYXRl
ZE1vdXNlRXZlbnQgdG8gc3VwcG9ydCBFdmVudC5pc1RydXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEzMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjQ2MTYyNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBleHRyYWN0cyBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gY3JlYXRlL2Rp
c3BhdGNoIFNpbXVsYXRlZE1vdXNlRXZlbnQgZnJvbSBNb3VzZUV2ZW50LmgvY3BwCisgICAgICAg
IGFuZCBFdmVudERpc3BhdGNoZXIuaC9jcHAsIGFuZCBwcm9kdWNlcyBTaW11bGF0ZUNsaWNrLmgv
Y3BwIHdoaWNoIHdpbGwgaGFuZGxlIHNpbXVsYXRlZCBjbGljayBzb2xlbHkuCisgICAgICAgIEFm
dGVyIHRoYXQsIHdlIGhpZGUgdGhlIFNpbXVsYXRlZE1vdXNlRXZlbnQgYW5kIG9ubHkgZXhwb3Nl
IHNpbXVsYXRlQ2xpY2sgdG8gYmUgY2FsbGVkLiBUaGUgcmVhc29uIGlzCisgICAgICAgIHRoYXQg
d2UgYm90aCB3YW50IHRvIHRlbGwgd2hldGhlciB0aGUgY2FsbCBzaXRlcyBhcmUgZnJvbSB1c2Vy
IGFnZW50L2JpbmRpbmdzIGFuZCBrZWVwIHRoZQorICAgICAgICBTaW11bGF0ZWRNb3VzZUV2ZW50
IGludGFjdC4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIHNlcGFyYXRlIEVsZW1lbnQ6OmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2sgaW50byB0d286IG9uZSBmb3IgdGhlIHVzZXIgYWdlbnQsIGFu
ZCBhbm90aGVyCisgICAgICAgIGZvciB0aGUgYmluZGluZ3MuIFRoZXJlZm9yZSwgSFRNTEVsZW1l
bnQuY2xpY2sgd2lsbCBiZSB0cmVhdGVkIGFzIHVudHJ1c3RlZC4KKworICAgICAgICBTb21lIG9m
IHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggcmVmZXJyZWQgQmxpbmsgcjIwMDQwMToKKyAgICAg
ICAgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMjg1NzkzMDA0CisKKyAgICAgICAg
TW9kaWZpZWQgdGVzdDoKKyAgICAgICAgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFzdC9l
dmVudHMvZXZlbnQtdHJ1c3RlZC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hTaW11bGF0
ZWRDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENs
aWNrRm9yQmluZGluZ3MpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2spOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FdmVudERp
c3BhdGNoZXIuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6flNpbXVsYXRlZE1vdXNlRXZlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VF
dmVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vU2ltdWxhdGVkQ2xpY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNpbXVsYXRl
Q2xpY2tJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpzaW11bGF0ZUNsaWNrKToKKyAgICAg
ICAgKiBkb20vU2ltdWxhdGVkQ2xpY2suaDogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y2xpY2spOgorCisyMDE2
LTAyLTEyICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKICAgICAgICAgV2Vi
S2l0IHNob3VsZCBleHBvc2UgdGhlIERPTSA0IEV2ZW50LmlzVHJ1c3RlZCBwcm9wZXJ0eQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjEKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzIyNTU4NDk0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmZGYy
NGRjNDYzOTc0NDNiYzc4ZDc5NmI3Y2YxMzY5M2ZjMTJhNzg0Li42NDQ3YmM4MmFlY2I2MzY1N2Yz
ZTczMDZiMzQzNWRhYWI3YTgyMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUxMCw2ICsx
NTEwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9TZWN1cml0eU9yaWdpblBvbGlj
eS5jcHAKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hhZG93Um9vdC5jcHAK
KyAgICBkb20vU2ltdWxhdGVkQ2xpY2suY3BwCiAgICAgZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAog
ICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhYWMxZWZhZmE0NTgxYzBhMjBlNmQwMmRhZTgyYTcyNjRlM2Y2ODk0Li44ZmY0YzJiZjg3
ODgxNzhmYWRkN2U1MjczNWQyZWMxMjg5MDBlNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzEwLDYgKzIzMTAsOCBAQAog
CQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3
NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJD
OTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyog
UXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3MkE3RjIxMUM2RTU3
MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRl
ZENsaWNrLmggKi87IH07CisJCTU3MkE3RjIzMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRD
bGljay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovOyB9OwogCQk1
ODAzNzE2MTFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgwMzcxNUYxQTY2RjAwQTAwQkFGNTE5IC8q
IENsaXBSZWN0LmNwcCAqLzsgfTsKIAkJNTgwMzcxNjIxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBS
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAz
NzE2MDFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1ODAzNzE2NDFBNjZGMUQzMDBCQUY1MTkgLyog
TGF5ZXJGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTgwMzcxNjMxQTY2RjFEMzAwQkFGNTE5IC8qIExheWVyRnJhZ21lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTg0Myw2ICs5ODQ1
LDggQEAKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVh
bGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBR
dWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQk1NUQ0MDhGNzFBN0M2MzE4MDBDNzg0NTAgLyogU1ZHSW1hZ2VDbGll
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2xpZW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkg
LyogU2ltdWxhdGVkQ2xpY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lt
dWxhdGVkQ2xpY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcyQTdGMjIxQzZF
NUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNpbXVsYXRlZENsaWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTgwMzcxNUYxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBSZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTgwMzcxNjAxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBSZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU4MDM3MTYzMUE2NkYxRDMwMEJBRjUxOSAvKiBMYXllckZyYWdt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVyRnJhZ21lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MzQwLDYgKzI0MzQ0LDggQEAKIAkJCQlB
NkQxNjk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgKi8sCiAJCQkJQTZEMTY5
NjMxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywKIAkJCQk5QjE5QjY3RTFCOTY0
RTUyMDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8sCisJCQkJNTcyQTdGMjAxQzZFNTcxOTAw
OUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi8sCisJCQkJNTcyQTdGMjIxQzZFNUE2NjAwOUM2
MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCAqLywKIAkJCQkzMTc0MUFBQjE2NjM1RTQ1MDA4QTVC
N0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggKi8sCiAJCQkJOUI1MzJFQTExQkE5Mjg1NzAw
MzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmNwcCAqLywKIAkJCQk5QjUzMkVBMjFCQTkyODU3MDAz
OEE4MjcgLyogU2xvdEFzc2lnbm1lbnQuaCAqLywKQEAgLTI4MDQ0LDYgKzI4MDUwLDcgQEAKIAkJ
CQkxOTdCMTgwQzE1MDYzNTMyMDBFNEFEQTggLyogU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBQTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JlbmRlcmluZ0lu
dGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjc0NzkwRTgzNjZFMjAwRTdGOTc1IC8qIFNW
R1JlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzJBN0YyMTFDNkU1NzE5MDA5QzYx
NDkgLyogU2ltdWxhdGVkQ2xpY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3NDdCMEU4MzY2
RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQz
NjcwOEYyMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJTdXBwb3J0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzY3MDhGNDEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVyVHJlZUFzVGV4dC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTQxNSw2ICszMTQyMiw3IEBACiAJCQkJN0U4RkFEQzQxOTlB
OTVCMTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywK
IAkJCQlFMUZGOEY1RjE4MDc0NDIxMDAxMzI2NzQgLyogU3VidGxlQ3J5cHRvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzQjJEODE4MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlv
bi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTU3MkE3RjIzMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11
bGF0ZWRDbGljay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODc1NThDNTEzQjRBNTdEMDBGNDkz
MDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTYyQzEyMTdDMTFBQjlFNzcwMDNDNDYyQyAvKiBTdXNwZW5kYWJsZVRpbWVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyMjI3OTczMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0MDg4ZDg0ZDBlMmY5
OGUzYmI1ZjVmZTdiMzMyZGEwNWMzMDM0NWY3Li43ZjZlMzg5OWIzMTExOWFkYmRmZDFhOGJmNDQ5
OWM0MzE0Y2QxZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAj
aW5jbHVkZSAiU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnku
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrLmgiCiAj
aW5jbHVkZSAiU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5oIgogI2luY2x1ZGUgIlN0eWxlUHJv
cGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKQEAgLTMxMiw3ICszMTMsMTIg
QEAgYm9vbCBFbGVtZW50OjpkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCYgcGxhdGZvcm1FdmVudCkKIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENs
aWNrKEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlv
bnMgZXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9u
cykKIHsKLSAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sodGhpcywg
dW5kZXJseWluZ0V2ZW50LCBldmVudE9wdGlvbnMsIHZpc3VhbE9wdGlvbnMpOworICAgIHNpbXVs
YXRlQ2xpY2soKnRoaXMsIHVuZGVybHlpbmdFdmVudCwgZXZlbnRPcHRpb25zLCB2aXN1YWxPcHRp
b25zLCBTaW11bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9uczo6RnJvbVVzZXJBZ2VudCk7Cit9CisK
K3ZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGlja0ZvckJpbmRpbmdzKEV2ZW50KiB1
bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgZXZlbnRPcHRp
b25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9ucykKK3sKKyAgICBz
aW11bGF0ZUNsaWNrKCp0aGlzLCB1bmRlcmx5aW5nRXZlbnQsIGV2ZW50T3B0aW9ucywgdmlzdWFs
T3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9wdGlvbnM6OkZyb21CaW5kaW5ncyk7CiB9
CiAKIFJlZjxOb2RlPiBFbGVtZW50OjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYgdGFyZ2V0
RG9jdW1lbnQsIENsb25pbmdPcGVyYXRpb24gdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDY3
YjYzZWFmMGY2ZDEzNDcxOTQ0NDQ4MzM5YWE4ZTk3NjI2N2QxOTEuLmUxOTNkNzE4Yjk2NmNhOGQ5
ZTc2M2Y0ZTFkNDkwMzYzNjQ5NDlkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDU5LDYgKzQ1
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGRpc3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKTsKICAgICBib29sIGRpc3BhdGNoS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEV2ZW50KiB1
bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgPSBTZW5kTm9F
dmVudHMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyA9IFNob3dQcmVzc2VkTG9vayk7Cisg
ICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrRm9yQmluZGluZ3MoRXZlbnQqIHVuZGVybHlp
bmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2ZW50T3B0aW9ucyA9IFNlbmROb0V2ZW50cywg
U2ltdWxhdGVkQ2xpY2tWaXN1YWxPcHRpb25zID0gU2hvd1ByZXNzZWRMb29rKTsKICAgICB2b2lk
IGRpc3BhdGNoRm9jdXNJbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCk7CiAgICAgdm9pZCBkaXNwYXRjaEZvY3Vz
T3V0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYm
IG5ld0ZvY3VzZWRFbGVtZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50
KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDNmMTBmZDhlOGFlNzhlMTc1
Y2U3YzA0N2U5MzQzY2MzZWQwNDA2NTAuLjAxMzhmNDQwNjBmNDMxNWJiZjg3ZmE2Y2U0MzJmZTQ2
NmIwMTYyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0xMjUs
MzEgKzEyNSw2IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNjb3BlZEV2ZW50KE5v
ZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICBTY29wZWRFdmVudFF1ZXVlOjpzaW5nbGV0b24o
KS5lbnF1ZXVlRXZlbnQoZXZlbnQpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hTaW11bGF0ZWRDbGljayhFbGVtZW50KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50
LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zIG1vdXNlRXZlbnRPcHRpb25zLCBTaW11
bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9ucykKLXsKLSAgICBpZiAoZWxlbWVu
dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGluZ1Np
bXVsYXRlZENsaWNrczsKLSAgICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlj
a3MuZ2V0KCkuYWRkKGVsZW1lbnQpLmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChtb3VzZUV2ZW50T3B0aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQotICAg
ICAgICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZp
ZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7Ci0KLSAgICBpZiAobW91c2VFdmVudE9w
dGlvbnMgIT0gU2VuZE5vRXZlbnRzKQotICAgICAgICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNp
bXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQsIGVs
ZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50
KSk7Ci0gICAgZWxlbWVudC0+c2V0QWN0aXZlKHRydWUsIHZpc3VhbE9wdGlvbnMgPT0gU2hvd1By
ZXNzZWRMb29rKTsKLSAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRzKQot
ICAgICAgICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBlbGVtZW50LT5kb2N1bWVudCgpLmRlZmF1bHRW
aWV3KCksIHVuZGVybHlpbmdFdmVudCwgZWxlbWVudCkpOwotICAgIGVsZW1lbnQtPnNldEFjdGl2
ZShmYWxzZSk7Ci0KLSAgICAvLyBhbHdheXMgc2VuZCBjbGljawotICAgIGRpc3BhdGNoRXZlbnQo
ZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50LCBlbGVtZW50LT5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHVuZGVybHlpbmdFdmVudCwg
ZWxlbWVudCkpOwotCi0gICAgZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcy5nZXQo
KS5yZW1vdmUoZWxlbWVudCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGNhbGxEZWZhdWx0RXZlbnRIYW5k
bGVyc0luVGhlQnViYmxpbmdPcmRlcihFdmVudCYgZXZlbnQsIGNvbnN0IEV2ZW50UGF0aCYgcGF0
aCkKIHsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRj
aGVyLmgKaW5kZXggYmE0M2VlZGJlNDkyNTQ1YzYzYjUwZTQ0ZmI2YjlhZjY3MTUyN2ZlYi4uNjU0
ZDhmOGNiNzc5MGUwZWFhNDFmYzJhMDc3YmJhNTE1OGNmYzUzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuaApAQCAtMzksNyArMzksNiBAQCBuYW1lc3BhY2UgRXZlbnREaXNwYXRj
aGVyIHsKIAogYm9vbCBkaXNwYXRjaEV2ZW50KE5vZGUqLCBFdmVudCYpOwogdm9pZCBkaXNwYXRj
aFNjb3BlZEV2ZW50KE5vZGUmLCBFdmVudCYpOwotdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNr
KEVsZW1lbnQqLCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlja01vdXNlRXZl
bnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMpOwogCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZUV2ZW50LmNwcAppbmRleCA3YTMyOWI2Y2YzNWI3M2Q0MTY2MjRhMGFiYjIzNjc1MzE1
YzJmM2EzLi45OTQ0ZmE2MGQzYzQ5Y2U5NDVlYmJmNjc5MjFhNWU0OTc2M2IyNDQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuY3BwCkBAIC0yNTEsMzggKzI1MSw0IEBAIFJlZjxFdmVudD4gTW91
c2VFdmVudDo6Y2xvbmVGb3IoSFRNTElGcmFtZUVsZW1lbnQqIGlmcmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gV1RGTW92ZShjbG9uZWRNb3VzZUV2ZW50KTsKIH0KIAotUmVmPFNpbXVsYXRlZE1vdXNl
RXZlbnQ+IFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiB2aWV3LCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5n
RXZlbnQsIEVsZW1lbnQqIHRhcmdldCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11
bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdmlldywgdW5kZXJseWluZ0V2ZW50LCB0YXJnZXQp
KTsKLX0KLQotU2ltdWxhdGVkTW91c2VFdmVudDo6flNpbXVsYXRlZE1vdXNlRXZlbnQoKQotewot
fQotCi1TaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBBYnN0cmFjdFZpZXcqIHZpZXcsIFBhc3NSZWZQdHI8RXZlbnQ+
IHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCogdGFyZ2V0KQotICAgIDogTW91c2VFdmVudChldmVu
dFR5cGUsIHRydWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVudC0+dGlt
ZVN0YW1wKCkgOiBjdXJyZW50VGltZSgpLCB2aWV3LCAwLCAwLCAwLCAwLCAwLAotI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCi0gICAgICAgICAgICAgICAgIDAsIDAsCi0jZW5kaWYKLSAgICAgICAg
ICAgICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIDAsIDAsIDAsIHRydWUpCi17
Ci0gICAgaWYgKFVJRXZlbnRXaXRoS2V5U3RhdGUqIGtleVN0YXRlRXZlbnQgPSBmaW5kRXZlbnRX
aXRoS2V5U3RhdGUodW5kZXJseWluZ0V2ZW50LmdldCgpKSkgewotICAgICAgICBtX2N0cmxLZXkg
PSBrZXlTdGF0ZUV2ZW50LT5jdHJsS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0ga2V5U3RhdGVF
dmVudC0+YWx0S2V5KCk7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSBrZXlTdGF0ZUV2ZW50LT5zaGlm
dEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSBrZXlTdGF0ZUV2ZW50LT5tZXRhS2V5KCk7Ci0g
ICAgfQotICAgIHNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQuZ2V0KCkpOwotCi0g
ICAgaWYgKGlzPE1vdXNlRXZlbnQ+KHRoaXMtPnVuZGVybHlpbmdFdmVudCgpKSkgewotICAgICAg
ICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNhc3Q8TW91c2VFdmVudD4oKnRoaXMtPnVu
ZGVybHlpbmdFdmVudCgpKTsKLSAgICAgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IG1vdXNlRXZlbnQu
c2NyZWVuTG9jYXRpb24oKTsKLSAgICAgICAgaW5pdENvb3JkaW5hdGVzKG1vdXNlRXZlbnQuY2xp
ZW50TG9jYXRpb24oKSk7Ci0gICAgfSBlbHNlIGlmICh0YXJnZXQpIHsKLSAgICAgICAgbV9zY3Jl
ZW5Mb2NhdGlvbiA9IHRhcmdldC0+c2NyZWVuUmVjdCgpLmNlbnRlcigpOwotICAgICAgICBpbml0
Q29vcmRpbmF0ZXMoTGF5b3V0UG9pbnQodGFyZ2V0LT5jbGllbnRSZWN0KCkuY2VudGVyKCkpKTsK
LSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5o
CmluZGV4IDAyNTcxMWVhYWI0YTJlMDNhMDdlMjNkOWI3Yzc1M2NhOWNlOTdlYjguLmE2MzMxYTI2
ZjY1OTUzNmNlMjYyN2VkODZiYTkyZTVhYWRhZmFmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQu
aApAQCAtMzIsOSArMzIsOSBAQCBjbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBQbGF0Zm9ybU1v
dXNlRXZlbnQ7CiAKIHN0cnVjdCBNb3VzZUV2ZW50SW5pdCA6IHB1YmxpYyBNb3VzZVJlbGF0ZWRF
dmVudEluaXQgewotICAgIGludCBjbGllbnRYIHswfTsKLSAgICBpbnQgY2xpZW50WSB7MH07Ci0g
ICAgdW5zaWduZWQgc2hvcnQgYnV0dG9uIHswfTsKKyAgICBpbnQgY2xpZW50WCB7IDAgfTsKKyAg
ICBpbnQgY2xpZW50WSB7IDAgfTsKKyAgICB1bnNpZ25lZCBzaG9ydCBidXR0b24geyAwIH07CiAg
ICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0OwogfTsKIApAQCAtMTI5LDE1ICsx
MjksNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEYXRhVHJhbnNmZXI+IG1fZGF0YVRyYW5zZmVy
OwogfTsKIAotY2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2
ZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiwgUGFzc1JlZlB0
cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50KiB0YXJnZXQpOwotICAgIHZpcnR1YWwg
flNpbXVsYXRlZE1vdXNlRXZlbnQoKTsKLQotcHJpdmF0ZToKLSAgICBTaW11bGF0ZWRNb3VzZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBBYnN0cmFjdFZpZXcqLCBQYXNzUmVm
UHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCk7Ci19OwotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRVZFTlQoTW91c2VF
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNzVm
MzQ4MTM5NGIyZTE0YzYyM2YyY2FjYjA0NjlmYWIwMDc3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3BwCkBAIC0wLDAgKzEsMTEwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrLmgiCisKKyNpbmNsdWRlICJEYXRhVHJh
bnNmZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVy
LmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNpbXVsYXRlZE1vdXNlRXZlbnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaW11bGF0ZWRNb3VzZUV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyogdmlldywgUmVmUHRyPEV2
ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcs
IFdURk1vdmUodW5kZXJseWluZ0V2ZW50KSwgdGFyZ2V0KSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+U2ltdWxhdGVkTW91c2VFdmVudCgpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBT
aW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBBYnN0cmFj
dFZpZXcqIHZpZXcsIFJlZlB0cjxFdmVudD4mJiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQmIHRh
cmdldCkKKyAgICAgICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJs
eWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3RhbXAoKSA6IGN1cnJlbnRUaW1lKCks
IHZpZXcsIDAsIDAsIDAsIDAsIDAsCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAgICAg
ICAgICAgICAgICAgIDAsIDAsCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAwLCAwLCAwLCAwLCB0cnVlKQorICAgIHsKKyAgICAgICAgaWYg
KFVJRXZlbnRXaXRoS2V5U3RhdGUqIGtleVN0YXRlRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3Rh
dGUodW5kZXJseWluZ0V2ZW50LmdldCgpKSkgeworICAgICAgICAgICAgbV9jdHJsS2V5ID0ga2V5
U3RhdGVFdmVudC0+Y3RybEtleSgpOworICAgICAgICAgICAgbV9hbHRLZXkgPSBrZXlTdGF0ZUV2
ZW50LT5hbHRLZXkoKTsKKyAgICAgICAgICAgIG1fc2hpZnRLZXkgPSBrZXlTdGF0ZUV2ZW50LT5z
aGlmdEtleSgpOworICAgICAgICAgICAgbV9tZXRhS2V5ID0ga2V5U3RhdGVFdmVudC0+bWV0YUtl
eSgpOworICAgICAgICB9CisgICAgICAgIHNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZl
bnQuZ2V0KCkpOworCisgICAgICAgIGlmIChpczxNb3VzZUV2ZW50Pih0aGlzLT51bmRlcmx5aW5n
RXZlbnQoKSkpIHsKKyAgICAgICAgICAgIE1vdXNlRXZlbnQmIG1vdXNlRXZlbnQgPSBkb3duY2Fz
dDxNb3VzZUV2ZW50PigqdGhpcy0+dW5kZXJseWluZ0V2ZW50KCkpOworICAgICAgICAgICAgbV9z
Y3JlZW5Mb2NhdGlvbiA9IG1vdXNlRXZlbnQuc2NyZWVuTG9jYXRpb24oKTsKKyAgICAgICAgICAg
IGluaXRDb29yZGluYXRlcyhtb3VzZUV2ZW50LmNsaWVudExvY2F0aW9uKCkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IHRhcmdldC5zY3JlZW5SZWN0
KCkuY2VudGVyKCk7CisgICAgICAgICAgICBpbml0Q29vcmRpbmF0ZXMoTGF5b3V0UG9pbnQodGFy
Z2V0LmNsaWVudFJlY3QoKS5jZW50ZXIoKSkpOworICAgICAgICB9CisgICAgfQorCit9OworCitz
dGF0aWMgdm9pZCBzaW11bGF0ZUNsaWNrSW50ZXJuYWwoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEVsZW1lbnQmIGVsZW1lbnQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRl
ZENsaWNrQ3JlYXRpb25PcHRpb25zIGNyZWF0aW9uT3B0aW9ucykKK3sKKyAgICBhdXRvIGV2ZW50
ID0gU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZWxlbWVudC5kb2N1bWVu
dCgpLmRlZmF1bHRWaWV3KCksIHVuZGVybHlpbmdFdmVudCwgZWxlbWVudCk7CisgICAgaWYgKGNy
ZWF0aW9uT3B0aW9ucyA9PSBTaW11bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9uczo6RnJvbUJpbmRp
bmdzKQorICAgICAgICBldmVudC5nZXQoKS5zZXRVbnRydXN0ZWQoKTsKKyAgICBFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoRXZlbnQoJmVsZW1lbnQsIGV2ZW50LmdldCgpKTsKK30KKwordm9pZCBz
aW11bGF0ZUNsaWNrKEVsZW1lbnQmIGVsZW1lbnQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNp
bXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgbW91c2VFdmVudE9wdGlvbnMsIFNpbXVsYXRl
ZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRpb25zLCBTaW11bGF0ZWRDbGlja0NyZWF0aW9u
T3B0aW9ucyBjcmVhdGlvbk9wdGlvbnMpCit7CisgICAgaWYgKGVsZW1lbnQuaXNEaXNhYmxlZEZv
cm1Db250cm9sKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrczsK
KyAgICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkuYWRkKCZl
bGVtZW50KS5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobW91c2VFdmVu
dE9wdGlvbnMgPT0gU2VuZE1vdXNlT3ZlclVwRG93bkV2ZW50cykKKyAgICAgICAgc2ltdWxhdGVD
bGlja0ludGVybmFsKGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCwgZWxlbWVudCwgdW5kZXJs
eWluZ0V2ZW50LCBjcmVhdGlvbk9wdGlvbnMpOworCisgICAgaWYgKG1vdXNlRXZlbnRPcHRpb25z
ICE9IFNlbmROb0V2ZW50cykKKyAgICAgICAgc2ltdWxhdGVDbGlja0ludGVybmFsKGV2ZW50TmFt
ZXMoKS5tb3VzZWRvd25FdmVudCwgZWxlbWVudCwgdW5kZXJseWluZ0V2ZW50LCBjcmVhdGlvbk9w
dGlvbnMpOworICAgIGVsZW1lbnQuc2V0QWN0aXZlKHRydWUsIHZpc3VhbE9wdGlvbnMgPT0gU2hv
d1ByZXNzZWRMb29rKTsKKyAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRz
KQorICAgICAgICBzaW11bGF0ZUNsaWNrSW50ZXJuYWwoZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCwgZWxlbWVudCwgdW5kZXJseWluZ0V2ZW50LCBjcmVhdGlvbk9wdGlvbnMpOworICAgIGVsZW1l
bnQuc2V0QWN0aXZlKGZhbHNlKTsKKworICAgIC8vIGFsd2F5cyBzZW5kIGNsaWNrCisgICAgc2lt
dWxhdGVDbGlja0ludGVybmFsKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBlbGVtZW50LCB1bmRl
cmx5aW5nRXZlbnQsIGNyZWF0aW9uT3B0aW9ucyk7CisKKyAgICBlbGVtZW50c0Rpc3BhdGNoaW5n
U2ltdWxhdGVkQ2xpY2tzLmdldCgpLnJlbW92ZSgmZWxlbWVudCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGlj
ay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJk
ZjA5MTYyZmY5MmVlOGQzM2RjYjA1NmYyYjE5NTExMDczMjM4YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5oCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNpbXVs
YXRlZENsaWNrX2gKKyNkZWZpbmUgU2ltdWxhdGVkQ2xpY2tfaAorCisjaW5jbHVkZSAiU2ltdWxh
dGVkQ2xpY2tPcHRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVu
dDsKK2NsYXNzIEV2ZW50OworCitlbnVtIFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zIHsK
KyAgICBGcm9tQmluZGluZ3MsCisgICAgRnJvbVVzZXJBZ2VudAorfTsKKwordm9pZCBzaW11bGF0
ZUNsaWNrKEVsZW1lbnQmLCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlja01v
dXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMsIFNpbXVsYXRlZENs
aWNrQ3JlYXRpb25PcHRpb25zKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
LyogU2ltdWxhdGVkQ2xpY2tfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRl
eCBjZTM1YTBmYTBjYTQ4ZjEzZDZiNjgyN2I1OWI4NzlmNjZiZjE0NGU0Li42NmU2NTQ3N2VjNzA2
Y2IxNTdhYmY5NjM5NWNiNzVkMTU2NWIxZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcApAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFNwZWxsY2hlY2so
Ym9vbCBlbmFibGUpCiAKIHZvaWQgSFRNTEVsZW1lbnQ6OmNsaWNrKCkKIHsKLSAgICBkaXNwYXRj
aFNpbXVsYXRlZENsaWNrKG51bGxwdHIsIFNlbmROb0V2ZW50cywgRG9Ob3RTaG93UHJlc3NlZExv
b2spOworICAgIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2tGb3JCaW5kaW5ncyhudWxscHRyLCBTZW5k
Tm9FdmVudHMsIERvTm90U2hvd1ByZXNzZWRMb29rKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYzNWRmOWJjN2U3
MDA0YzZjNGY4ZDBjNDhmZDQ3YjE4NmRmZmY4NGIuLmRiZmRiZjI4Y2E1YTM4ZjM0M2ViODk3ZWVh
MmMwOTMwNjFiYzRjMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxNi0wMi0xMiAgSmlld2Vu
IFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCisgICAgICAgIFJlZmluZSBTaW11bGF0ZWRN
b3VzZUV2ZW50IHRvIHN1cHBvcnQgRXZlbnQuaXNUcnVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI0NjE2MjQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogaW1wb3J0ZWQvYmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogaW1wb3J0ZWQvYmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC5o
dG1sOgorCisyMDE2LTAyLTEyICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisK
ICAgICAgICAgV2ViS2l0IHNob3VsZCBleHBvc2UgdGhlIERPTSA0IEV2ZW50LmlzVHJ1c3RlZCBw
cm9wZXJ0eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzYxMjEKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNTU4NDk0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVz
dGVkLWV4cGVjdGVkLnR4dAppbmRleCA2Zjc2YzVjMDI4ODFmMDM5MTY0ZWFkZDQ0Mjg4NGI4MDc0
NGU5NDk0Li40NzNmZTZmM2RmMThhZTczYjdmMDRjNTUwYzM2MmE2ZGViZTYzNjlhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50
cy9ldmVudC10cnVzdGVkLWV4cGVjdGVkLnR4dApAQCAtOCw2ICs4LDcgQEAgUEFTUyBjcmVhdGVB
bmRJbml0RXZlbnQoKS5pc1RydXN0ZWQgaXMgZmFsc2UKIFBBU1Mgb3JpZ2luYWxFdmVudC5pc1Ry
dXN0ZWQgaXMgdHJ1ZQogUEFTUyByZWRpc3BhdGNoZWQgaXMgdHJ1ZQogUEFTUyBvcmlnaW5hbEV2
ZW50LmlzVHJ1c3RlZCBpcyBmYWxzZQorUEFTUyBvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCBpcyBm
YWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10
cnVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVu
dC10cnVzdGVkLmh0bWwKaW5kZXggYjFkMTQzNDc1NTE5MjRkMmU0NzUxYWQyY2RlNDlkYmFkODk0
NjAyOC4uN2RlY2EwZjE2Y2JjMjhlMDgwZDY4MmNjY2YyOGY5OTdlZTc1ZWYxNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL2JsaW5rL2Zhc3QvZXZlbnRzL2V2ZW50LXRy
dXN0ZWQuaHRtbApAQCAtMzYsNiArMzYsMTIgQEAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewog
ICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChvcmlnaW5hbEV2ZW50KTsKICAgICBzaG91bGRCZVRy
dWUoInJlZGlzcGF0Y2hlZCIpOwogICAgIHNob3VsZEJlRmFsc2UoIm9yaWdpbmFsRXZlbnQuaXNU
cnVzdGVkIik7CisKKyAgICBvcmlnaW5hbEV2ZW50ID0gbnVsbDsKKyAgICBlbGVtZW50LnJlbW92
ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVkaXNwYXRjaCk7CisgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCdjbGljaycsIG9yaWdpbmFsRGlzcGF0Y2gpOworICAgIGVsZW1lbnQuY2xpY2so
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCIpOwogfQogCiA8
L3NjcmlwdD4K
</data>
<flag name="review"
          id="296094"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="296129"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271352</attachid>
            <date>2016-02-15 11:42:59 -0800</date>
            <delta_ts>2016-02-15 12:39:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154133-20160215114239.patch</filename>
            <type>text/plain</type>
            <size>25071</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ZmExNjA1Y2QyM2M2
MjMyMWEzZjIzYjBhOWRlNzRhMWVjYWZhYy4uZDk4MDQwOTYxNWM0ODUzMDljYWFkOWUzZmM3Y2Yy
YTEwZWQwMzE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDE2LTAyLTEyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmaW5lIFNpbXVsYXRl
ZE1vdXNlRXZlbnQgdG8gc3VwcG9ydCBFdmVudC5pc1RydXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEzMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjQ2MTYyNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBleHRyYWN0cyBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gY3JlYXRlL2Rp
c3BhdGNoIFNpbXVsYXRlZE1vdXNlRXZlbnQgZnJvbSBNb3VzZUV2ZW50LmgvY3BwCisgICAgICAg
IGFuZCBFdmVudERpc3BhdGNoZXIuaC9jcHAsIGFuZCBwcm9kdWNlcyBTaW11bGF0ZUNsaWNrLmgv
Y3BwIHdoaWNoIHdpbGwgaGFuZGxlIHNpbXVsYXRlZCBjbGljayBzb2xlbHkuCisgICAgICAgIEFm
dGVyIHRoYXQsIHdlIGhpZGUgdGhlIFNpbXVsYXRlZE1vdXNlRXZlbnQgYW5kIG9ubHkgZXhwb3Nl
IHNpbXVsYXRlQ2xpY2sgdG8gYmUgY2FsbGVkLiBUaGUgcmVhc29uIGlzCisgICAgICAgIHRoYXQg
d2UgYm90aCB3YW50IHRvIHRlbGwgd2hldGhlciB0aGUgY2FsbCBzaXRlcyBhcmUgZnJvbSB1c2Vy
IGFnZW50L2JpbmRpbmdzIGFuZCBrZWVwIHRoZQorICAgICAgICBTaW11bGF0ZWRNb3VzZUV2ZW50
IGludGFjdC4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIHNlcGFyYXRlIEVsZW1lbnQ6OmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2sgaW50byB0d286IG9uZSBmb3IgdGhlIHVzZXIgYWdlbnQsIGFu
ZCBhbm90aGVyCisgICAgICAgIGZvciB0aGUgYmluZGluZ3MuIFRoZXJlZm9yZSwgSFRNTEVsZW1l
bnQuY2xpY2sgd2lsbCBiZSB0cmVhdGVkIGFzIHVudHJ1c3RlZC4KKworICAgICAgICBTb21lIG9m
IHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggcmVmZXJyZWQgQmxpbmsgcjIwMDQwMToKKyAgICAg
ICAgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMjg1NzkzMDA0CisKKyAgICAgICAg
TW9kaWZpZWQgdGVzdDoKKyAgICAgICAgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFzdC9l
dmVudHMvZXZlbnQtdHJ1c3RlZC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hTaW11bGF0
ZWRDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENs
aWNrRm9yQmluZGluZ3MpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2spOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FdmVudERp
c3BhdGNoZXIuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6flNpbXVsYXRlZE1vdXNlRXZlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VF
dmVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vU2ltdWxhdGVkQ2xpY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNpbXVsYXRl
TW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpzaW11bGF0ZUNsaWNrKToKKyAgICAgICAg
KiBkb20vU2ltdWxhdGVkQ2xpY2suaDogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y2xpY2spOgorCisyMDE2LTAy
LTEyICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViS2l0
IHNob3VsZCBleHBvc2UgdGhlIERPTSA0IEV2ZW50LmlzVHJ1c3RlZCBwcm9wZXJ0eQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjEKICAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzIyNTU4NDk0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmZGYyNGRj
NDYzOTc0NDNiYzc4ZDc5NmI3Y2YxMzY5M2ZjMTJhNzg0Li42NDQ3YmM4MmFlY2I2MzY1N2YzZTcz
MDZiMzQzNWRhYWI3YTgyMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUxMCw2ICsxNTEw
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9TZWN1cml0eU9yaWdpblBvbGljeS5j
cHAKICAgICBkb20vU2VsZWN0b3JRdWVyeS5jcHAKICAgICBkb20vU2hhZG93Um9vdC5jcHAKKyAg
ICBkb20vU2ltdWxhdGVkQ2xpY2suY3BwCiAgICAgZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAogICAg
IGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBhYWMxZWZhZmE0NTgxYzBhMjBlNmQwMmRhZTgyYTcyNjRlM2Y2ODk0Li44ZmY0YzJiZjg3ODgx
NzhmYWRkN2U1MjczNWQyZWMxMjg5MDBlNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzEwLDYgKzIzMTAsOCBAQAogCQk1
M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZB
MTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFs
aWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3MkE3RjIxMUM2RTU3MTkw
MDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENs
aWNrLmggKi87IH07CisJCTU3MkE3RjIzMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGlj
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJB
N0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovOyB9OwogCQk1ODAz
NzE2MTFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgwMzcxNUYxQTY2RjAwQTAwQkFGNTE5IC8qIENs
aXBSZWN0LmNwcCAqLzsgfTsKIAkJNTgwMzcxNjIxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE2
MDFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1ODAzNzE2NDFBNjZGMUQzMDBCQUY1MTkgLyogTGF5
ZXJGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTgwMzcxNjMxQTY2RjFEMzAwQkFGNTE5IC8qIExheWVyRnJhZ21lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTg0Myw2ICs5ODQ1LDgg
QEAKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlm
aWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFs
aWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1NUQ0MDhGNzFBN0M2MzE4MDBDNzg0NTAgLyogU1ZHSW1hZ2VDbGllbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2xpZW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyog
U2ltdWxhdGVkQ2xpY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltdWxh
dGVkQ2xpY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcyQTdGMjIxQzZFNUE2
NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNpbXVsYXRlZENsaWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTgwMzcxNUYxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTgwMzcxNjAxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBSZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU4MDM3MTYzMUE2NkYxRDMwMEJBRjUxOSAvKiBMYXllckZyYWdtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVyRnJhZ21lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MzQwLDYgKzI0MzQ0LDggQEAKIAkJCQlBNkQx
Njk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgKi8sCiAJCQkJQTZEMTY5NjMx
MzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywKIAkJCQk5QjE5QjY3RTFCOTY0RTUy
MDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8sCisJCQkJNTcyQTdGMjAxQzZFNTcxOTAwOUM2
MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi8sCisJCQkJNTcyQTdGMjIxQzZFNUE2NjAwOUM2MTQ5
IC8qIFNpbXVsYXRlZENsaWNrLmNwcCAqLywKIAkJCQkzMTc0MUFBQjE2NjM1RTQ1MDA4QTVCN0Ug
LyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggKi8sCiAJCQkJOUI1MzJFQTExQkE5Mjg1NzAwMzhB
ODI3IC8qIFNsb3RBc3NpZ25tZW50LmNwcCAqLywKIAkJCQk5QjUzMkVBMjFCQTkyODU3MDAzOEE4
MjcgLyogU2xvdEFzc2lnbm1lbnQuaCAqLywKQEAgLTI4MDQ0LDYgKzI4MDUwLDcgQEAKIAkJCQkx
OTdCMTgwQzE1MDYzNTMyMDBFNEFEQTggLyogU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBQTAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JlbmRlcmluZ0ludGVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjc0NzkwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1Jl
bmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzJBN0YyMTFDNkU1NzE5MDA5QzYxNDkg
LyogU2ltdWxhdGVkQ2xpY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3NDdCMEU4MzY2RTIw
MEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcw
OEYyMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MzY3MDhGNDEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMTQxNSw2ICszMTQyMiw3IEBACiAJCQkJN0U4RkFEQzQxOTlBOTVC
MTAwNzE0OTY4IC8qIFN1YnJlc291cmNlTG9hZGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlFMUZGOEY1RjE4MDc0NDIxMDAxMzI2NzQgLyogU3VidGxlQ3J5cHRvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzQjJEODE4MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTU3MkE3RjIzMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0
ZWRDbGljay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODc1NThDNTEzQjRBNTdEMDBGNDkzMDcg
LyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTYyQzEyMTdDMTFBQjlFNzcwMDNDNDYyQyAvKiBTdXNwZW5kYWJsZVRpbWVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3OTczMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0MDg4ZDg0ZDBlMmY5OGUz
YmI1ZjVmZTdiMzMyZGEwNWMzMDM0NWY3Li4xOWFkNTBjYTQ4MTY0OGY2MDA1OTJiOTgzNWRlN2Fh
ZDQ5ODNhMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5j
bHVkZSAiU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrLmgiCiAjaW5j
bHVkZSAiU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVy
dGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKQEAgLTMxMiw3ICszMTMsMTIgQEAg
Ym9vbCBFbGVtZW50OjpkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCYgcGxhdGZvcm1FdmVudCkKIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENsaWNr
KEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMg
ZXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9ucykK
IHsKLSAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sodGhpcywgdW5k
ZXJseWluZ0V2ZW50LCBldmVudE9wdGlvbnMsIHZpc3VhbE9wdGlvbnMpOworICAgIHNpbXVsYXRl
Q2xpY2soKnRoaXMsIHVuZGVybHlpbmdFdmVudCwgZXZlbnRPcHRpb25zLCB2aXN1YWxPcHRpb25z
LCBTaW11bGF0ZWRDbGlja0NyZWF0aW9uT3B0aW9uczo6RnJvbVVzZXJBZ2VudCk7Cit9CisKK3Zv
aWQgRWxlbWVudDo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGlja0ZvckJpbmRpbmdzKEV2ZW50KiB1bmRl
cmx5aW5nRXZlbnQpCit7CisgICAgc2ltdWxhdGVDbGljaygqdGhpcywgdW5kZXJseWluZ0V2ZW50
LCBTZW5kTm9FdmVudHMsIERvTm90U2hvd1ByZXNzZWRMb29rLCBTaW11bGF0ZWRDbGlja0NyZWF0
aW9uT3B0aW9uczo6RnJvbUJpbmRpbmdzKTsKIH0KIAogUmVmPE5vZGU+IEVsZW1lbnQ6OmNsb25l
Tm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xvbmluZ09wZXJhdGlvbiB0
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjdiNjNlYWYwZjZkMTM0NzE5NDQ0NDgzMzlhYThl
OTc2MjY3ZDE5MS4uYmFiMDViZTI5NzVjMDhmYzM3NWNmM2EzNzUwNDNmYTA0YjVkNDYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCkBAIC00NTksNiArNDU5LDcgQEAgcHVibGljOgogICAgIGJvb2wgZGlz
cGF0Y2hXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIGJvb2wgZGlz
cGF0Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKICAgICB2b2lkIGRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2soRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xp
Y2tNb3VzZUV2ZW50T3B0aW9ucyA9IFNlbmROb0V2ZW50cywgU2ltdWxhdGVkQ2xpY2tWaXN1YWxP
cHRpb25zID0gU2hvd1ByZXNzZWRMb29rKTsKKyAgICB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xp
Y2tGb3JCaW5kaW5ncyhFdmVudCogdW5kZXJseWluZ0V2ZW50KTsKICAgICB2b2lkIGRpc3BhdGNo
Rm9jdXNJbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RWxlbWVu
dD4mJiBvbGRGb2N1c2VkRWxlbWVudCk7CiAgICAgdm9pZCBkaXNwYXRjaEZvY3VzT3V0RXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3Vz
ZWRFbGVtZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxF
bGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDNmMTBmZDhlOGFlNzhlMTc1Y2U3YzA0N2U5
MzQzY2MzZWQwNDA2NTAuLjAxMzhmNDQwNjBmNDMxNWJiZjg3ZmE2Y2U0MzJmZTQ2NmIwMTYyN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0xMjUsMzEgKzEyNSw2
IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNjb3BlZEV2ZW50KE5vZGUmIG5vZGUs
IEV2ZW50JiBldmVudCkKICAgICBTY29wZWRFdmVudFF1ZXVlOjpzaW5nbGV0b24oKS5lbnF1ZXVl
RXZlbnQoZXZlbnQpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0
ZWRDbGljayhFbGVtZW50KiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0
ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zIG1vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlj
a1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9ucykKLXsKLSAgICBpZiAoZWxlbWVudC0+aXNEaXNh
YmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PEVsZW1lbnQqPj4gZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENs
aWNrczsKLSAgICBpZiAoIWVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCku
YWRkKGVsZW1lbnQpLmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtb3Vz
ZUV2ZW50T3B0aW9ucyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQotICAgICAgICBkaXNw
YXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkubW91c2VvdmVyRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5k
ZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7Ci0KLSAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0g
U2VuZE5vRXZlbnRzKQotICAgICAgICBkaXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1v
dXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQsIGVsZW1lbnQtPmRv
Y3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7Ci0gICAg
ZWxlbWVudC0+c2V0QWN0aXZlKHRydWUsIHZpc3VhbE9wdGlvbnMgPT0gU2hvd1ByZXNzZWRMb29r
KTsKLSAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5vRXZlbnRzKQotICAgICAgICBk
aXNwYXRjaEV2ZW50KGVsZW1lbnQsIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkubW91c2V1cEV2ZW50LCBlbGVtZW50LT5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHVu
ZGVybHlpbmdFdmVudCwgZWxlbWVudCkpOwotICAgIGVsZW1lbnQtPnNldEFjdGl2ZShmYWxzZSk7
Ci0KLSAgICAvLyBhbHdheXMgc2VuZCBjbGljawotICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwg
U2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBlbGVt
ZW50LT5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIHVuZGVybHlpbmdFdmVudCwgZWxlbWVudCkp
OwotCi0gICAgZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcy5nZXQoKS5yZW1vdmUo
ZWxlbWVudCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGNhbGxEZWZhdWx0RXZlbnRIYW5kbGVyc0luVGhl
QnViYmxpbmdPcmRlcihFdmVudCYgZXZlbnQsIGNvbnN0IEV2ZW50UGF0aCYgcGF0aCkKIHsKICAg
ICBpZiAocGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKaW5k
ZXggYmE0M2VlZGJlNDkyNTQ1YzYzYjUwZTQ0ZmI2YjlhZjY3MTUyN2ZlYi4uNjU0ZDhmOGNiNzc5
MGUwZWFhNDFmYzJhMDc3YmJhNTE1OGNmYzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3Bh
dGNoZXIuaApAQCAtMzksNyArMzksNiBAQCBuYW1lc3BhY2UgRXZlbnREaXNwYXRjaGVyIHsKIAog
Ym9vbCBkaXNwYXRjaEV2ZW50KE5vZGUqLCBFdmVudCYpOwogdm9pZCBkaXNwYXRjaFNjb3BlZEV2
ZW50KE5vZGUmLCBFdmVudCYpOwotdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKEVsZW1lbnQq
LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25z
LCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9wdGlvbnMpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2
ZW50LmNwcAppbmRleCA3YTMyOWI2Y2YzNWI3M2Q0MTY2MjRhMGFiYjIzNjc1MzE1YzJmM2EzLi45
OTQ0ZmE2MGQzYzQ5Y2U5NDVlYmJmNjc5MjFhNWU0OTc2M2IyNDQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlRXZlbnQuY3BwCkBAIC0yNTEsMzggKzI1MSw0IEBAIFJlZjxFdmVudD4gTW91c2VFdmVudDo6
Y2xvbmVGb3IoSFRNTElGcmFtZUVsZW1lbnQqIGlmcmFtZSkgY29uc3QKICAgICByZXR1cm4gV1RG
TW92ZShjbG9uZWRNb3VzZUV2ZW50KTsKIH0KIAotUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IFNp
bXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
QWJzdHJhY3RWaWV3KiB2aWV3LCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQsIEVs
ZW1lbnQqIHRhcmdldCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3Vz
ZUV2ZW50KGV2ZW50VHlwZSwgdmlldywgdW5kZXJseWluZ0V2ZW50LCB0YXJnZXQpKTsKLX0KLQot
U2ltdWxhdGVkTW91c2VFdmVudDo6flNpbXVsYXRlZE1vdXNlRXZlbnQoKQotewotfQotCi1TaW11
bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBBYnN0cmFjdFZpZXcqIHZpZXcsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlp
bmdFdmVudCwgRWxlbWVudCogdGFyZ2V0KQotICAgIDogTW91c2VFdmVudChldmVudFR5cGUsIHRy
dWUsIHRydWUsIHVuZGVybHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVudC0+dGltZVN0YW1wKCkg
OiBjdXJyZW50VGltZSgpLCB2aWV3LCAwLCAwLCAwLCAwLCAwLAotI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCi0gICAgICAgICAgICAgICAgIDAsIDAsCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIDAsIDAsIDAsIHRydWUpCi17Ci0gICAgaWYg
KFVJRXZlbnRXaXRoS2V5U3RhdGUqIGtleVN0YXRlRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3Rh
dGUodW5kZXJseWluZ0V2ZW50LmdldCgpKSkgewotICAgICAgICBtX2N0cmxLZXkgPSBrZXlTdGF0
ZUV2ZW50LT5jdHJsS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0ga2V5U3RhdGVFdmVudC0+YWx0
S2V5KCk7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSBrZXlTdGF0ZUV2ZW50LT5zaGlmdEtleSgpOwot
ICAgICAgICBtX21ldGFLZXkgPSBrZXlTdGF0ZUV2ZW50LT5tZXRhS2V5KCk7Ci0gICAgfQotICAg
IHNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQuZ2V0KCkpOwotCi0gICAgaWYgKGlz
PE1vdXNlRXZlbnQ+KHRoaXMtPnVuZGVybHlpbmdFdmVudCgpKSkgewotICAgICAgICBNb3VzZUV2
ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNhc3Q8TW91c2VFdmVudD4oKnRoaXMtPnVuZGVybHlpbmdF
dmVudCgpKTsKLSAgICAgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IG1vdXNlRXZlbnQuc2NyZWVuTG9j
YXRpb24oKTsKLSAgICAgICAgaW5pdENvb3JkaW5hdGVzKG1vdXNlRXZlbnQuY2xpZW50TG9jYXRp
b24oKSk7Ci0gICAgfSBlbHNlIGlmICh0YXJnZXQpIHsKLSAgICAgICAgbV9zY3JlZW5Mb2NhdGlv
biA9IHRhcmdldC0+c2NyZWVuUmVjdCgpLmNlbnRlcigpOwotICAgICAgICBpbml0Q29vcmRpbmF0
ZXMoTGF5b3V0UG9pbnQodGFyZ2V0LT5jbGllbnRSZWN0KCkuY2VudGVyKCkpKTsKLSAgICB9Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCmluZGV4IDAy
NTcxMWVhYWI0YTJlMDNhMDdlMjNkOWI3Yzc1M2NhOWNlOTdlYjguLmE2MzMxYTI2ZjY1OTUzNmNl
MjYyN2VkODZiYTkyZTVhYWRhZmFmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaApAQCAtMzIs
OSArMzIsOSBAQCBjbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7
CiAKIHN0cnVjdCBNb3VzZUV2ZW50SW5pdCA6IHB1YmxpYyBNb3VzZVJlbGF0ZWRFdmVudEluaXQg
ewotICAgIGludCBjbGllbnRYIHswfTsKLSAgICBpbnQgY2xpZW50WSB7MH07Ci0gICAgdW5zaWdu
ZWQgc2hvcnQgYnV0dG9uIHswfTsKKyAgICBpbnQgY2xpZW50WCB7IDAgfTsKKyAgICBpbnQgY2xp
ZW50WSB7IDAgfTsKKyAgICB1bnNpZ25lZCBzaG9ydCBidXR0b24geyAwIH07CiAgICAgUmVmUHRy
PEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0OwogfTsKIApAQCAtMTI5LDE1ICsxMjksNiBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxEYXRhVHJhbnNmZXI+IG1fZGF0YVRyYW5zZmVyOwogfTsKIAot
Y2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiwgUGFzc1JlZlB0cjxFdmVudD4g
dW5kZXJseWluZ0V2ZW50LCBFbGVtZW50KiB0YXJnZXQpOwotICAgIHZpcnR1YWwgflNpbXVsYXRl
ZE1vdXNlRXZlbnQoKTsKLQotcHJpdmF0ZToKLSAgICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBBYnN0cmFjdFZpZXcqLCBQYXNzUmVmUHRyPEV2ZW50
PiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCk7Ci19OwotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRVZFTlQoTW91c2VFdmVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjM2Y4Zjg1ZmFlMGUy
NGZmZDRhNWY4OGVlMGQwMmEyMmNmNDFlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2ltdWxhdGVkQ2xpY2suY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrLmgiCisKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIK
KyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCisjaW5j
bHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNpbXVsYXRlZE1vdXNlRXZlbnQgZmluYWwgOiBwdWJsaWMgTW91c2VFdmVudCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxTaW11bGF0ZWRNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyogdmlldywgUmVmUHRyPEV2ZW50PiYmIHVu
ZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2ltdWxhdGVkTW91c2VFdmVudChldmVudFR5cGUsIHZpZXcsIFdURk1vdmUo
dW5kZXJseWluZ0V2ZW50KSwgdGFyZ2V0KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNpbXVs
YXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0Vmll
dyogdmlldywgUmVmUHRyPEV2ZW50PiYmIHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCYgdGFyZ2V0
KQorICAgICAgICA6IE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB0cnVlLCB0cnVlLCB1bmRlcmx5aW5n
RXZlbnQgPyB1bmRlcmx5aW5nRXZlbnQtPnRpbWVTdGFtcCgpIDogY3VycmVudFRpbWUoKSwgdmll
dywgMCwgMCwgMCwgMCwgMCwKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIDAsIDAsIDAsIDAsIHRydWUpCisgICAgeworICAgICAgICBpZiAoVUlF
dmVudFdpdGhLZXlTdGF0ZSoga2V5U3RhdGVFdmVudCA9IGZpbmRFdmVudFdpdGhLZXlTdGF0ZSh1
bmRlcmx5aW5nRXZlbnQuZ2V0KCkpKSB7CisgICAgICAgICAgICBtX2N0cmxLZXkgPSBrZXlTdGF0
ZUV2ZW50LT5jdHJsS2V5KCk7CisgICAgICAgICAgICBtX2FsdEtleSA9IGtleVN0YXRlRXZlbnQt
PmFsdEtleSgpOworICAgICAgICAgICAgbV9zaGlmdEtleSA9IGtleVN0YXRlRXZlbnQtPnNoaWZ0
S2V5KCk7CisgICAgICAgICAgICBtX21ldGFLZXkgPSBrZXlTdGF0ZUV2ZW50LT5tZXRhS2V5KCk7
CisgICAgICAgIH0KKyAgICAgICAgc2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudC5n
ZXQoKSk7CisKKyAgICAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KHRoaXMtPnVuZGVybHlpbmdFdmVu
dCgpKSkgeworICAgICAgICAgICAgTW91c2VFdmVudCYgbW91c2VFdmVudCA9IGRvd25jYXN0PE1v
dXNlRXZlbnQ+KCp0aGlzLT51bmRlcmx5aW5nRXZlbnQoKSk7CisgICAgICAgICAgICBtX3NjcmVl
bkxvY2F0aW9uID0gbW91c2VFdmVudC5zY3JlZW5Mb2NhdGlvbigpOworICAgICAgICAgICAgaW5p
dENvb3JkaW5hdGVzKG1vdXNlRXZlbnQuY2xpZW50TG9jYXRpb24oKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX3NjcmVlbkxvY2F0aW9uID0gdGFyZ2V0LnNjcmVlblJlY3QoKS5j
ZW50ZXIoKTsKKyAgICAgICAgICAgIGluaXRDb29yZGluYXRlcyhMYXlvdXRQb2ludCh0YXJnZXQu
Y2xpZW50UmVjdCgpLmNlbnRlcigpKSk7CisgICAgICAgIH0KKyAgICB9CisKK307CisKK3N0YXRp
YyB2b2lkIHNpbXVsYXRlTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RWxlbWVudCYgZWxlbWVudCwgRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tD
cmVhdGlvbk9wdGlvbnMgY3JlYXRpb25PcHRpb25zKQoreworICAgIGF1dG8gZXZlbnQgPSBTaW11
bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBlbGVtZW50LmRvY3VtZW50KCkuZGVm
YXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KTsKKyAgICBpZiAoY3JlYXRpb25P
cHRpb25zID09IFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zOjpGcm9tQmluZGluZ3MpCisg
ICAgICAgIGV2ZW50LmdldCgpLnNldFVudHJ1c3RlZCgpOworICAgIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hFdmVudCgmZWxlbWVudCwgZXZlbnQuZ2V0KCkpOworfQorCit2b2lkIHNpbXVsYXRl
Q2xpY2soRWxlbWVudCYgZWxlbWVudCwgRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVk
Q2xpY2tNb3VzZUV2ZW50T3B0aW9ucyBtb3VzZUV2ZW50T3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tW
aXN1YWxPcHRpb25zIHZpc3VhbE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25z
IGNyZWF0aW9uT3B0aW9ucykKK3sKKyAgICBpZiAoZWxlbWVudC5pc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8RWxlbWVudCo+PiBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzOworICAgIGlm
ICghZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcy5nZXQoKS5hZGQoJmVsZW1lbnQp
LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtb3VzZUV2ZW50T3B0aW9u
cyA9PSBTZW5kTW91c2VPdmVyVXBEb3duRXZlbnRzKQorICAgICAgICBzaW11bGF0ZU1vdXNlRXZl
bnQoZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50LCBlbGVtZW50LCB1bmRlcmx5aW5nRXZlbnQs
IGNyZWF0aW9uT3B0aW9ucyk7CisKKyAgICBpZiAobW91c2VFdmVudE9wdGlvbnMgIT0gU2VuZE5v
RXZlbnRzKQorICAgICAgICBzaW11bGF0ZU1vdXNlRXZlbnQoZXZlbnROYW1lcygpLm1vdXNlZG93
bkV2ZW50LCBlbGVtZW50LCB1bmRlcmx5aW5nRXZlbnQsIGNyZWF0aW9uT3B0aW9ucyk7CisgICAg
ZWxlbWVudC5zZXRBY3RpdmUodHJ1ZSwgdmlzdWFsT3B0aW9ucyA9PSBTaG93UHJlc3NlZExvb2sp
OworICAgIGlmIChtb3VzZUV2ZW50T3B0aW9ucyAhPSBTZW5kTm9FdmVudHMpCisgICAgICAgIHNp
bXVsYXRlTW91c2VFdmVudChldmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBlbGVtZW50LCB1bmRl
cmx5aW5nRXZlbnQsIGNyZWF0aW9uT3B0aW9ucyk7CisgICAgZWxlbWVudC5zZXRBY3RpdmUoZmFs
c2UpOworCisgICAgc2ltdWxhdGVNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBl
bGVtZW50LCB1bmRlcmx5aW5nRXZlbnQsIGNyZWF0aW9uT3B0aW9ucyk7CisKKyAgICBlbGVtZW50
c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmdldCgpLnJlbW92ZSgmZWxlbWVudCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aW11bGF0ZWRDbGljay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDcxNTRhOWY5ZjIzMGFjYTI0YjRmMDllM2NkYzljZjZmNTc2NmIzMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5oCkBAIC0wLDAg
KzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFNpbXVsYXRlZENsaWNrX2gKKyNkZWZpbmUgU2ltdWxhdGVkQ2xpY2tfaAorCisjaW5j
bHVkZSAiU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2ZW50OworCitlbnVtIGNsYXNzIFNpbXVsYXRlZENsaWNr
Q3JlYXRpb25PcHRpb25zIHsKKyAgICBGcm9tQmluZGluZ3MsCisgICAgRnJvbVVzZXJBZ2VudAor
fTsKKwordm9pZCBzaW11bGF0ZUNsaWNrKEVsZW1lbnQmLCBFdmVudCogdW5kZXJseWluZ0V2ZW50
LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRDbGlja1Zpc3VhbE9w
dGlvbnMsIFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLyogU2ltdWxhdGVkQ2xpY2tfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAppbmRleCBjZTM1YTBmYTBjYTQ4ZjEzZDZiNjgyN2I1OWI4NzlmNjZiZjE0
NGU0Li5mYTcwMmQ5MDAxMjNhZGU1MjhmN2QxZGFiMjI4N2ZlM2ZhZWY1NjZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgSFRNTEVsZW1l
bnQ6OnNldFNwZWxsY2hlY2soYm9vbCBlbmFibGUpCiAKIHZvaWQgSFRNTEVsZW1lbnQ6OmNsaWNr
KCkKIHsKLSAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKG51bGxwdHIsIFNlbmROb0V2ZW50cywg
RG9Ob3RTaG93UHJlc3NlZExvb2spOworICAgIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2tGb3JCaW5k
aW5ncyhudWxscHRyKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJv
b2wgc2VuZE1vdXNlRXZlbnRzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYzNWRmOWJjN2U3MDA0YzZjNGY4ZDBjNDhmZDQ3
YjE4NmRmZmY4NGIuLmRiZmRiZjI4Y2E1YTM4ZjM0M2ViODk3ZWVhMmMwOTMwNjFiYzRjMDMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwxNiBAQAogMjAxNi0wMi0xMiAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5A
YXBwbGUuY29tPgogCisgICAgICAgIFJlZmluZSBTaW11bGF0ZWRNb3VzZUV2ZW50IHRvIHN1cHBv
cnQgRXZlbnQuaXNUcnVzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTQxMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NjE2MjQ2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogaW1wb3J0ZWQvYmxp
bmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW1w
b3J0ZWQvYmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC5odG1sOgorCisyMDE2LTAyLTEy
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViS2l0IHNo
b3VsZCBleHBvc2UgdGhlIERPTSA0IEV2ZW50LmlzVHJ1c3RlZCBwcm9wZXJ0eQogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjEKICAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIyNTU4NDk0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
YmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLWV4cGVjdGVkLnR4dApp
bmRleCA2Zjc2YzVjMDI4ODFmMDM5MTY0ZWFkZDQ0Mjg4NGI4MDc0NGU5NDk0Li40NzNmZTZmM2Rm
MThhZTczYjdmMDRjNTUwYzM2MmE2ZGViZTYzNjlhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLWV4
cGVjdGVkLnR4dApAQCAtOCw2ICs4LDcgQEAgUEFTUyBjcmVhdGVBbmRJbml0RXZlbnQoKS5pc1Ry
dXN0ZWQgaXMgZmFsc2UKIFBBU1Mgb3JpZ2luYWxFdmVudC5pc1RydXN0ZWQgaXMgdHJ1ZQogUEFT
UyByZWRpc3BhdGNoZWQgaXMgdHJ1ZQogUEFTUyBvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCBpcyBm
YWxzZQorUEFTUyBvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCBpcyBmYWxzZQogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLmh0bWwKaW5k
ZXggYjFkMTQzNDc1NTE5MjRkMmU0NzUxYWQyY2RlNDlkYmFkODk0NjAyOC4uN2RlY2EwZjE2Y2Jj
MjhlMDgwZDY4MmNjY2YyOGY5OTdlZTc1ZWYxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvYmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL2JsaW5rL2Zhc3QvZXZlbnRzL2V2ZW50LXRydXN0ZWQuaHRtbApAQCAtMzYs
NiArMzYsMTIgQEAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgIGVsZW1lbnQuZGlzcGF0
Y2hFdmVudChvcmlnaW5hbEV2ZW50KTsKICAgICBzaG91bGRCZVRydWUoInJlZGlzcGF0Y2hlZCIp
OwogICAgIHNob3VsZEJlRmFsc2UoIm9yaWdpbmFsRXZlbnQuaXNUcnVzdGVkIik7CisKKyAgICBv
cmlnaW5hbEV2ZW50ID0gbnVsbDsKKyAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Ns
aWNrJywgcmVkaXNwYXRjaCk7CisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycs
IG9yaWdpbmFsRGlzcGF0Y2gpOworICAgIGVsZW1lbnQuY2xpY2soKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCIpOwogfQogCiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271359</attachid>
            <date>2016-02-15 12:39:55 -0800</date>
            <delta_ts>2016-02-15 12:39:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154133-20160215123935.patch</filename>
            <type>text/plain</type>
            <size>24975</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0MTNhOGM2YjZmNjY1
ZWM0YzlhZDM2MTg3ODZlZjZkODJmOTBjNC4uM2I2YTQ3MjhmMDk3ZjhmMmU3NGNhZDE5YWMwNmMw
NGRkNGY3OTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTAyLTEyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmaW5lIFNpbXVsYXRl
ZE1vdXNlRXZlbnQgdG8gc3VwcG9ydCBFdmVudC5pc1RydXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEzMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjQ2MTYyNDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBleHRyYWN0cyBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gY3JlYXRlL2Rp
c3BhdGNoIFNpbXVsYXRlZE1vdXNlRXZlbnQgZnJvbSBNb3VzZUV2ZW50LmgvY3BwCisgICAgICAg
IGFuZCBFdmVudERpc3BhdGNoZXIuaC9jcHAsIGFuZCBwcm9kdWNlcyBTaW11bGF0ZUNsaWNrLmgv
Y3BwIHdoaWNoIHdpbGwgaGFuZGxlIHNpbXVsYXRlZCBjbGljayBzb2xlbHkuCisgICAgICAgIEFm
dGVyIHRoYXQsIHdlIGhpZGUgdGhlIFNpbXVsYXRlZE1vdXNlRXZlbnQgYW5kIG9ubHkgZXhwb3Nl
IHNpbXVsYXRlQ2xpY2sgdG8gYmUgY2FsbGVkLiBUaGUgcmVhc29uIGlzCisgICAgICAgIHRoYXQg
d2UgYm90aCB3YW50IHRvIHRlbGwgd2hldGhlciB0aGUgY2FsbCBzaXRlcyBhcmUgZnJvbSB1c2Vy
IGFnZW50L2JpbmRpbmdzIGFuZCBrZWVwIHRoZQorICAgICAgICBTaW11bGF0ZWRNb3VzZUV2ZW50
IGludGFjdC4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNoIHNlcGFyYXRlIEVsZW1lbnQ6OmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2sgaW50byB0d286IG9uZSBmb3IgdGhlIHVzZXIgYWdlbnQsIGFu
ZCBhbm90aGVyCisgICAgICAgIGZvciB0aGUgYmluZGluZ3MuIFRoZXJlZm9yZSwgSFRNTEVsZW1l
bnQuY2xpY2sgd2lsbCBiZSB0cmVhdGVkIGFzIHVudHJ1c3RlZC4KKworICAgICAgICBTb21lIG9m
IHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2ggcmVmZXJyZWQgQmxpbmsgcjIwMDQwMToKKyAgICAg
ICAgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMjg1NzkzMDA0CisKKyAgICAgICAg
TW9kaWZpZWQgdGVzdDoKKyAgICAgICAgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFzdC9l
dmVudHMvZXZlbnQtdHJ1c3RlZC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hTaW11bGF0
ZWRDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENs
aWNrRm9yQmluZGluZ3MpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2spOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FdmVudERp
c3BhdGNoZXIuaDoKKyAgICAgICAgKiBkb20vTW91c2VFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6flNpbXVsYXRlZE1vdXNlRXZlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VF
dmVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL01vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vU2ltdWxhdGVkQ2xpY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNpbXVsYXRl
TW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpzaW11bGF0ZUNsaWNrKToKKyAgICAgICAg
KiBkb20vU2ltdWxhdGVkQ2xpY2suaDogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y2xpY2spOgorCiAyMDE2LTAy
LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lv
bihyMTk2NTYzKTogSXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIGNhbGwgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIgd2l0aG91dCBhbiBleHBsaWNpdCAndGhpcycKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggMjZiNGIzYmY1YWNiNmVjYWI2Y2JmMTZlYjk1YzA4ZjIwYmQ0MTIxOC4uZTUxZTQ4YWNh
ZTVhNTg5MDk1OGNjYzI2OGNjMDcyNzZjMDlmZDQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTE1MTAsNiArMTUxMCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VjdXJpdHlP
cmlnaW5Qb2xpY3kuY3BwCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuY3BwCiAgICAgZG9tL1NoYWRv
d1Jvb3QuY3BwCisgICAgZG9tL1NpbXVsYXRlZENsaWNrLmNwcAogICAgIGRvbS9TbG90QXNzaWdu
bWVudC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKICAgICBkb20vU3RhdGljTm9k
ZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMjdhZDAyOWIyYTZmZjY2MjMwNGE3NDc0YmM5N2M1NmQ1ZGQ5ZjdhZi4u
Mzg4MGI4OGMxOTAwZGM0MDI1YTc4ODhjMWQ2Yzc2MTQwNjAwMWU4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMxMSw2ICsy
MzExLDggQEAKIAkJNTNFRjc2NkMxNjUzMTk5NDAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmgg
aW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLzsgfTsK
IAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzJB
N0YyMTFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAv
KiBTaW11bGF0ZWRDbGljay5oICovOyB9OworCQk1NzJBN0YyMzFDNkU1QTY2MDA5QzYxNDkgLyog
U2ltdWxhdGVkQ2xpY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTcyQTdGMjIxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCAq
LzsgfTsKIAkJNTgwMzcxNjExQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4MDM3MTVGMUE2NkYwMEEw
MEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgKi87IH07CiAJCTU4MDM3MTYyMUE2NkYwMEEwMEJBRjUx
OSAvKiBDbGlwUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTgwMzcxNjAxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTgwMzcxNjQxQTY2RjFEMzAw
QkFGNTE5IC8qIExheWVyRnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU4MDM3MTYzMUE2NkYxRDMwMEJBRjUxOSAvKiBMYXllckZyYWdtZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk4
NDcsNiArOTg0OSw4IEBACiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1
YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTVENDA4RjcxQTdDNjMxODAwQzc4NDUwIC8qIFNW
R0ltYWdlQ2xpZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFn
ZUNsaWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcyQTdGMjAxQzZFNTcx
OTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNpbXVsYXRlZENsaWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW11bGF0ZWRDbGljay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU4MDM3MTVGMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwUmVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4MDM3MTYwMUE2NkYwMEEwMEJBRjUxOSAvKiBD
bGlwUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwUmVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODAzNzE2MzFBNjZGMUQzMDBCQUY1MTkgLyog
TGF5ZXJGcmFnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXllckZy
YWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDM0OSw2ICsyNDM1Myw4
IEBACiAJCQkJQTZEMTY5NjExMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwICovLAog
CQkJCUE2RDE2OTYzMTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290LmggKi8sCiAJCQkJOUIx
OUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovLAorCQkJCTU3MkE3RjIw
MUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICovLAorCQkJCTU3MkE3RjIyMUM2
RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi8sCiAJCQkJMzE3NDFBQUIxNjYz
NUU0NTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovLAogCQkJCTlCNTMyRUEx
MUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5jcHAgKi8sCiAJCQkJOUI1MzJFQTIx
QkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmggKi8sCkBAIC0yODA1NSw2ICsyODA2
MSw3IEBACiAJCQkJMTk3QjE4MEMxNTA2MzUzMjAwRTRBREE4IC8qIFNWR1JlbmRlcmluZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUEwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdS
ZW5kZXJpbmdJbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3NDc5MEU4MzY2RTIwMEU3
Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcyQTdGMjExQzZF
NTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIy
NzQ3QjBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGVEZWZzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzY3MDhGMjEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVyU3VwcG9ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RjQxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1JlbmRlclRy
ZWVBc1RleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE0MjcsNiArMzE0MzQsNyBAQAogCQkJCTdF
OEZBREM0MTk5QTk1QjEwMDcxNDk2OCAvKiBTdWJyZXNvdXJjZUxvYWRlckNvY29hLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFGRjhGNUYxODA3NDQyMTAwMTMyNjc0IC8qIFN1YnRsZUNyeXB0by5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0IyRDgxODBGOTkyMEVFMDA2QUU2QjIgLyogU3VkZGVu
VGVybWluYXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQk1NzJBN0YyMzFDNkU1QTY2MDA5QzYx
NDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg3NTU4QzUxM0I0
QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2MkMxMjE3QzExQUI5RTc3MDAzQzQ2MkMgLyogU3VzcGVuZGFibGVUaW1l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzk3MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggN2Y5
YWYwMTM4ZjYxM2JhMDIzYTZhYjkxNmUzNjFlOThiZGNiOGI0NC4uNTlmZTQ4NmNmYjdiNWM4ODBi
YWE2ZTIwNDUzMmM5NzJlNGI4ZGJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzcsNiAr
NzcsNyBAQAogI2luY2x1ZGUgIlNjcm9sbExhdGNoaW5nU3RhdGUuaCIKICNpbmNsdWRlICJTZWxl
Y3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaW11bGF0ZWRD
bGljay5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVz
b2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgpAQCAtMzEyLDcgKzMxMywx
MiBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBwbGF0Zm9ybUV2ZW50KQogCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoU2ltdWxhdGVk
Q2xpY2soRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgU2ltdWxhdGVkQ2xpY2tNb3VzZUV2ZW50T3B0
aW9ucyBldmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRp
b25zKQogewotICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayh0aGlz
LCB1bmRlcmx5aW5nRXZlbnQsIGV2ZW50T3B0aW9ucywgdmlzdWFsT3B0aW9ucyk7CisgICAgc2lt
dWxhdGVDbGljaygqdGhpcywgdW5kZXJseWluZ0V2ZW50LCBldmVudE9wdGlvbnMsIHZpc3VhbE9w
dGlvbnMsIFNpbXVsYXRlZENsaWNrQ3JlYXRpb25PcHRpb25zOjpGcm9tVXNlckFnZW50KTsKK30K
Kwordm9pZCBFbGVtZW50OjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrRm9yQmluZGluZ3MoRXZlbnQq
IHVuZGVybHlpbmdFdmVudCkKK3sKKyAgICBzaW11bGF0ZUNsaWNrKCp0aGlzLCB1bmRlcmx5aW5n
RXZlbnQsIFNlbmROb0V2ZW50cywgRG9Ob3RTaG93UHJlc3NlZExvb2ssIFNpbXVsYXRlZENsaWNr
Q3JlYXRpb25PcHRpb25zOjpGcm9tQmluZGluZ3MpOwogfQogCiBSZWY8Tm9kZT4gRWxlbWVudDo6
Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmIHRhcmdldERvY3VtZW50LCBDbG9uaW5nT3BlcmF0
aW9uIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2N2I2M2VhZjBmNmQxMzQ3MTk0NDQ0ODMz
OWFhOGU5NzYyNjdkMTkxLi5iYWIwNWJlMjk3NWMwOGZjMzc1Y2YzYTM3NTA0M2ZhMDRiNWQ0NjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ1OSw2ICs0NTksNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBkaXNwYXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgYm9v
bCBkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOwogICAgIHZv
aWQgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0
ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zID0gU2VuZE5vRXZlbnRzLCBTaW11bGF0ZWRDbGlja1Zp
c3VhbE9wdGlvbnMgPSBTaG93UHJlc3NlZExvb2spOworICAgIHZvaWQgZGlzcGF0Y2hTaW11bGF0
ZWRDbGlja0ZvckJpbmRpbmdzKEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQpOwogICAgIHZvaWQgZGlz
cGF0Y2hGb2N1c0luRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
bGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50KTsKICAgICB2b2lkIGRpc3BhdGNoRm9jdXNPdXRF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEVsZW1lbnQ+JiYgbmV3
Rm9jdXNlZEVsZW1lbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoUmVm
UHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggM2YxMGZkOGU4YWU3OGUxNzVjZTdj
MDQ3ZTkzNDNjYzNlZDA0MDY1MC4uMDEzOGY0NDA2MGY0MzE1YmJmODdmYTZjZTQzMmZlNDY2YjAx
NjI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTEyNSwzMSAr
MTI1LDYgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2NvcGVkRXZlbnQoTm9kZSYg
bm9kZSwgRXZlbnQmIGV2ZW50KQogICAgIFNjb3BlZEV2ZW50UXVldWU6OnNpbmdsZXRvbigpLmVu
cXVldWVFdmVudChldmVudCk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNp
bXVsYXRlZENsaWNrKEVsZW1lbnQqIGVsZW1lbnQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNp
bXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMgbW91c2VFdmVudE9wdGlvbnMsIFNpbXVsYXRl
ZENsaWNrVmlzdWFsT3B0aW9ucyB2aXN1YWxPcHRpb25zKQotewotICAgIGlmIChlbGVtZW50LT5p
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8RWxlbWVudCo+PiBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxh
dGVkQ2xpY2tzOwotICAgIGlmICghZWxlbWVudHNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcy5n
ZXQoKS5hZGQoZWxlbWVudCkuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KG1vdXNlRXZlbnRPcHRpb25zID09IFNlbmRNb3VzZU92ZXJVcERvd25FdmVudHMpCi0gICAgICAg
IGRpc3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5tb3VzZW92ZXJFdmVudCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5kZWZhdWx0Vmlldygp
LCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsKLQotICAgIGlmIChtb3VzZUV2ZW50T3B0aW9u
cyAhPSBTZW5kTm9FdmVudHMpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxh
dGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCwgZWxlbWVu
dC0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpKTsK
LSAgICBlbGVtZW50LT5zZXRBY3RpdmUodHJ1ZSwgdmlzdWFsT3B0aW9ucyA9PSBTaG93UHJlc3Nl
ZExvb2spOwotICAgIGlmIChtb3VzZUV2ZW50T3B0aW9ucyAhPSBTZW5kTm9FdmVudHMpCi0gICAg
ICAgIGRpc3BhdGNoRXZlbnQoZWxlbWVudCwgU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQsIGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXco
KSwgdW5kZXJseWluZ0V2ZW50LCBlbGVtZW50KSk7Ci0gICAgZWxlbWVudC0+c2V0QWN0aXZlKGZh
bHNlKTsKLQotICAgIC8vIGFsd2F5cyBzZW5kIGNsaWNrCi0gICAgZGlzcGF0Y2hFdmVudChlbGVt
ZW50LCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQs
IGVsZW1lbnQtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgdW5kZXJseWluZ0V2ZW50LCBlbGVt
ZW50KSk7Ci0KLSAgICBlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmdldCgpLnJl
bW92ZShlbGVtZW50KTsKLX0KLQogc3RhdGljIHZvaWQgY2FsbERlZmF1bHRFdmVudEhhbmRsZXJz
SW5UaGVCdWJibGluZ09yZGVyKEV2ZW50JiBldmVudCwgY29uc3QgRXZlbnRQYXRoJiBwYXRoKQog
ewogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIu
aAppbmRleCBiYTQzZWVkYmU0OTI1NDVjNjNiNTBlNDRmYjZiOWFmNjcxNTI3ZmViLi42NTRkOGY4
Y2I3NzkwZTBlYWE0MWZjMmEwNzdiYmE1MTU4Y2ZjNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5oCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVzcGFjZSBFdmVudERpc3BhdGNoZXIg
ewogCiBib29sIGRpc3BhdGNoRXZlbnQoTm9kZSosIEV2ZW50Jik7CiB2b2lkIGRpc3BhdGNoU2Nv
cGVkRXZlbnQoTm9kZSYsIEV2ZW50Jik7Ci12b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soRWxl
bWVudCosIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9w
dGlvbnMsIFNpbXVsYXRlZENsaWNrVmlzdWFsT3B0aW9ucyk7CiAKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlRXZlbnQuY3BwCmluZGV4IDdhMzI5YjZjZjM1YjczZDQxNjYyNGEwYWJiMjM2NzUzMTVjMmYz
YTMuLjk5NDRmYTYwZDNjNDljZTk0NWViYmY2NzkyMWE1ZTQ5NzYzYjI0NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VFdmVudC5jcHAKQEAgLTI1MSwzOCArMjUxLDQgQEAgUmVmPEV2ZW50PiBNb3VzZUV2
ZW50OjpjbG9uZUZvcihIVE1MSUZyYW1lRWxlbWVudCogaWZyYW1lKSBjb25zdAogICAgIHJldHVy
biBXVEZNb3ZlKGNsb25lZE1vdXNlRXZlbnQpOwogfQogCi1SZWY8U2ltdWxhdGVkTW91c2VFdmVu
dD4gU2ltdWxhdGVkTW91c2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBBYnN0cmFjdFZpZXcqIHZpZXcsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVu
dCwgRWxlbWVudCogdGFyZ2V0KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNpbXVsYXRl
ZE1vdXNlRXZlbnQoZXZlbnRUeXBlLCB2aWV3LCB1bmRlcmx5aW5nRXZlbnQsIHRhcmdldCkpOwot
fQotCi1TaW11bGF0ZWRNb3VzZUV2ZW50Ojp+U2ltdWxhdGVkTW91c2VFdmVudCgpCi17Ci19Ci0K
LVNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyogdmlldywgUGFzc1JlZlB0cjxFdmVudD4gdW5k
ZXJseWluZ0V2ZW50LCBFbGVtZW50KiB0YXJnZXQpCi0gICAgOiBNb3VzZUV2ZW50KGV2ZW50VHlw
ZSwgdHJ1ZSwgdHJ1ZSwgdW5kZXJseWluZ0V2ZW50ID8gdW5kZXJseWluZ0V2ZW50LT50aW1lU3Rh
bXAoKSA6IGN1cnJlbnRUaW1lKCksIHZpZXcsIDAsIDAsIDAsIDAsIDAsCi0jaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKLSAgICAgICAgICAgICAgICAgMCwgMCwKLSNlbmRpZgotICAgICAgICAgICAg
ICAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgMCwgMCwgMCwgdHJ1ZSkKLXsKLSAg
ICBpZiAoVUlFdmVudFdpdGhLZXlTdGF0ZSoga2V5U3RhdGVFdmVudCA9IGZpbmRFdmVudFdpdGhL
ZXlTdGF0ZSh1bmRlcmx5aW5nRXZlbnQuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY3RybEtleSA9IGtl
eVN0YXRlRXZlbnQtPmN0cmxLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSBrZXlTdGF0ZUV2ZW50
LT5hbHRLZXkoKTsKLSAgICAgICAgbV9zaGlmdEtleSA9IGtleVN0YXRlRXZlbnQtPnNoaWZ0S2V5
KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IGtleVN0YXRlRXZlbnQtPm1ldGFLZXkoKTsKLSAgICB9
Ci0gICAgc2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudC5nZXQoKSk7Ci0KLSAgICBp
ZiAoaXM8TW91c2VFdmVudD4odGhpcy0+dW5kZXJseWluZ0V2ZW50KCkpKSB7Ci0gICAgICAgIE1v
dXNlRXZlbnQmIG1vdXNlRXZlbnQgPSBkb3duY2FzdDxNb3VzZUV2ZW50PigqdGhpcy0+dW5kZXJs
eWluZ0V2ZW50KCkpOwotICAgICAgICBtX3NjcmVlbkxvY2F0aW9uID0gbW91c2VFdmVudC5zY3Jl
ZW5Mb2NhdGlvbigpOwotICAgICAgICBpbml0Q29vcmRpbmF0ZXMobW91c2VFdmVudC5jbGllbnRM
b2NhdGlvbigpKTsKLSAgICB9IGVsc2UgaWYgKHRhcmdldCkgewotICAgICAgICBtX3NjcmVlbkxv
Y2F0aW9uID0gdGFyZ2V0LT5zY3JlZW5SZWN0KCkuY2VudGVyKCk7Ci0gICAgICAgIGluaXRDb29y
ZGluYXRlcyhMYXlvdXRQb2ludCh0YXJnZXQtPmNsaWVudFJlY3QoKS5jZW50ZXIoKSkpOwotICAg
IH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKaW5k
ZXggMDI1NzExZWFhYjRhMmUwM2EwN2UyM2Q5YjdjNzUzY2E5Y2U5N2ViOC4uYTYzMzFhMjZmNjU5
NTM2Y2UyNjI3ZWQ4NmJhOTJlNWFhZGFmYWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCkBA
IC0zMiw5ICszMiw5IEBAIGNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIFBsYXRmb3JtTW91c2VF
dmVudDsKIAogc3RydWN0IE1vdXNlRXZlbnRJbml0IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50
SW5pdCB7Ci0gICAgaW50IGNsaWVudFggezB9OwotICAgIGludCBjbGllbnRZIHswfTsKLSAgICB1
bnNpZ25lZCBzaG9ydCBidXR0b24gezB9OworICAgIGludCBjbGllbnRYIHsgMCB9OworICAgIGlu
dCBjbGllbnRZIHsgMCB9OworICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbiB7IDAgfTsKICAgICBS
ZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQ7CiB9OwogCkBAIC0xMjksMTUgKzEyOSw2
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gbV9kYXRhVHJhbnNmZXI7CiB9
OwogCi1jbGFzcyBTaW11bGF0ZWRNb3VzZUV2ZW50IGZpbmFsIDogcHVibGljIE1vdXNlRXZlbnQg
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2ltdWxhdGVkTW91c2VFdmVudD4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBBYnN0cmFjdFZpZXcqLCBQYXNzUmVmUHRyPEV2
ZW50PiB1bmRlcmx5aW5nRXZlbnQsIEVsZW1lbnQqIHRhcmdldCk7Ci0gICAgdmlydHVhbCB+U2lt
dWxhdGVkTW91c2VFdmVudCgpOwotCi1wcml2YXRlOgotICAgIFNpbXVsYXRlZE1vdXNlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEFic3RyYWN0VmlldyosIFBhc3NSZWZQdHI8
RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgRWxlbWVudCogdGFyZ2V0KTsKLX07Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FVkVOVChNb3VzZUV2ZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMzZjhmODVm
YWUwZTI0ZmZkNGE1Zjg4ZWUwZDAyYTIyY2Y0MWU5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaW11bGF0ZWRDbGljay5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2suaCIKKworI2luY2x1ZGUgIkRhdGFUcmFuc2Zl
ci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIK
KyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2ltdWxhdGVkTW91c2VFdmVudCBmaW5hbCA6IHB1YmxpYyBNb3VzZUV2ZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNpbXVsYXRlZE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJhY3RWaWV3KiB2aWV3LCBSZWZQdHI8RXZlbnQ+
JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0YXJnZXQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaW11bGF0ZWRNb3VzZUV2ZW50KGV2ZW50VHlwZSwgdmlldywgV1RG
TW92ZSh1bmRlcmx5aW5nRXZlbnQpLCB0YXJnZXQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
U2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQWJzdHJh
Y3RWaWV3KiB2aWV3LCBSZWZQdHI8RXZlbnQ+JiYgdW5kZXJseWluZ0V2ZW50LCBFbGVtZW50JiB0
YXJnZXQpCisgICAgICAgIDogTW91c2VFdmVudChldmVudFR5cGUsIHRydWUsIHRydWUsIHVuZGVy
bHlpbmdFdmVudCA/IHVuZGVybHlpbmdFdmVudC0+dGltZVN0YW1wKCkgOiBjdXJyZW50VGltZSgp
LCB2aWV3LCAwLCAwLCAwLCAwLCAwLAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAg
ICAgICAgICAgICAgICAwLCAwLAorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgMCwgMCwgMCwgdHJ1ZSkKKyAgICB7CisgICAgICAgIGlm
IChVSUV2ZW50V2l0aEtleVN0YXRlKiBrZXlTdGF0ZUV2ZW50ID0gZmluZEV2ZW50V2l0aEtleVN0
YXRlKHVuZGVybHlpbmdFdmVudC5nZXQoKSkpIHsKKyAgICAgICAgICAgIG1fY3RybEtleSA9IGtl
eVN0YXRlRXZlbnQtPmN0cmxLZXkoKTsKKyAgICAgICAgICAgIG1fYWx0S2V5ID0ga2V5U3RhdGVF
dmVudC0+YWx0S2V5KCk7CisgICAgICAgICAgICBtX3NoaWZ0S2V5ID0ga2V5U3RhdGVFdmVudC0+
c2hpZnRLZXkoKTsKKyAgICAgICAgICAgIG1fbWV0YUtleSA9IGtleVN0YXRlRXZlbnQtPm1ldGFL
ZXkoKTsKKyAgICAgICAgfQorICAgICAgICBzZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2
ZW50LmdldCgpKTsKKworICAgICAgICBpZiAoaXM8TW91c2VFdmVudD4odGhpcy0+dW5kZXJseWlu
Z0V2ZW50KCkpKSB7CisgICAgICAgICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNh
c3Q8TW91c2VFdmVudD4oKnRoaXMtPnVuZGVybHlpbmdFdmVudCgpKTsKKyAgICAgICAgICAgIG1f
c2NyZWVuTG9jYXRpb24gPSBtb3VzZUV2ZW50LnNjcmVlbkxvY2F0aW9uKCk7CisgICAgICAgICAg
ICBpbml0Q29vcmRpbmF0ZXMobW91c2VFdmVudC5jbGllbnRMb2NhdGlvbigpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1fc2NyZWVuTG9jYXRpb24gPSB0YXJnZXQuc2NyZWVuUmVj
dCgpLmNlbnRlcigpOworICAgICAgICAgICAgaW5pdENvb3JkaW5hdGVzKExheW91dFBvaW50KHRh
cmdldC5jbGllbnRSZWN0KCkuY2VudGVyKCkpKTsKKyAgICAgICAgfQorICAgIH0KKworfTsKKwor
c3RhdGljIHZvaWQgc2ltdWxhdGVNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFbGVtZW50JiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11bGF0ZWRD
bGlja0NyZWF0aW9uT3B0aW9ucyBjcmVhdGlvbk9wdGlvbnMpCit7CisgICAgYXV0byBldmVudCA9
IFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGVsZW1lbnQuZG9jdW1lbnQo
KS5kZWZhdWx0VmlldygpLCB1bmRlcmx5aW5nRXZlbnQsIGVsZW1lbnQpOworICAgIGlmIChjcmVh
dGlvbk9wdGlvbnMgPT0gU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9wdGlvbnM6OkZyb21CaW5kaW5n
cykKKyAgICAgICAgZXZlbnQuZ2V0KCkuc2V0VW50cnVzdGVkKCk7CisgICAgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaEV2ZW50KCZlbGVtZW50LCBldmVudC5nZXQoKSk7Cit9CisKK3ZvaWQgc2lt
dWxhdGVDbGljayhFbGVtZW50JiBlbGVtZW50LCBFdmVudCogdW5kZXJseWluZ0V2ZW50LCBTaW11
bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zIG1vdXNlRXZlbnRPcHRpb25zLCBTaW11bGF0ZWRD
bGlja1Zpc3VhbE9wdGlvbnMgdmlzdWFsT3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9w
dGlvbnMgY3JlYXRpb25PcHRpb25zKQoreworICAgIGlmIChlbGVtZW50LmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxFbGVtZW50Kj4+IGVsZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3M7Cisg
ICAgaWYgKCFlbGVtZW50c0Rpc3BhdGNoaW5nU2ltdWxhdGVkQ2xpY2tzLmdldCgpLmFkZCgmZWxl
bWVudCkuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1vdXNlRXZlbnRP
cHRpb25zID09IFNlbmRNb3VzZU92ZXJVcERvd25FdmVudHMpCisgICAgICAgIHNpbXVsYXRlTW91
c2VFdmVudChldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQsIGVsZW1lbnQsIHVuZGVybHlpbmdF
dmVudCwgY3JlYXRpb25PcHRpb25zKTsKKworICAgIGlmIChtb3VzZUV2ZW50T3B0aW9ucyAhPSBT
ZW5kTm9FdmVudHMpCisgICAgICAgIHNpbXVsYXRlTW91c2VFdmVudChldmVudE5hbWVzKCkubW91
c2Vkb3duRXZlbnQsIGVsZW1lbnQsIHVuZGVybHlpbmdFdmVudCwgY3JlYXRpb25PcHRpb25zKTsK
KyAgICBlbGVtZW50LnNldEFjdGl2ZSh0cnVlLCB2aXN1YWxPcHRpb25zID09IFNob3dQcmVzc2Vk
TG9vayk7CisgICAgaWYgKG1vdXNlRXZlbnRPcHRpb25zICE9IFNlbmROb0V2ZW50cykKKyAgICAg
ICAgc2ltdWxhdGVNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQsIGVsZW1lbnQs
IHVuZGVybHlpbmdFdmVudCwgY3JlYXRpb25PcHRpb25zKTsKKyAgICBlbGVtZW50LnNldEFjdGl2
ZShmYWxzZSk7CisKKyAgICBzaW11bGF0ZU1vdXNlRXZlbnQoZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIGVsZW1lbnQsIHVuZGVybHlpbmdFdmVudCwgY3JlYXRpb25PcHRpb25zKTsKKworICAgIGVs
ZW1lbnRzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MuZ2V0KCkucmVtb3ZlKCZlbGVtZW50KTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NpbXVsYXRlZENsaWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltdWxhdGVkQ2xpY2su
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NzE1NGE5ZjlmMjMwYWNhMjRiNGYwOWUzY2RjOWNmNmY1NzY2YjMzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXVsYXRlZENsaWNrLmgKQEAg
LTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2ltdWxhdGVkQ2xpY2tfaAorI2RlZmluZSBTaW11bGF0ZWRDbGlja19oCisK
KyNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbGVtZW50OworY2xhc3MgRXZlbnQ7CisKK2VudW0gY2xhc3MgU2ltdWxhdGVk
Q2xpY2tDcmVhdGlvbk9wdGlvbnMgeworICAgIEZyb21CaW5kaW5ncywKKyAgICBGcm9tVXNlckFn
ZW50Cit9OworCit2b2lkIHNpbXVsYXRlQ2xpY2soRWxlbWVudCYsIEV2ZW50KiB1bmRlcmx5aW5n
RXZlbnQsIFNpbXVsYXRlZENsaWNrTW91c2VFdmVudE9wdGlvbnMsIFNpbXVsYXRlZENsaWNrVmlz
dWFsT3B0aW9ucywgU2ltdWxhdGVkQ2xpY2tDcmVhdGlvbk9wdGlvbnMpOworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvKiBTaW11bGF0ZWRDbGlja19oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGNlMzVhMGZhMGNhNDhmMTNkNmI2ODI3YjU5Yjg3OWY2
NmJmMTQ0ZTQuLmZhNzAyZDkwMDEyM2FkZTUyOGY3ZDFkYWIyMjg3ZmUzZmFlZjU2NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC04MDksNyArODA5LDcgQEAgdm9pZCBIVE1M
RWxlbWVudDo6c2V0U3BlbGxjaGVjayhib29sIGVuYWJsZSkKIAogdm9pZCBIVE1MRWxlbWVudDo6
Y2xpY2soKQogewotICAgIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2sobnVsbHB0ciwgU2VuZE5vRXZl
bnRzLCBEb05vdFNob3dQcmVzc2VkTG9vayk7CisgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGlja0Zv
ckJpbmRpbmdzKG51bGxwdHIpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50OjphY2Nlc3NLZXlBY3Rp
b24oYm9vbCBzZW5kTW91c2VFdmVudHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWE2MzA3OWM0ODUwZGUyODE0MmUzYjky
M2JiYmRmZTc1Y2IxMTE3MC4uMTYwMThhZjBmOTg2MjQxNzZhYjk0ZTI0ZTJmZmIyNzNhMmEwMDBk
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAyLTEyICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmaW5lIFNpbXVsYXRlZE1vdXNlRXZlbnQgdG8g
c3VwcG9ydCBFdmVudC5pc1RydXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NDEzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ2MTYyNDY+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBpbXBvcnRl
ZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVkLmh0bWw6CisKIDIwMTYt
MDItMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNz
aW9uKHIxOTY1NjMpOiBJdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gY2FsbCB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lciB3aXRob3V0IGFuIGV4cGxpY2l0ICd0aGlzJwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVz
dGVkLWV4cGVjdGVkLnR4dAppbmRleCA2Zjc2YzVjMDI4ODFmMDM5MTY0ZWFkZDQ0Mjg4NGI4MDc0
NGU5NDk0Li40NzNmZTZmM2RmMThhZTczYjdmMDRjNTUwYzM2MmE2ZGViZTYzNjlhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10cnVzdGVk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50
cy9ldmVudC10cnVzdGVkLWV4cGVjdGVkLnR4dApAQCAtOCw2ICs4LDcgQEAgUEFTUyBjcmVhdGVB
bmRJbml0RXZlbnQoKS5pc1RydXN0ZWQgaXMgZmFsc2UKIFBBU1Mgb3JpZ2luYWxFdmVudC5pc1Ry
dXN0ZWQgaXMgdHJ1ZQogUEFTUyByZWRpc3BhdGNoZWQgaXMgdHJ1ZQogUEFTUyBvcmlnaW5hbEV2
ZW50LmlzVHJ1c3RlZCBpcyBmYWxzZQorUEFTUyBvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCBpcyBm
YWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVudC10
cnVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9ibGluay9mYXN0L2V2ZW50cy9ldmVu
dC10cnVzdGVkLmh0bWwKaW5kZXggYjFkMTQzNDc1NTE5MjRkMmU0NzUxYWQyY2RlNDlkYmFkODk0
NjAyOC4uN2RlY2EwZjE2Y2JjMjhlMDgwZDY4MmNjY2YyOGY5OTdlZTc1ZWYxNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvYmxpbmsvZmFzdC9ldmVudHMvZXZlbnQtdHJ1c3RlZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL2JsaW5rL2Zhc3QvZXZlbnRzL2V2ZW50LXRy
dXN0ZWQuaHRtbApAQCAtMzYsNiArMzYsMTIgQEAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewog
ICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChvcmlnaW5hbEV2ZW50KTsKICAgICBzaG91bGRCZVRy
dWUoInJlZGlzcGF0Y2hlZCIpOwogICAgIHNob3VsZEJlRmFsc2UoIm9yaWdpbmFsRXZlbnQuaXNU
cnVzdGVkIik7CisKKyAgICBvcmlnaW5hbEV2ZW50ID0gbnVsbDsKKyAgICBlbGVtZW50LnJlbW92
ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVkaXNwYXRjaCk7CisgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCdjbGljaycsIG9yaWdpbmFsRGlzcGF0Y2gpOworICAgIGVsZW1lbnQuY2xpY2so
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJvcmlnaW5hbEV2ZW50LmlzVHJ1c3RlZCIpOwogfQogCiA8
L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>