<?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>105066</bug_id>
          
          <creation_ts>2012-12-14 16:05:27 -0800</creation_ts>
          <short_desc>[HTMLTemplateElement] Disallow cycles within template content</short_desc>
          <delta_ts>2013-01-23 00:42:25 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103547</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>mifenton</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>791939</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-14 16:05:27 -0800</bug_when>
    <thetext>[HTMLTemplateElement] Disallow cycles within template content</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791944</commentid>
    <comment_count>1</comment_count>
      <attachid>179551</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-14 16:13:11 -0800</bug_when>
    <thetext>Created attachment 179551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791957</commentid>
    <comment_count>2</comment_count>
      <attachid>179554</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-14 16:35:12 -0800</bug_when>
    <thetext>Created attachment 179554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793923</commentid>
    <comment_count>3</comment_count>
      <attachid>179554</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-18 12:17:49 -0800</bug_when>
    <thetext>Comment on attachment 179554
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        In order to disallow cycles, the HTMLTemplateElement.content
&gt; +        DocumentFragment needs a pointer to its host. The approach here
&gt; +        creates a new subclass with a host pointer and a new virtual method
&gt; +        to DocumentFragment to identify the subclass.

So overall this patch looks OK.  Could you speak more about the decision to use a subclass instead of just augmenting DocumentFragment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793932</commentid>
    <comment_count>4</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-18 12:21:56 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 179554 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179554&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        In order to disallow cycles, the HTMLTemplateElement.content
&gt; &gt; +        DocumentFragment needs a pointer to its host. The approach here
&gt; &gt; +        creates a new subclass with a host pointer and a new virtual method
&gt; &gt; +        to DocumentFragment to identify the subclass.
&gt; 
&gt; So overall this patch looks OK.  Could you speak more about the decision to use a subclass instead of just augmenting DocumentFragment?

I think we should just add the pointer to DocumentFragment and not have the &quot;virtual avoidance&quot; problem. isTemplateContents()  can then be m_host != 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793943</commentid>
    <comment_count>5</comment_count>
      <attachid>179554</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-18 12:36:43 -0800</bug_when>
    <thetext>Comment on attachment 179554
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt;&gt; +        to DocumentFragment to identify the subclass.
&gt;&gt; 
&gt;&gt; So overall this patch looks OK.  Could you speak more about the decision to use a subclass instead of just augmenting DocumentFragment?
&gt; 
&gt; I think we should just add the pointer to DocumentFragment and not have the &quot;virtual avoidance&quot; problem. isTemplateContents()  can then be m_host != 0.

Just trying to avoid adding memory footprint where it&apos;s not needed. But the obvious counter-argument is that there aren&apos;t that many DocumentFragments in the world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794088</commentid>
    <comment_count>6</comment_count>
      <attachid>179554</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-18 14:57:04 -0800</bug_when>
    <thetext>Comment on attachment 179554
Patch

After more reading of the existing code and chatting with esprehn on IRC I&apos;m inclined to try to combine this with ShadowRoot&apos;s similar need, hopefully in a way that doesn&apos;t further confuse what a &quot;host&quot; is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799506</commentid>
    <comment_count>7</comment_count>
      <attachid>181193</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-03 11:20:51 -0800</bug_when>
    <thetext>Created attachment 181193
Tackle shadow dom too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799508</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-03 11:23:04 -0800</bug_when>
    <thetext>+dominicc, who&apos;s with me that a subclass is useful here.

I&apos;ve also updated the patch to tackle shadow dom at the same time. I&apos;d be fine with delaying that shadow dom related change until a subsequent patch, but it seems small and is corner-case-y enough that I&apos;m not worried about it breaking anything (especially since my shadow dom test case currently crashes the browser).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799536</commentid>
    <comment_count>9</comment_count>
      <attachid>181193</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-03 12:00:31 -0800</bug_when>
    <thetext>Comment on attachment 181193
Tackle shadow dom too

Attachment 181193 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15627958</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799546</commentid>
    <comment_count>10</comment_count>
      <attachid>181193</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-01-03 12:10:50 -0800</bug_when>
    <thetext>Comment on attachment 181193
Tackle shadow dom too

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

&gt; Source/WebCore/dom/ContainerNode.cpp:169
&gt;          if (newChild-&gt;contains(newParent))
&gt;              return HIERARCHY_REQUEST_ERR;
&gt; +        if (needsHostElementContainmentCheck(newParent) &amp;&amp; newChild-&gt;containsIncludingHostElements(newParent))

Can we only call the appropriate contains call instead of walking up the tree twice?

&gt; Source/WebCore/dom/Node.cpp:1078
&gt; +            node = node-&gt;parentOrHostNode();

Seems like we need to rename this to parentOrShadowHostNode. Fine to do so as a separate patch, but a FIXME as part of this one would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799555</commentid>
    <comment_count>11</comment_count>
      <attachid>181193</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-03 12:18:51 -0800</bug_when>
    <thetext>Comment on attachment 181193
Tackle shadow dom too

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

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:169
&gt;&gt; +        if (needsHostElementContainmentCheck(newParent) &amp;&amp; newChild-&gt;containsIncludingHostElements(newParent))
&gt; 
&gt; Can we only call the appropriate contains call instead of walking up the tree twice?

Done, moved into another helper function.

&gt;&gt; Source/WebCore/dom/Node.cpp:1078
&gt;&gt; +            node = node-&gt;parentOrHostNode();
&gt; 
&gt; Seems like we need to rename this to parentOrShadowHostNode. Fine to do so as a separate patch, but a FIXME as part of this one would be nice.

Added a FIXME to Node.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799558</commentid>
    <comment_count>12</comment_count>
      <attachid>181202</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-03 12:19:27 -0800</bug_when>
    <thetext>Created attachment 181202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799560</commentid>
    <comment_count>13</comment_count>
      <attachid>181202</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-01-03 12:22:52 -0800</bug_when>
    <thetext>Comment on attachment 181202
Patch

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

&gt; Source/WebCore/dom/ContainerNode.cpp:155
&gt; +static inline bool needsHostElementContainmentCheck(const Node* node)
&gt; +{
&gt; +    return node-&gt;isInShadowTree() || isInTemplateContent(node);
&gt; +}

Nit: we don&apos;t need this anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799564</commentid>
    <comment_count>14</comment_count>
      <attachid>181203</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-03 12:27:19 -0800</bug_when>
    <thetext>Created attachment 181203
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799596</commentid>
    <comment_count>15</comment_count>
      <attachid>181203</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 13:18:18 -0800</bug_when>
    <thetext>Comment on attachment 181203
Patch for landing

Clearing flags on attachment: 181203

Committed r138730: &lt;http://trac.webkit.org/changeset/138730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799597</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-03 13:18:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799635</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-03 13:44:08 -0800</bug_when>
    <thetext>This broke Mac builds:

http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20%28Build%29/builds/6662/steps/compile-webkit/logs/stdio

/Volumes/Data/slave/mountainlion-debug/build/Source/WebCore/dom/ContainerNode.cpp:147:5: error: use of undeclared identifier &apos;UNUSED&apos;
    UNUSED(node);
    ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799638</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-03 13:45:45 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; This broke Mac builds:
&gt; 
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20%28Build%29/builds/6662/steps/compile-webkit/logs/stdio
&gt; 
&gt; /Volumes/Data/slave/mountainlion-debug/build/Source/WebCore/dom/ContainerNode.cpp:147:5: error: use of undeclared identifier &apos;UNUSED&apos;
&gt;     UNUSED(node);
&gt;     ^

Sorry for the breakage, already fixed in http://trac.webkit.org/changeset/138731</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801127</commentid>
    <comment_count>19</comment_count>
      <attachid>181193</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-06 18:12:33 -0800</bug_when>
    <thetext>Comment on attachment 181193
Tackle shadow dom too

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:5904
&gt; +		C65046A9167BFB5500CC2A4D /* TemplateContentDocumentFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = C65046A8167BFB5500CC2A4D /* TemplateContentDocumentFragment.h */; };

Sort xcode proj?

&gt; Source/WebCore/dom/Document.h:1195
&gt; +    const Document* templateContentsOwnerDocument() const;

Why is this const Document*?

&gt; Source/WebCore/dom/Node.cpp:1062
&gt; +    for (; node; node = node-&gt;parentOrHostNode()) {

Neat.

&gt; LayoutTests/fast/dom/HTMLTemplateElement/cycles-expected.txt:6
&gt; +PASS template.content.appendChild(template) threw exception Error: HierarchyRequestError: DOM Exception 3.

I assume appendChild, etc. that does not throw HierarchyRequestError is covered by other tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801147</commentid>
    <comment_count>20</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2013-01-06 20:56:49 -0800</bug_when>
    <thetext>*** Bug 105474 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801594</commentid>
    <comment_count>21</comment_count>
      <attachid>181193</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-07 13:26:40 -0800</bug_when>
    <thetext>Comment on attachment 181193
Tackle shadow dom too

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

&gt;&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:5904
&gt;&gt; +		C65046A9167BFB5500CC2A4D /* TemplateContentDocumentFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = C65046A8167BFB5500CC2A4D /* TemplateContentDocumentFragment.h */; };
&gt; 
&gt; Sort xcode proj?

This part of the file is sorted by the hash thingy, which I think is working as intended.

&gt;&gt; Source/WebCore/dom/Document.h:1195
&gt;&gt; +    const Document* templateContentsOwnerDocument() const;
&gt; 
&gt; Why is this const Document*?

Because sometimes it returns |this|, and since it&apos;s a const method, |this| is a const Document*. Could const_cast that away, but it didn&apos;t seem necessary.

&gt;&gt; LayoutTests/fast/dom/HTMLTemplateElement/cycles-expected.txt:6
&gt;&gt; +PASS template.content.appendChild(template) threw exception Error: HierarchyRequestError: DOM Exception 3.
&gt; 
&gt; I assume appendChild, etc. that does not throw HierarchyRequestError is covered by other tests?

Huh, looks like we could use more tests of that sort, indeed. Gave myself a todo item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813956</commentid>
    <comment_count>22</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-23 00:42:25 -0800</bug_when>
    <thetext>*** Bug 103214 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179551</attachid>
            <date>2012-12-14 16:13:11 -0800</date>
            <delta_ts>2012-12-14 16:35:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105066-20121214161030.patch</filename>
            <type>text/plain</type>
            <size>15180</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUxMmFiZWVjZDQ3ZmYx
MDVkNWRlYTdlMzA4ZmVhN2EwODU1ZGMyMC4uNDgzYmZlNTk1Y2IwZmY4MzA5MmJjN2I2NWE2ZDc2
NGNkNjhjZWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTEyLTE0ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtIVE1MVGVtcGxhdGVFbGVt
ZW50XSBEaXNhbGxvdyBjeWNsZXMgd2l0aGluIHRlbXBsYXRlIGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTA2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN5Y2xlcyBpbiA8dGVtcGxhdGU+
IGNvbnRlbnQgYXJlbid0IHF1aXRlIGFzIGJhZCBhcyBjeWNsZXMgaW4gbm9ybWFsCisgICAgICAg
IERPTSB0cmVlcywgYnV0IHRoZXkgY2FuIGVhc2lseSBjYXVzZSBjcmFzaGVzLCBlLmcuIGluIGNs
b25lTm9kZSBhbmQKKyAgICAgICAgaW5uZXJIVE1MLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRp
c2FsbG93IGN5Y2xlcywgdGhlIEhUTUxUZW1wbGF0ZUVsZW1lbnQuY29udGVudAorICAgICAgICBE
b2N1bWVudEZyYWdtZW50IG5lZWRzIGEgcG9pbnRlciB0byBpdHMgaG9zdC4gVGhlIGFwcHJvYWNo
IGhlcmUKKyAgICAgICAgY3JlYXRlcyBhIG5ldyBzdWJjbGFzcyB3aXRoIGEgaG9zdCBwb2ludGVy
IGFuZCBhIG5ldyB2aXJ0dWFsIG1ldGhvZAorICAgICAgICB0byBEb2N1bWVudEZyYWdtZW50IHRv
IGlkZW50aWZ5IHRoZSBzdWJjbGFzcy4KKworICAgICAgICBUbyBhdm9pZCB1bm5lY2Vzc2FyeSB2
aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzLCBhbHNvIGNoYW5nZWQgaG93CisgICAgICAgIERvY3VtZW50
Ojp0ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCB3b3JrcyB0byBhbGxvdyBmYXN0IGlubGlu
ZWQKKyAgICAgICAgYWNjZXNzIGFuZCBhdm9pZCBsYXp5IGNyZWF0aW9uIHdoZW4gbm90IG5lZWRl
ZC4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy5o
dG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250YWluc0luY2x1ZGluZ1RlbXBsYXRlcyk6IFNwZWNpYWxpemVkIHZlcnNpb24gb2YgTm9k
ZTo6Y29udGFpbnMgdGhhdCBrbm93cyBob3cgdG8ganVtcCBvdmVyIHRlbXBsYXRlIGNvbnRlbnQg
Ym91bmRhcmllcy4KKyAgICAgICAgKFdlYkNvcmU6OmlzSW5UZW1wbGF0ZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y2hlY2tBY2NlcHRDaGlsZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVUZW1wbGF0ZUNvbnRlbnRz
T3duZXJEb2N1bWVudCk6IFJlbmFtZWQgdG8gbWFrZSBjbGVhciB0aGF0IGl0IGxhemlseSBjcmVh
dGVzIHRoZSBEb2N1bWVudC4gVXBkYXRlZCBhbGwgZXhpc3RpbmcgY2FsbGVycyB0byBjYWxsIHRo
aXMgbWV0aG9kLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRlbXBsYXRlQ29udGVudHNPd25lckRvY3Vt
ZW50KTogRmFzdCwgaW5saW5lZCBhY2Nlc3NvciBmb3IgdXNlIGluIGNoZWNrQWNjZXB0Q2hpbGQo
KS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRGcmFnbWVudDo6aXNUZW1wbGF0ZUNvbnRlbnQpOgorICAgICAgICAqIGRvbS9UZW1w
bGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoVGVtcGxhdGVD
b250ZW50RG9jdW1lbnRGcmFnbWVudCk6IFN1YmNsYXNzIG9mIERvY3VtZW50RnJhZ21lbnQgd2hp
Y2ggc3RvcmVzIGl0cyBob3N0IHRlbXBsYXRlIGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpU
ZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudDo6aG9zdCk6CisgICAgICAgIChXZWJD
b3JlOjpUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50OjpUZW1wbGF0ZUNvbnRlbnREb2N1
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKToKKyAgICAgICAgKiBodG1s
L0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRlbXBsYXRl
RWxlbWVudDo6Y29udGVudCk6IENvbnN0cnVjdCB0aGUgbmV3IHN1YmNsYXNzLgorCiAyMDEyLTEy
LTE0ICBBbnRvbiBWYXl2b2QgIDxhdmF5dm9kQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXh0
IEF1dG9zaXppbmc6IENvbnNpZGVyIGlubGluZS1ibG9jayBhbmQgaW5saW5lLXRhYmxlIGVsZW1l
bnRzIHRvIGJlIGF1dG9zaXppbmcgY2x1c3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKaW5kZXggNjMwYThmZGFmMGIyZTZkNGRjYTE2Nzk4ZWZjOWNjNTEwMzMyOTgzYi4uMGUw
NzFhNDgwYTVkZTA0MjQ5YzE1MWY1NmU3YTgzYzBmNzUzYWQ4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1l
LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5o
IgorI2luY2x1ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTEzNyw2
ICsxMzgsMjggQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRUeXBlQWxsb3dlZChDb250YWlu
ZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIGNoaWxkKQogICAgIHJldHVybiB0cnVlOwogfQogCisj
aWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCitzdGF0aWMgaW5saW5lIGJvb2wgY29udGFpbnNJ
bmNsdWRpbmdUZW1wbGF0ZXMoTm9kZSogcGFyZW50LCBOb2RlKiBjaGlsZCkKK3sKKyAgICBjb25z
dCBOb2RlKiBub2RlID0gY2hpbGQ7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKG5v
ZGUgPT0gcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChub2Rl
LT5pc0RvY3VtZW50RnJhZ21lbnQoKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudEZyYWdt
ZW50Kj4obm9kZSktPmlzVGVtcGxhdGVDb250ZW50KCkpCisgICAgICAgICAgICBub2RlID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudCo+KG5vZGUpLT5o
b3N0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2Rl
KCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlz
SW5UZW1wbGF0ZUNvbnRlbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+ZG9jdW1l
bnQoKSk7CisgICAgcmV0dXJuIG5vZGUtPmRvY3VtZW50KCkgPT0gbm9kZS0+ZG9jdW1lbnQoKS0+
dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgaW5s
aW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGlsZChDb250YWluZXJOb2RlKiBuZXdQYXJl
bnQsIE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCkKIHsKICAgICAvLyBOb3QgbWVudGlv
bmVkIGluIHNwZWM6IHRocm93IE5PVF9GT1VORF9FUlIgaWYgbmV3Q2hpbGQgaXMgbnVsbApAQCAt
MTUwLDYgKzE3MywxMCBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRD
aGlsZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ldwogICAgICAgICBBU1NFUlQo
aXNDaGlsZFR5cGVBbGxvd2VkKG5ld1BhcmVudCwgbmV3Q2hpbGQpKTsKICAgICAgICAgaWYgKG5l
d0NoaWxkLT5jb250YWlucyhuZXdQYXJlbnQpKQogICAgICAgICAgICAgcmV0dXJuIEhJRVJBUkNI
WV9SRVFVRVNUX0VSUjsKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKKyAgICAgICAgaWYg
KGlzSW5UZW1wbGF0ZUNvbnRlbnQobmV3UGFyZW50KSAmJiBjb250YWluc0luY2x1ZGluZ1RlbXBs
YXRlcyhuZXdDaGlsZCwgbmV3UGFyZW50KSkKKyAgICAgICAgICAgIHJldHVybiBISUVSQVJDSFlf
UkVRVUVTVF9FUlI7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNzEs
NiArMTk4LDExIEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29kZSBjaGVja0FjY2VwdENoaWxk
KENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3CiAgICAgfSBlbHNlIGlmICghaXND
aGlsZFR5cGVBbGxvd2VkKG5ld1BhcmVudCwgbmV3Q2hpbGQpKQogICAgICAgICByZXR1cm4gSElF
UkFSQ0hZX1JFUVVFU1RfRVJSOwogCisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisgICAg
aWYgKGlzSW5UZW1wbGF0ZUNvbnRlbnQobmV3UGFyZW50KSAmJiBjb250YWluc0luY2x1ZGluZ1Rl
bXBsYXRlcyhuZXdDaGlsZCwgbmV3UGFyZW50KSkKKyAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9S
RVFVRVNUX0VSUjsKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDE1NGMyMzI1MDM2YjJjMzg3ZjdiZTk3MTE2MGFhNjViMmJiYTgwM2YuLmZh
ZDg1NmUyZWRlNDczMzcyZWY2NTM2OGZiOGE3ZjVlMTNjMzNjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNTkyNywxOCArNTkyNywxNSBAQCBMb2NhbGUmIERvY3VtZW50OjpnZXRDYWNo
ZWRMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB9CiAKICNpZiBFTkFCTEUoVEVN
UExBVEVfRUxFTUVOVCkKLURvY3VtZW50KiBEb2N1bWVudDo6dGVtcGxhdGVDb250ZW50c093bmVy
RG9jdW1lbnQoKQorRG9jdW1lbnQqIERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZUNvbnRlbnRzT3du
ZXJEb2N1bWVudCgpCiB7Ci0gICAgLy8gSWYgRE9DVU1FTlQgZG9lcyBub3QgaGF2ZSBhIGJyb3dz
aW5nIGNvbnRleHQsIExldCBURU1QTEFURSBDT05URU5UUyBPV05FUiBiZSBET0NVTUVOVCBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gdGhp
czsKKyAgICBpZiAoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGVtcGxhdGVDb250ZW50c093
bmVyRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQqPihkb2N1
bWVudCk7CiAKLSAgICBpZiAoIW1fdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQpIHsKLSAg
ICAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgICAgICBtX3RlbXBsYXRlQ29udGVu
dHNPd25lckRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgYmxhbmtVUkwoKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQg
PSBEb2N1bWVudDo6Y3JlYXRlKDAsIGJsYW5rVVJMKCkpOwotICAgIH0KKyAgICBpZiAoaXNIVE1M
RG9jdW1lbnQoKSkKKyAgICAgICAgbV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCA9IEhU
TUxEb2N1bWVudDo6Y3JlYXRlKDAsIGJsYW5rVVJMKCkpOworICAgIGVsc2UKKyAgICAgICAgbV90
ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgYmxhbmtV
UkwoKSk7CiAKICAgICByZXR1cm4gbV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudC5nZXQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDk5NGY2MWNlNTMxMjU0Y2MyZmI0NGUxMDll
ZmMxYTUyYzc1ZjY4ZS4uMDVlMTVmOTMxMjljNzhhMDcyYTA0NWY3ZTc4NTUzNDNjODgxYWU4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTExNzgsNyArMTE3OCw4IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgRG9jdW1lbnQqIHRlbXBsYXRl
Q29udGVudHNPd25lckRvY3VtZW50KCk7CisgICAgY29uc3QgRG9jdW1lbnQqIHRlbXBsYXRlQ29u
dGVudHNPd25lckRvY3VtZW50KCkgY29uc3Q7CisgICAgRG9jdW1lbnQqIGVuc3VyZVRlbXBsYXRl
Q29udGVudHNPd25lckRvY3VtZW50KCk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwpAQCAtMTU1NSw2
ICsxNTU2LDE3IEBAIGlubGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlSZW1vdmVQZW5kaW5nU2hl
ZXRJZk5lZWRlZCgpCiAgICAgICAgIGRpZFJlbW92ZUFsbFBlbmRpbmdTdHlsZXNoZWV0KCk7CiB9
CiAKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKK2lubGluZSBjb25zdCBEb2N1bWVudCog
RG9jdW1lbnQ6OnRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCkgY29uc3QKK3sKKyAgICAv
LyBJZiBET0NVTUVOVCBkb2VzIG5vdCBoYXZlIGEgYnJvd3NpbmcgY29udGV4dCwgTGV0IFRFTVBM
QVRFIENPTlRFTlRTIE9XTkVSIGJlIERPQ1VNRU5UIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAg
ICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiB0aGlzOworCisgICAgcmV0dXJuIG1fdGVt
cGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQuZ2V0KCk7Cit9CisjZW5kaWYKKwogLy8gUHV0IHRo
ZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmlu
aXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbS4KIAogaW5saW5lIGJvb2wg
Tm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmgKaW5kZXggODFhZWI4YWQ4OWE1Mzc4NGFhYzdlYzM0Y2I1OWM5ZTBkM2RlOThkYS4uMTMy
MTM4ODY2Y2RmZWM5NTNjOGMwMGYzZDc5MTdiZTUwNmY3NzAxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICBib29sIHBh
cnNlWE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNj
cmlwdGluZ1Blcm1pc3Npb24gPSBBbGxvd1NjcmlwdGluZ0NvbnRlbnQpOwogICAgIAogICAgIHZp
cnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZW1wbGF0ZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCosIENv
bnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE5
MDBiZWI3NWExOTY2ZmI1NzgwYzYwY2ZlNzJiZTgzZGFkNGM4OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudF9o
CisjZGVmaW5lIFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnRfaAorCisjaWYgRU5BQkxF
KFRFTVBMQVRFX0VMRU1FTlQpCisKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVu
dCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50PiBjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBFbGVtZW50KiBob3N0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBob3N0KSk7
CisgICAgfQorCisgICAgY29uc3QgRWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9z
dDsgfQorCitwcml2YXRlOgorICAgIFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBFbGVtZW50KiBob3N0KQorICAgICAgICA6IERvY3VtZW50
RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZURvY3VtZW50RnJhZ21lbnQpCisgICAgICAgICwgbV9o
b3N0KGhvc3QpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBpc1RlbXBsYXRlQ29u
dGVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGNvbnN0IEVsZW1l
bnQqIG1faG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShURU1QTEFURV9FTEVNRU5UKQorCisjZW5kaWYgLy8gVGVtcGxhdGVDb250ZW50RG9jdW1l
bnRGcmFnbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggNjNhYmI1ZjU0MWRk
ODAyNDA1MjdiNjY2NDQzNzdlODY3ZTFlNDAxNC4uMDA4MmM2M2JjZDU1OWJlMzkyZmZmODQxNTBl
Mjg2MjdhZjg2MDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtOTk2LDcgKzk5
Niw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbm5l
ck91dGVySFRNTChjb25zdCBTdHJpbmcmIG1hcmt1CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
Y29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCk7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQp
CiAgICAgaWYgKGNvbnRleHRFbGVtZW50LT5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSkKLSAgICAg
ICAgZG9jdW1lbnQgPSBkb2N1bWVudC0+dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKTsK
KyAgICAgICAgZG9jdW1lbnQgPSBkb2N1bWVudC0+ZW5zdXJlVGVtcGxhdGVDb250ZW50c093bmVy
RG9jdW1lbnQoKTsKICNlbmRpZgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCmluZGV4IGVhMDcxMzIyNDUzYzI2MmI1NDAy
OWZjZjkyYmYyZGUwZTY1YzU0NDYuLjY2MmJmMWQxZmQ5ZTE5NTk2MTFkMzdkNjNiODU0NWIyYzlk
NjI5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1
ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJtYXJrdXAu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsNyArNjMsNyBAQCBQYXNzUmVmUHRyPEhU
TUxUZW1wbGF0ZUVsZW1lbnQ+IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJgogRG9jdW1lbnRGcmFnbWVudCogSFRNTFRlbXBsYXRlRWxlbWVudDo6Y29udGVu
dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvbnRlbnQpCi0gICAgICAgIG1fY29udGVudCA9IERv
Y3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50KCktPnRlbXBsYXRlQ29udGVudHNP
d25lckRvY3VtZW50KCkpOworICAgICAgICBtX2NvbnRlbnQgPSBUZW1wbGF0ZUNvbnRlbnREb2N1
bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQoKS0+ZW5zdXJlVGVtcGxhdGVDb250ZW50c093
bmVyRG9jdW1lbnQoKSwgdGhpcyk7CiAKICAgICByZXR1cm4gbV9jb250ZW50LmdldCgpOwogfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDJjY2RkYmY1MThkNDYzNzIwNGIyMTU2MDI5NzVlZGQxYjVmZWViN2QuLjMxYWEyMjMz
ODk2M2UxZGNhNmE3MzM5MTNkZDBjYjMyN2I4NWYzYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMi0xMi0xNCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
SFRNTFRlbXBsYXRlRWxlbWVudF0gRGlzYWxsb3cgY3ljbGVzIHdpdGhpbiB0ZW1wbGF0ZSBjb250
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUw
NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMuaHRtbDogQWRkZWQu
CisKIDIwMTItMTItMTQgIEFudG9uIFZheXZvZCAgPGF2YXl2b2RAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIENvbnNpZGVyIGlubGluZS1ibG9jayBhbmQgaW5saW5lLXRhYmxlIGVsZW1lbnRzIHRv
IGJlIGF1dG9zaXppbmcgY2x1c3RlcnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzkwZjc1ZmI4MjQxMzRmYWU0ZWJmNDgyMjY1MTNkMDBiM2VjYjE5YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IHRoYXQgY3ljbGVzIGFyZSBub3QgYWxs
b3dlZCBpbiB0ZW1wbGF0ZSBjb250ZW50CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQodGVtcGxhdGUpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCitQQVNT
IHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQob3V0ZXJEaXYpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCitQQVNTIGlubmVy
RGl2LmFwcGVuZENoaWxkKHRlbXBsYXRlKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhpZXJhcmNo
eVJlcXVlc3RFcnJvcjogRE9NIEV4Y2VwdGlvbiAzLgorUEFTUyBpbm5lckRpdi5hcHBlbmRDaGls
ZChvdXRlckRpdikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6
IERPTSBFeGNlcHRpb24gMy4KK1BBU1MgaW5uZXJUZW1wbGF0ZS5hcHBlbmRDaGlsZChvdXRlckRp
dikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNl
cHRpb24gMy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50
L2N5Y2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9j
eWNsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI2YjQyMjJhMmMzZjdiYWE1ZTc3ZjEzNDJhYWQ3Y2Uy
NDNlOGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBs
YXRlRWxlbWVudC9jeWNsZXMuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgY3ljbGVzIGFyZSBub3QgYWxsb3dl
ZCBpbiB0ZW1wbGF0ZSBjb250ZW50Jyk7Cit2YXIgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCd0ZW1wbGF0ZScpOworc2hvdWxkVGhyb3coJ3RlbXBsYXRlLmNvbnRlbnQuYXBwZW5k
Q2hpbGQodGVtcGxhdGUpJyk7Cit2YXIgb3V0ZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKK291dGVyRGl2LmFwcGVuZENoaWxkKHRlbXBsYXRlKTsKK3Nob3VsZFRocm93KCd0
ZW1wbGF0ZS5jb250ZW50LmFwcGVuZENoaWxkKG91dGVyRGl2KScpOwordmFyIGlubmVyRGl2ID0g
dGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KSk7CitzaG91bGRUaHJvdygnaW5uZXJEaXYuYXBwZW5kQ2hpbGQodGVtcGxhdGUpJyk7CitzaG91
bGRUaHJvdygnaW5uZXJEaXYuYXBwZW5kQ2hpbGQob3V0ZXJEaXYpJyk7Cit2YXIgaW5uZXJUZW1w
bGF0ZSA9IGlubmVyRGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBs
YXRlJykpOworc2hvdWxkVGhyb3coJ2lubmVyVGVtcGxhdGUuYXBwZW5kQ2hpbGQob3V0ZXJEaXYp
Jyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179554</attachid>
            <date>2012-12-14 16:35:12 -0800</date>
            <delta_ts>2013-01-03 11:20:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105066-20121214163231.patch</filename>
            <type>text/plain</type>
            <size>20745</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUxMmFiZWVjZDQ3ZmYx
MDVkNWRlYTdlMzA4ZmVhN2EwODU1ZGMyMC4uYjVlYWZhYTc4N2IzZTc2YThmYWNjY2VjYjExNDc2
YmU3OTUzZjU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTEyLTE0ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtIVE1MVGVtcGxhdGVFbGVt
ZW50XSBEaXNhbGxvdyBjeWNsZXMgd2l0aGluIHRlbXBsYXRlIGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTA2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN5Y2xlcyBpbiA8dGVtcGxhdGU+
IGNvbnRlbnQgYXJlbid0IHF1aXRlIGFzIGJhZCBhcyBjeWNsZXMgaW4gbm9ybWFsCisgICAgICAg
IERPTSB0cmVlcywgYnV0IHRoZXkgY2FuIGVhc2lseSBjYXVzZSBjcmFzaGVzLCBlLmcuIGluIGNs
b25lTm9kZSBhbmQKKyAgICAgICAgaW5uZXJIVE1MLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRp
c2FsbG93IGN5Y2xlcywgdGhlIEhUTUxUZW1wbGF0ZUVsZW1lbnQuY29udGVudAorICAgICAgICBE
b2N1bWVudEZyYWdtZW50IG5lZWRzIGEgcG9pbnRlciB0byBpdHMgaG9zdC4gVGhlIGFwcHJvYWNo
IGhlcmUKKyAgICAgICAgY3JlYXRlcyBhIG5ldyBzdWJjbGFzcyB3aXRoIGEgaG9zdCBwb2ludGVy
IGFuZCBhIG5ldyB2aXJ0dWFsIG1ldGhvZAorICAgICAgICB0byBEb2N1bWVudEZyYWdtZW50IHRv
IGlkZW50aWZ5IHRoZSBzdWJjbGFzcy4KKworICAgICAgICBUbyBhdm9pZCB1bm5lY2Vzc2FyeSB2
aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzLCBhbHNvIGNoYW5nZWQgaG93CisgICAgICAgIERvY3VtZW50
Ojp0ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCB3b3JrcyB0byBhbGxvdyBmYXN0IGlubGlu
ZWQKKyAgICAgICAgYWNjZXNzIGFuZCBhdm9pZCBsYXp5IGNyZWF0aW9uIHdoZW4gbm90IG5lZWRl
ZC4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy5o
dG1sCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5w
cmk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zSW5jbHVkaW5nVGVtcGxhdGVz
KTogU3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBOb2RlOjpjb250YWlucyB0aGF0IGtub3dzIGhvdyB0
byBqdW1wIG92ZXIgdGVtcGxhdGUgY29udGVudCBib3VuZGFyaWVzLgorICAgICAgICAoV2ViQ29y
ZTo6aXNJblRlbXBsYXRlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0FjY2VwdENo
aWxkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmVuc3VyZVRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KTogUmVuYW1lZCB0byBt
YWtlIGNsZWFyIHRoYXQgaXQgbGF6aWx5IGNyZWF0ZXMgdGhlIERvY3VtZW50LiBVcGRhdGVkIGFs
bCBleGlzdGluZyBjYWxsZXJzIHRvIGNhbGwgdGhpcyBtZXRob2QuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQpOiBGYXN0LCBpbmxpbmVkIGFjY2Vzc29y
IGZvciB1c2UgaW4gY2hlY2tBY2NlcHRDaGlsZCgpLgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZy
YWdtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Ojppc1RlbXBsYXRl
Q29udGVudCk6CisgICAgICAgICogZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQu
aDogQWRkZWQuCisgICAgICAgIChUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50KTogU3Vi
Y2xhc3Mgb2YgRG9jdW1lbnRGcmFnbWVudCB3aGljaCBzdG9yZXMgaXRzIGhvc3QgdGVtcGxhdGUg
ZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50Ojpob3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlRlbXBsYXRlQ29udGVudERvY3VtZW50
RnJhZ21lbnQ6OlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGVk
aXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW5u
ZXJPdXRlckhUTUwpOgorICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KTogQ29uc3RydWN0
IHRoZSBuZXcgc3ViY2xhc3MuCisKIDIwMTItMTItMTQgIEFudG9uIFZheXZvZCAgPGF2YXl2b2RA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogQ29uc2lkZXIgaW5saW5l
LWJsb2NrIGFuZCBpbmxpbmUtdGFibGUgZWxlbWVudHMgdG8gYmUgYXV0b3NpemluZyBjbHVzdGVy
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM2MzU3MDVkZDc3ZjQ2Yjg4NTFl
OTUwM2E5NzM3Y2Y2NGM5YjkwMWYuLjgwN2FlMjliZmZjMDVhM2QyNTJjMWYzNjY3MWQ0MTQ0MjA3
MjcxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjk1Myw2ICsyOTUzLDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9UYWdOb2RlTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVDb250
ZW50RG9jdW1lbnRGcmFnbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEV2ZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggODAzOTY3ZWNkN2MwYTlkZGIwZTMyYmFhYmVh
ODI0OGU1NzA0OThkYy4uY2Y5NzY3MjY0NzkzZmQyM2Q4YjkxYzYzMWQ2ZDBhODI5MmMwN2Y1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCkBAIC0xNjM1LDYgKzE2MzUsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20v
U3R5bGVkRWxlbWVudC5oIFwKICAgICBkb20vU3R5bGVFbGVtZW50LmggXAogICAgIGRvbS9UYWdO
b2RlTGlzdC5oIFwKKyAgICBkb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIFwK
ICAgICBkb20vVGV4dEV2ZW50LmggXAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCBcCiAg
ICAgZG9tL1RleHQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IDkxMjMyODI5ZTJjODQwYmQ0ZjVjZmEyZjEyMTY5Yjg5OWQ5OTI2NTYuLjk1
MDUyZWQ5Mzc1ZDg1ZWU1ODhmN2M3NDZiNzMyNTBiYWEwMWMzM2UgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01NDk1MCw2ICs1NDk1MCwxMCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21c
VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cVGV4dC5jcHAiCiAJCQkJPgogCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDI3MGY2MTVhYjE1Y2M0NzY1MWQyZDc0YTUyMDE4NzU5M2Fh
NThjMTUuLjY0ODg1ZjhjMGM4OTBhMTBhYjgzOTkwODkzNmVjODM0Yjk0MGZjZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4
OTAsNiArNTg5MCw3IEBACiAJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJp
Y3NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1
RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNUU5QjY3NzEwNjk3RTEzMDBD
N0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEgLyogU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUM1RUJERDg0MTA1RURERUMwMDU2ODE2
RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlci5oICovOyB9OworCQlDNjUwNDZBOTE2N0JGQjU1MDBDQzJBNEQgLyogVGVt
cGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzY1MDQ2QTgxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBsYXRl
Q29udGVudERvY3VtZW50RnJhZ21lbnQuaCAqLzsgfTsKIAkJQzZBNzAzMzI1QzlEMEI2Q0RDQkM0
RDc3IC8qIEpTRXZlbnRUYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzZBNzAzMzI1QzlEMEI2Q0RDQkM0RDc4IC8qIEpTRXZlbnRUYXJnZXQu
Y3BwICovOyB9OwogCQlDNkIzMUIyRTE0Rjg0MUZCMDA4OUYyM0YgLyogU2Nyb2xsYmFyVGhlbWVD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2
OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1QyAvKiBTY3JvbGxiYXJUaGVtZUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM2RDc0QUQ1MDlBQTI4
MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAv
KiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKQEAgLTEzMzI1LDYgKzEzMzI2LDcg
QEAKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUY3NjVCNDE0RTFENDE0MDA2Qzg5
OUIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhc3RlYm9hcmRTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NUY3NjVCQTE0RTFFQ0Y0MDA2Qzg5OUIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjUwNDZBODE2N0JGQjU1MDBDQzJB
NEQgLyogVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1QyAvKiBTY3Jv
bGxiYXJUaGVtZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jv
bGxiYXJUaGVtZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkE3MDMz
MjVDOUQwQjZDRENCQzRENzggLyogSlNFdmVudFRhcmdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudFRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0
aW9uTGlzdExldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjIwMyw2ICsy
MjIwNSw3IEBACiAJCQkJQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5o
ICovLAogCQkJCUJDRTNCRUMwMEQyMjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5jcHAgKi8s
CiAJCQkJQkNFM0JFQzEwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmggKi8sCisJCQkJ
QzY1MDQ2QTgxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21l
bnQuaCAqLywKIAkJCQk2NTUwQjY5QjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5jcHAgKi8sCiAJ
CQkJNjU1MEI2OUMwOTlERjAyNzAwOTBENzgxIC8qIFRleHQuaCAqLywKIAkJCQk5M0VFQzFGNjA5
QzI4Nzc3MDBDNTE1RDEgLyogVGV4dC5pZGwgKi8sCkBAIC0yNTYyMCw2ICsyNTYyMyw3IEBACiAJ
CQkJQThDRkYwNTEwQTE1NEYwOTAwMEE0MjM0IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0UzQkVDMzBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY1NUIzREQ2MTI1MUYxMkQwMDNFRjI2OSAvKiBUZWxlcGhvbmVJbnB1dFR5
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM2NTA0NkE5MTY3QkZCNTUwMENDMkE0RCAvKiBUZW1w
bGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZB
NjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTcw
OTlFNjQ5MjAwNTZFNTgxIC8qIFRleHRBZmZpbml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3
QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNjMwYThmZGFm
MGIyZTZkNGRjYTE2Nzk4ZWZjOWNjNTEwMzMyOTgzYi4uMGUwNzFhNDgwYTVkZTA0MjQ5YzE1MWY1
NmU3YTgzYzBmNzUzYWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
V2lkZ2V0LmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUgIlRlbXBsYXRl
Q29udGVudERvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTEzNyw2ICsxMzgsMjggQEAgc3RhdGljIGlu
bGluZSBib29sIGlzQ2hpbGRUeXBlQWxsb3dlZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5v
ZGUqIGNoaWxkKQogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKFRFTVBMQVRFX0VM
RU1FTlQpCitzdGF0aWMgaW5saW5lIGJvb2wgY29udGFpbnNJbmNsdWRpbmdUZW1wbGF0ZXMoTm9k
ZSogcGFyZW50LCBOb2RlKiBjaGlsZCkKK3sKKyAgICBjb25zdCBOb2RlKiBub2RlID0gY2hpbGQ7
CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUgPT0gcGFyZW50KQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChub2RlLT5pc0RvY3VtZW50RnJhZ21lbnQo
KSAmJiBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudEZyYWdtZW50Kj4obm9kZSktPmlzVGVtcGxh
dGVDb250ZW50KCkpCisgICAgICAgICAgICBub2RlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVGVtcGxh
dGVDb250ZW50RG9jdW1lbnRGcmFnbWVudCo+KG5vZGUpLT5ob3N0KCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzSW5UZW1wbGF0ZUNvbnRlbnQoTm9k
ZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+ZG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIG5v
ZGUtPmRvY3VtZW50KCkgPT0gbm9kZS0+ZG9jdW1lbnQoKS0+dGVtcGxhdGVDb250ZW50c093bmVy
RG9jdW1lbnQoKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hl
Y2tBY2NlcHRDaGlsZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ld0NoaWxkLCBO
b2RlKiBvbGRDaGlsZCkKIHsKICAgICAvLyBOb3QgbWVudGlvbmVkIGluIHNwZWM6IHRocm93IE5P
VF9GT1VORF9FUlIgaWYgbmV3Q2hpbGQgaXMgbnVsbApAQCAtMTUwLDYgKzE3MywxMCBAQCBzdGF0
aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGlsZChDb250YWluZXJOb2RlKiBu
ZXdQYXJlbnQsIE5vZGUqIG5ldwogICAgICAgICBBU1NFUlQoaXNDaGlsZFR5cGVBbGxvd2VkKG5l
d1BhcmVudCwgbmV3Q2hpbGQpKTsKICAgICAgICAgaWYgKG5ld0NoaWxkLT5jb250YWlucyhuZXdQ
YXJlbnQpKQogICAgICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKKyNpZiBF
TkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKKyAgICAgICAgaWYgKGlzSW5UZW1wbGF0ZUNvbnRlbnQo
bmV3UGFyZW50KSAmJiBjb250YWluc0luY2x1ZGluZ1RlbXBsYXRlcyhuZXdDaGlsZCwgbmV3UGFy
ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisjZW5kaWYK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNzEsNiArMTk4LDExIEBAIHN0YXRpYyBp
bmxpbmUgRXhjZXB0aW9uQ29kZSBjaGVja0FjY2VwdENoaWxkKENvbnRhaW5lck5vZGUqIG5ld1Bh
cmVudCwgTm9kZSogbmV3CiAgICAgfSBlbHNlIGlmICghaXNDaGlsZFR5cGVBbGxvd2VkKG5ld1Bh
cmVudCwgbmV3Q2hpbGQpKQogICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwog
CisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisgICAgaWYgKGlzSW5UZW1wbGF0ZUNvbnRl
bnQobmV3UGFyZW50KSAmJiBjb250YWluc0luY2x1ZGluZ1RlbXBsYXRlcyhuZXdDaGlsZCwgbmV3
UGFyZW50KSkKKyAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKKyNlbmRpZgor
CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDE1NGMyMzI1
MDM2YjJjMzg3ZjdiZTk3MTE2MGFhNjViMmJiYTgwM2YuLmZhZDg1NmUyZWRlNDczMzcyZWY2NTM2
OGZiOGE3ZjVlMTNjMzNjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTkyNywxOCAr
NTkyNywxNSBAQCBMb2NhbGUmIERvY3VtZW50OjpnZXRDYWNoZWRMb2NhbGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbGUpCiB9CiAKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLURvY3Vt
ZW50KiBEb2N1bWVudDo6dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKQorRG9jdW1lbnQq
IERvY3VtZW50OjplbnN1cmVUZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpCiB7Ci0gICAg
Ly8gSWYgRE9DVU1FTlQgZG9lcyBub3QgaGF2ZSBhIGJyb3dzaW5nIGNvbnRleHQsIExldCBURU1Q
TEFURSBDT05URU5UUyBPV05FUiBiZSBET0NVTUVOVCBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0g
ICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gdGhpczsKKyAgICBpZiAoY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50ID0gdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQqPihkb2N1bWVudCk7CiAKLSAgICBpZiAoIW1f
dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQpIHsKLSAgICAgICAgaWYgKGlzSFRNTERvY3Vt
ZW50KCkpCi0gICAgICAgICAgICBtX3RlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50ID0gSFRN
TERvY3VtZW50OjpjcmVhdGUoMCwgYmxhbmtVUkwoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAs
IGJsYW5rVVJMKCkpOwotICAgIH0KKyAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKKyAgICAgICAg
bV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAs
IGJsYW5rVVJMKCkpOworICAgIGVsc2UKKyAgICAgICAgbV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJE
b2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgYmxhbmtVUkwoKSk7CiAKICAgICByZXR1cm4g
bV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggZDk5NGY2MWNlNTMxMjU0Y2MyZmI0NGUxMDllZmMxYTUyYzc1ZjY4ZS4uMDVlMTVm
OTMxMjljNzhhMDcyYTA0NWY3ZTc4NTUzNDNjODgxYWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTExNzgsNyArMTE3OCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFTVBM
QVRFX0VMRU1FTlQpCi0gICAgRG9jdW1lbnQqIHRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50
KCk7CisgICAgY29uc3QgRG9jdW1lbnQqIHRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCkg
Y29uc3Q7CisgICAgRG9jdW1lbnQqIGVuc3VyZVRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50
KCk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9u
ZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwpAQCAtMTU1NSw2ICsxNTU2LDE3IEBAIGlubGluZSB2
b2lkIERvY3VtZW50Ojpub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpCiAgICAgICAg
IGRpZFJlbW92ZUFsbFBlbmRpbmdTdHlsZXNoZWV0KCk7CiB9CiAKKyNpZiBFTkFCTEUoVEVNUExB
VEVfRUxFTUVOVCkKK2lubGluZSBjb25zdCBEb2N1bWVudCogRG9jdW1lbnQ6OnRlbXBsYXRlQ29u
dGVudHNPd25lckRvY3VtZW50KCkgY29uc3QKK3sKKyAgICAvLyBJZiBET0NVTUVOVCBkb2VzIG5v
dCBoYXZlIGEgYnJvd3NpbmcgY29udGV4dCwgTGV0IFRFTVBMQVRFIENPTlRFTlRTIE9XTkVSIGJl
IERPQ1VNRU5UIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fZnJhbWUpCisgICAg
ICAgIHJldHVybiB0aGlzOworCisgICAgcmV0dXJuIG1fdGVtcGxhdGVDb250ZW50c093bmVyRG9j
dW1lbnQuZ2V0KCk7Cit9CisjZW5kaWYKKwogLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVj
YXVzZSB0aGV5IHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkg
d2FudCB0byBpbmxpbmUgdGhlbS4KIAogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKaW5kZXggODFhZWI4YWQ4
OWE1Mzc4NGFhYzdlYzM0Y2I1OWM5ZTBkM2RlOThkYS4uMTMyMTM4ODY2Y2RmZWM5NTNjOGMwMGYz
ZDc5MTdiZTUwNmY3NzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBA
IC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlWE1MKGNvbnN0IFN0cmluZyYs
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBB
bGxvd1NjcmlwdGluZ0NvbnRlbnQpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWlu
UmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNUZW1wbGF0ZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVh
dGVDb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29u
dGVudERvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNvbnRl
bnREb2N1bWVudEZyYWdtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE5MDBiZWI3NWExOTY2ZmI1NzgwYzYw
Y2ZlNzJiZTgzZGFkNGM4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudF9oCisjZGVmaW5lIFRlbXBsYXRlQ29u
dGVudERvY3VtZW50RnJhZ21lbnRfaAorCisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisK
KyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBEb2N1bWVudEZy
YWdtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZW1wbGF0ZUNvbnRlbnRE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFbGVtZW50
KiBob3N0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZW1wbGF0ZUNvbnRl
bnREb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBob3N0KSk7CisgICAgfQorCisgICAgY29uc3Qg
RWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQorCitwcml2YXRlOgorICAg
IFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBFbGVtZW50KiBob3N0KQorICAgICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENy
ZWF0ZURvY3VtZW50RnJhZ21lbnQpCisgICAgICAgICwgbV9ob3N0KGhvc3QpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc1RlbXBsYXRlQ29udGVudCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIGNvbnN0IEVsZW1lbnQqIG1faG9zdDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShURU1QTEFURV9FTEVNRU5U
KQorCisjZW5kaWYgLy8gVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggNjNhYmI1ZjU0MWRkODAyNDA1MjdiNjY2NDQzNzdlODY3
ZTFlNDAxNC4uMDA4MmM2M2JjZDU1OWJlMzkyZmZmODQxNTBlMjg2MjdhZjg2MDZkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtOTk2LDcgKzk5Niw3IEBAIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChjb25zdCBTdHJp
bmcmIG1hcmt1CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dEVsZW1lbnQtPmRvY3Vt
ZW50KCk7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAgaWYgKGNvbnRleHRFbGVt
ZW50LT5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSkKLSAgICAgICAgZG9jdW1lbnQgPSBkb2N1bWVu
dC0+dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgZG9jdW1lbnQgPSBk
b2N1bWVudC0+ZW5zdXJlVGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKTsKICNlbmRpZgog
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRlbXBsYXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVs
ZW1lbnQuY3BwCmluZGV4IGVhMDcxMzIyNDUzYzI2MmI1NDAyOWZjZjkyYmYyZGUwZTY1YzU0NDYu
LjY2MmJmMWQxZmQ5ZTE5NTk2MTFkMzdkNjNiODU0NWIyYzlkNjI5NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIlRlbXBsYXRlQ29udGVudERv
Y3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjIsNyArNjMsNyBAQCBQYXNzUmVmUHRyPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+IEhU
TUxUZW1wbGF0ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogRG9jdW1lbnRG
cmFnbWVudCogSFRNTFRlbXBsYXRlRWxlbWVudDo6Y29udGVudCgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2NvbnRlbnQpCi0gICAgICAgIG1fY29udGVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0
ZShvd25lckRvY3VtZW50KCktPnRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCkpOworICAg
ICAgICBtX2NvbnRlbnQgPSBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50OjpjcmVhdGUo
ZG9jdW1lbnQoKS0+ZW5zdXJlVGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKSwgdGhpcyk7
CiAKICAgICByZXR1cm4gbV9jb250ZW50LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJjY2RkYmY1MThkNDYz
NzIwNGIyMTU2MDI5NzVlZGQxYjVmZWViN2QuLjMxYWEyMjMzODk2M2UxZGNhNmE3MzM5MTNkZDBj
YjMyN2I4NWYzYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMi0xNCAgQWRhbSBLbGVp
biAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSFRNTFRlbXBsYXRlRWxlbWVudF0g
RGlzYWxsb3cgY3ljbGVzIHdpdGhpbiB0ZW1wbGF0ZSBjb250ZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUwNjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxUZW1wbGF0ZUVs
ZW1lbnQvY3ljbGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRN
TFRlbXBsYXRlRWxlbWVudC9jeWNsZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMTItMTQgIEFudG9u
IFZheXZvZCAgPGF2YXl2b2RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvbnNpZGVyIGlubGlu
ZS1ibG9jayBhbmQgaW5saW5lLXRhYmxlIGVsZW1lbnRzIHRvIGJlIGF1dG9zaXppbmcgY2x1c3Rl
cnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50
L2N5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVF
bGVtZW50L2N5Y2xlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzkwZjc1ZmI4MjQxMzRmYWU0
ZWJmNDgyMjY1MTNkMDBiM2VjYjE5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0IHRoYXQgY3ljbGVzIGFyZSBub3QgYWxsb3dlZCBpbiB0ZW1wbGF0ZSBjb250
ZW50CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRlbXBsYXRlLmNvbnRl
bnQuYXBwZW5kQ2hpbGQodGVtcGxhdGUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5
UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCitQQVNTIHRlbXBsYXRlLmNvbnRlbnQuYXBw
ZW5kQ2hpbGQob3V0ZXJEaXYpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVz
dEVycm9yOiBET00gRXhjZXB0aW9uIDMuCitQQVNTIGlubmVyRGl2LmFwcGVuZENoaWxkKHRlbXBs
YXRlKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogRE9NIEV4
Y2VwdGlvbiAzLgorUEFTUyBpbm5lckRpdi5hcHBlbmRDaGlsZChvdXRlckRpdikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRpb24gMy4KK1BB
U1MgaW5uZXJUZW1wbGF0ZS5hcHBlbmRDaGlsZChvdXRlckRpdikgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRpb24gMy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZjI2YjQyMjJhMmMzZjdiYWE1ZTc3ZjEzNDJhYWQ3Y2UyNDNlOGU0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMuaHRt
bApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCdUZXN0IHRoYXQgY3ljbGVzIGFyZSBub3QgYWxsb3dlZCBpbiB0ZW1wbGF0ZSBjb250ZW50
Jyk7Cit2YXIgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpOwor
c2hvdWxkVGhyb3coJ3RlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQodGVtcGxhdGUpJyk7Cit2
YXIgb3V0ZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK291dGVyRGl2LmFw
cGVuZENoaWxkKHRlbXBsYXRlKTsKK3Nob3VsZFRocm93KCd0ZW1wbGF0ZS5jb250ZW50LmFwcGVu
ZENoaWxkKG91dGVyRGl2KScpOwordmFyIGlubmVyRGl2ID0gdGVtcGxhdGUuY29udGVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CitzaG91bGRUaHJvdygnaW5u
ZXJEaXYuYXBwZW5kQ2hpbGQodGVtcGxhdGUpJyk7CitzaG91bGRUaHJvdygnaW5uZXJEaXYuYXBw
ZW5kQ2hpbGQob3V0ZXJEaXYpJyk7Cit2YXIgaW5uZXJUZW1wbGF0ZSA9IGlubmVyRGl2LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJykpOworc2hvdWxkVGhyb3co
J2lubmVyVGVtcGxhdGUuYXBwZW5kQ2hpbGQob3V0ZXJEaXYpJyk7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181193</attachid>
            <date>2013-01-03 11:20:51 -0800</date>
            <delta_ts>2013-01-07 13:26:40 -0800</delta_ts>
            <desc>Tackle shadow dom too</desc>
            <filename>bug-105066-20130103111758.patch</filename>
            <type>text/plain</type>
            <size>26844</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ0MTk2NTNiOGVlMTA4
MDcyODU1MDkzNzU2NDk5MTNiMWJhNjQ3Ny4uMWNlMWUzNjk2NDUzMjkzZGU0MjQ2MzIxNWQwMzYz
ZWE0ODkxMmIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAxLTAzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtIVE1MVGVtcGxhdGVFbGVt
ZW50XSBEaXNhbGxvdyBjeWNsZXMgd2l0aGluIHRlbXBsYXRlIGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTA2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN5Y2xlcyBpbiA8dGVtcGxhdGU+
IGNvbnRlbnQgYXJlbid0IHF1aXRlIGFzIGJhZCBhcyBjeWNsZXMgaW4gbm9ybWFsCisgICAgICAg
IERPTSB0cmVlcywgYnV0IHRoZXkgY2FuIGVhc2lseSBjYXVzZSBjcmFzaGVzLCBlLmcuIGluIGNs
b25lTm9kZSBhbmQKKyAgICAgICAgaW5uZXJIVE1MLgorCisgICAgICAgIFNoYWRvdyBET00gaGFz
IGFuIGFuYWxhZ291cyBpc3N1ZSwgYW5kIHRoaXMgcGF0Y2ggdGFja2xlcyB0aGF0IHByb2JsZW0K
KyAgICAgICAgYXQgdGhlIHNhbWUgdGltZSBieSBjcmVhdGluZyBhIG5ldyBtZXRob2QsIE5vZGU6
OmNvbnRhaW5zSW5jbHVkaW5nSG9zdEVsZW1lbnRzLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRp
c2FsbG93IGN5Y2xlcywgdGhlIEhUTUxUZW1wbGF0ZUVsZW1lbnQuY29udGVudAorICAgICAgICBE
b2N1bWVudEZyYWdtZW50IG5lZWRzIGEgcG9pbnRlciB0byBpdHMgaG9zdC4gVGhlIGFwcHJvYWNo
IGhlcmUKKyAgICAgICAgY3JlYXRlcyBhIG5ldyBzdWJjbGFzcyB3aXRoIGEgaG9zdCBwb2ludGVy
IGFuZCBhIG5ldyB2aXJ0dWFsIG1ldGhvZAorICAgICAgICB0byBEb2N1bWVudEZyYWdtZW50IHRv
IGlkZW50aWZ5IHRoZSBzdWJjbGFzcy4KKworICAgICAgICBUbyBhdm9pZCB1bm5lY2Vzc2FyeSB2
aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzLCBhbHNvIGNoYW5nZWQgaG93CisgICAgICAgIERvY3VtZW50
Ojp0ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCB3b3JrcyB0byBhbGxvdyBmYXN0IGlubGlu
ZWQKKyAgICAgICAgYWNjZXNzIGFuZCBhdm9pZCBsYXp5IGNyZWF0aW9uIHdoZW4gbm90IG5lZWRl
ZC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMt
aW4tc2hhZG93Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1l
bnQvY3ljbGVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaGll
cmFyY2h5LWV4Y2VwdGlvbi5odG1sCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5UZW1w
bGF0ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bmVlZHNIb3N0RWxlbWVudENvbnRhaW5t
ZW50Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tBY2NlcHRDaGlsZCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVU
ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCk6IFJlbmFtZWQgdG8gbWFrZSBjbGVhciB0aGF0
IGl0IGxhemlseSBjcmVhdGVzIHRoZSBEb2N1bWVudC4gVXBkYXRlZCBhbGwgZXhpc3RpbmcgY2Fs
bGVycyB0byBjYWxsIHRoaXMgbWV0aG9kLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRlbXBsYXRlQ29u
dGVudHNPd25lckRvY3VtZW50KTogRmFzdCwgaW5saW5lZCBhY2Nlc3NvciBmb3IgdXNlIGluIGNo
ZWNrQWNjZXB0Q2hpbGQoKS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6aXNUZW1wbGF0ZUNvbnRlbnQpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbnRhaW5zSW5j
bHVkaW5nU2hhZG93RE9NKTogbWFkZSBjb25zdCwgc2ltcGxpZmllZAorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y29udGFpbnNJbmNsdWRpbmdIb3N0RWxlbWVudHMpOiBTcGVjaWFsaXplZCB2ZXJz
aW9uIG9mIE5vZGU6OmNvbnRhaW5zIHRoYXQga25vd3MgaG93IHRvIGp1bXAgb3ZlciB0ZW1wbGF0
ZSBjb250ZW50IGJvdW5kYXJpZXMuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5v
ZGUpOgorICAgICAgICAqIGRvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Lmg6IEFk
ZGVkLgorICAgICAgICAoVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudCk6IFN1YmNsYXNz
IG9mIERvY3VtZW50RnJhZ21lbnQgd2hpY2ggc3RvcmVzIGl0cyBob3N0IHRlbXBsYXRlIGVsZW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVu
dDo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdt
ZW50OjpUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5n
L21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0
ZXJIVE1MKToKKyAgICAgICAgKiBodG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRlbXBsYXRlRWxlbWVudDo6Y29udGVudCk6IENvbnN0cnVjdCB0aGUg
bmV3IHN1YmNsYXNzLgorCiAyMDEzLTAxLTAzICBUaWFuY2hlbmcgSmlhbmcgIDx0aWppYW5nQHJp
bS5jb20+CiAKICAgICAgICAgVXBkYXRlIEJCMTAgbWVkaWEgcmVuZGVyIHRoZW1lLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYjZjODc0YjIyYTI2ZDJjNzdmZmViN2I5MjRkNDUx
Y2UyZjMxYzg4My4uYjQxM2FiYjYzNTNmZWVkZmQwZGJlMTE4OTM3MGQ0MzE3MzljMTA1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yOTYxLDYgKzI5NjEsNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuaCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Rh
Z05vZGVMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1RleHRFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCBkZDQzYzFmN2ZkMTYwZGI0YjZjZGUwNjhjZTgwNDdlYzkzNjNl
ODlhLi5jZjMxMGVkZjJlYTZjYzE0ZTg1ODk1ZmFjZGYwYzU0MTFlOWZmMWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKQEAgLTE2NDUsNiArMTY0NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9TdHlsZWRFbGVt
ZW50LmggXAogICAgIGRvbS9TdHlsZUVsZW1lbnQuaCBcCiAgICAgZG9tL1RhZ05vZGVMaXN0Lmgg
XAorICAgIGRvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmggXAogICAgIGRvbS9U
ZXh0RXZlbnQuaCBcCiAgICAgZG9tL1RleHRFdmVudElucHV0VHlwZS5oIFwKICAgICBkb20vVGV4
dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggYzE2MzA4ZGJiN2YzY2EzMjQzODI1ZGY0OWI0NDFkNzFjMGQ1MTY0YS4uM2MzYTMyMTUyM2U5
ZTViNjBjOWNkZTZjOGFkNjIzOWI5Njg5NjlhOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU0OTkwLDYgKzU0OTkwLDEwIEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxUZW1wbGF0ZUNv
bnRlbnREb2N1bWVudEZyYWdtZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxUZXh0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1
cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMmE2NzNhNzJiMjgwMGQ3Yjg0YjMxOWNkM2FmNjZkNjJhOTk5MmQ3MS4uMzIw
NWVlODVmYjJjNDU3OGM3MDVjZjI1MmRiYzNkOWY3ODJlZGJmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTkwMSw2ICs1OTAx
LDcgQEAKIAkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVENEFBNzgxMTZC
QUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1RTlCNjc3MTA2OTdFMTMwMEM3QkIxQSAvKiBT
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM1RTlCNjc2MTA2OTdFMTMwMEM3QkIxQSAvKiBTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyLmNwcCAqLzsgfTsKIAkJQzVFQkREODQxMDVFRERFQzAwNTY4MTZGIC8qIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRj
aGVyLmggKi87IH07CisJCUM2NTA0NkE5MTY3QkZCNTUwMENDMkE0RCAvKiBUZW1wbGF0ZUNvbnRl
bnREb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNjUwNDZBODE2N0JGQjU1MDBDQzJBNEQgLyogVGVtcGxhdGVDb250ZW50RG9j
dW1lbnRGcmFnbWVudC5oICovOyB9OwogCQlDNkE3MDMzMjVDOUQwQjZDRENCQzRENzcgLyogSlNF
dmVudFRhcmdldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNkE3MDMzMjVDOUQwQjZDRENCQzRENzggLyogSlNFdmVudFRhcmdldC5jcHAgKi87IH07
CiAJCUM2QjMxQjJFMTRGODQxRkIwMDg5RjIzRiAvKiBTY3JvbGxiYXJUaGVtZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY5MTYxNDcxNEY2
RUJBNzAwNDYzNzVDIC8qIFNjcm9sbGJhclRoZW1lQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUy
IC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNl
bGVjdGlvbkxpc3RMZXZlbC5oICovOyB9OwpAQCAtMTMzNTcsNiArMTMzNTgsNyBAQAogCQlDNUVC
REQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1Rjc2NUI0MTRFMUQ0MTQwMDZDODk5QiAvKiBQYXN0
ZWJvYXJkU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVi
b2FyZFN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1Rjc2NUJBMTRF
MUVDRjQwMDZDODk5QiAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2NTA0NkE4MTY3QkZCNTUwMENDMkE0RCAvKiBUZW1w
bGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzY5MTYxNDcxNEY2RUJBNzAwNDYzNzVDIC8qIFNjcm9sbGJhclRoZW1l
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGJhclRoZW1l
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2QTcwMzMyNUM5RDBCNkNE
Q0JDNEQ3OCAvKiBKU0V2ZW50VGFyZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0V2ZW50VGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMjY2LDYgKzIyMjY4LDcgQEAK
IAkJCQlBQTRDM0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi8sCiAJCQkJ
QkNFM0JFQzAwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmNwcCAqLywKIAkJCQlCQ0Uz
QkVDMTBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuaCAqLywKKwkJCQlDNjUwNDZBODE2
N0JGQjU1MDBDQzJBNEQgLyogVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oICovLAog
CQkJCTY1NTBCNjlCMDk5REYwMjcwMDkwRDc4MSAvKiBUZXh0LmNwcCAqLywKIAkJCQk2NTUwQjY5
QzA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5oICovLAogCQkJCTkzRUVDMUY2MDlDMjg3NzcwMEM1
MTVEMSAvKiBUZXh0LmlkbCAqLywKQEAgLTI1NjkwLDYgKzI1NjkzLDcgQEAKIAkJCQlBOENGRjA1
MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RTNCRUMzMEQyMjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjU1QjNERDYxMjUxRjEyRDAwM0VGMjY5IC8qIFRlbGVwaG9uZUlucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQzY1MDQ2QTkxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBsYXRlQ29udGVu
dERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkE2MDk5REYwMjcw
MDkwRDc4MSAvKiBUZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxNzA5OUU2NDkyMDA1
NkU1ODEgLyogVGV4dEFmZmluaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTdCMkRCNTE1ODZB
QkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA3NWZkNzA0MTIzMTc2ZDkwZjEy
ZGQ5NDg1NGMzYmE5Njk1MDhiZjQ3Li5mYjRlY2Y5ZDlkMmRjMTNhODY3ZjY4OWZmZjRmOTc4NzEw
MDI3Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIK
ICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCisjaW5jbHVkZSAiVGVtcGxhdGVDb250ZW50RG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtMTM3LDYgKzEzOCwyMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNDaGlsZFR5cGVBbGxvd2VkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogY2hpbGQp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0luVGVtcGxhdGVD
b250ZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQp
CisgICAgQVNTRVJUKG5vZGUtPmRvY3VtZW50KCkpOworICAgIHJldHVybiBub2RlLT5kb2N1bWVu
dCgpID09IG5vZGUtPmRvY3VtZW50KCktPnRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCk7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgbmVlZHNIb3N0RWxlbWVudENvbnRhaW5tZW50Q2hlY2soY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICByZXR1cm4gbm9kZS0+aXNJblNoYWRvd1RyZWUoKSB8fCBpc0luVGVtcGxhdGVDb250ZW50
KG5vZGUpOworfQorCiBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGls
ZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGls
ZCkKIHsKICAgICAvLyBOb3QgbWVudGlvbmVkIGluIHNwZWM6IHRocm93IE5PVF9GT1VORF9FUlIg
aWYgbmV3Q2hpbGQgaXMgbnVsbApAQCAtMTUwLDYgKzE2Niw4IEBAIHN0YXRpYyBpbmxpbmUgRXhj
ZXB0aW9uQ29kZSBjaGVja0FjY2VwdENoaWxkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9k
ZSogbmV3CiAgICAgICAgIEFTU0VSVChpc0NoaWxkVHlwZUFsbG93ZWQobmV3UGFyZW50LCBuZXdD
aGlsZCkpOwogICAgICAgICBpZiAobmV3Q2hpbGQtPmNvbnRhaW5zKG5ld1BhcmVudCkpCiAgICAg
ICAgICAgICByZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgICAgICBpZiAobmVlZHNI
b3N0RWxlbWVudENvbnRhaW5tZW50Q2hlY2sobmV3UGFyZW50KSAmJiBuZXdDaGlsZC0+Y29udGFp
bnNJbmNsdWRpbmdIb3N0RWxlbWVudHMobmV3UGFyZW50KSkKKyAgICAgICAgICAgIHJldHVybiBI
SUVSQVJDSFlfUkVRVUVTVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTcx
LDYgKzE4OSw5IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29kZSBjaGVja0FjY2VwdENoaWxk
KENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3CiAgICAgfSBlbHNlIGlmICghaXND
aGlsZFR5cGVBbGxvd2VkKG5ld1BhcmVudCwgbmV3Q2hpbGQpKQogICAgICAgICByZXR1cm4gSElF
UkFSQ0hZX1JFUVVFU1RfRVJSOwogCisgICAgaWYgKG5lZWRzSG9zdEVsZW1lbnRDb250YWlubWVu
dENoZWNrKG5ld1BhcmVudCkgJiYgbmV3Q2hpbGQtPmNvbnRhaW5zSW5jbHVkaW5nSG9zdEVsZW1l
bnRzKG5ld1BhcmVudCkpCisgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CisK
ICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggM2E5ZDc0NjEw
NDk2MzAwNGRmZjFkNGVlM2NlM2UzNjdkYTZlNTEwYi4uMzA1NDU4YTkwNmE2M2IxNzVkNGVhZTA3
MDg1MjVlM2M2MzY2MDEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01OTQ1LDE4ICs1
OTQ1LDE1IEBAIExvY2FsZSYgRG9jdW1lbnQ6OmdldENhY2hlZExvY2FsZShjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSkKIH0KIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQotRG9jdW1l
bnQqIERvY3VtZW50Ojp0ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpCitEb2N1bWVudCog
RG9jdW1lbnQ6OmVuc3VyZVRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCkKIHsKLSAgICAv
LyBJZiBET0NVTUVOVCBkb2VzIG5vdCBoYXZlIGEgYnJvd3NpbmcgY29udGV4dCwgTGV0IFRFTVBM
QVRFIENPTlRFTlRTIE9XTkVSIGJlIERPQ1VNRU5UIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAg
ICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiB0aGlzOworICAgIGlmIChjb25zdCBEb2N1
bWVudCogZG9jdW1lbnQgPSB0ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpKQorICAgICAg
ICByZXR1cm4gY29uc3RfY2FzdDxEb2N1bWVudCo+KGRvY3VtZW50KTsKIAotICAgIGlmICghbV90
ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCkgewotICAgICAgICBpZiAoaXNIVE1MRG9jdW1l
bnQoKSkKLSAgICAgICAgICAgIG1fdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQgPSBIVE1M
RG9jdW1lbnQ6OmNyZWF0ZSgwLCBibGFua1VSTCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwg
YmxhbmtVUkwoKSk7Ci0gICAgfQorICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQorICAgICAgICBt
X3RlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwg
YmxhbmtVUkwoKSk7CisgICAgZWxzZQorICAgICAgICBtX3RlbXBsYXRlQ29udGVudHNPd25lckRv
Y3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBibGFua1VSTCgpKTsKIAogICAgIHJldHVybiBt
X3RlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCBlMzliMmRkYmI2MWY1ZjgxYTBiNzQyMWY4MWQ5NDYxMjJlZmU5MDFkLi43NTJiM2Nk
MTY3ZjFkZjRkYmVjMDE1ZTNkNTljNDk1ZTMwNzBmMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMTE5Miw3ICsxMTkyLDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVEVNUExB
VEVfRUxFTUVOVCkKLSAgICBEb2N1bWVudCogdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQo
KTsKKyAgICBjb25zdCBEb2N1bWVudCogdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKSBj
b25zdDsKKyAgICBEb2N1bWVudCogZW5zdXJlVGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQo
KTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CkBAIC0xNTcwLDYgKzE1NzEsMTcgQEAgaW5saW5lIHZv
aWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCkKICAgICAgICAg
ZGlkUmVtb3ZlQWxsUGVuZGluZ1N0eWxlc2hlZXQoKTsKIH0KIAorI2lmIEVOQUJMRShURU1QTEFU
RV9FTEVNRU5UKQoraW5saW5lIGNvbnN0IERvY3VtZW50KiBEb2N1bWVudDo6dGVtcGxhdGVDb250
ZW50c093bmVyRG9jdW1lbnQoKSBjb25zdAoreworICAgIC8vIElmIERPQ1VNRU5UIGRvZXMgbm90
IGhhdmUgYSBicm93c2luZyBjb250ZXh0LCBMZXQgVEVNUExBVEUgQ09OVEVOVFMgT1dORVIgYmUg
RE9DVU1FTlQgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9mcmFtZSkKKyAgICAg
ICAgcmV0dXJuIHRoaXM7CisKKyAgICByZXR1cm4gbV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1
bWVudC5nZXQoKTsKK30KKyNlbmRpZgorCiAvLyBQdXQgdGhlc2UgbWV0aG9kcyBoZXJlLCBiZWNh
dXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0IHdlIHJlYWxseSB3
YW50IHRvIGlubGluZSB0aGVtLgogCiBpbmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9kZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAppbmRleCAzYWY1ZjFiMjhm
YWExYmVhODNmNzc1MGZkZDFlN2ZmZjM3ZWEzNGQzLi4xYWNhNGNjZjhhYjBhNmY0NjAyY2I0YTRl
ZWY0MGZhMmU1OWNjZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAg
LTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VYTUwoY29uc3QgU3RyaW5nJiwg
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEFs
bG93U2NyaXB0aW5nQ29udGVudCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5S
YW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1RlbXBsYXRlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoK
ICAgICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0
ZUNvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYWU1M2ZlZWI3ZjEyNWUxZGQ5NDQ2MmJh
NWFjODNlYWM5ODljNWMyZS4uNmFjNDNmZDFlNmQ2MWMwM2UyMDQ3MTE0OGQ4ODJjNTNhNjZjZDQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkRPTUltcGxl
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudFJh
cmVEYXRhLmgiCkBAIC05Niw2ICs5Nyw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAj
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRhZ05vZGVMaXN0LmgiCisjaW5j
bHVkZSAiVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUcmVlU2NvcGVBZG9wdGVyLmgi
CkBAIC0xMDU1LDE3ICsxMDU3LDMyIEBAIGJvb2wgTm9kZTo6Y29udGFpbnMoY29uc3QgTm9kZSog
bm9kZSkgY29uc3QKICAgICByZXR1cm4gdGhpcyA9PSBub2RlIHx8IG5vZGUtPmlzRGVzY2VuZGFu
dE9mKHRoaXMpOwogfQogCi1ib29sIE5vZGU6OmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKE5v
ZGUqIG5vZGUpCitib29sIE5vZGU6OmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNvbnN0IE5v
ZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgZm9yIChOb2RlKiBuID0gbm9kZTsgbjsgbiA9IG4tPnBhcmVudE9ySG9zdE5vZGUoKSkg
ewotICAgICAgICBpZiAobiA9PSB0aGlzKQorICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+
cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIGlmIChub2RlID09IHRoaXMpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIE5v
ZGU6OmNvbnRhaW5zSW5jbHVkaW5nSG9zdEVsZW1lbnRzKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0
Cit7CisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisgICAgd2hpbGUgKG5vZGUpIHsKKyAg
ICAgICAgaWYgKG5vZGUgPT0gdGhpcykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBpZiAobm9kZS0+aXNEb2N1bWVudEZyYWdtZW50KCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnRGcmFnbWVudCo+KG5vZGUpLT5pc1RlbXBsYXRlQ29udGVudCgpKQorICAgICAgICAgICAg
bm9kZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQq
Pihub2RlKS0+aG9zdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBub2RlID0gbm9kZS0+
cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAg
IHJldHVybiBjb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShub2RlKTsKKyNlbmRpZgorfQorCiB2
b2lkIE5vZGU6OmF0dGFjaCgpCiB7CiAgICAgQVNTRVJUKCFhdHRhY2hlZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CmluZGV4IGQwZTQxZjAxZDM4NzhlZjBmMzM1NWNkYWFlMGJmZjAzNDM1MDFmMTEuLjIzZGE0Yzdh
YmEwZjZiYjVlNzZiMjZkYTcyOWFjZWI4ZWIyNmFkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDg4LDcg
KzQ4OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0
cmluZyYgcHJlZml4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihj
b25zdCBOb2RlKikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlKikgY29uc3Q7
Ci0gICAgYm9vbCBjb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShOb2RlKik7CisgICAgYm9vbCBj
b250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShjb25zdCBOb2RlKikgY29uc3Q7CisgICAgYm9vbCBj
b250YWluc0luY2x1ZGluZ0hvc3RFbGVtZW50cyhjb25zdCBOb2RlKikgY29uc3Q7CiAKICAgICAv
LyBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHJhbmdlIG9mZnNldHMgdXNlIGNoYXJhY3RlcnMg
b3Igbm9kZSBpbmRpY2VzLgogICAgIHZpcnR1YWwgYm9vbCBvZmZzZXRJbkNoYXJhY3RlcnMoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1
bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVDb250ZW50RG9jdW1l
bnRGcmFnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhOTAwYmViNzVhMTk2NmZiNTc4MGM2MGNmZTcyYmU4
M2RhZDRjODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVD
b250ZW50RG9jdW1lbnRGcmFnbWVudC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRlbXBs
YXRlQ29udGVudERvY3VtZW50RnJhZ21lbnRfaAorI2RlZmluZSBUZW1wbGF0ZUNvbnRlbnREb2N1
bWVudEZyYWdtZW50X2gKKworI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQorCisjaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRl
bXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGVtcGxhdGVDb250ZW50RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRWxlbWVudCogaG9zdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGVtcGxhdGVDb250ZW50RG9jdW1l
bnRGcmFnbWVudChkb2N1bWVudCwgaG9zdCkpOworICAgIH0KKworICAgIGNvbnN0IEVsZW1lbnQq
IGhvc3QoKSBjb25zdCB7IHJldHVybiBtX2hvc3Q7IH0KKworcHJpdmF0ZToKKyAgICBUZW1wbGF0
ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRWxlbWVu
dCogaG9zdCkKKyAgICAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVEb2N1
bWVudEZyYWdtZW50KQorICAgICAgICAsIG1faG9zdChob3N0KQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUZW1wbGF0ZUNvbnRlbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CisKKyAgICBjb25zdCBFbGVtZW50KiBtX2hvc3Q7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKKworI2Vu
ZGlmIC8vIFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCmluZGV4IDYzYWJiNWY1NDFkZDgwMjQwNTI3YjY2NjQ0Mzc3ZTg2N2UxZTQwMTQu
LjAwODJjNjNiY2Q1NTliZTM5MmZmZjg0MTUwZTI4NjI3YWY4NjA2ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKQEAgLTk5Niw3ICs5OTYsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBtYXJr
dQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpOwog
I2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgIGlmIChjb250ZXh0RWxlbWVudC0+aGFz
VGFnTmFtZSh0ZW1wbGF0ZVRhZykpCi0gICAgICAgIGRvY3VtZW50ID0gZG9jdW1lbnQtPnRlbXBs
YXRlQ29udGVudHNPd25lckRvY3VtZW50KCk7CisgICAgICAgIGRvY3VtZW50ID0gZG9jdW1lbnQt
PmVuc3VyZVRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCk7CiAjZW5kaWYKICAgICBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNw
cAppbmRleCBlYTA3MTMyMjQ1M2MyNjJiNTQwMjlmY2Y5MmJmMmRlMGU2NWM1NDQ2Li42NjJiZjFk
MWZkOWUxOTU5NjExZDM3ZDYzYjg1NDViMmM5ZDYyOTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJE
T01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50LmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYyLDcgKzYzLDcgQEAgUGFzc1JlZlB0cjxIVE1MVGVtcGxhdGVFbGVtZW50PiBIVE1MVGVtcGxh
dGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKIERvY3VtZW50RnJhZ21lbnQq
IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNvbnRlbnQoKSBjb25zdAogewogICAgIGlmICghbV9jb250
ZW50KQotICAgICAgICBtX2NvbnRlbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUob3duZXJE
b2N1bWVudCgpLT50ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpKTsKKyAgICAgICAgbV9j
b250ZW50ID0gVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50
KCktPmVuc3VyZVRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCksIHRoaXMpOwogCiAgICAg
cmV0dXJuIG1fY29udGVudC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZDc4OTE5ZjNiYmIwZTRhYTNjYThj
ZTM3MmI0MDliYjM1ZmM5MmRiLi40NDZjYjdlMWUyZDY4MjEwOTQzZTVmOTU4NGVkMmJjNDA2Zjdi
ZmE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMDMgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0hUTUxUZW1wbGF0ZUVsZW1lbnRdIERpc2FsbG93
IGN5Y2xlcyB3aXRoaW4gdGVtcGxhdGUgY29udGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5
Y2xlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxUZW1wbGF0
ZUVsZW1lbnQvY3ljbGVzLWluLXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWluLXNoYWRvdy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWhpZXJhcmNoeS1leGNlcHRp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LWhpZXJhcmNoeS1leGNlcHRpb24uaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMDMgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQg
Z2FyZGVuaW5nLCBza2lwIGEgbmV3IGZhaWxpbmcgdGVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOTBmNzVmYjgyNDEzNGZhZTRlYmY0ODIyNjUxM2QwMGIzZWNiMTliCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVu
dC9jeWNsZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgdGhhdCBjeWNsZXMg
YXJlIG5vdCBhbGxvd2VkIGluIHRlbXBsYXRlIGNvbnRlbnQKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZCh0ZW1wbGF0ZSkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRp
b24gMy4KK1BBU1MgdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChvdXRlckRpdikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRpb24gMy4K
K1BBU1MgaW5uZXJEaXYuYXBwZW5kQ2hpbGQodGVtcGxhdGUpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCitQQVNTIGlubmVyRGl2
LmFwcGVuZENoaWxkKG91dGVyRGl2KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhpZXJhcmNoeVJl
cXVlc3RFcnJvcjogRE9NIEV4Y2VwdGlvbiAzLgorUEFTUyBpbm5lclRlbXBsYXRlLmFwcGVuZENo
aWxkKG91dGVyRGl2KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhpZXJhcmNoeVJlcXVlc3RFcnJv
cjogRE9NIEV4Y2VwdGlvbiAzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1w
bGF0ZUVsZW1lbnQvY3ljbGVzLWluLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1pbi1zaGFkb3ctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ1MzUwNTQ3ODYxODE0MWVkMDVmMTRhMzYyZTk1NTM3NTE0M2ZiZTIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50
L2N5Y2xlcy1pbi1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgdGhh
dCBjeWNsZSBkZXRlY3Rpb24gdHJhdmVyc2VzIG92ZXIgYm90aCB0ZW1wbGF0ZXMgYW5kIHNoYWRv
dyByb290cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzaGFkb3dEaXYu
YXBwZW5kQ2hpbGQob3V0ZXJEaXYpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVx
dWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMtaW4tc2hhZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1pbi1zaGFkb3cuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYzJlNjNlZDFmN2NhMWQ2ZmFkMWQ4YjE0YzQ5MTc2ZGVlZTU5YTM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMt
aW4tc2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPGRpdiBpZD1jb250YWluZXI+CisgIDx0ZW1wbGF0ZT48ZGl2PjwvZGl2PjwvdGVtcGxhdGU+
Cis8L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCB0aGF0IGN5Y2xlIGRldGVjdGlv
biB0cmF2ZXJzZXMgb3ZlciBib3RoIHRlbXBsYXRlcyBhbmQgc2hhZG93IHJvb3RzJyk7Cit2YXIg
b3V0ZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgdGVt
cGxhdGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0ZScpOwordmFyIGRpdiA9IHRl
bXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZDsKK3ZhciBzaGFkb3dSb290ID0gZGl2LndlYmtpdENy
ZWF0ZVNoYWRvd1Jvb3QoKTsKK3ZhciBzaGFkb3dEaXYgPSBzaGFkb3dSb290LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKK3Nob3VsZFRocm93KCdzaGFkb3dEaXYu
YXBwZW5kQ2hpbGQob3V0ZXJEaXYpJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVmMjZiNDIyMmEyYzNmN2JhYTVlNzdmMTM0MmFhZDdjZTI0M2U4ZTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5
Y2xlcy5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBjeWNsZXMgYXJlIG5vdCBhbGxvd2VkIGluIHRlbXBsYXRl
IGNvbnRlbnQnKTsKK3ZhciB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBs
YXRlJyk7CitzaG91bGRUaHJvdygndGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZCh0ZW1wbGF0
ZSknKTsKK3ZhciBvdXRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworb3V0
ZXJEaXYuYXBwZW5kQ2hpbGQodGVtcGxhdGUpOworc2hvdWxkVGhyb3coJ3RlbXBsYXRlLmNvbnRl
bnQuYXBwZW5kQ2hpbGQob3V0ZXJEaXYpJyk7Cit2YXIgaW5uZXJEaXYgPSB0ZW1wbGF0ZS5jb250
ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKK3Nob3VsZFRo
cm93KCdpbm5lckRpdi5hcHBlbmRDaGlsZCh0ZW1wbGF0ZSknKTsKK3Nob3VsZFRocm93KCdpbm5l
ckRpdi5hcHBlbmRDaGlsZChvdXRlckRpdiknKTsKK3ZhciBpbm5lclRlbXBsYXRlID0gaW5uZXJE
aXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKSk7CitzaG91
bGRUaHJvdygnaW5uZXJUZW1wbGF0ZS5hcHBlbmRDaGlsZChvdXRlckRpdiknKTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1oaWVy
YXJjaHktZXhjZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctaGllcmFyY2h5LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhm
NTY5MGU3Mjc2Nzg2MWVkYzNjYTA0YmE0NTk0NzM2YzM0NmI0NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaGllcmFyY2h5LWV4Y2VwdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorQXBwZW5kaW5nIGFuIGFuY2VzdG9yIHRvIGEg
c2hhZG93IHRyZWUgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBzaGFkb3dEaXYuYXBwZW5kQ2hpbGQoY29udGFpbmVyKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogRE9NIEV4Y2VwdGlvbiAz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaGllcmFyY2h5LWV4
Y2VwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1oaWVyYXJj
aHktZXhjZXB0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjljODc3YTRjMWU5ZTZjZDQ3ODBhZjM2NGJj
MWJlMGQ1NTc0YzU1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctaGllcmFyY2h5LWV4Y2VwdGlvbi5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPWNvbnRhaW5lcj4KKyAgPGRpdj4KKyAgICAgIDxzcGFu
Pjwvc3Bhbj4KKyAgPC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQXBwZW5k
aW5nIGFuIGFuY2VzdG9yIHRvIGEgc2hhZG93IHRyZWUgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlv
bicpOwordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXIn
KTsKK3ZhciBzcGFuID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKTsKK3ZhciBzaGFk
b3cgPSBzcGFuLndlYmtpdENyZWF0ZVNoYWRvd1Jvb3QoKTsKK3ZhciBzaGFkb3dEaXYgPSBzaGFk
b3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworc2hvdWxkVGhy
b3coJ3NoYWRvd0Rpdi5hcHBlbmRDaGlsZChjb250YWluZXIpJyk7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181202</attachid>
            <date>2013-01-03 12:19:27 -0800</date>
            <delta_ts>2013-01-03 12:27:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105066-20130103121634.patch</filename>
            <type>text/plain</type>
            <size>27595</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ0MTk2NTNiOGVlMTA4
MDcyODU1MDkzNzU2NDk5MTNiMWJhNjQ3Ny4uM2MwNDdhZjE5NGMzMTIxNTUxZjdmODc1OWJjODcz
ZGU4MmE2MWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAxLTAzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtIVE1MVGVtcGxhdGVFbGVt
ZW50XSBEaXNhbGxvdyBjeWNsZXMgd2l0aGluIHRlbXBsYXRlIGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTA2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN5Y2xlcyBpbiA8dGVtcGxhdGU+
IGNvbnRlbnQgYXJlbid0IHF1aXRlIGFzIGJhZCBhcyBjeWNsZXMgaW4gbm9ybWFsCisgICAgICAg
IERPTSB0cmVlcywgYnV0IHRoZXkgY2FuIGVhc2lseSBjYXVzZSBjcmFzaGVzLCBlLmcuIGluIGNs
b25lTm9kZSBhbmQKKyAgICAgICAgaW5uZXJIVE1MLgorCisgICAgICAgIFNoYWRvdyBET00gaGFz
IGFuIGFuYWxhZ291cyBpc3N1ZSwgYW5kIHRoaXMgcGF0Y2ggdGFja2xlcyB0aGF0IHByb2JsZW0K
KyAgICAgICAgYXQgdGhlIHNhbWUgdGltZSBieSBjcmVhdGluZyBhIG5ldyBtZXRob2QsIE5vZGU6
OmNvbnRhaW5zSW5jbHVkaW5nSG9zdEVsZW1lbnRzLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRp
c2FsbG93IGN5Y2xlcywgdGhlIEhUTUxUZW1wbGF0ZUVsZW1lbnQuY29udGVudAorICAgICAgICBE
b2N1bWVudEZyYWdtZW50IG5lZWRzIGEgcG9pbnRlciB0byBpdHMgaG9zdC4gVGhlIGFwcHJvYWNo
IGhlcmUKKyAgICAgICAgY3JlYXRlcyBhIG5ldyBzdWJjbGFzcyB3aXRoIGEgaG9zdCBwb2ludGVy
IGFuZCBhIG5ldyB2aXJ0dWFsIG1ldGhvZAorICAgICAgICB0byBEb2N1bWVudEZyYWdtZW50IHRv
IGlkZW50aWZ5IHRoZSBzdWJjbGFzcy4KKworICAgICAgICBUbyBhdm9pZCB1bm5lY2Vzc2FyeSB2
aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzLCBhbHNvIGNoYW5nZWQgaG93CisgICAgICAgIERvY3VtZW50
Ojp0ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCB3b3JrcyB0byBhbGxvdyBmYXN0IGlubGlu
ZWQKKyAgICAgICAgYWNjZXNzIGFuZCBhdm9pZCBsYXp5IGNyZWF0aW9uIHdoZW4gbm90IG5lZWRl
ZC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMt
aW4tc2hhZG93Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1l
bnQvY3ljbGVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaGll
cmFyY2h5LWV4Y2VwdGlvbi5odG1sCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5UZW1w
bGF0ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bmVlZHNIb3N0RWxlbWVudENvbnRhaW5t
ZW50Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbnNDb25zaWRlcmluZ0hvc3RFbGVt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0FjY2VwdENoaWxkKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVRlbXBs
YXRlQ29udGVudHNPd25lckRvY3VtZW50KTogUmVuYW1lZCB0byBtYWtlIGNsZWFyIHRoYXQgaXQg
bGF6aWx5IGNyZWF0ZXMgdGhlIERvY3VtZW50LiBVcGRhdGVkIGFsbCBleGlzdGluZyBjYWxsZXJz
IHRvIGNhbGwgdGhpcyBtZXRob2QuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGVtcGxhdGVDb250ZW50
c093bmVyRG9jdW1lbnQpOiBGYXN0LCBpbmxpbmVkIGFjY2Vzc29yIGZvciB1c2UgaW4gY2hlY2tB
Y2NlcHRDaGlsZCgpLgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Ojppc1RlbXBsYXRlQ29udGVudCk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y29udGFpbnNJbmNsdWRp
bmdTaGFkb3dET00pOiBtYWRlIGNvbnN0LCBzaW1wbGlmaWVkCisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpjb250YWluc0luY2x1ZGluZ0hvc3RFbGVtZW50cyk6IFNwZWNpYWxpemVkIHZlcnNpb24g
b2YgTm9kZTo6Y29udGFpbnMgdGhhdCBrbm93cyBob3cgdG8ganVtcCBvdmVyIHRlbXBsYXRlIGNv
bnRlbnQgYm91bmRhcmllcy4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6
CisgICAgICAgICogZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaDogQWRkZWQu
CisgICAgICAgIChUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50KTogU3ViY2xhc3Mgb2Yg
RG9jdW1lbnRGcmFnbWVudCB3aGljaCBzdG9yZXMgaXRzIGhvc3QgdGVtcGxhdGUgZWxlbWVudC4K
KyAgICAgICAgKFdlYkNvcmU6OlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Ojpo
b3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ6
OlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhU
TUwpOgorICAgICAgICAqIGh0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KTogQ29uc3RydWN0IHRoZSBuZXcg
c3ViY2xhc3MuCisKIDIwMTMtMDEtMDMgIFRpYW5jaGVuZyBKaWFuZyAgPHRpamlhbmdAcmltLmNv
bT4KIAogICAgICAgICBVcGRhdGUgQkIxMCBtZWRpYSByZW5kZXIgdGhlbWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCBiNmM4NzRiMjJhMjZkMmM3N2ZmZWI3YjkyNGQ0NTFjZTJm
MzFjODgzLi5iNDEzYWJiNjM1M2ZlZWRmZDBkYmUxMTg5MzcwZDQzMTczOWMxMDU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI5NjEsNiArMjk2MSw3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9k
ZUxpc3QuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJh
Z21lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IGRkNDNjMWY3ZmQxNjBkYjRiNmNkZTA2OGNlODA0N2VjOTM2M2U4OWEu
LmNmMzEwZWRmMmVhNmNjMTRlODU4OTVmYWNkZjBjNTQxMWU5ZmYxYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpA
QCAtMTY0NSw2ICsxNjQ1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL1N0eWxlZEVsZW1lbnQu
aCBcCiAgICAgZG9tL1N0eWxlRWxlbWVudC5oIFwKICAgICBkb20vVGFnTm9kZUxpc3QuaCBcCisg
ICAgZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCBcCiAgICAgZG9tL1RleHRF
dmVudC5oIFwKICAgICBkb20vVGV4dEV2ZW50SW5wdXRUeXBlLmggXAogICAgIGRvbS9UZXh0Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBj
MTYzMDhkYmI3ZjNjYTMyNDM4MjVkZjQ5YjQ0MWQ3MWMwZDUxNjRhLi4zYzNhMzIxNTIzZTllNWI2
MGM5Y2RlNmM4YWQ2MjM5Yjk2ODk2OWE5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTQ5OTAsNiArNTQ5OTAsMTAgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFRlbXBsYXRlQ29udGVu
dERvY3VtZW50RnJhZ21lbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZG9tXFRleHQuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyYTY3M2E3MmIyODAwZDdiODRiMzE5Y2QzYWY2NmQ2MmE5OTkyZDcxLi4zMjA1ZWU4
NWZiMmM0NTc4YzcwNWNmMjUyZGJjM2Q5Zjc4MmVkYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OTAxLDYgKzU5MDEsNyBA
QAogCQlDNUQ0QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUQ0QUE3ODExNkJBRkI2
MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzVFOUI2NzcxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzVFOUI2NzYxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3Bh
dGNoZXIuY3BwICovOyB9OwogCQlDNUVCREQ4NDEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIu
aCAqLzsgfTsKKwkJQzY1MDQ2QTkxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBsYXRlQ29udGVudERv
Y3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM2NTA0NkE4MTY3QkZCNTUwMENDMkE0RCAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50LmggKi87IH07CiAJCUM2QTcwMzMyNUM5RDBCNkNEQ0JDNEQ3NyAvKiBKU0V2ZW50
VGFyZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM2QTcwMzMyNUM5RDBCNkNEQ0JDNEQ3OCAvKiBKU0V2ZW50VGFyZ2V0LmNwcCAqLzsgfTsKIAkJ
QzZCMzFCMkUxNEY4NDFGQjAwODlGMjNGIC8qIFNjcm9sbGJhclRoZW1lQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjkxNjE0NzE0RjZFQkE3
MDA0NjM3NUMgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyog
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0
aW9uTGlzdExldmVsLmggKi87IH07CkBAIC0xMzM1Nyw2ICsxMzM1OCw3IEBACiAJCUM1RUJERDgx
MTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVGNzY1QjQxNEUxRDQxNDAwNkM4OTlCIC8qIFBhc3RlYm9h
cmRTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJk
U3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVGNzY1QkExNEUxRUNG
NDAwNkM4OTlCIC8qIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY1MDQ2QTgxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBsYXRl
Q29udGVudERvY3VtZW50RnJhZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNjkxNjE0NzE0RjZFQkE3MDA0NjM3NUMgLyogU2Nyb2xsYmFyVGhlbWVDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZBNzAzMzI1QzlEMEI2Q0RDQkM0
RDc4IC8qIEpTRXZlbnRUYXJnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRXZlbnRUYXJnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIyNjYsNiArMjIyNjgsNyBAQAogCQkJ
CUFBNEMzQTc1MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCAqLywKIAkJCQlCQ0Uz
QkVDMDBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwICovLAogCQkJCUJDRTNCRUMx
MEQyMjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5oICovLAorCQkJCUM2NTA0NkE4MTY3QkZC
NTUwMENDMkE0RCAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmggKi8sCiAJCQkJ
NjU1MEI2OUIwOTlERjAyNzAwOTBENzgxIC8qIFRleHQuY3BwICovLAogCQkJCTY1NTBCNjlDMDk5
REYwMjcwMDkwRDc4MSAvKiBUZXh0LmggKi8sCiAJCQkJOTNFRUMxRjYwOUMyODc3NzAwQzUxNUQx
IC8qIFRleHQuaWRsICovLApAQCAtMjU2OTAsNiArMjU2OTMsNyBAQAogCQkJCUE4Q0ZGMDUxMEEx
NTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFM0JF
QzMwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTVCM0RENjEyNTFGMTJEMDAzRUYyNjkgLyogVGVsZXBob25lSW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDNjUwNDZBOTE2N0JGQjU1MDBDQzJBNEQgLyogVGVtcGxhdGVDb250ZW50RG9j
dW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTYwOTlERjAyNzAwOTBE
NzgxIC8qIFRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTE3MDk5RTY0OTIwMDU2RTU4
MSAvKiBUZXh0QWZmaW5pdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0IyREI1MTU4NkFCQUQw
MDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDc1ZmQ3MDQxMjMxNzZkOTBmMTJkZDk0
ODU0YzNiYTk2OTUwOGJmNDcuLmE1ZjY3NzdmZGI4MzEzMzBhYmU2ZjhiMDI4ODc2NDdlYzI1ZDE4
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2lu
Y2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJUZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCkBAIC0xMzcsNiArMTM4LDI5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0No
aWxkVHlwZUFsbG93ZWQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBjaGlsZCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzSW5UZW1wbGF0ZUNvbnRl
bnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5kb2N1bWVudCgpOworICAgIHJldHVybiBkb2N1
bWVudCAmJiBkb2N1bWVudCA9PSBkb2N1bWVudC0+dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1l
bnQoKTsKKyNlbHNlCisgICAgVU5VU0VEKG5vZGUpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorfQorCitzdGF0aWMgaW5saW5lIGJvb2wgbmVlZHNIb3N0RWxlbWVudENvbnRhaW5tZW50Q2hl
Y2soY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aXNJblNoYWRvd1RyZWUo
KSB8fCBpc0luVGVtcGxhdGVDb250ZW50KG5vZGUpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
Y29udGFpbnNDb25zaWRlcmluZ0hvc3RFbGVtZW50cyhjb25zdCBOb2RlKiBuZXdDaGlsZCwgY29u
c3QgTm9kZSogbmV3UGFyZW50KQoreworICAgIHJldHVybiBuZWVkc0hvc3RFbGVtZW50Q29udGFp
bm1lbnRDaGVjayhuZXdQYXJlbnQpCisgICAgICAgID8gbmV3Q2hpbGQtPmNvbnRhaW5zSW5jbHVk
aW5nSG9zdEVsZW1lbnRzKG5ld1BhcmVudCkKKyAgICAgICAgOiBuZXdDaGlsZC0+Y29udGFpbnMo
bmV3UGFyZW50KTsKK30KKwogc3RhdGljIGlubGluZSBFeGNlcHRpb25Db2RlIGNoZWNrQWNjZXB0
Q2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xk
Q2hpbGQpCiB7CiAgICAgLy8gTm90IG1lbnRpb25lZCBpbiBzcGVjOiB0aHJvdyBOT1RfRk9VTkRf
RVJSIGlmIG5ld0NoaWxkIGlzIG51bGwKQEAgLTE0OCw3ICsxNzIsNyBAQCBzdGF0aWMgaW5saW5l
IEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGlsZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQs
IE5vZGUqIG5ldwogICAgICAgICBBU1NFUlQoIW5ld1BhcmVudC0+aXNSZWFkT25seU5vZGUoKSk7
CiAgICAgICAgIEFTU0VSVCghbmV3UGFyZW50LT5pc0RvY3VtZW50VHlwZU5vZGUoKSk7CiAgICAg
ICAgIEFTU0VSVChpc0NoaWxkVHlwZUFsbG93ZWQobmV3UGFyZW50LCBuZXdDaGlsZCkpOwotICAg
ICAgICBpZiAobmV3Q2hpbGQtPmNvbnRhaW5zKG5ld1BhcmVudCkpCisgICAgICAgIGlmIChjb250
YWluc0NvbnNpZGVyaW5nSG9zdEVsZW1lbnRzKG5ld0NoaWxkLCBuZXdQYXJlbnQpKQogICAgICAg
ICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQpAQCAtMTYyLDcgKzE4Niw3IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29kZSBjaGVj
a0FjY2VwdENoaWxkKENvbnRhaW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3CiAgICAgICAg
IHJldHVybiBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CiAgICAgaWYgKG5ld0NoaWxkLT5p
bkRvY3VtZW50KCkgJiYgbmV3Q2hpbGQtPmlzRG9jdW1lbnRUeXBlTm9kZSgpKQogICAgICAgICBy
ZXR1cm4gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwotICAgIGlmIChuZXdDaGlsZC0+Y29udGFpbnMo
bmV3UGFyZW50KSkKKyAgICBpZiAoY29udGFpbnNDb25zaWRlcmluZ0hvc3RFbGVtZW50cyhuZXdD
aGlsZCwgbmV3UGFyZW50KSkKICAgICAgICAgcmV0dXJuIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsK
IAogICAgIGlmIChvbGRDaGlsZCAmJiBuZXdQYXJlbnQtPmlzRG9jdW1lbnROb2RlKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDNhOWQ3NDYxMDQ5NjMwMDRkZmYxZDRlZTNjZTNlMzY3
ZGE2ZTUxMGIuLjMwNTQ1OGE5MDZhNjNiMTc1ZDRlYWUwNzA4NTI1ZTNjNjM2NjAxMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTk0NSwxOCArNTk0NSwxNSBAQCBMb2NhbGUmIERvY3Vt
ZW50OjpnZXRDYWNoZWRMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCiB9CiAKICNp
ZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLURvY3VtZW50KiBEb2N1bWVudDo6dGVtcGxhdGVD
b250ZW50c093bmVyRG9jdW1lbnQoKQorRG9jdW1lbnQqIERvY3VtZW50OjplbnN1cmVUZW1wbGF0
ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpCiB7Ci0gICAgLy8gSWYgRE9DVU1FTlQgZG9lcyBub3Qg
aGF2ZSBhIGJyb3dzaW5nIGNvbnRleHQsIExldCBURU1QTEFURSBDT05URU5UUyBPV05FUiBiZSBE
T0NVTUVOVCBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX2ZyYW1lKQotICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICBpZiAoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGVtcGxh
dGVDb250ZW50c093bmVyRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9j
dW1lbnQqPihkb2N1bWVudCk7CiAKLSAgICBpZiAoIW1fdGVtcGxhdGVDb250ZW50c093bmVyRG9j
dW1lbnQpIHsKLSAgICAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgICAgICBtX3Rl
bXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgYmxh
bmtVUkwoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGVtcGxhdGVDb250ZW50c093
bmVyRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIGJsYW5rVVJMKCkpOwotICAgIH0KKyAg
ICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKKyAgICAgICAgbV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJE
b2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAsIGJsYW5rVVJMKCkpOworICAgIGVsc2UK
KyAgICAgICAgbV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCA9IERvY3VtZW50OjpjcmVh
dGUoMCwgYmxhbmtVUkwoKSk7CiAKICAgICByZXR1cm4gbV90ZW1wbGF0ZUNvbnRlbnRzT3duZXJE
b2N1bWVudC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZTM5YjJkZGJiNjFmNWY4
MWEwYjc0MjFmODFkOTQ2MTIyZWZlOTAxZC4uNzUyYjNjZDE2N2YxZGY0ZGJlYzAxNWUzZDU5YzQ5
NWUzMDcwZjI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTExOTIsNyArMTE5Miw4IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgRG9jdW1l
bnQqIHRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCk7CisgICAgY29uc3QgRG9jdW1lbnQq
IHRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCkgY29uc3Q7CisgICAgRG9jdW1lbnQqIGVu
c3VyZVRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCk7CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDAp
OwpAQCAtMTU3MCw2ICsxNTcxLDE3IEBAIGlubGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlSZW1v
dmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpCiAgICAgICAgIGRpZFJlbW92ZUFsbFBlbmRpbmdTdHls
ZXNoZWV0KCk7CiB9CiAKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKK2lubGluZSBjb25z
dCBEb2N1bWVudCogRG9jdW1lbnQ6OnRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCkgY29u
c3QKK3sKKyAgICAvLyBJZiBET0NVTUVOVCBkb2VzIG5vdCBoYXZlIGEgYnJvd3NpbmcgY29udGV4
dCwgTGV0IFRFTVBMQVRFIENPTlRFTlRTIE9XTkVSIGJlIERPQ1VNRU5UIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiB0aGlzOworCisgICAg
cmV0dXJuIG1fdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQuZ2V0KCk7Cit9CisjZW5kaWYK
KwogLy8gUHV0IHRoZXNlIG1ldGhvZHMgaGVyZSwgYmVjYXVzZSB0aGV5IHJlcXVpcmUgdGhlIERv
Y3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbS4KIAog
aW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmgKaW5kZXggM2FmNWYxYjI4ZmFhMWJlYTgzZjc3NTBmZGQxZTdmZmYz
N2VhMzRkMy4uMWFjYTRjY2Y4YWIwYTZmNDYwMmNiNGE0ZWVmNDBmYTJlNTljY2Y2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHBhcnNlWE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBBbGxvd1NjcmlwdGluZ0NvbnRlbnQpOwog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZW1wbGF0ZUNvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnRGcmFnbWVudChE
b2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCmluZGV4IGFlNTNmZWViN2YxMjVlMWRkOTQ0NjJiYTVhYzgzZWFjOTg5YzVjMmUuLjZhYzQz
ZmQxZTZkNjFjMDNlMjA0NzExNDhkODgyYzUzYTY2Y2Q0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkRPTVNldHRhYmxlVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgpAQCAtOTYsNiArOTcs
NyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlICJUYWdOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlRlbXBsYXRlQ29udGVudERv
Y3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50
LmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlQWRvcHRlci5oIgpAQCAtMTA1NSwxNyArMTA1NywzMiBA
QCBib29sIE5vZGU6OmNvbnRhaW5zKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0dXJu
IHRoaXMgPT0gbm9kZSB8fCBub2RlLT5pc0Rlc2NlbmRhbnRPZih0aGlzKTsKIH0KIAotYm9vbCBO
b2RlOjpjb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShOb2RlKiBub2RlKQorYm9vbCBOb2RlOjpj
b250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAg
IGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoTm9kZSogbiA9IG5v
ZGU7IG47IG4gPSBuLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKLSAgICAgICAgaWYgKG4gPT0gdGhp
cykKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewor
ICAgICAgICBpZiAobm9kZSA9PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBOb2RlOjpjb250YWluc0luY2x1ZGluZ0hv
c3RFbGVtZW50cyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAoreworI2lmIEVOQUJMRShURU1QTEFU
RV9FTEVNRU5UKQorICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGlmIChub2RlID09IHRoaXMp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnRG
cmFnbWVudCgpICYmIHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50RnJhZ21lbnQqPihub2RlKS0+
aXNUZW1wbGF0ZUNvbnRlbnQoKSkKKyAgICAgICAgICAgIG5vZGUgPSBzdGF0aWNfY2FzdDxjb25z
dCBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Kj4obm9kZSktPmhvc3QoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICByZXR1cm4gY29udGFpbnNJbmNsdWRp
bmdTaGFkb3dET00obm9kZSk7CisjZW5kaWYKK30KKwogdm9pZCBOb2RlOjphdHRhY2goKQogewog
ICAgIEFTU0VSVCghYXR0YWNoZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBkMGU0MWYwMWQzODc4ZWYw
ZjMzNTVjZGFhZTBiZmYwMzQzNTAxZjExLi4zOGIwZmRkNjQ1MzhlMTIwMTFjODA2OTRhODJmYmQy
MDM2MTJlYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI3Nyw2ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAg
Tm9kZSogbm9uQm91bmRhcnlTaGFkb3dUcmVlUm9vdE5vZGUoKTsKIAogICAgIC8vIE5vZGUncyBw
YXJlbnQsIHNoYWRvdyB0cmVlIGhvc3QuCisgICAgLy8gRklYTUU6IFRoZXNlIG1ldGhvZHMgc2hv
dWxkIGJlIHJlbmFtZWQgcGFyZW50T3JTaGFkb3dIb3N0KgogICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudE9ySG9zdE5vZGUoKSBjb25zdDsKICAgICBFbGVtZW50KiBwYXJlbnRPckhvc3RFbGVtZW50
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYXJlbnRPckhvc3ROb2RlKENvbnRhaW5lck5vZGUqKTsK
QEAgLTQ4OCw3ICs0ODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja1NldFByZWZpeChjb25z
dCBBdG9taWNTdHJpbmcmIHByZWZpeCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgaXNEZXNj
ZW5kYW50T2YoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9k
ZSopIGNvbnN0OwotICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oTm9kZSopOwor
ICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oY29uc3QgTm9kZSopIGNvbnN0Owor
ICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdIb3N0RWxlbWVudHMoY29uc3QgTm9kZSopIGNvbnN0
OwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciByYW5nZSBvZmZzZXRzIHVzZSBj
aGFyYWN0ZXJzIG9yIG5vZGUgaW5kaWNlcy4KICAgICB2aXJ0dWFsIGJvb2wgb2Zmc2V0SW5DaGFy
YWN0ZXJzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVD
b250ZW50RG9jdW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29u
dGVudERvY3VtZW50RnJhZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTkwMGJlYjc1YTE5NjZmYjU3ODBj
NjBjZmU3MmJlODNkYWQ0Yzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50X2gKKyNkZWZpbmUgVGVtcGxhdGVD
b250ZW50RG9jdW1lbnRGcmFnbWVudF9oCisKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkK
KworI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50IDogcHVibGljIERvY3VtZW50
RnJhZ21lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlbXBsYXRlQ29udGVu
dERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEVsZW1l
bnQqIGhvc3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRlbXBsYXRlQ29u
dGVudERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIGhvc3QpKTsKKyAgICB9CisKKyAgICBjb25z
dCBFbGVtZW50KiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CisKK3ByaXZhdGU6Cisg
ICAgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IEVsZW1lbnQqIGhvc3QpCisgICAgICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwg
Q3JlYXRlRG9jdW1lbnRGcmFnbWVudCkKKyAgICAgICAgLCBtX2hvc3QoaG9zdCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCBib29sIGlzVGVtcGxhdGVDb250ZW50KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgY29uc3QgRWxlbWVudCogbV9ob3N0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFRFTVBMQVRFX0VMRU1F
TlQpCisKKyNlbmRpZiAvLyBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA2M2FiYjVmNTQxZGQ4MDI0MDUyN2I2NjY0NDM3N2U4
NjdlMWU0MDE0Li4wMDgyYzYzYmNkNTU5YmUzOTJmZmY4NDE1MGUyODYyN2FmODYwNmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05OTYsNyArOTk2LDcgQEAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGNvbnN0IFN0
cmluZyYgbWFya3UKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RWxlbWVudC0+ZG9j
dW1lbnQoKTsKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICBpZiAoY29udGV4dEVs
ZW1lbnQtPmhhc1RhZ05hbWUodGVtcGxhdGVUYWcpKQotICAgICAgICBkb2N1bWVudCA9IGRvY3Vt
ZW50LT50ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpOworICAgICAgICBkb2N1bWVudCA9
IGRvY3VtZW50LT5lbnN1cmVUZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpOwogI2VuZGlm
CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGVtcGxhdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRl
RWxlbWVudC5jcHAKaW5kZXggZWEwNzEzMjI0NTNjMjYyYjU0MDI5ZmNmOTJiZjJkZTBlNjVjNTQ0
Ni4uNjYyYmYxZDFmZDllMTk1OTYxMWQzN2Q2M2I4NTQ1YjJjOWQ2Mjk0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiVGVtcGxhdGVDb250ZW50
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02Miw3ICs2Myw3IEBAIFBhc3NSZWZQdHI8SFRNTFRlbXBsYXRlRWxlbWVudD4g
SFRNTFRlbXBsYXRlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiBEb2N1bWVu
dEZyYWdtZW50KiBIVE1MVGVtcGxhdGVFbGVtZW50Ojpjb250ZW50KCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fY29udGVudCkKLSAgICAgICAgbV9jb250ZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3Jl
YXRlKG93bmVyRG9jdW1lbnQoKS0+dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKSk7Cisg
ICAgICAgIG1fY29udGVudCA9IFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0
ZShkb2N1bWVudCgpLT5lbnN1cmVUZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpLCB0aGlz
KTsKIAogICAgIHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWQ3ODkxOWYzYmJi
MGU0YWEzY2E4Y2UzNzJiNDA5YmIzNWZjOTJkYi4uNDQ2Y2I3ZTFlMmQ2ODIxMDk0M2U1Zjk1ODRl
ZDJiYzQwNmY3YmZhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTAzICBBZGFtIEts
ZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtIVE1MVGVtcGxhdGVFbGVtZW50
XSBEaXNhbGxvdyBjeWNsZXMgd2l0aGluIHRlbXBsYXRlIGNvbnRlbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTA2NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTFRlbXBsYXRl
RWxlbWVudC9jeWNsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1pbi1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1pbi1zaGFkb3cu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNs
ZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1oaWVyYXJj
aHktZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1oaWVyYXJjaHktZXhjZXB0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTAz
ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBV
bnJldmlld2VkIGdhcmRlbmluZywgc2tpcCBhIG5ldyBmYWlsaW5nIHRlc3QuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzkwZjc1ZmI4MjQxMzRmYWU0ZWJmNDgyMjY1MTNkMDBi
M2VjYjE5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1w
bGF0ZUVsZW1lbnQvY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IHRo
YXQgY3ljbGVzIGFyZSBub3QgYWxsb3dlZCBpbiB0ZW1wbGF0ZSBjb250ZW50CisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQo
dGVtcGxhdGUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBE
T00gRXhjZXB0aW9uIDMuCitQQVNTIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQob3V0ZXJE
aXYpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhj
ZXB0aW9uIDMuCitQQVNTIGlubmVyRGl2LmFwcGVuZENoaWxkKHRlbXBsYXRlKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogRE9NIEV4Y2VwdGlvbiAzLgorUEFT
UyBpbm5lckRpdi5hcHBlbmRDaGlsZChvdXRlckRpdikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBI
aWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRpb24gMy4KK1BBU1MgaW5uZXJUZW1wbGF0
ZS5hcHBlbmRDaGlsZChvdXRlckRpdikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlS
ZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRpb24gMy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1pbi1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMtaW4tc2hhZG93LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTM1MDU0Nzg2MTgxNDFlZDA1ZjE0YTM2MmU5NTUzNzUx
NDNmYmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBs
YXRlRWxlbWVudC9jeWNsZXMtaW4tc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitUZXN0IHRoYXQgY3ljbGUgZGV0ZWN0aW9uIHRyYXZlcnNlcyBvdmVyIGJvdGggdGVtcGxhdGVz
IGFuZCBzaGFkb3cgcm9vdHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
c2hhZG93RGl2LmFwcGVuZENoaWxkKG91dGVyRGl2KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhp
ZXJhcmNoeVJlcXVlc3RFcnJvcjogRE9NIEV4Y2VwdGlvbiAzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWluLXNoYWRvdy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMtaW4tc2hhZG93Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmMyZTYzZWQxZjdjYTFkNmZhZDFkOGIxNGM0OTE3NmRlZWU1OWEzNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1l
bnQvY3ljbGVzLWluLXNoYWRvdy5odG1sCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxkaXYgaWQ9Y29udGFpbmVyPgorICA8dGVtcGxhdGU+PGRpdj48L2Rpdj48
L3RlbXBsYXRlPgorPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBjeWNs
ZSBkZXRlY3Rpb24gdHJhdmVyc2VzIG92ZXIgYm90aCB0ZW1wbGF0ZXMgYW5kIHNoYWRvdyByb290
cycpOwordmFyIG91dGVyRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicp
OwordmFyIHRlbXBsYXRlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKTsKK3Zh
ciBkaXYgPSB0ZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQ7Cit2YXIgc2hhZG93Um9vdCA9IGRp
di53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7Cit2YXIgc2hhZG93RGl2ID0gc2hhZG93Um9vdC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CitzaG91bGRUaHJvdygn
c2hhZG93RGl2LmFwcGVuZENoaWxkKG91dGVyRGl2KScpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5
Y2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNs
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZjI2YjQyMjJhMmMzZjdiYWE1ZTc3ZjEzNDJhYWQ3Y2UyNDNl
OGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRl
RWxlbWVudC9jeWNsZXMuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgY3ljbGVzIGFyZSBub3QgYWxsb3dlZCBp
biB0ZW1wbGF0ZSBjb250ZW50Jyk7Cit2YXIgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCd0ZW1wbGF0ZScpOworc2hvdWxkVGhyb3coJ3RlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hp
bGQodGVtcGxhdGUpJyk7Cit2YXIgb3V0ZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKK291dGVyRGl2LmFwcGVuZENoaWxkKHRlbXBsYXRlKTsKK3Nob3VsZFRocm93KCd0ZW1w
bGF0ZS5jb250ZW50LmFwcGVuZENoaWxkKG91dGVyRGl2KScpOwordmFyIGlubmVyRGl2ID0gdGVt
cGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7
CitzaG91bGRUaHJvdygnaW5uZXJEaXYuYXBwZW5kQ2hpbGQodGVtcGxhdGUpJyk7CitzaG91bGRU
aHJvdygnaW5uZXJEaXYuYXBwZW5kQ2hpbGQob3V0ZXJEaXYpJyk7Cit2YXIgaW5uZXJUZW1wbGF0
ZSA9IGlubmVyRGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRl
JykpOworc2hvdWxkVGhyb3coJ2lubmVyVGVtcGxhdGUuYXBwZW5kQ2hpbGQob3V0ZXJEaXYpJyk7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctaGllcmFyY2h5LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWhpZXJhcmNoeS1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI4ZjU2OTBlNzI3Njc4NjFlZGMzY2EwNGJhNDU5NDczNmMzNDZiNDUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWhpZXJhcmNoeS1l
eGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0FwcGVuZGluZyBhbiBhbmNl
c3RvciB0byBhIHNoYWRvdyB0cmVlIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc2hhZG93RGl2LmFwcGVuZENoaWxkKGNvbnRh
aW5lcikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBF
eGNlcHRpb24gMy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWhp
ZXJhcmNoeS1leGNlcHRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctaGllcmFyY2h5LWV4Y2VwdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5Yzg3N2E0YzFlOWU2Y2Q0
NzgwYWYzNjRiYzFiZTBkNTU3NGM1NWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWhpZXJhcmNoeS1leGNlcHRpb24uaHRtbApAQCAtMCwwICsx
LDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD1jb250YWluZXI+CisgIDxkaXY+Cisg
ICAgICA8c3Bhbj48L3NwYW4+CisgIDwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ0FwcGVuZGluZyBhbiBhbmNlc3RvciB0byBhIHNoYWRvdyB0cmVlIHNob3VsZCB0aHJvdyBh
biBleGNlcHRpb24nKTsKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29udGFpbmVyJyk7Cit2YXIgc3BhbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7
Cit2YXIgc2hhZG93ID0gc3Bhbi53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7Cit2YXIgc2hhZG93
RGl2ID0gc2hhZG93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsK
K3Nob3VsZFRocm93KCdzaGFkb3dEaXYuYXBwZW5kQ2hpbGQoY29udGFpbmVyKScpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181203</attachid>
            <date>2013-01-03 12:27:19 -0800</date>
            <delta_ts>2013-01-03 13:18:18 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-105066-20130103122427.patch</filename>
            <type>text/plain</type>
            <size>27409</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ0MTk2NTNiOGVlMTA4
MDcyODU1MDkzNzU2NDk5MTNiMWJhNjQ3Ny4uMzI3NzE0M2FhMDUxZGQzYmFmMmNmNTc3ZDQzMzBi
YTg5YWI0NGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAxLTAzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtIVE1MVGVtcGxhdGVFbGVt
ZW50XSBEaXNhbGxvdyBjeWNsZXMgd2l0aGluIHRlbXBsYXRlIGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTA2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgQ3ljbGVzIGluIDx0ZW1wbGF0ZT4gY29u
dGVudCBhcmVuJ3QgcXVpdGUgYXMgYmFkIGFzIGN5Y2xlcyBpbiBub3JtYWwKKyAgICAgICAgRE9N
IHRyZWVzLCBidXQgdGhleSBjYW4gZWFzaWx5IGNhdXNlIGNyYXNoZXMsIGUuZy4gaW4gY2xvbmVO
b2RlIGFuZAorICAgICAgICBpbm5lckhUTUwuCisKKyAgICAgICAgU2hhZG93IERPTSBoYXMgYW4g
YW5hbGFnb3VzIGlzc3VlLCBhbmQgdGhpcyBwYXRjaCB0YWNrbGVzIHRoYXQgcHJvYmxlbQorICAg
ICAgICBhdCB0aGUgc2FtZSB0aW1lIGJ5IGNyZWF0aW5nIGEgbmV3IG1ldGhvZCwgTm9kZTo6Y29u
dGFpbnNJbmNsdWRpbmdIb3N0RWxlbWVudHMuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZGlzYWxs
b3cgY3ljbGVzLCB0aGUgSFRNTFRlbXBsYXRlRWxlbWVudC5jb250ZW50CisgICAgICAgIERvY3Vt
ZW50RnJhZ21lbnQgbmVlZHMgYSBwb2ludGVyIHRvIGl0cyBob3N0LiBUaGUgYXBwcm9hY2ggaGVy
ZQorICAgICAgICBjcmVhdGVzIGEgbmV3IHN1YmNsYXNzIHdpdGggYSBob3N0IHBvaW50ZXIgYW5k
IGEgbmV3IHZpcnR1YWwgbWV0aG9kCisgICAgICAgIHRvIERvY3VtZW50RnJhZ21lbnQgdG8gaWRl
bnRpZnkgdGhlIHN1YmNsYXNzLgorCisgICAgICAgIFRvIGF2b2lkIHVubmVjZXNzYXJ5IHZpcnR1
YWwgZnVuY3Rpb24gY2FsbHMsIGFsc28gY2hhbmdlZCBob3cKKyAgICAgICAgRG9jdW1lbnQ6OnRl
bXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50IHdvcmtzIHRvIGFsbG93IGZhc3QgaW5saW5lZAor
ICAgICAgICBhY2Nlc3MgYW5kIGF2b2lkIGxhenkgY3JlYXRpb24gd2hlbiBub3QgbmVlZGVkLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1pbi1z
aGFkb3cuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9j
eWNsZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1oaWVyYXJj
aHktZXhjZXB0aW9uLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJblRlbXBsYXRl
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluc0NvbnNpZGVyaW5nSG9zdEVsZW1l
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrQWNjZXB0Q2hpbGQpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5zdXJlVGVtcGxh
dGVDb250ZW50c093bmVyRG9jdW1lbnQpOiBSZW5hbWVkIHRvIG1ha2UgY2xlYXIgdGhhdCBpdCBs
YXppbHkgY3JlYXRlcyB0aGUgRG9jdW1lbnQuIFVwZGF0ZWQgYWxsIGV4aXN0aW5nIGNhbGxlcnMg
dG8gY2FsbCB0aGlzIG1ldGhvZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZW1wbGF0ZUNvbnRlbnRz
T3duZXJEb2N1bWVudCk6IEZhc3QsIGlubGluZWQgYWNjZXNzb3IgZm9yIHVzZSBpbiBjaGVja0Fj
Y2VwdENoaWxkKCkuCisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OmlzVGVtcGxhdGVDb250ZW50KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjb250YWluc0luY2x1ZGlu
Z1NoYWRvd0RPTSk6IG1hZGUgY29uc3QsIHNpbXBsaWZpZWQKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmNvbnRhaW5zSW5jbHVkaW5nSG9zdEVsZW1lbnRzKTogU3BlY2lhbGl6ZWQgdmVyc2lvbiBv
ZiBOb2RlOjpjb250YWlucyB0aGF0IGtub3dzIGhvdyB0byBqdW1wIG92ZXIgdGVtcGxhdGUgY29u
dGVudCBib3VuZGFyaWVzLgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToK
KyAgICAgICAgKiBkb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQpOiBTdWJjbGFzcyBvZiBE
b2N1bWVudEZyYWdtZW50IHdoaWNoIHN0b3JlcyBpdHMgaG9zdCB0ZW1wbGF0ZSBlbGVtZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQ6Omhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudDo6
VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYXJr
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRN
TCk6CisgICAgICAgICogaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNvbnRlbnQpOiBDb25zdHJ1Y3QgdGhlIG5ldyBz
dWJjbGFzcy4KKwogMjAxMy0wMS0wMyAgVGlhbmNoZW5nIEppYW5nICA8dGlqaWFuZ0ByaW0uY29t
PgogCiAgICAgICAgIFVwZGF0ZSBCQjEwIG1lZGlhIHJlbmRlciB0aGVtZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IGI2Yzg3NGIyMmEyNmQyYzc3ZmZlYjdiOTI0ZDQ1MWNlMmYz
MWM4ODMuLmI0MTNhYmI2MzUzZmVlZGZkMGRiZTExODkzNzBkNDMxNzM5YzEwNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjk2MSw2ICsyOTYxLDcgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9UYWdOb2RlTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UYWdOb2Rl
TGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFn
bWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKaW5kZXggZGQ0M2MxZjdmZDE2MGRiNGI2Y2RlMDY4Y2U4MDQ3ZWM5MzYzZTg5YS4u
Y2YzMTBlZGYyZWE2Y2MxNGU4NTg5NWZhY2RmMGM1NDExZTlmZjFiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0xNjQ1LDYgKzE2NDUsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vU3R5bGVkRWxlbWVudC5o
IFwKICAgICBkb20vU3R5bGVFbGVtZW50LmggXAogICAgIGRvbS9UYWdOb2RlTGlzdC5oIFwKKyAg
ICBkb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIFwKICAgICBkb20vVGV4dEV2
ZW50LmggXAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCBcCiAgICAgZG9tL1RleHQuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGMx
NjMwOGRiYjdmM2NhMzI0MzgyNWRmNDliNDQxZDcxYzBkNTE2NGEuLjNjM2EzMjE1MjNlOWU1YjYw
YzljZGU2YzhhZDYyMzliOTY4OTY5YTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC01NDk5MCw2ICs1NDk5MCwxMCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cVGVtcGxhdGVDb250ZW50
RG9jdW1lbnRGcmFnbWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxkb21cVGV4dC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDJhNjczYTcyYjI4MDBkN2I4NGIzMTljZDNhZjY2ZDYyYTk5OTJkNzEuLjMyMDVlZTg1
ZmIyYzQ1NzhjNzA1Y2YyNTJkYmMzZDlmNzgyZWRiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU5MDEsNiArNTkwMSw3IEBA
CiAJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RDRBQTc4MTE2QkFGQjYw
MDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDNUU5QjY3NzEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5jcHAgKi87IH07CiAJCUM1RUJERDg0MTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZl
bnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5o
ICovOyB9OworCQlDNjUwNDZBOTE2N0JGQjU1MDBDQzJBNEQgLyogVGVtcGxhdGVDb250ZW50RG9j
dW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzY1MDQ2QTgxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBsYXRlQ29udGVudERvY3VtZW50
RnJhZ21lbnQuaCAqLzsgfTsKIAkJQzZBNzAzMzI1QzlEMEI2Q0RDQkM0RDc3IC8qIEpTRXZlbnRU
YXJnZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzZBNzAzMzI1QzlEMEI2Q0RDQkM0RDc4IC8qIEpTRXZlbnRUYXJnZXQuY3BwICovOyB9OwogCQlD
NkIzMUIyRTE0Rjg0MUZCMDA4OUYyM0YgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2OTE2MTQ3MTRGNkVCQTcw
MDQ2Mzc1QyAvKiBTY3JvbGxiYXJUaGVtZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBN
b2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rp
b25MaXN0TGV2ZWwuaCAqLzsgfTsKQEAgLTEzMzU3LDYgKzEzMzU4LDcgQEAKIAkJQzVFQkREODEx
MDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDNUY3NjVCNDE0RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVib2Fy
ZFN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmRT
dHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUY3NjVCQTE0RTFFQ0Y0
MDA2Qzg5OUIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDNjUwNDZBODE2N0JGQjU1MDBDQzJBNEQgLyogVGVtcGxhdGVD
b250ZW50RG9jdW1lbnRGcmFnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM2OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1QyAvKiBTY3JvbGxiYXJUaGVtZUNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkE3MDMzMjVDOUQwQjZDRENCQzRE
NzggLyogSlNFdmVudFRhcmdldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNFdmVudFRhcmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2
RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjI2Niw2ICsyMjI2OCw3IEBACiAJCQkJ
QUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oICovLAogCQkJCUJDRTNC
RUMwMEQyMjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5jcHAgKi8sCiAJCQkJQkNFM0JFQzEw
RDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmggKi8sCisJCQkJQzY1MDQ2QTgxNjdCRkI1
NTAwQ0MyQTREIC8qIFRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCAqLywKIAkJCQk2
NTUwQjY5QjA5OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5jcHAgKi8sCiAJCQkJNjU1MEI2OUMwOTlE
RjAyNzAwOTBENzgxIC8qIFRleHQuaCAqLywKIAkJCQk5M0VFQzFGNjA5QzI4Nzc3MDBDNTE1RDEg
LyogVGV4dC5pZGwgKi8sCkBAIC0yNTY5MCw2ICsyNTY5Myw3IEBACiAJCQkJQThDRkYwNTEwQTE1
NEYwOTAwMEE0MjM0IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UzQkVD
MzBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1
NUIzREQ2MTI1MUYxMkQwMDNFRjI2OSAvKiBUZWxlcGhvbmVJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUM2NTA0NkE5MTY3QkZCNTUwMENDMkE0RCAvKiBUZW1wbGF0ZUNvbnRlbnREb2N1
bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBNjA5OURGMDI3MDA5MEQ3
ODEgLyogVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTcwOTlFNjQ5MjAwNTZFNTgx
IC8qIFRleHRBZmZpbml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAw
OThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNzVmZDcwNDEyMzE3NmQ5MGYxMmRkOTQ4
NTRjM2JhOTY5NTA4YmY0Ny4uNTg3ODAwMTZhYTBjZjY3ZTllZDgwNmIyMTQyMWEzMDhhMDNlMzk3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5j
bHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50
RnJhZ21lbnQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKQEAgLTEzNyw2ICsxMzgsMjQgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2hp
bGRUeXBlQWxsb3dlZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIGNoaWxkKQogICAg
IHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNJblRlbXBsYXRlQ29udGVu
dChjb25zdCBOb2RlKiBub2RlKQoreworI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQorICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuIGRvY3Vt
ZW50ICYmIGRvY3VtZW50ID09IGRvY3VtZW50LT50ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVu
dCgpOworI2Vsc2UKKyAgICBVTlVTRUQobm9kZSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjb250YWluc0NvbnNpZGVyaW5nSG9zdEVsZW1lbnRz
KGNvbnN0IE5vZGUqIG5ld0NoaWxkLCBjb25zdCBOb2RlKiBuZXdQYXJlbnQpCit7CisgICAgcmV0
dXJuIChuZXdQYXJlbnQtPmlzSW5TaGFkb3dUcmVlKCkgfHwgaXNJblRlbXBsYXRlQ29udGVudChu
ZXdQYXJlbnQpKQorICAgICAgICA/IG5ld0NoaWxkLT5jb250YWluc0luY2x1ZGluZ0hvc3RFbGVt
ZW50cyhuZXdQYXJlbnQpCisgICAgICAgIDogbmV3Q2hpbGQtPmNvbnRhaW5zKG5ld1BhcmVudCk7
Cit9CisKIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uQ29kZSBjaGVja0FjY2VwdENoaWxkKENvbnRh
aW5lck5vZGUqIG5ld1BhcmVudCwgTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKQogewog
ICAgIC8vIE5vdCBtZW50aW9uZWQgaW4gc3BlYzogdGhyb3cgTk9UX0ZPVU5EX0VSUiBpZiBuZXdD
aGlsZCBpcyBudWxsCkBAIC0xNDgsNyArMTY3LDcgQEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25D
b2RlIGNoZWNrQWNjZXB0Q2hpbGQoQ29udGFpbmVyTm9kZSogbmV3UGFyZW50LCBOb2RlKiBuZXcK
ICAgICAgICAgQVNTRVJUKCFuZXdQYXJlbnQtPmlzUmVhZE9ubHlOb2RlKCkpOwogICAgICAgICBB
U1NFUlQoIW5ld1BhcmVudC0+aXNEb2N1bWVudFR5cGVOb2RlKCkpOwogICAgICAgICBBU1NFUlQo
aXNDaGlsZFR5cGVBbGxvd2VkKG5ld1BhcmVudCwgbmV3Q2hpbGQpKTsKLSAgICAgICAgaWYgKG5l
d0NoaWxkLT5jb250YWlucyhuZXdQYXJlbnQpKQorICAgICAgICBpZiAoY29udGFpbnNDb25zaWRl
cmluZ0hvc3RFbGVtZW50cyhuZXdDaGlsZCwgbmV3UGFyZW50KSkKICAgICAgICAgICAgIHJldHVy
biBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE2
Miw3ICsxODEsNyBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbkNvZGUgY2hlY2tBY2NlcHRDaGls
ZChDb250YWluZXJOb2RlKiBuZXdQYXJlbnQsIE5vZGUqIG5ldwogICAgICAgICByZXR1cm4gTk9f
TU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwogICAgIGlmIChuZXdDaGlsZC0+aW5Eb2N1bWVudCgp
ICYmIG5ld0NoaWxkLT5pc0RvY3VtZW50VHlwZU5vZGUoKSkKICAgICAgICAgcmV0dXJuIEhJRVJB
UkNIWV9SRVFVRVNUX0VSUjsKLSAgICBpZiAobmV3Q2hpbGQtPmNvbnRhaW5zKG5ld1BhcmVudCkp
CisgICAgaWYgKGNvbnRhaW5zQ29uc2lkZXJpbmdIb3N0RWxlbWVudHMobmV3Q2hpbGQsIG5ld1Bh
cmVudCkpCiAgICAgICAgIHJldHVybiBISUVSQVJDSFlfUkVRVUVTVF9FUlI7CiAKICAgICBpZiAo
b2xkQ2hpbGQgJiYgbmV3UGFyZW50LT5pc0RvY3VtZW50Tm9kZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCAzYTlkNzQ2MTA0OTYzMDA0ZGZmMWQ0ZWUzY2UzZTM2N2RhNmU1MTBiLi4z
MDU0NThhOTA2YTYzYjE3NWQ0ZWFlMDcwODUyNWUzYzYzNjYwMTAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTU5NDUsMTggKzU5NDUsMTUgQEAgTG9jYWxlJiBEb2N1bWVudDo6Z2V0Q2Fj
aGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogfQogCiAjaWYgRU5BQkxFKFRF
TVBMQVRFX0VMRU1FTlQpCi1Eb2N1bWVudCogRG9jdW1lbnQ6OnRlbXBsYXRlQ29udGVudHNPd25l
ckRvY3VtZW50KCkKK0RvY3VtZW50KiBEb2N1bWVudDo6ZW5zdXJlVGVtcGxhdGVDb250ZW50c093
bmVyRG9jdW1lbnQoKQogewotICAgIC8vIElmIERPQ1VNRU5UIGRvZXMgbm90IGhhdmUgYSBicm93
c2luZyBjb250ZXh0LCBMZXQgVEVNUExBVEUgQ09OVEVOVFMgT1dORVIgYmUgRE9DVU1FTlQgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIHRo
aXM7CisgICAgaWYgKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCA9IHRlbXBsYXRlQ29udGVudHNP
d25lckRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PERvY3VtZW50Kj4oZG9j
dW1lbnQpOwogCi0gICAgaWYgKCFtX3RlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KSB7Ci0g
ICAgICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQotICAgICAgICAgICAgbV90ZW1wbGF0ZUNvbnRl
bnRzT3duZXJEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAsIGJsYW5rVVJMKCkpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50
ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBibGFua1VSTCgpKTsKLSAgICB9CisgICAgaWYgKGlzSFRN
TERvY3VtZW50KCkpCisgICAgICAgIG1fdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQgPSBI
VE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBibGFua1VSTCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1f
dGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIGJsYW5r
VVJMKCkpOwogCiAgICAgcmV0dXJuIG1fdGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQuZ2V0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGUzOWIyZGRiYjYxZjVmODFhMGI3NDIxZjgx
ZDk0NjEyMmVmZTkwMWQuLjc1MmIzY2QxNjdmMWRmNGRiZWMwMTVlM2Q1OWM0OTVlMzA3MGYyN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTkyLDcgKzExOTIsOCBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQotICAgIERvY3VtZW50KiB0ZW1wbGF0
ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpOworICAgIGNvbnN0IERvY3VtZW50KiB0ZW1wbGF0ZUNv
bnRlbnRzT3duZXJEb2N1bWVudCgpIGNvbnN0OworICAgIERvY3VtZW50KiBlbnN1cmVUZW1wbGF0
ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKTsKQEAgLTE1NzAs
NiArMTU3MSwxNyBAQCBpbmxpbmUgdm9pZCBEb2N1bWVudDo6bm90aWZ5UmVtb3ZlUGVuZGluZ1No
ZWV0SWZOZWVkZWQoKQogICAgICAgICBkaWRSZW1vdmVBbGxQZW5kaW5nU3R5bGVzaGVldCgpOwog
fQogCisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCitpbmxpbmUgY29uc3QgRG9jdW1lbnQq
IERvY3VtZW50Ojp0ZW1wbGF0ZUNvbnRlbnRzT3duZXJEb2N1bWVudCgpIGNvbnN0Cit7CisgICAg
Ly8gSWYgRE9DVU1FTlQgZG9lcyBub3QgaGF2ZSBhIGJyb3dzaW5nIGNvbnRleHQsIExldCBURU1Q
TEFURSBDT05URU5UUyBPV05FUiBiZSBET0NVTUVOVCBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm4gdGhpczsKKworICAgIHJldHVybiBtX3Rl
bXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50LmdldCgpOworfQorI2VuZGlmCisKIC8vIFB1dCB0
aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2UgdGhleSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZp
bml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIHRoZW0uCiAKIGlubGluZSBib29s
IE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5oCmluZGV4IDNhZjVmMWIyOGZhYTFiZWE4M2Y3NzUwZmRkMWU3ZmZmMzdlYTM0ZDMuLjFh
Y2E0Y2NmOGFiMGE2ZjQ2MDJjYjRhNGVlZjQwZmEyZTU5Y2NmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzcsNiArMzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBw
YXJzZVhNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKICAgICAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCBib29sIGlzVGVtcGxhdGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqLCBD
b25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBh
ZTUzZmVlYjdmMTI1ZTFkZDk0NDYyYmE1YWM4M2VhYzk4OWM1YzJlLi42YWM0M2ZkMWU2ZDYxYzAz
ZTIwNDcxMTQ4ZDg4MmM1M2E2NmNkNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00Niw2ICs0Niw3
IEBACiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01TZXR0YWJs
ZVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRG
cmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJFbGVtZW50UmFyZURhdGEuaCIKQEAgLTk2LDYgKzk3LDcgQEAKICNpbmNs
dWRlICJTdG9yYWdlRXZlbnQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiVGFnTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdt
ZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5oIgogI2luY2x1
ZGUgIlRyZWVTY29wZUFkb3B0ZXIuaCIKQEAgLTEwNTUsMTcgKzEwNTcsMzIgQEAgYm9vbCBOb2Rl
Ojpjb250YWlucyhjb25zdCBOb2RlKiBub2RlKSBjb25zdAogICAgIHJldHVybiB0aGlzID09IG5v
ZGUgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2YodGhpcyk7CiB9CiAKLWJvb2wgTm9kZTo6Y29udGFp
bnNJbmNsdWRpbmdTaGFkb3dET00oTm9kZSogbm9kZSkKK2Jvb2wgTm9kZTo6Y29udGFpbnNJbmNs
dWRpbmdTaGFkb3dET00oY29uc3QgTm9kZSogbm9kZSkgY29uc3QKIHsKLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBuOyBuID0g
bi0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChuID09IHRoaXMpCisgICAgZm9y
ICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgaWYg
KG5vZGUgPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTm9kZTo6Y29udGFpbnNJbmNsdWRpbmdIb3N0RWxlbWVudHMo
Y29uc3QgTm9kZSogbm9kZSkgY29uc3QKK3sKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkK
KyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAobm9kZSA9PSB0aGlzKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChub2RlLT5pc0RvY3VtZW50RnJhZ21lbnQoKSAm
JiBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudEZyYWdtZW50Kj4obm9kZSktPmlzVGVtcGxhdGVD
b250ZW50KCkpCisgICAgICAgICAgICBub2RlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVGVtcGxhdGVD
b250ZW50RG9jdW1lbnRGcmFnbWVudCo+KG5vZGUpLT5ob3N0KCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKKyNlbHNlCisgICAgcmV0dXJuIGNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9N
KG5vZGUpOworI2VuZGlmCit9CisKIHZvaWQgTm9kZTo6YXR0YWNoKCkKIHsKICAgICBBU1NFUlQo
IWF0dGFjaGVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggZDBlNDFmMDFkMzg3OGVmMGYzMzU1Y2RhYWUw
YmZmMDM0MzUwMWYxMS4uMzhiMGZkZDY0NTM4ZTEyMDExYzgwNjk0YTgyZmJkMjAzNjEyZWMzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCkBAIC0yNzcsNiArMjc3LDcgQEAgcHVibGljOgogICAgIE5vZGUqIG5vbkJv
dW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCk7CiAKICAgICAvLyBOb2RlJ3MgcGFyZW50LCBzaGFk
b3cgdHJlZSBob3N0LgorICAgIC8vIEZJWE1FOiBUaGVzZSBtZXRob2RzIHNob3VsZCBiZSByZW5h
bWVkIHBhcmVudE9yU2hhZG93SG9zdCoKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPckhvc3RO
b2RlKCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0UGFyZW50T3JIb3N0Tm9kZShDb250YWluZXJOb2RlKik7CkBAIC00ODgsNyAr
NDg5LDggQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tTZXRQcmVmaXgoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcmVmaXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGlzRGVzY2VuZGFudE9mKGNv
bnN0IE5vZGUqKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUqKSBjb25zdDsK
LSAgICBib29sIGNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKE5vZGUqKTsKKyAgICBib29sIGNv
bnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNvbnN0IE5vZGUqKSBjb25zdDsKKyAgICBib29sIGNv
bnRhaW5zSW5jbHVkaW5nSG9zdEVsZW1lbnRzKGNvbnN0IE5vZGUqKSBjb25zdDsKIAogICAgIC8v
IFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgcmFuZ2Ugb2Zmc2V0cyB1c2UgY2hhcmFjdGVycyBv
ciBub2RlIGluZGljZXMuCiAgICAgdmlydHVhbCBib29sIG9mZnNldEluQ2hhcmFjdGVycygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3Vt
ZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE5MDBiZWI3NWExOTY2ZmI1NzgwYzYwY2ZlNzJiZTgz
ZGFkNGM4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0ZUNv
bnRlbnREb2N1bWVudEZyYWdtZW50LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGVtcGxh
dGVDb250ZW50RG9jdW1lbnRGcmFnbWVudF9oCisjZGVmaW5lIFRlbXBsYXRlQ29udGVudERvY3Vt
ZW50RnJhZ21lbnRfaAorCisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisKKyNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGVt
cGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZy
YWdtZW50PiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFbGVtZW50KiBob3N0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZW1wbGF0ZUNvbnRlbnREb2N1bWVu
dEZyYWdtZW50KGRvY3VtZW50LCBob3N0KSk7CisgICAgfQorCisgICAgY29uc3QgRWxlbWVudCog
aG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQorCitwcml2YXRlOgorICAgIFRlbXBsYXRl
Q29udGVudERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFbGVtZW50
KiBob3N0KQorICAgICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQpCisgICAgICAgICwgbV9ob3N0KGhvc3QpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCBpc1RlbXBsYXRlQ29udGVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIGNvbnN0IEVsZW1lbnQqIG1faG9zdDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQorCisjZW5k
aWYgLy8gVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKaW5kZXggNjNhYmI1ZjU0MWRkODAyNDA1MjdiNjY2NDQzNzdlODY3ZTFlNDAxNC4u
MDA4MmM2M2JjZDU1OWJlMzkyZmZmODQxNTBlMjg2MjdhZjg2MDZkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcApAQCAtOTk2LDcgKzk5Niw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChjb25zdCBTdHJpbmcmIG1hcmt1
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCk7CiAj
aWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAgaWYgKGNvbnRleHRFbGVtZW50LT5oYXNU
YWdOYW1lKHRlbXBsYXRlVGFnKSkKLSAgICAgICAgZG9jdW1lbnQgPSBkb2N1bWVudC0+dGVtcGxh
dGVDb250ZW50c093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgZG9jdW1lbnQgPSBkb2N1bWVudC0+
ZW5zdXJlVGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKTsKICNlbmRpZgogICAgIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3Bw
CmluZGV4IGVhMDcxMzIyNDUzYzI2MmI1NDAyOWZjZjkyYmYyZGUwZTY1YzU0NDYuLjY2MmJmMWQx
ZmQ5ZTE5NTk2MTFkMzdkNjNiODU0NWIyYzlkNjI5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRP
TUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJh
Z21lbnQuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NjIsNyArNjMsNyBAQCBQYXNzUmVmUHRyPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+IEhUTUxUZW1wbGF0
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogRG9jdW1lbnRGcmFnbWVudCog
SFRNTFRlbXBsYXRlRWxlbWVudDo6Y29udGVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvbnRl
bnQpCi0gICAgICAgIG1fY29udGVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRv
Y3VtZW50KCktPnRlbXBsYXRlQ29udGVudHNPd25lckRvY3VtZW50KCkpOworICAgICAgICBtX2Nv
bnRlbnQgPSBUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQo
KS0+ZW5zdXJlVGVtcGxhdGVDb250ZW50c093bmVyRG9jdW1lbnQoKSwgdGhpcyk7CiAKICAgICBy
ZXR1cm4gbV9jb250ZW50LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlkNzg5MTlmM2JiYjBlNGFhM2NhOGNl
MzcyYjQwOWJiMzVmYzkyZGIuLjZkNmQzYTQwOTFmYjcyNzY0ZjQ1MzllYWZkOGFhMmFkN2I3ZDQx
NDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0wMyAgQWRhbSBLbGVpbiAgPGFkYW1r
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbSFRNTFRlbXBsYXRlRWxlbWVudF0gRGlzYWxsb3cg
Y3ljbGVzIHdpdGhpbiB0ZW1wbGF0ZSBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBPamFu
IFZhZmFpLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVt
ZW50L2N5Y2xlcy1pbi1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1pbi1zaGFkb3cuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1oaWVyYXJjaHktZXhjZXB0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1oaWVy
YXJjaHktZXhjZXB0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTAzICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRl
bmluZywgc2tpcCBhIG5ldyBmYWlsaW5nIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzkwZjc1ZmI4MjQxMzRmYWU0ZWJmNDgyMjY1MTNkMDBiM2VjYjE5YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3lj
bGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IHRoYXQgY3ljbGVzIGFyZSBu
b3QgYWxsb3dlZCBpbiB0ZW1wbGF0ZSBjb250ZW50CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQodGVtcGxhdGUpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMu
CitQQVNTIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQob3V0ZXJEaXYpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMuCitQQVNT
IGlubmVyRGl2LmFwcGVuZENoaWxkKHRlbXBsYXRlKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhp
ZXJhcmNoeVJlcXVlc3RFcnJvcjogRE9NIEV4Y2VwdGlvbiAzLgorUEFTUyBpbm5lckRpdi5hcHBl
bmRDaGlsZChvdXRlckRpdikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0
RXJyb3I6IERPTSBFeGNlcHRpb24gMy4KK1BBU1MgaW5uZXJUZW1wbGF0ZS5hcHBlbmRDaGlsZChv
dXRlckRpdikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERP
TSBFeGNlcHRpb24gMy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVF
bGVtZW50L2N5Y2xlcy1pbi1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMtaW4tc2hhZG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NTM1MDU0Nzg2MTgxNDFlZDA1ZjE0YTM2MmU5NTUzNzUxNDNmYmUyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNs
ZXMtaW4tc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IHRoYXQgY3lj
bGUgZGV0ZWN0aW9uIHRyYXZlcnNlcyBvdmVyIGJvdGggdGVtcGxhdGVzIGFuZCBzaGFkb3cgcm9v
dHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc2hhZG93RGl2LmFwcGVu
ZENoaWxkKG91dGVyRGl2KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhpZXJhcmNoeVJlcXVlc3RF
cnJvcjogRE9NIEV4Y2VwdGlvbiAzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxU
ZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWluLXNoYWRvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMtaW4tc2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmMyZTYzZWQxZjdjYTFkNmZhZDFkOGIxNGM0OTE3NmRlZWU1OWEzNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxUZW1wbGF0ZUVsZW1lbnQvY3ljbGVzLWluLXNo
YWRvdy5odG1sCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxk
aXYgaWQ9Y29udGFpbmVyPgorICA8dGVtcGxhdGU+PGRpdj48L2Rpdj48L3RlbXBsYXRlPgorPC9k
aXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBjeWNsZSBkZXRlY3Rpb24gdHJh
dmVyc2VzIG92ZXIgYm90aCB0ZW1wbGF0ZXMgYW5kIHNoYWRvdyByb290cycpOwordmFyIG91dGVy
RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwordmFyIHRlbXBsYXRl
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKTsKK3ZhciBkaXYgPSB0ZW1wbGF0
ZS5jb250ZW50LmZpcnN0Q2hpbGQ7Cit2YXIgc2hhZG93Um9vdCA9IGRpdi53ZWJraXRDcmVhdGVT
aGFkb3dSb290KCk7Cit2YXIgc2hhZG93RGl2ID0gc2hhZG93Um9vdC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CitzaG91bGRUaHJvdygnc2hhZG93RGl2LmFwcGVu
ZENoaWxkKG91dGVyRGl2KScpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MVGVtcGxhdGVFbGVtZW50L2N5Y2xlcy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZjI2YjQyMjJhMmMzZjdiYWE1ZTc3ZjEzNDJhYWQ3Y2UyNDNlOGU0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxlbWVudC9jeWNsZXMu
aHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdUZXN0IHRoYXQgY3ljbGVzIGFyZSBub3QgYWxsb3dlZCBpbiB0ZW1wbGF0ZSBjb250
ZW50Jyk7Cit2YXIgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScp
Oworc2hvdWxkVGhyb3coJ3RlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQodGVtcGxhdGUpJyk7
Cit2YXIgb3V0ZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK291dGVyRGl2
LmFwcGVuZENoaWxkKHRlbXBsYXRlKTsKK3Nob3VsZFRocm93KCd0ZW1wbGF0ZS5jb250ZW50LmFw
cGVuZENoaWxkKG91dGVyRGl2KScpOwordmFyIGlubmVyRGl2ID0gdGVtcGxhdGUuY29udGVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CitzaG91bGRUaHJvdygn
aW5uZXJEaXYuYXBwZW5kQ2hpbGQodGVtcGxhdGUpJyk7CitzaG91bGRUaHJvdygnaW5uZXJEaXYu
YXBwZW5kQ2hpbGQob3V0ZXJEaXYpJyk7Cit2YXIgaW5uZXJUZW1wbGF0ZSA9IGlubmVyRGl2LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJykpOworc2hvdWxkVGhy
b3coJ2lubmVyVGVtcGxhdGUuYXBwZW5kQ2hpbGQob3V0ZXJEaXYpJyk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaGllcmFyY2h5
LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWhpZXJhcmNoeS1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZjU2OTBl
NzI3Njc4NjFlZGMzY2EwNGJhNDU5NDczNmMzNDZiNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWhpZXJhcmNoeS1leGNlcHRpb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0FwcGVuZGluZyBhbiBhbmNlc3RvciB0byBhIHNoYWRv
dyB0cmVlIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgc2hhZG93RGl2LmFwcGVuZENoaWxkKGNvbnRhaW5lcikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IERPTSBFeGNlcHRpb24gMy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWhpZXJhcmNoeS1leGNlcHRp
b24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaGllcmFyY2h5LWV4
Y2VwdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5Yzg3N2E0YzFlOWU2Y2Q0NzgwYWYzNjRiYzFiZTBk
NTU3NGM1NWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWhpZXJhcmNoeS1leGNlcHRpb24uaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPGRpdiBpZD1jb250YWluZXI+CisgIDxkaXY+CisgICAgICA8c3Bhbj48L3Nw
YW4+CisgIDwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ0FwcGVuZGluZyBh
biBhbmNlc3RvciB0byBhIHNoYWRvdyB0cmVlIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24nKTsK
K3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2
YXIgc3BhbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7Cit2YXIgc2hhZG93ID0g
c3Bhbi53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7Cit2YXIgc2hhZG93RGl2ID0gc2hhZG93LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKK3Nob3VsZFRocm93KCdz
aGFkb3dEaXYuYXBwZW5kQ2hpbGQoY29udGFpbmVyKScpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>