<?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>137172</bug_id>
          
          <creation_ts>2014-09-26 22:17:47 -0700</creation_ts>
          <short_desc>Remove remaining uses of NODE_TYPE_CASTS() from html/</short_desc>
          <delta_ts>2014-09-29 10:16:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          <dependson>137056</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037624</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-26 22:17:47 -0700</bug_when>
    <thetext>Remove remaining uses of NODE_TYPE_CASTS() from html/ and use the new SPECIALIZE_TYPE_TRAITS_*() macro instead so that is&lt;&gt;() / downcast&lt;&gt;() works for those types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037626</commentid>
    <comment_count>1</comment_count>
      <attachid>238759</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-26 22:26:00 -0700</bug_when>
    <thetext>Created attachment 238759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037628</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-26 22:28:33 -0700</bug_when>
    <thetext>Attachment 238759 did not pass style-queue:


ERROR: Source/WebCore/html/LabelableElement.h:55:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/shadow/TextControlInnerElements.h:75:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037629</commentid>
    <comment_count>3</comment_count>
      <attachid>238760</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-26 22:29:16 -0700</bug_when>
    <thetext>Created attachment 238760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037631</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-26 22:31:22 -0700</bug_when>
    <thetext>Attachment 238760 did not pass style-queue:


ERROR: Source/WebCore/html/LabelableElement.h:55:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/shadow/TextControlInnerElements.h:75:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037632</commentid>
    <comment_count>5</comment_count>
      <attachid>238761</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-26 22:50:16 -0700</bug_when>
    <thetext>Created attachment 238761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037633</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-26 22:52:38 -0700</bug_when>
    <thetext>Attachment 238761 did not pass style-queue:


ERROR: Source/WebCore/html/LabelableElement.h:55:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/shadow/TextControlInnerElements.h:75:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037821</commentid>
    <comment_count>7</comment_count>
      <attachid>238761</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-28 17:13:16 -0700</bug_when>
    <thetext>Comment on attachment 238761
Patch

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

&gt; Source/WebCore/css/SelectorCheckerTestFunctions.h:137
&gt; +    if (is&lt;WebVTTElement&gt;(element))

Should be *element unless we want to add a null check.

&gt; Source/WebCore/css/SelectorCheckerTestFunctions.h:314
&gt; +    return is&lt;WebVTTElement&gt;(element) &amp;&amp; !downcast&lt;WebVTTElement&gt;(*element).isPastNode();

Should be *element unless we want to add a null check.

&gt; Source/WebCore/css/SelectorCheckerTestFunctions.h:319
&gt; +    return is&lt;WebVTTElement&gt;(element) &amp;&amp; downcast&lt;WebVTTElement&gt;(*element).isPastNode();

Should be *element unless we want to add a null check.

&gt; Source/WebCore/css/StyleResolver.cpp:653
&gt; +    if (is&lt;WebVTTElement&gt;(state.element()))

Should be *state.element() unless we want to add a null check.

&gt; Source/WebCore/dom/NodeRenderingTraversal.cpp:138
&gt; +    if (is&lt;InsertionPoint&gt;(parent)) {

Should be *parent unless we want to add a null check.

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:330
&gt;      Node* node = userAgentShadowRoot()-&gt;firstChild();
&gt; -    return toTextControlInnerTextElement(node);
&gt; +    return downcast&lt;TextControlInnerTextElement&gt;(node);

I think this would read better without the local variable.

&gt; Source/WebCore/html/shadow/InsertionPoint.h:84
&gt; +    return node &amp;&amp; is&lt;InsertionPoint&gt;(node) &amp;&amp; downcast&lt;InsertionPoint&gt;(*node).isActive();

Should either remove the &quot;node &amp;&amp;&quot; part of use *node inside the call to is.

&gt; Source/WebCore/html/shadow/InsertionPoint.h:92
&gt; +        if (is&lt;InsertionPoint&gt;(parent) &amp;&amp; downcast&lt;InsertionPoint&gt;(*parent).shouldUseFallbackElements())

Should pass *parent to is.

&gt; Source/WebCore/html/track/VTTCue.cpp:500
&gt; +        if (is&lt;WebVTTElement&gt;(node))

Should pass *node.

&gt; Source/WebCore/html/track/VTTCue.cpp:769
&gt; +        if (is&lt;WebVTTElement&gt;(child)) {

Should pass *child.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037959</commentid>
    <comment_count>8</comment_count>
      <attachid>238861</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-29 09:33:47 -0700</bug_when>
    <thetext>Created attachment 238861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037961</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 09:35:41 -0700</bug_when>
    <thetext>Attachment 238861 did not pass style-queue:


ERROR: Source/WebCore/html/LabelableElement.h:55:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/html/shadow/TextControlInnerElements.h:75:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037975</commentid>
    <comment_count>10</comment_count>
      <attachid>238861</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 10:16:35 -0700</bug_when>
    <thetext>Comment on attachment 238861
Patch

Clearing flags on attachment: 238861

Committed r174067: &lt;http://trac.webkit.org/changeset/174067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037976</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 10:16:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238759</attachid>
            <date>2014-09-26 22:26:00 -0700</date>
            <delta_ts>2014-09-26 22:29:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137172-20140926222600.patch</filename>
            <type>text/plain</type>
            <size>18787</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM0ODFjMDk1MWNlMzk2
OGEzZjkwM2U1NDMwMDAwYTY0NDRiNmUwYS4uZDg2ZDI0ODkzYzgxMjA5NmRjZTI4OTY1NzE4Zjhi
MzQxNWNiYjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE0LTA5LTI2ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBSZW1vdmUgcmVtYWlu
aW5nIHVzZXMgb2YgTk9ERV9UWVBFX0NBU1RTKCkgZnJvbSBodG1sLworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHJlbWFpbmluZyB1c2VzIG9m
IE5PREVfVFlQRV9DQVNUUygpIGZyb20gaHRtbC8gYW5kIHVzZSB0aGUgbmV3CisgICAgICAgIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfKigpIG1hY3JvIGluc3RlYWQgc28gdGhhdCBpczw+KCkgLyBk
b3duY2FzdDw+KCkKKyAgICAgICAgd29ya3MgZm9yIHRob3NlIHR5cGVzLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL1NlbGVjdG9y
Q2hlY2tlclRlc3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNMYW5nUHNl
dWRvQ2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hlc0Z1dHVyZUN1ZVBzZXVkb0NsYXNz
KToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNQYXN0Q3VlUHNldWRvQ2xhc3MpOgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6ZmluZEZpcnN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6ZmluZExhc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjp0cmF2ZXJzZVBhcmVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5vZGVBc1N1cHBvcnRlZExhYmVsYWJsZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50Ojppbm5lclRleHRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0xhYmVsYWJsZUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTGFiZWxhYmxlRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Q
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjppc0FjdGl2ZUluc2VydGlvblBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24pOgorICAgICAgICAqIGh0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6aXNU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3Vl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
V2ViVlRURWxlbWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9r
ZW4pOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OmF0dGFjaFJlbmRlclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OmRldGFjaENoaWxkcmVuKToKKworMjAxNC0wOS0yNiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKICAgICAgICAgU3RvcCB1c2luZyBsZWdhY3kgTk9ERV9UWVBFX0NBU1RT
KCkgbWFjcm8gZm9yIEhUTUwgRWxlbWVudHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNzEzNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaAppbmRleCAwY2UyMTE1MWMwYzcwNzBmMDYxZmZi
ZWE5MzJmMGYwZTA3OTFhODI1Li4wMDk1ZTFkODE4OTgyZjBiZDA0NDljYTZiMjEzN2I4YzgwNzM1
YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVu
Y3Rpb25zLmgKQEAgLTEzNCw4ICsxMzQsOCBAQCBpbmxpbmUgYm9vbCBtYXRjaGVzTGFuZ1BzZXVk
b0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIEF0b21pY1N0cmluZ0ltcGwqIGZpbAogewog
ICAgIEF0b21pY1N0cmluZyB2YWx1ZTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYg
KGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpKQotICAgICAgICB2YWx1ZSA9IHRvV2ViVlRURWxl
bWVudChlbGVtZW50KS0+bGFuZ3VhZ2UoKTsKKyAgICBpZiAoaXM8V2ViVlRURWxlbWVudD4oZWxl
bWVudCkpCisgICAgICAgIHZhbHVlID0gZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKmVsZW1lbnQp
Lmxhbmd1YWdlKCk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgIHZhbHVlID0gZWxlbWVudC0+
Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CkBAIC0zMTEsMTIgKzMxMSwxMiBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgbWF0Y2hlc0Z1bGxTY3JlZW5Eb2N1bWVudFBzZXVkb0NsYXNzKGNvbnN0IEVs
ZW1lbnQqIGVsZW1lbnQpCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogQUxXQVlTX0lOTElORSBi
b29sIG1hdGNoZXNGdXR1cmVDdWVQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KQog
ewotICAgIHJldHVybiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgIXRvV2ViVlRURWxl
bWVudChlbGVtZW50KS0+aXNQYXN0Tm9kZSgpKTsKKyAgICByZXR1cm4gaXM8V2ViVlRURWxlbWVu
dD4oZWxlbWVudCkgJiYgIWRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KCplbGVtZW50KS5pc1Bhc3RO
b2RlKCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzUGFzdEN1ZVBzZXVkb0NsYXNz
KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZU
VEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPmlzUGFzdE5vZGUoKSk7Cisg
ICAgcmV0dXJuIGlzPFdlYlZUVEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PFdlYlZUVEVs
ZW1lbnQ+KCplbGVtZW50KS5pc1Bhc3ROb2RlKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDhmY2IzNzk2NTJkNjMzMjAzZjc3NWVlNzZkMzI3NzVm
MmUxZDExNGEuLjcxMWZhY2RmNTIwNzQ4NTA2N2FmYWNkZGQ3YTFhMWNjNzNkMjY4NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTY1MCwxMCArNjUwLDEwIEBAIGJvb2wg
U3R5bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLy8gRGVueSBzaGFy
aW5nIHN0eWxlcyBiZXR3ZWVuIFdlYlZUVCBhbmQgbm9uLVdlYlZUVCBub2Rlcy4KLSAgICBpZiAo
ZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgIT0gc3RhdGUuZWxlbWVudCgpLT5pc1dlYlZUVEVs
ZW1lbnQoKSkKKyAgICBpZiAoaXM8V2ViVlRURWxlbWVudD4oZWxlbWVudCkgIT0gaXM8V2ViVlRU
RWxlbWVudD4oc3RhdGUuZWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICYmIHN0YXRlLmVsZW1lbnQoKS0+aXNXZWJW
VFRFbGVtZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkgIT0g
dG9XZWJWVFRFbGVtZW50KHN0YXRlLmVsZW1lbnQoKSktPmlzUGFzdE5vZGUoKSkKKyAgICBpZiAo
aXM8V2ViVlRURWxlbWVudD4oZWxlbWVudCkgJiYgaXM8V2ViVlRURWxlbWVudD4oc3RhdGUuZWxl
bWVudCgpKSAmJiBkb3duY2FzdDxXZWJWVFRFbGVtZW50PigqZWxlbWVudCkuaXNQYXN0Tm9kZSgp
ICE9IGRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KCpzdGF0ZS5lbGVtZW50KCkpLmlzUGFzdE5vZGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcAppbmRleCA4YTU5NzgyZjA2OTI2OWY2YmQwYmI3
NjZkYjYzNTY2NzMzZjdlN2U0Li44NmVmMjk5OWRjMTg2NWU2MGQ4NzFjZmM3ZGI2ZWE1MzNhNWIx
MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3Bw
CkBAIC03Miw4ICs3Miw4IEBAIHN0YXRpYyBOb2RlKiBmaW5kRmlyc3RFbnRlcmluZ0luc2VydGlv
blBvaW50cyhjb25zdCBOb2RlKiBub2RlKQogICAgIEFTU0VSVChub2RlKTsKICAgICBpZiAoIWlz
QWN0aXZlSW5zZXJ0aW9uUG9pbnQobm9kZSkpCiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PE5v
ZGUqPihub2RlKTsKLSAgICBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0
b0luc2VydGlvblBvaW50KG5vZGUpOwotICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEZy
b21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQtPmZpcnN0RGlzdHJpYnV0ZWQoKSwgaW5z
ZXJ0aW9uUG9pbnQpKQorICAgIGNvbnN0IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCA9
IGRvd25jYXN0PEluc2VydGlvblBvaW50Pigqbm9kZSk7CisgICAgaWYgKE5vZGUqIGZvdW5kID0g
ZmluZEZpcnN0RnJvbURpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC5maXJzdERpc3RyaWJ1
dGVkKCksICZpbnNlcnRpb25Qb2ludCkpCiAgICAgICAgIHJldHVybiBmb3VuZDsKICAgICByZXR1
cm4gZmluZEZpcnN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUtPmZpcnN0Q2hp
bGQoKSk7CiB9CkBAIC0xMDEsOCArMTAxLDggQEAgc3RhdGljIE5vZGUqIGZpbmRMYXN0RW50ZXJp
bmdJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogbm9kZSkKICAgICBBU1NFUlQobm9kZSk7CiAg
ICAgaWYgKCFpc0FjdGl2ZUluc2VydGlvblBvaW50KG5vZGUpKQogICAgICAgICByZXR1cm4gY29u
c3RfY2FzdDxOb2RlKj4obm9kZSk7Ci0gICAgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKLSAgICBpZiAoTm9kZSogZm91bmQgPSBm
aW5kTGFzdEZyb21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQtPmxhc3REaXN0cmlidXRl
ZCgpLCBpbnNlcnRpb25Qb2ludCkpCisgICAgY29uc3QgSW5zZXJ0aW9uUG9pbnQmIGluc2VydGlv
blBvaW50ID0gZG93bmNhc3Q8SW5zZXJ0aW9uUG9pbnQ+KCpub2RlKTsKKyAgICBpZiAoTm9kZSog
Zm91bmQgPSBmaW5kTGFzdEZyb21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQubGFzdERp
c3RyaWJ1dGVkKCksICZpbnNlcnRpb25Qb2ludCkpCiAgICAgICAgIHJldHVybiBmb3VuZDsKICAg
ICByZXR1cm4gZmluZExhc3RTaWJsaW5nRW50ZXJpbmdJbnNlcnRpb25Qb2ludHMobm9kZS0+bGFz
dENoaWxkKCkpOwogfQpAQCAtMTM1LDExICsxMzUsMTEgQEAgc3RhdGljIENvbnRhaW5lck5vZGUq
IHRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFNoYWRvd1Jvb3RDcm9zc2luZyBzaGFk
b3cKICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIHNoYWRv
d1Jvb3RDcm9zc2luZyA9PSBDcm9zc1NoYWRvd1Jvb3QgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+
aG9zdEVsZW1lbnQoKSA6IHBhcmVudDsKIAotICAgIGlmIChwYXJlbnQtPmlzSW5zZXJ0aW9uUG9p
bnQoKSkgewotICAgICAgICBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0
b0luc2VydGlvblBvaW50KHBhcmVudCk7Ci0gICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aGFz
RGlzdHJpYnV0aW9uKCkpCisgICAgaWYgKGlzPEluc2VydGlvblBvaW50PihwYXJlbnQpKSB7Cisg
ICAgICAgIGNvbnN0IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCA9IGRvd25jYXN0PElu
c2VydGlvblBvaW50PigqcGFyZW50KTsKKyAgICAgICAgaWYgKGluc2VydGlvblBvaW50Lmhhc0Rp
c3RyaWJ1dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlmIChp
bnNlcnRpb25Qb2ludC0+aXNBY3RpdmUoKSkKKyAgICAgICAgaWYgKGluc2VydGlvblBvaW50Lmlz
QWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQocGFyZW50LCBzaGFk
b3dSb290Q3Jvc3NpbmcpOwogICAgIH0KICAgICByZXR1cm4gcGFyZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKaW5kZXggNDExODk4NTA3YWRlYTJkYzk1MjM4YjI2
ZWM0MmRiYTc3YzhlYjMxMS4uMTI1MjYwZmM2MzJmNDIzZjVmNTZmMjgxYzQyYzhiMGEyN2NjNzc1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC0zOCw5ICsz
OCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBMYWJlbGFibGVFbGVt
ZW50KiBub2RlQXNTdXBwb3J0ZWRMYWJlbGFibGVFbGVtZW50KE5vZGUqIG5vZGUpCiB7Ci0gICAg
aWYgKCFub2RlIHx8ICFpc0xhYmVsYWJsZUVsZW1lbnQoKm5vZGUpKQorICAgIGlmICghbm9kZSB8
fCAhaXM8TGFiZWxhYmxlRWxlbWVudD4oKm5vZGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBMYWJlbGFibGVFbGVtZW50JiBlbGVtZW50ID0gdG9MYWJlbGFibGVFbGVtZW50KCpub2Rl
KTsKKyAgICBMYWJlbGFibGVFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8TGFiZWxhYmxlRWxl
bWVudD4oKm5vZGUpOwogICAgIHJldHVybiBlbGVtZW50LnN1cHBvcnRMYWJlbHMoKSA/ICZlbGVt
ZW50IDogbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggY2UzZDhhOTUzZGYyZDIxYmE5MTYzNzhkMGVmNmQzYzZjMDBjYmZmMS4u
MTY5OGM3OTdlN2Q3MDI4Y2ZjNWFiZDNhYThjYTYwMmJiYWVmZDY0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zMjcsNyArMzI3LDcgQEAgU3Ry
aW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNhbml0aXplVXNlcklucHV0VmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wb3NlZFZhbHVlLAogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBIVE1MVGV4
dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50KCkgY29uc3QKIHsKICAgICBOb2RlKiBub2Rl
ID0gdXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7Ci0gICAgcmV0dXJuIHRvVGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+KG5vZGUpOwogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFi
bGVFbGVtZW50LmgKaW5kZXggNDAwNTVjM2NiNjM0ZjEwMTA1MTYzMjMwODQxMmI4YTdmNDgzMWM2
MS4uMjc0YzJhYjk5MDYwMDg5YWM3OTE5ZmMxN2RhNmFiNGQ2OGRhOGFiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKQEAgLTUwLDE2ICs1MCwxMCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVsYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIH07CiAKLXZvaWQgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IExhYmVsYWJs
ZUVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtu
b3duIGF0IGNvbXBpbGUgdGltZS4KLWlubGluZSBib29sIGlzTGFiZWxhYmxlRWxlbWVudChjb25z
dCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0xhYmVsYWJsZSgpOyB9
Ci1pbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKS5p
c0xhYmVsYWJsZSgpOyB9Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgotc3RydWN0IE5v
ZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBMYWJlbGFibGVFbGVtZW50LCBBcmdUeXBlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzTGFiZWxhYmxlRWxl
bWVudChub2RlKTsgfQotfTsKLQotTk9ERV9UWVBFX0NBU1RTKExhYmVsYWJsZUVsZW1lbnQpCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKExhYmVsYWJsZUVsZW1lbnQpCisgICAgc3RhdGlj
IGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJl
dHVybiBlbGVtZW50LmlzTGFiZWxhYmxlKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0xhYmVsYWJs
ZUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
ICYmIGlzTGFiZWxhYmxlRWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAK
aW5kZXggYzRjNzdhNzQ3YmU3Yzk3MWM3MDNiYzMzMjQ2ZTE3NGYyOGFjODY4My4uOGU4NjdlODFm
NzhhMjY1ODM5MzkxYzliM2JiZjcxZmE1ZDYyNDk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC01NiwxMCArNTYsOCBAQCBj
b25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50Pj4mIENvbnRlbnREaXN0cmlidXRvcjo6
ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaQogICAgIG1faW5zZXJ0aW9uUG9pbnRMaXN0SXNWYWxpZCA9
IHRydWU7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnRMaXN0LmlzRW1wdHkoKSk7CiAKLSAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pigqc2hhZG93
Um9vdCkpIHsKLSAgICAgICAgaWYgKGVsZW1lbnQuaXNJbnNlcnRpb25Qb2ludCgpKQotICAgICAg
ICAgICAgbV9pbnNlcnRpb25Qb2ludExpc3QuYXBwZW5kKHRvSW5zZXJ0aW9uUG9pbnQoJmVsZW1l
bnQpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
SW5zZXJ0aW9uUG9pbnQ+KCpzaGFkb3dSb290KSkKKyAgICAgICAgbV9pbnNlcnRpb25Qb2ludExp
c3QuYXBwZW5kKCZlbGVtZW50KTsKIAogICAgIHJldHVybiBtX2luc2VydGlvblBvaW50TGlzdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IGE0
ZTY5OTQ1ZjJkYjNjNmExOWZlZWQ1ZjUwMWYzMTdmMjViZTYxODkuLjZlOGI3Y2MxYzVhZGVmM2Qy
ZmRjOTg4MmJmZTI0M2U2N2NhMWE5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaApAQCAtNzUsMTMgKzc1LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0Rpc3RyaWJ1dGlvbjsKIH07CiAKLWlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0luc2VydGlvblBvaW50KCk7IH0KLQotTk9E
RV9UWVBFX0NBU1RTKEluc2VydGlvblBvaW50KTsKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oSW5zZXJ0aW9uUG9pbnQpCisgICAgc3RhdGljIGJvb2wgaXNJbnNlcnRpb25Qb2ludChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSW5zZXJ0aW9uUG9pbnQoKTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiBpbmxpbmUgYm9vbCBpc0FjdGl2ZUluc2VydGlvblBv
aW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aXNJbnNl
cnRpb25Qb2ludCgpICYmIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCk7CisgICAg
cmV0dXJuIG5vZGUgJiYgaXM8SW5zZXJ0aW9uUG9pbnQ+KG5vZGUpICYmIGRvd25jYXN0PEluc2Vy
dGlvblBvaW50Pigqbm9kZSkuaXNBY3RpdmUoKTsKIH0KIAogaW5saW5lIE5vZGUqIHBhcmVudE5v
ZGVGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKQEAgLTg5LDEyICs4OSwxMiBAQCBp
bmxpbmUgTm9kZSogcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQog
ICAgIEFTU0VSVChub2RlKTsKIAogICAgIGlmIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRO
b2RlKCkpIHsKLSAgICAgICAgaWYgKHBhcmVudC0+aXNJbnNlcnRpb25Qb2ludCgpICYmIHRvSW5z
ZXJ0aW9uUG9pbnQocGFyZW50KS0+c2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpKQorICAgICAg
ICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+KHBhcmVudCkgJiYgZG93bmNhc3Q8SW5zZXJ0aW9uUG9p
bnQ+KCpwYXJlbnQpLnNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSkKICAgICAgICAgICAgIHJl
dHVybiBwYXJlbnQtPnBhcmVudE5vZGUoKTsKICAgICAgICAgcmV0dXJuIHBhcmVudDsKICAgICB9
CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogaW5saW5lIEVsZW1l
bnQqIHBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgKaW5kZXggYjJlOGIzOWMxNDI0Njk2ZGU1NzcwNDRhNmM1NGE0YjAwYjEzYzQwYi4uYmI3YjAz
MjAxYmJjMDJlNTliMDU3YTY1NjcwNGUzNmNlMDdjYzk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTcwLDkg
KzcwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotaW5saW5l
IGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKTsg
fQotaW5saW5lIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KLU5PREVfVFlQRV9D
QVNUUyhUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1Rl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5pc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpOyB9CisgICAgc3Rh
dGljIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkg
eyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKIAogY2xhc3MgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVEN1ZS5jcHAKaW5kZXggODI0YzQ2ZTU3ZDc0NTRlN2ViYzg4M2Y4NmJiNzc4YzgxYzA4Nzc5
ZC4uYWIxOTg4ZjE4ODI4NWMwM2I1ZjcyMGEwZjE5MjM4NzZlOGVjOGI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtNDk3LDggKzQ5Nyw4IEBAIHZvaWQgVlRUQ3VlOjpj
b3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250YWluZXJOb2RlKiB3ZWJWVFROb2RlLCBDb250YWlu
ZXJOb2RlKiBwCiB7CiAgICAgZm9yIChOb2RlKiBub2RlID0gd2ViVlRUTm9kZS0+Zmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZWZQdHI8
Tm9kZT4gY2xvbmVkTm9kZTsKLSAgICAgICAgaWYgKG5vZGUtPmlzV2ViVlRURWxlbWVudCgpKQot
ICAgICAgICAgICAgY2xvbmVkTm9kZSA9IHRvV2ViVlRURWxlbWVudChub2RlKS0+Y3JlYXRlRXF1
aXZhbGVudEhUTUxFbGVtZW50KG93bmVyRG9jdW1lbnQoKSk7CisgICAgICAgIGlmIChpczxXZWJW
VFRFbGVtZW50Pihub2RlKSkKKyAgICAgICAgICAgIGNsb25lZE5vZGUgPSBkb3duY2FzdDxXZWJW
VFRFbGVtZW50Pigqbm9kZSkuY3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KG93bmVyRG9jdW1l
bnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNsb25lZE5vZGUgPSBub2RlLT5jbG9u
ZU5vZGUoZmFsc2UpOwogICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKGNsb25lZE5vZGUsIEFT
U0VSVF9OT19FWENFUFRJT04pOwpAQCAtNzY2LDggKzc2Niw4IEBAIHZvaWQgVlRUQ3VlOjptYXJr
RnV0dXJlQW5kUGFzdE5vZGVzKENvbnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IE1lZGlhVGltZSYg
cHJldmlvCiAgICAgICAgICAgICAgICAgaXNQYXN0Tm9kZSA9IGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBpZiAoY2hpbGQtPmlzV2ViVlRURWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICB0b1dlYlZUVEVsZW1lbnQoY2hpbGQpLT5zZXRJc1Bhc3ROb2RlKGlzUGFzdE5vZGUpOwor
ICAgICAgICBpZiAoaXM8V2ViVlRURWxlbWVudD4oY2hpbGQpKSB7CisgICAgICAgICAgICBkb3du
Y2FzdDxXZWJWVFRFbGVtZW50PigqY2hpbGQpLnNldElzUGFzdE5vZGUoaXNQYXN0Tm9kZSk7CiAg
ICAgICAgICAgICAvLyBNYWtlIGFuIGVsZW1lbmV0IGlkIG1hdGNoIGEgY3VlIGlkIGZvciBzdHls
ZSBtYXRjaGluZyBwdXJwb3Nlcy4KICAgICAgICAgICAgIGlmICghaWQoKS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgdG9FbGVtZW50KGNoaWxkKS0+c2V0SWRBdHRyaWJ1dGUoaWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmluZGV4IDM5NDA2ZDlhZjc4
NGY0NzJjNDY5MDY4NmUzYjJjNTUzMDFiNDdhZjMuLjNiM2Q5MTEwY2I4MGM1ZTJlNmYwMjc4NzA1
NGY3ODNhOTljMTdhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRURWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5oCkBAIC04MCw5ICs4MCw5IEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3Vh
Z2U7CiB9OwogCi12b2lkIGlzV2ViVlRURWxlbWVudChjb25zdCBXZWJWVFRFbGVtZW50Jik7IC8v
IENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxl
IHRpbWUuCi1pbmxpbmUgYm9vbCBpc1dlYlZUVEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc1dlYlZUVEVsZW1lbnQoKTsgfQotTk9ERV9UWVBFX0NBU1RTKFdlYlZUVEVs
ZW1lbnQpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYlZUVEVsZW1lbnQpCisgICAg
c3RhdGljIGJvb2wgaXNXZWJWVFRFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNXZWJWVFRFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5jcHAKaW5kZXggN2RiZThjM2M1MDNjZjVhMTQ0ODVjNzU2M2ZiMWI5NGFiZDIwNzY0
ZC4uOGIzMjg3NjUzMDkzZDdhNzllMThjNGIyZDY4NWU5MDgxYjdjMTViYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZv
aWQgV2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgICAgICBpZiAobm9kZVR5cGUgPT0gV2ViVlRUTm9kZVR5cGVOb25lKQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgV2ViVlRUTm9kZVR5cGUgY3VycmVudFR5cGUgPSBt
X2N1cnJlbnROb2RlLT5pc1dlYlZUVEVsZW1lbnQoKSA/IHRvV2ViVlRURWxlbWVudChtX2N1cnJl
bnROb2RlLmdldCgpKS0+d2ViVlRUTm9kZVR5cGUoKSA6IFdlYlZUVE5vZGVUeXBlTm9uZTsKKyAg
ICAgICAgV2ViVlRUTm9kZVR5cGUgY3VycmVudFR5cGUgPSBpczxXZWJWVFRFbGVtZW50PihtX2N1
cnJlbnROb2RlKSA/IGRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KCptX2N1cnJlbnROb2RlKS53ZWJW
VFROb2RlVHlwZSgpIDogV2ViVlRUTm9kZVR5cGVOb25lOwogICAgICAgICAvLyA8cnQ+IGlzIG9u
bHkgYWxsb3dlZCBpZiB0aGUgY3VycmVudCBub2RlIGlzIDxydWJ5Pi4KICAgICAgICAgaWYgKG5v
ZGVUeXBlID09IFdlYlZUVE5vZGVUeXBlUnVieVRleHQgJiYgY3VycmVudFR5cGUgIT0gV2ViVlRU
Tm9kZVR5cGVSdWJ5KQogICAgICAgICAgICAgYnJlYWs7CkBAIC01ODksMTAgKzU4OSwxMCBAQCB2
b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50JiBk
b2N1bWVudCkKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBvbmx5IG5vbi1WVFRFbGVtZW50IHdv
dWxkIGJlIHRoZSBEb2N1bWVudEZyYWdtZW50IHJvb3QuIChUZXh0CiAgICAgICAgIC8vIG5vZGVz
IGFuZCBQSXMgd2lsbCBuZXZlciBhcHBlYXIgYXMgbV9jdXJyZW50Tm9kZS4pCi0gICAgICAgIGlm
ICghbV9jdXJyZW50Tm9kZS0+aXNXZWJWVFRFbGVtZW50KCkpCisgICAgICAgIGlmICghaXNXZWJW
VFRFbGVtZW50KCptX2N1cnJlbnROb2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IFdlYlZUVE5vZGVUeXBlIGN1cnJlbnRUeXBlID0gdG9XZWJWVFRFbGVtZW50KG1fY3VycmVudE5v
ZGUuZ2V0KCkpLT53ZWJWVFROb2RlVHlwZSgpOworICAgICAgICBXZWJWVFROb2RlVHlwZSBjdXJy
ZW50VHlwZSA9IGRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KCptX2N1cnJlbnROb2RlKS53ZWJWVFRO
b2RlVHlwZSgpOwogICAgICAgICBib29sIG1hdGNoZXNDdXJyZW50ID0gbm9kZVR5cGUgPT0gY3Vy
cmVudFR5cGU7CiAgICAgICAgIGlmICghbWF0Y2hlc0N1cnJlbnQpIHsKICAgICAgICAgICAgIC8v
IDwvcnVieT4gYXV0by1jbG9zZXMgPHJ0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVUcmVlLmNwcAppbmRleCA0MjNiM2NjOGM4NjhmYTA4MWRjNjEwYTljOWE5MjcxYzdiZWExMDc3
Li5hMjQzZmZiNDJkMTU4ODAxOWY0YTljZmI3ZTZmYTNmYTkyNzkzOTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcApAQCAtNjA2LDggKzYwNiw4IEBAIHN0YXRp
YyB2b2lkIGF0dGFjaFJlbmRlclRyZWUoRWxlbWVudCYgY3VycmVudCwgUmVuZGVyU3R5bGUmIGlu
aGVyaXRlZFN0eWxlLCBSZW5kCiAgICAgUG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVyIGNh
bGxiYWNrRGlzYWJsZXIoY3VycmVudC5kb2N1bWVudCgpKTsKICAgICBXaWRnZXRIaWVyYXJjaHlV
cGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogCi0g
ICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQoY3VycmVudCkpIHsKLSAgICAgICAgYXR0YWNoRGlzdHJp
YnV0ZWRDaGlsZHJlbih0b0luc2VydGlvblBvaW50KGN1cnJlbnQpLCBpbmhlcml0ZWRTdHlsZSwg
cmVuZGVyVHJlZVBvc2l0aW9uKTsKKyAgICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+KGN1cnJlbnQp
KSB7CisgICAgICAgIGF0dGFjaERpc3RyaWJ1dGVkQ2hpbGRyZW4oZG93bmNhc3Q8SW5zZXJ0aW9u
UG9pbnQ+KGN1cnJlbnQpLCBpbmhlcml0ZWRTdHlsZSwgcmVuZGVyVHJlZVBvc2l0aW9uKTsKICAg
ICAgICAgY3VycmVudC5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgY3VycmVudC5j
bGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICByZXR1cm47CkBAIC02NjIsOCAr
NjYyLDggQEAgc3RhdGljIHZvaWQgZGV0YWNoRGlzdHJpYnV0ZWRDaGlsZHJlbihJbnNlcnRpb25Q
b2ludCYgaW5zZXJ0aW9uUG9pbnQpCiAKIHN0YXRpYyB2b2lkIGRldGFjaENoaWxkcmVuKENvbnRh
aW5lck5vZGUmIGN1cnJlbnQsIERldGFjaFR5cGUgZGV0YWNoVHlwZSkKIHsKLSAgICBpZiAoaXNJ
bnNlcnRpb25Qb2ludChjdXJyZW50KSkKLSAgICAgICAgZGV0YWNoRGlzdHJpYnV0ZWRDaGlsZHJl
bih0b0luc2VydGlvblBvaW50KGN1cnJlbnQpKTsKKyAgICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+
KGN1cnJlbnQpKQorICAgICAgICBkZXRhY2hEaXN0cmlidXRlZENoaWxkcmVuKGRvd25jYXN0PElu
c2VydGlvblBvaW50PihjdXJyZW50KSk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gY3VycmVu
dC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgIGlmIChjaGlsZC0+aXNUZXh0Tm9kZSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238760</attachid>
            <date>2014-09-26 22:29:16 -0700</date>
            <delta_ts>2014-09-26 22:50:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137172-20140926222916.patch</filename>
            <type>text/plain</type>
            <size>19602</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM0ODFjMDk1MWNlMzk2
OGEzZjkwM2U1NDMwMDAwYTY0NDRiNmUwYS4uZDg2ZDI0ODkzYzgxMjA5NmRjZTI4OTY1NzE4Zjhi
MzQxNWNiYjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE0LTA5LTI2ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBSZW1vdmUgcmVtYWlu
aW5nIHVzZXMgb2YgTk9ERV9UWVBFX0NBU1RTKCkgZnJvbSBodG1sLworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHJlbWFpbmluZyB1c2VzIG9m
IE5PREVfVFlQRV9DQVNUUygpIGZyb20gaHRtbC8gYW5kIHVzZSB0aGUgbmV3CisgICAgICAgIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfKigpIG1hY3JvIGluc3RlYWQgc28gdGhhdCBpczw+KCkgLyBk
b3duY2FzdDw+KCkKKyAgICAgICAgd29ya3MgZm9yIHRob3NlIHR5cGVzLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL1NlbGVjdG9y
Q2hlY2tlclRlc3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNMYW5nUHNl
dWRvQ2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hlc0Z1dHVyZUN1ZVBzZXVkb0NsYXNz
KToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNQYXN0Q3VlUHNldWRvQ2xhc3MpOgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6ZmluZEZpcnN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6ZmluZExhc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjp0cmF2ZXJzZVBhcmVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5vZGVBc1N1cHBvcnRlZExhYmVsYWJsZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50Ojppbm5lclRleHRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0xhYmVsYWJsZUVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTGFiZWxhYmxlRWxlbWVudCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnREaXN0cmlidXRvcjo6ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Q
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjppc0FjdGl2ZUluc2VydGlvblBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24pOgorICAgICAgICAqIGh0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6aXNU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3Vl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
V2ViVlRURWxlbWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9r
ZW4pOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OmF0dGFjaFJlbmRlclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OmRldGFjaENoaWxkcmVuKToKKworMjAxNC0wOS0yNiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKICAgICAgICAgU3RvcCB1c2luZyBsZWdhY3kgTk9ERV9UWVBFX0NBU1RT
KCkgbWFjcm8gZm9yIEhUTUwgRWxlbWVudHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNzEzNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaAppbmRleCAwY2UyMTE1MWMwYzcwNzBmMDYxZmZi
ZWE5MzJmMGYwZTA3OTFhODI1Li4wMDk1ZTFkODE4OTgyZjBiZDA0NDljYTZiMjEzN2I4YzgwNzM1
YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVu
Y3Rpb25zLmgKQEAgLTEzNCw4ICsxMzQsOCBAQCBpbmxpbmUgYm9vbCBtYXRjaGVzTGFuZ1BzZXVk
b0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIEF0b21pY1N0cmluZ0ltcGwqIGZpbAogewog
ICAgIEF0b21pY1N0cmluZyB2YWx1ZTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYg
KGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpKQotICAgICAgICB2YWx1ZSA9IHRvV2ViVlRURWxl
bWVudChlbGVtZW50KS0+bGFuZ3VhZ2UoKTsKKyAgICBpZiAoaXM8V2ViVlRURWxlbWVudD4oZWxl
bWVudCkpCisgICAgICAgIHZhbHVlID0gZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKmVsZW1lbnQp
Lmxhbmd1YWdlKCk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgIHZhbHVlID0gZWxlbWVudC0+
Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CkBAIC0zMTEsMTIgKzMxMSwxMiBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgbWF0Y2hlc0Z1bGxTY3JlZW5Eb2N1bWVudFBzZXVkb0NsYXNzKGNvbnN0IEVs
ZW1lbnQqIGVsZW1lbnQpCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogQUxXQVlTX0lOTElORSBi
b29sIG1hdGNoZXNGdXR1cmVDdWVQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KQog
ewotICAgIHJldHVybiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgIXRvV2ViVlRURWxl
bWVudChlbGVtZW50KS0+aXNQYXN0Tm9kZSgpKTsKKyAgICByZXR1cm4gaXM8V2ViVlRURWxlbWVu
dD4oZWxlbWVudCkgJiYgIWRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KCplbGVtZW50KS5pc1Bhc3RO
b2RlKCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzUGFzdEN1ZVBzZXVkb0NsYXNz
KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZU
VEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPmlzUGFzdE5vZGUoKSk7Cisg
ICAgcmV0dXJuIGlzPFdlYlZUVEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PFdlYlZUVEVs
ZW1lbnQ+KCplbGVtZW50KS5pc1Bhc3ROb2RlKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDhmY2IzNzk2NTJkNjMzMjAzZjc3NWVlNzZkMzI3NzVm
MmUxZDExNGEuLjcxMWZhY2RmNTIwNzQ4NTA2N2FmYWNkZGQ3YTFhMWNjNzNkMjY4NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTY1MCwxMCArNjUwLDEwIEBAIGJvb2wg
U3R5bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLy8gRGVueSBzaGFy
aW5nIHN0eWxlcyBiZXR3ZWVuIFdlYlZUVCBhbmQgbm9uLVdlYlZUVCBub2Rlcy4KLSAgICBpZiAo
ZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgIT0gc3RhdGUuZWxlbWVudCgpLT5pc1dlYlZUVEVs
ZW1lbnQoKSkKKyAgICBpZiAoaXM8V2ViVlRURWxlbWVudD4oZWxlbWVudCkgIT0gaXM8V2ViVlRU
RWxlbWVudD4oc3RhdGUuZWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICYmIHN0YXRlLmVsZW1lbnQoKS0+aXNXZWJW
VFRFbGVtZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkgIT0g
dG9XZWJWVFRFbGVtZW50KHN0YXRlLmVsZW1lbnQoKSktPmlzUGFzdE5vZGUoKSkKKyAgICBpZiAo
aXM8V2ViVlRURWxlbWVudD4oZWxlbWVudCkgJiYgaXM8V2ViVlRURWxlbWVudD4oc3RhdGUuZWxl
bWVudCgpKSAmJiBkb3duY2FzdDxXZWJWVFRFbGVtZW50PigqZWxlbWVudCkuaXNQYXN0Tm9kZSgp
ICE9IGRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KCpzdGF0ZS5lbGVtZW50KCkpLmlzUGFzdE5vZGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcAppbmRleCA4YTU5NzgyZjA2OTI2OWY2YmQwYmI3
NjZkYjYzNTY2NzMzZjdlN2U0Li44NmVmMjk5OWRjMTg2NWU2MGQ4NzFjZmM3ZGI2ZWE1MzNhNWIx
MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3Bw
CkBAIC03Miw4ICs3Miw4IEBAIHN0YXRpYyBOb2RlKiBmaW5kRmlyc3RFbnRlcmluZ0luc2VydGlv
blBvaW50cyhjb25zdCBOb2RlKiBub2RlKQogICAgIEFTU0VSVChub2RlKTsKICAgICBpZiAoIWlz
QWN0aXZlSW5zZXJ0aW9uUG9pbnQobm9kZSkpCiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PE5v
ZGUqPihub2RlKTsKLSAgICBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0
b0luc2VydGlvblBvaW50KG5vZGUpOwotICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEZy
b21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQtPmZpcnN0RGlzdHJpYnV0ZWQoKSwgaW5z
ZXJ0aW9uUG9pbnQpKQorICAgIGNvbnN0IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCA9
IGRvd25jYXN0PEluc2VydGlvblBvaW50Pigqbm9kZSk7CisgICAgaWYgKE5vZGUqIGZvdW5kID0g
ZmluZEZpcnN0RnJvbURpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC5maXJzdERpc3RyaWJ1
dGVkKCksICZpbnNlcnRpb25Qb2ludCkpCiAgICAgICAgIHJldHVybiBmb3VuZDsKICAgICByZXR1
cm4gZmluZEZpcnN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUtPmZpcnN0Q2hp
bGQoKSk7CiB9CkBAIC0xMDEsOCArMTAxLDggQEAgc3RhdGljIE5vZGUqIGZpbmRMYXN0RW50ZXJp
bmdJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogbm9kZSkKICAgICBBU1NFUlQobm9kZSk7CiAg
ICAgaWYgKCFpc0FjdGl2ZUluc2VydGlvblBvaW50KG5vZGUpKQogICAgICAgICByZXR1cm4gY29u
c3RfY2FzdDxOb2RlKj4obm9kZSk7Ci0gICAgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKLSAgICBpZiAoTm9kZSogZm91bmQgPSBm
aW5kTGFzdEZyb21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQtPmxhc3REaXN0cmlidXRl
ZCgpLCBpbnNlcnRpb25Qb2ludCkpCisgICAgY29uc3QgSW5zZXJ0aW9uUG9pbnQmIGluc2VydGlv
blBvaW50ID0gZG93bmNhc3Q8SW5zZXJ0aW9uUG9pbnQ+KCpub2RlKTsKKyAgICBpZiAoTm9kZSog
Zm91bmQgPSBmaW5kTGFzdEZyb21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQubGFzdERp
c3RyaWJ1dGVkKCksICZpbnNlcnRpb25Qb2ludCkpCiAgICAgICAgIHJldHVybiBmb3VuZDsKICAg
ICByZXR1cm4gZmluZExhc3RTaWJsaW5nRW50ZXJpbmdJbnNlcnRpb25Qb2ludHMobm9kZS0+bGFz
dENoaWxkKCkpOwogfQpAQCAtMTM1LDExICsxMzUsMTEgQEAgc3RhdGljIENvbnRhaW5lck5vZGUq
IHRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFNoYWRvd1Jvb3RDcm9zc2luZyBzaGFk
b3cKICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIHNoYWRv
d1Jvb3RDcm9zc2luZyA9PSBDcm9zc1NoYWRvd1Jvb3QgPyB0b1NoYWRvd1Jvb3QocGFyZW50KS0+
aG9zdEVsZW1lbnQoKSA6IHBhcmVudDsKIAotICAgIGlmIChwYXJlbnQtPmlzSW5zZXJ0aW9uUG9p
bnQoKSkgewotICAgICAgICBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0
b0luc2VydGlvblBvaW50KHBhcmVudCk7Ci0gICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aGFz
RGlzdHJpYnV0aW9uKCkpCisgICAgaWYgKGlzPEluc2VydGlvblBvaW50PihwYXJlbnQpKSB7Cisg
ICAgICAgIGNvbnN0IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCA9IGRvd25jYXN0PElu
c2VydGlvblBvaW50PigqcGFyZW50KTsKKyAgICAgICAgaWYgKGluc2VydGlvblBvaW50Lmhhc0Rp
c3RyaWJ1dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlmIChp
bnNlcnRpb25Qb2ludC0+aXNBY3RpdmUoKSkKKyAgICAgICAgaWYgKGluc2VydGlvblBvaW50Lmlz
QWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQocGFyZW50LCBzaGFk
b3dSb290Q3Jvc3NpbmcpOwogICAgIH0KICAgICByZXR1cm4gcGFyZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKaW5kZXggNDExODk4NTA3YWRlYTJkYzk1MjM4YjI2
ZWM0MmRiYTc3YzhlYjMxMS4uMTI1MjYwZmM2MzJmNDIzZjVmNTZmMjgxYzQyYzhiMGEyN2NjNzc1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC0zOCw5ICsz
OCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBMYWJlbGFibGVFbGVt
ZW50KiBub2RlQXNTdXBwb3J0ZWRMYWJlbGFibGVFbGVtZW50KE5vZGUqIG5vZGUpCiB7Ci0gICAg
aWYgKCFub2RlIHx8ICFpc0xhYmVsYWJsZUVsZW1lbnQoKm5vZGUpKQorICAgIGlmICghbm9kZSB8
fCAhaXM8TGFiZWxhYmxlRWxlbWVudD4oKm5vZGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBMYWJlbGFibGVFbGVtZW50JiBlbGVtZW50ID0gdG9MYWJlbGFibGVFbGVtZW50KCpub2Rl
KTsKKyAgICBMYWJlbGFibGVFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8TGFiZWxhYmxlRWxl
bWVudD4oKm5vZGUpOwogICAgIHJldHVybiBlbGVtZW50LnN1cHBvcnRMYWJlbHMoKSA/ICZlbGVt
ZW50IDogbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggY2UzZDhhOTUzZGYyZDIxYmE5MTYzNzhkMGVmNmQzYzZjMDBjYmZmMS4u
MTY5OGM3OTdlN2Q3MDI4Y2ZjNWFiZDNhYThjYTYwMmJiYWVmZDY0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zMjcsNyArMzI3LDcgQEAgU3Ry
aW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNhbml0aXplVXNlcklucHV0VmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wb3NlZFZhbHVlLAogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBIVE1MVGV4
dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50KCkgY29uc3QKIHsKICAgICBOb2RlKiBub2Rl
ID0gdXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7Ci0gICAgcmV0dXJuIHRvVGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ+KG5vZGUpOwogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFi
bGVFbGVtZW50LmgKaW5kZXggNDAwNTVjM2NiNjM0ZjEwMTA1MTYzMjMwODQxMmI4YTdmNDgzMWM2
MS4uMjc0YzJhYjk5MDYwMDg5YWM3OTE5ZmMxN2RhNmFiNGQ2OGRhOGFiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmgKQEAgLTUwLDE2ICs1MCwxMCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVsYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIH07CiAKLXZvaWQgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IExhYmVsYWJs
ZUVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtu
b3duIGF0IGNvbXBpbGUgdGltZS4KLWlubGluZSBib29sIGlzTGFiZWxhYmxlRWxlbWVudChjb25z
dCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0xhYmVsYWJsZSgpOyB9
Ci1pbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKS5p
c0xhYmVsYWJsZSgpOyB9Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgotc3RydWN0IE5v
ZGVUeXBlQ2FzdFRyYWl0czxjb25zdCBMYWJlbGFibGVFbGVtZW50LCBBcmdUeXBlPiB7Ci0gICAg
c3RhdGljIGJvb2wgaXNUeXBlKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGlzTGFiZWxhYmxlRWxl
bWVudChub2RlKTsgfQotfTsKLQotTk9ERV9UWVBFX0NBU1RTKExhYmVsYWJsZUVsZW1lbnQpCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKExhYmVsYWJsZUVsZW1lbnQpCisgICAgc3RhdGlj
IGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJl
dHVybiBlbGVtZW50LmlzTGFiZWxhYmxlKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0xhYmVsYWJs
ZUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUp
ICYmIGlzTGFiZWxhYmxlRWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAK
aW5kZXggYzRjNzdhNzQ3YmU3Yzk3MWM3MDNiYzMzMjQ2ZTE3NGYyOGFjODY4My4uOGU4NjdlODFm
NzhhMjY1ODM5MzkxYzliM2JiZjcxZmE1ZDYyNDk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC01NiwxMCArNTYsOCBAQCBj
b25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50Pj4mIENvbnRlbnREaXN0cmlidXRvcjo6
ZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaQogICAgIG1faW5zZXJ0aW9uUG9pbnRMaXN0SXNWYWxpZCA9
IHRydWU7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnRMaXN0LmlzRW1wdHkoKSk7CiAKLSAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pigqc2hhZG93
Um9vdCkpIHsKLSAgICAgICAgaWYgKGVsZW1lbnQuaXNJbnNlcnRpb25Qb2ludCgpKQotICAgICAg
ICAgICAgbV9pbnNlcnRpb25Qb2ludExpc3QuYXBwZW5kKHRvSW5zZXJ0aW9uUG9pbnQoJmVsZW1l
bnQpKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
SW5zZXJ0aW9uUG9pbnQ+KCpzaGFkb3dSb290KSkKKyAgICAgICAgbV9pbnNlcnRpb25Qb2ludExp
c3QuYXBwZW5kKCZlbGVtZW50KTsKIAogICAgIHJldHVybiBtX2luc2VydGlvblBvaW50TGlzdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IGE0
ZTY5OTQ1ZjJkYjNjNmExOWZlZWQ1ZjUwMWYzMTdmMjViZTYxODkuLjZlOGI3Y2MxYzVhZGVmM2Qy
ZmRjOTg4MmJmZTI0M2U2N2NhMWE5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaApAQCAtNzUsMTMgKzc1LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0Rpc3RyaWJ1dGlvbjsKIH07CiAKLWlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0luc2VydGlvblBvaW50KCk7IH0KLQotTk9E
RV9UWVBFX0NBU1RTKEluc2VydGlvblBvaW50KTsKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oSW5zZXJ0aW9uUG9pbnQpCisgICAgc3RhdGljIGJvb2wgaXNJbnNlcnRpb25Qb2ludChjb25z
dCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSW5zZXJ0aW9uUG9pbnQoKTsgfQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiBpbmxpbmUgYm9vbCBpc0FjdGl2ZUluc2VydGlvblBv
aW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aXNJbnNl
cnRpb25Qb2ludCgpICYmIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCk7CisgICAg
cmV0dXJuIG5vZGUgJiYgaXM8SW5zZXJ0aW9uUG9pbnQ+KG5vZGUpICYmIGRvd25jYXN0PEluc2Vy
dGlvblBvaW50Pigqbm9kZSkuaXNBY3RpdmUoKTsKIH0KIAogaW5saW5lIE5vZGUqIHBhcmVudE5v
ZGVGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKQEAgLTg5LDEyICs4OSwxMiBAQCBp
bmxpbmUgTm9kZSogcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQog
ICAgIEFTU0VSVChub2RlKTsKIAogICAgIGlmIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRO
b2RlKCkpIHsKLSAgICAgICAgaWYgKHBhcmVudC0+aXNJbnNlcnRpb25Qb2ludCgpICYmIHRvSW5z
ZXJ0aW9uUG9pbnQocGFyZW50KS0+c2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpKQorICAgICAg
ICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+KHBhcmVudCkgJiYgZG93bmNhc3Q8SW5zZXJ0aW9uUG9p
bnQ+KCpwYXJlbnQpLnNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSkKICAgICAgICAgICAgIHJl
dHVybiBwYXJlbnQtPnBhcmVudE5vZGUoKTsKICAgICAgICAgcmV0dXJuIHBhcmVudDsKICAgICB9
CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogaW5saW5lIEVsZW1l
bnQqIHBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgKaW5kZXggYjJlOGIzOWMxNDI0Njk2ZGU1NzcwNDRhNmM1NGE0YjAwYjEzYzQwYi4uYmI3YjAz
MjAxYmJjMDJlNTliMDU3YTY1NjcwNGUzNmNlMDdjYzk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTcwLDkg
KzcwLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotaW5saW5l
IGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKTsg
fQotaW5saW5lIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3QgTm9kZSYg
bm9kZSkgeyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KLU5PREVfVFlQRV9D
QVNUUyhUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1Rl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5pc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpOyB9CisgICAgc3Rh
dGljIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkg
eyByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KG5vZGUpICYmIGlzVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50KGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKIAogY2xhc3MgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVEN1ZS5jcHAKaW5kZXggODI0YzQ2ZTU3ZDc0NTRlN2ViYzg4M2Y4NmJiNzc4YzgxYzA4Nzc5
ZC4uYWIxOTg4ZjE4ODI4NWMwM2I1ZjcyMGEwZjE5MjM4NzZlOGVjOGI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtNDk3LDggKzQ5Nyw4IEBAIHZvaWQgVlRUQ3VlOjpj
b3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250YWluZXJOb2RlKiB3ZWJWVFROb2RlLCBDb250YWlu
ZXJOb2RlKiBwCiB7CiAgICAgZm9yIChOb2RlKiBub2RlID0gd2ViVlRUTm9kZS0+Zmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZWZQdHI8
Tm9kZT4gY2xvbmVkTm9kZTsKLSAgICAgICAgaWYgKG5vZGUtPmlzV2ViVlRURWxlbWVudCgpKQot
ICAgICAgICAgICAgY2xvbmVkTm9kZSA9IHRvV2ViVlRURWxlbWVudChub2RlKS0+Y3JlYXRlRXF1
aXZhbGVudEhUTUxFbGVtZW50KG93bmVyRG9jdW1lbnQoKSk7CisgICAgICAgIGlmIChpczxXZWJW
VFRFbGVtZW50Pihub2RlKSkKKyAgICAgICAgICAgIGNsb25lZE5vZGUgPSBkb3duY2FzdDxXZWJW
VFRFbGVtZW50Pigqbm9kZSkuY3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KG93bmVyRG9jdW1l
bnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNsb25lZE5vZGUgPSBub2RlLT5jbG9u
ZU5vZGUoZmFsc2UpOwogICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKGNsb25lZE5vZGUsIEFT
U0VSVF9OT19FWENFUFRJT04pOwpAQCAtNzY2LDggKzc2Niw4IEBAIHZvaWQgVlRUQ3VlOjptYXJr
RnV0dXJlQW5kUGFzdE5vZGVzKENvbnRhaW5lck5vZGUqIHJvb3QsIGNvbnN0IE1lZGlhVGltZSYg
cHJldmlvCiAgICAgICAgICAgICAgICAgaXNQYXN0Tm9kZSA9IGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBpZiAoY2hpbGQtPmlzV2ViVlRURWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICB0b1dlYlZUVEVsZW1lbnQoY2hpbGQpLT5zZXRJc1Bhc3ROb2RlKGlzUGFzdE5vZGUpOwor
ICAgICAgICBpZiAoaXM8V2ViVlRURWxlbWVudD4oY2hpbGQpKSB7CisgICAgICAgICAgICBkb3du
Y2FzdDxXZWJWVFRFbGVtZW50PigqY2hpbGQpLnNldElzUGFzdE5vZGUoaXNQYXN0Tm9kZSk7CiAg
ICAgICAgICAgICAvLyBNYWtlIGFuIGVsZW1lbmV0IGlkIG1hdGNoIGEgY3VlIGlkIGZvciBzdHls
ZSBtYXRjaGluZyBwdXJwb3Nlcy4KICAgICAgICAgICAgIGlmICghaWQoKS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgdG9FbGVtZW50KGNoaWxkKS0+c2V0SWRBdHRyaWJ1dGUoaWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmluZGV4IDM5NDA2ZDlhZjc4
NGY0NzJjNDY5MDY4NmUzYjJjNTUzMDFiNDdhZjMuLjNiM2Q5MTEwY2I4MGM1ZTJlNmYwMjc4NzA1
NGY3ODNhOTljMTdhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRURWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5oCkBAIC04MCw5ICs4MCw5IEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3Vh
Z2U7CiB9OwogCi12b2lkIGlzV2ViVlRURWxlbWVudChjb25zdCBXZWJWVFRFbGVtZW50Jik7IC8v
IENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxl
IHRpbWUuCi1pbmxpbmUgYm9vbCBpc1dlYlZUVEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyBy
ZXR1cm4gbm9kZS5pc1dlYlZUVEVsZW1lbnQoKTsgfQotTk9ERV9UWVBFX0NBU1RTKFdlYlZUVEVs
ZW1lbnQpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYlZUVEVsZW1lbnQpCisgICAg
c3RhdGljIGJvb2wgaXNXZWJWVFRFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNXZWJWVFRFbGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5jcHAKaW5kZXggN2RiZThjM2M1MDNjZjVhMTQ0ODVjNzU2M2ZiMWI5NGFiZDIwNzY0
ZC4uOGIzMjg3NjUzMDkzZDdhNzllMThjNGIyZDY4NWU5MDgxYjdjMTViYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZv
aWQgV2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgICAgICBpZiAobm9kZVR5cGUgPT0gV2ViVlRUTm9kZVR5cGVOb25lKQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgV2ViVlRUTm9kZVR5cGUgY3VycmVudFR5cGUgPSBt
X2N1cnJlbnROb2RlLT5pc1dlYlZUVEVsZW1lbnQoKSA/IHRvV2ViVlRURWxlbWVudChtX2N1cnJl
bnROb2RlLmdldCgpKS0+d2ViVlRUTm9kZVR5cGUoKSA6IFdlYlZUVE5vZGVUeXBlTm9uZTsKKyAg
ICAgICAgV2ViVlRUTm9kZVR5cGUgY3VycmVudFR5cGUgPSBpczxXZWJWVFRFbGVtZW50PihtX2N1
cnJlbnROb2RlKSA/IGRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KCptX2N1cnJlbnROb2RlKS53ZWJW
VFROb2RlVHlwZSgpIDogV2ViVlRUTm9kZVR5cGVOb25lOwogICAgICAgICAvLyA8cnQ+IGlzIG9u
bHkgYWxsb3dlZCBpZiB0aGUgY3VycmVudCBub2RlIGlzIDxydWJ5Pi4KICAgICAgICAgaWYgKG5v
ZGVUeXBlID09IFdlYlZUVE5vZGVUeXBlUnVieVRleHQgJiYgY3VycmVudFR5cGUgIT0gV2ViVlRU
Tm9kZVR5cGVSdWJ5KQogICAgICAgICAgICAgYnJlYWs7CkBAIC01ODksMTAgKzU4OSwxMCBAQCB2
b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50JiBk
b2N1bWVudCkKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBvbmx5IG5vbi1WVFRFbGVtZW50IHdv
dWxkIGJlIHRoZSBEb2N1bWVudEZyYWdtZW50IHJvb3QuIChUZXh0CiAgICAgICAgIC8vIG5vZGVz
IGFuZCBQSXMgd2lsbCBuZXZlciBhcHBlYXIgYXMgbV9jdXJyZW50Tm9kZS4pCi0gICAgICAgIGlm
ICghbV9jdXJyZW50Tm9kZS0+aXNXZWJWVFRFbGVtZW50KCkpCisgICAgICAgIGlmICghaXNXZWJW
VFRFbGVtZW50KCptX2N1cnJlbnROb2RlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IFdlYlZUVE5vZGVUeXBlIGN1cnJlbnRUeXBlID0gdG9XZWJWVFRFbGVtZW50KG1fY3VycmVudE5v
ZGUuZ2V0KCkpLT53ZWJWVFROb2RlVHlwZSgpOworICAgICAgICBXZWJWVFROb2RlVHlwZSBjdXJy
ZW50VHlwZSA9IGRvd25jYXN0PFdlYlZUVEVsZW1lbnQ+KCptX2N1cnJlbnROb2RlKS53ZWJWVFRO
b2RlVHlwZSgpOwogICAgICAgICBib29sIG1hdGNoZXNDdXJyZW50ID0gbm9kZVR5cGUgPT0gY3Vy
cmVudFR5cGU7CiAgICAgICAgIGlmICghbWF0Y2hlc0N1cnJlbnQpIHsKICAgICAgICAgICAgIC8v
IDwvcnVieT4gYXV0by1jbG9zZXMgPHJ0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVUcmVlLmNwcAppbmRleCA0MjNiM2NjOGM4NjhmYTA4MWRjNjEwYTljOWE5MjcxYzdiZWExMDc3
Li4wODg5ZGZjOTdkN2M0NWQ2YmQyOTA4MGFhYjU3MjU0YTYwYjhhNzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcApAQCAtMzUyLDcgKzM1Miw3IEBAIHN0YXRp
YyBSZW5kZXJPYmplY3QqIHByZXZpb3VzU2libGluZ1JlbmRlcmVyKGNvbnN0IFRleHQmIHRleHRO
b2RlKQogCiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlV2hpdGVzcGFjZU9ubHlUZXh0U2libGluZ3NB
ZnRlckF0dGFjaElmTmVlZGVkKE5vZGUmIGN1cnJlbnQpCiB7Ci0gICAgaWYgKGlzSW5zZXJ0aW9u
UG9pbnQoY3VycmVudCkpCisgICAgaWYgKGlzPEluc2VydGlvblBvaW50PihjdXJyZW50KSkKICAg
ICAgICAgcmV0dXJuOwogICAgIC8vIFRoaXMgZnVuY3Rpb24gZmluZHMgc2libGluZyB0ZXh0IHJl
bmRlcmVycyB3aGVyZSB0aGUgcmVzdWx0cyBvZiB0ZXh0UmVuZGVyZXJJc05lZWRlZCBtYXkgaGF2
ZSBjaGFuZ2VkIGFzIGEgcmVzdWx0IG9mCiAgICAgLy8gdGhlIGN1cnJlbnQgbm9kZSBnYWluaW5n
IG9yIGxvc2luZyB0aGUgcmVuZGVyZXIuIFRoaXMgY2FuIG9ubHkgYWZmZWN0IHdoaXRlIHNwYWNl
IHRleHQgbm9kZXMuCkBAIC02MDYsOCArNjA2LDggQEAgc3RhdGljIHZvaWQgYXR0YWNoUmVuZGVy
VHJlZShFbGVtZW50JiBjdXJyZW50LCBSZW5kZXJTdHlsZSYgaW5oZXJpdGVkU3R5bGUsIFJlbmQK
ICAgICBQb3N0UmVzb2x1dGlvbkNhbGxiYWNrRGlzYWJsZXIgY2FsbGJhY2tEaXNhYmxlcihjdXJy
ZW50LmRvY3VtZW50KCkpOwogICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2Nv
cGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAKLSAgICBpZiAoaXNJbnNlcnRpb25Q
b2ludChjdXJyZW50KSkgewotICAgICAgICBhdHRhY2hEaXN0cmlidXRlZENoaWxkcmVuKHRvSW5z
ZXJ0aW9uUG9pbnQoY3VycmVudCksIGluaGVyaXRlZFN0eWxlLCByZW5kZXJUcmVlUG9zaXRpb24p
OworICAgIGlmIChpczxJbnNlcnRpb25Qb2ludD4oY3VycmVudCkpIHsKKyAgICAgICAgYXR0YWNo
RGlzdHJpYnV0ZWRDaGlsZHJlbihkb3duY2FzdDxJbnNlcnRpb25Qb2ludD4oY3VycmVudCksIGlu
aGVyaXRlZFN0eWxlLCByZW5kZXJUcmVlUG9zaXRpb24pOwogICAgICAgICBjdXJyZW50LmNsZWFy
TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBjdXJyZW50LmNsZWFyQ2hpbGROZWVkc1N0eWxl
UmVjYWxjKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTY2Miw4ICs2NjIsOCBAQCBzdGF0aWMgdm9p
ZCBkZXRhY2hEaXN0cmlidXRlZENoaWxkcmVuKEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2lu
dCkKIAogc3RhdGljIHZvaWQgZGV0YWNoQ2hpbGRyZW4oQ29udGFpbmVyTm9kZSYgY3VycmVudCwg
RGV0YWNoVHlwZSBkZXRhY2hUeXBlKQogewotICAgIGlmIChpc0luc2VydGlvblBvaW50KGN1cnJl
bnQpKQotICAgICAgICBkZXRhY2hEaXN0cmlidXRlZENoaWxkcmVuKHRvSW5zZXJ0aW9uUG9pbnQo
Y3VycmVudCkpOworICAgIGlmIChpczxJbnNlcnRpb25Qb2ludD4oY3VycmVudCkpCisgICAgICAg
IGRldGFjaERpc3RyaWJ1dGVkQ2hpbGRyZW4oZG93bmNhc3Q8SW5zZXJ0aW9uUG9pbnQ+KGN1cnJl
bnQpKTsKIAogICAgIGZvciAoTm9kZSogY2hpbGQgPSBjdXJyZW50LmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5p
c1RleHROb2RlKCkpIHsKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIHJlc29sdmVUcmVlKEVsZW1l
bnQmIGN1cnJlbnQsIFJlbmRlclN0eWxlJiBpbmhlcml0ZWRTdHlsZSwgUmVuZGVyVHJlZVBvc2l0
aQogewogICAgIEFTU0VSVChjaGFuZ2UgIT0gRGV0YWNoKTsKIAotICAgIGlmIChpc0luc2VydGlv
blBvaW50KGN1cnJlbnQpKSB7CisgICAgaWYgKGlzPEluc2VydGlvblBvaW50PihjdXJyZW50KSkg
ewogICAgICAgICBjdXJyZW50LmNsZWFyTmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBjdXJy
ZW50LmNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238761</attachid>
            <date>2014-09-26 22:50:16 -0700</date>
            <delta_ts>2014-09-29 09:33:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137172-20140926225016.patch</filename>
            <type>text/plain</type>
            <size>19672</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM0ODFjMDk1MWNlMzk2
OGEzZjkwM2U1NDMwMDAwYTY0NDRiNmUwYS4uZjE1MmU3OGU5MzNjNGQyMzg0NzMzMjcxYTgxOTk2
YTgzNzYzNWM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU4IEBACiAyMDE0LTA5LTI2ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBSZW1vdmUgcmVtYWlu
aW5nIHVzZXMgb2YgTk9ERV9UWVBFX0NBU1RTKCkgZnJvbSBodG1sLworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHJlbWFpbmluZyB1c2VzIG9m
IE5PREVfVFlQRV9DQVNUUygpIGZyb20gaHRtbC8gYW5kIHVzZSB0aGUgbmV3CisgICAgICAgIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfKigpIG1hY3JvIGluc3RlYWQgc28gdGhhdCBpczw+KCkgLyBk
b3duY2FzdDw+KCkKKyAgICAgICAgd29ya3MgZm9yIHRob3NlIHR5cGVzLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL1NlbGVjdG9y
Q2hlY2tlclRlc3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNMYW5nUHNl
dWRvQ2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hlc0Z1dHVyZUN1ZVBzZXVkb0NsYXNz
KToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNQYXN0Q3VlUHNldWRvQ2xhc3MpOgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgIFRoZSBuZXcgY2FzdGluZyBm
dW5jdGlvbiBmb3VuZCBhIGJhZCBjYXN0IGZyb20gYSBTdHlsZWRFbGVtZW50IHRvIFZUVEVsZW1l
bnQuCisgICAgICAgIFRob3NlIHR3byB0eXBlcyBhcmUgdW5yZWxhdGVkIGFzIFZUVEVsZW1lbnQg
aW5oZXJpdHMgZGlyZWN0bHkgZnJvbSBFbGVtZW50LgorICAgICAgICBLbm93aW5nIHRoYXQgfGVs
ZW1lbnR8IGluIHRoaXMgbWV0aG9kIGNhbm5vdCBiZSBhIFZUVEVsZW1lbnQgc2ltcGxpZmllcyB0
aGUKKyAgICAgICAgbG9naWMgYSBiaXQuCisKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpm
aW5kRmlyc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpmaW5kTGFzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnRyYXZlcnNlUGFyZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bm9kZUFzU3VwcG9ydGVkTGFiZWxhYmxlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6
OmlubmVyVGV4dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvTGFiZWxhYmxlRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6aXNMYWJlbGFibGVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERp
c3RyaWJ1dG9yOjplbnN1cmVJbnNlcnRpb25Qb2ludExpc3QpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0luc2VydGlvblBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbik6CisgICAgICAgICogaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjppc1RleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWVFRDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJW
VFRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6
CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6YXR0YWNoUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0
YWNoQ2hpbGRyZW4pOgorCisyMDE0LTA5LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKwogICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBOT0RFX1RZUEVfQ0FTVFMoKSBt
YWNybyBmb3IgSFRNTCBFbGVtZW50cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3MTM3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCmluZGV4IDBjZTIxMTUxYzBjNzA3MGYwNjFmZmJlYTkz
MmYwZjBlMDc5MWE4MjUuLjAwOTVlMWQ4MTg5ODJmMGJkMDQ0OWNhNmIyMTM3YjhjODA3MzViYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rp
b25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlv
bnMuaApAQCAtMTM0LDggKzEzNCw4IEBAIGlubGluZSBib29sIG1hdGNoZXNMYW5nUHNldWRvQ2xh
c3MoY29uc3QgRWxlbWVudCogZWxlbWVudCwgQXRvbWljU3RyaW5nSW1wbCogZmlsCiB7CiAgICAg
QXRvbWljU3RyaW5nIHZhbHVlOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoZWxl
bWVudC0+aXNXZWJWVFRFbGVtZW50KCkpCi0gICAgICAgIHZhbHVlID0gdG9XZWJWVFRFbGVtZW50
KGVsZW1lbnQpLT5sYW5ndWFnZSgpOworICAgIGlmIChpczxXZWJWVFRFbGVtZW50PihlbGVtZW50
KSkKKyAgICAgICAgdmFsdWUgPSBkb3duY2FzdDxXZWJWVFRFbGVtZW50PigqZWxlbWVudCkubGFu
Z3VhZ2UoKTsKICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgdmFsdWUgPSBlbGVtZW50LT5jb21w
dXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKQEAgLTMxMSwxMiArMzExLDEyIEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBtYXRjaGVzRnVsbFNjcmVlbkRvY3VtZW50UHNldWRvQ2xhc3MoY29uc3QgRWxlbWVu
dCogZWxlbWVudCkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBBTFdBWVNfSU5MSU5FIGJvb2wg
bWF0Y2hlc0Z1dHVyZUN1ZVBzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiAhdG9XZWJWVFRFbGVtZW50
KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkpOworICAgIHJldHVybiBpczxXZWJWVFRFbGVtZW50Pihl
bGVtZW50KSAmJiAhZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKmVsZW1lbnQpLmlzUGFzdE5vZGUo
KTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIG1hdGNoZXNQYXN0Q3VlUHNldWRvQ2xhc3MoY29u
c3QgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICByZXR1cm4gKGVsZW1lbnQtPmlzV2ViVlRURWxl
bWVudCgpICYmIHRvV2ViVlRURWxlbWVudChlbGVtZW50KS0+aXNQYXN0Tm9kZSgpKTsKKyAgICBy
ZXR1cm4gaXM8V2ViVlRURWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8V2ViVlRURWxlbWVu
dD4oKmVsZW1lbnQpLmlzUGFzdE5vZGUoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggOGZjYjM3OTY1MmQ2MzMyMDNmNzc1ZWU3NmQzMjc3NWYyZTFk
MTE0YS4uMDBmZmYwYTliYzc1OWUxNmYxMzJlNjI2Mjg3Y2I4NzIxNDQxMmMxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjUwLDEwICs2NTAsNyBAQCBib29sIFN0eWxl
UmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50
KSBjb25zdAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIC8vIERlbnkgc2hhcmluZyBz
dHlsZXMgYmV0d2VlbiBXZWJWVFQgYW5kIG5vbi1XZWJWVFQgbm9kZXMuCi0gICAgaWYgKGVsZW1l
bnQtPmlzV2ViVlRURWxlbWVudCgpICE9IHN0YXRlLmVsZW1lbnQoKS0+aXNXZWJWVFRFbGVtZW50
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChlbGVtZW50LT5pc1dlYlZUVEVs
ZW1lbnQoKSAmJiBzdGF0ZS5lbGVtZW50KCktPmlzV2ViVlRURWxlbWVudCgpICYmIHRvV2ViVlRU
RWxlbWVudChlbGVtZW50KS0+aXNQYXN0Tm9kZSgpICE9IHRvV2ViVlRURWxlbWVudChzdGF0ZS5l
bGVtZW50KCkpLT5pc1Bhc3ROb2RlKCkpCisgICAgaWYgKGlzPFdlYlZUVEVsZW1lbnQ+KHN0YXRl
LmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKaW5kZXggOGE1OTc4MmYwNjky
NjlmNmJkMGJiNzY2ZGI2MzU2NjczM2Y3ZTdlNC4uODZlZjI5OTlkYzE4NjVlNjBkODcxY2ZjN2Ri
NmVhNTMzYTViMTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJh
dmVyc2FsLmNwcApAQCAtNzIsOCArNzIsOCBAQCBzdGF0aWMgTm9kZSogZmluZEZpcnN0RW50ZXJp
bmdJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogbm9kZSkKICAgICBBU1NFUlQobm9kZSk7CiAg
ICAgaWYgKCFpc0FjdGl2ZUluc2VydGlvblBvaW50KG5vZGUpKQogICAgICAgICByZXR1cm4gY29u
c3RfY2FzdDxOb2RlKj4obm9kZSk7Ci0gICAgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKLSAgICBpZiAoTm9kZSogZm91bmQgPSBm
aW5kRmlyc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGluc2VydGlvblBvaW50LT5maXJzdERpc3RyaWJ1
dGVkKCksIGluc2VydGlvblBvaW50KSkKKyAgICBjb25zdCBJbnNlcnRpb25Qb2ludCYgaW5zZXJ0
aW9uUG9pbnQgPSBkb3duY2FzdDxJbnNlcnRpb25Qb2ludD4oKm5vZGUpOworICAgIGlmIChOb2Rl
KiBmb3VuZCA9IGZpbmRGaXJzdEZyb21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQuZmly
c3REaXN0cmlidXRlZCgpLCAmaW5zZXJ0aW9uUG9pbnQpKQogICAgICAgICByZXR1cm4gZm91bmQ7
CiAgICAgcmV0dXJuIGZpbmRGaXJzdFNpYmxpbmdFbnRlcmluZ0luc2VydGlvblBvaW50cyhub2Rl
LT5maXJzdENoaWxkKCkpOwogfQpAQCAtMTAxLDggKzEwMSw4IEBAIHN0YXRpYyBOb2RlKiBmaW5k
TGFzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgQVNTRVJU
KG5vZGUpOwogICAgIGlmICghaXNBY3RpdmVJbnNlcnRpb25Qb2ludChub2RlKSkKICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOwotICAgIGNvbnN0IEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7Ci0gICAgaWYgKE5vZGUq
IGZvdW5kID0gZmluZExhc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGluc2VydGlvblBvaW50LT5sYXN0
RGlzdHJpYnV0ZWQoKSwgaW5zZXJ0aW9uUG9pbnQpKQorICAgIGNvbnN0IEluc2VydGlvblBvaW50
JiBpbnNlcnRpb25Qb2ludCA9IGRvd25jYXN0PEluc2VydGlvblBvaW50Pigqbm9kZSk7CisgICAg
aWYgKE5vZGUqIGZvdW5kID0gZmluZExhc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGluc2VydGlvblBv
aW50Lmxhc3REaXN0cmlidXRlZCgpLCAmaW5zZXJ0aW9uUG9pbnQpKQogICAgICAgICByZXR1cm4g
Zm91bmQ7CiAgICAgcmV0dXJuIGZpbmRMYXN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRz
KG5vZGUtPmxhc3RDaGlsZCgpKTsKIH0KQEAgLTEzNSwxMSArMTM1LDExIEBAIHN0YXRpYyBDb250
YWluZXJOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBTaGFkb3dSb290Q3Jv
c3Npbmcgc2hhZG93CiAgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJl
dHVybiBzaGFkb3dSb290Q3Jvc3NpbmcgPT0gQ3Jvc3NTaGFkb3dSb290ID8gdG9TaGFkb3dSb290
KHBhcmVudCktPmhvc3RFbGVtZW50KCkgOiBwYXJlbnQ7CiAKLSAgICBpZiAocGFyZW50LT5pc0lu
c2VydGlvblBvaW50KCkpIHsKLSAgICAgICAgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChwYXJlbnQpOwotICAgICAgICBpZiAoaW5zZXJ0aW9u
UG9pbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKQorICAgIGlmIChpczxJbnNlcnRpb25Qb2ludD4ocGFy
ZW50KSkgeworICAgICAgICBjb25zdCBJbnNlcnRpb25Qb2ludCYgaW5zZXJ0aW9uUG9pbnQgPSBk
b3duY2FzdDxJbnNlcnRpb25Qb2ludD4oKnBhcmVudCk7CisgICAgICAgIGlmIChpbnNlcnRpb25Q
b2ludC5oYXNEaXN0cmlidXRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmlzQWN0aXZlKCkpCisgICAgICAgIGlmIChpbnNlcnRp
b25Qb2ludC5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KHBh
cmVudCwgc2hhZG93Um9vdENyb3NzaW5nKTsKICAgICB9CiAgICAgcmV0dXJuIHBhcmVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCmluZGV4IDQxMTg5ODUwN2FkZWEy
ZGM5NTIzOGIyNmVjNDJkYmE3N2M4ZWIzMTEuLjEyNTI2MGZjNjMyZjQyM2Y1ZjU2ZjI4MWM0MmM4
YjBhMjdjYzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcApA
QCAtMzgsOSArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgTGFi
ZWxhYmxlRWxlbWVudCogbm9kZUFzU3VwcG9ydGVkTGFiZWxhYmxlRWxlbWVudChOb2RlKiBub2Rl
KQogewotICAgIGlmICghbm9kZSB8fCAhaXNMYWJlbGFibGVFbGVtZW50KCpub2RlKSkKKyAgICBp
ZiAoIW5vZGUgfHwgIWlzPExhYmVsYWJsZUVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgTGFiZWxhYmxlRWxlbWVudCYgZWxlbWVudCA9IHRvTGFiZWxhYmxlRWxl
bWVudCgqbm9kZSk7CisgICAgTGFiZWxhYmxlRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PExh
YmVsYWJsZUVsZW1lbnQ+KCpub2RlKTsKICAgICByZXR1cm4gZWxlbWVudC5zdXBwb3J0TGFiZWxz
KCkgPyAmZWxlbWVudCA6IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGNlM2Q4YTk1M2RmMmQyMWJhOTE2Mzc4ZDBlZjZkM2M2
YzAwY2JmZjEuLjE2OThjNzk3ZTdkNzAyOGNmYzVhYmQzYWE4Y2E2MDJiYmFlZmQ2NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzI3LDcgKzMy
Nyw3IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpzYW5pdGl6ZVVzZXJJbnB1dFZhbHVl
KGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSwKIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dCogSFRNTFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7CiAgICAg
Tm9kZSogbm9kZSA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwotICAgIHJl
dHVybiB0b1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChub2RlKTsKKyAgICByZXR1cm4gZG93
bmNhc3Q8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Pihub2RlKTsKIH0KIAogdm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50OjpyZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTGFiZWxhYmxlRWxlbWVudC5oCmluZGV4IDQwMDU1YzNjYjYzNGYxMDEwNTE2MzIzMDg0MTJi
OGE3ZjQ4MzFjNjEuLjI3NGMyYWI5OTA2MDA4OWFjNzkxOWZjMTdkYTZhYjRkNjhkYThhYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCkBAIC01MCwxNiArNTAsMTAgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbGFibGUoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCi12b2lkIGlzTGFiZWxhYmxlRWxlbWVudChjb25z
dCBMYWJlbGFibGVFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sg
b2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi1pbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVs
ZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNMYWJl
bGFibGUoKTsgfQotaW5saW5lIGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MRWxlbWVu
dD4obm9kZSkuaXNMYWJlbGFibGUoKTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4K
LXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgTGFiZWxhYmxlRWxlbWVudCwgQXJnVHlw
ZT4gewotICAgIHN0YXRpYyBib29sIGlzVHlwZShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0xh
YmVsYWJsZUVsZW1lbnQobm9kZSk7IH0KLX07Ci0KLU5PREVfVFlQRV9DQVNUUyhMYWJlbGFibGVF
bGVtZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihMYWJlbGFibGVFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzTGFiZWxhYmxlRWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0xhYmVsYWJsZSgpOyB9CisgICAgc3RhdGljIGJvb2wg
aXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVt
ZW50Pihub2RlKSAmJiBpc0xhYmVsYWJsZUVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5v
ZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRE
aXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuY3BwCmluZGV4IGM0Yzc3YTc0N2JlN2M5NzFjNzAzYmMzMzI0NmUxNzRmMjhhYzg2ODMu
LjhlODY3ZTgxZjc4YTI2NTgzOTM5MWM5YjNiYmY3MWZhNWQ2MjQ5ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtNTYsMTAg
KzU2LDggQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4+JiBDb250ZW50RGlz
dHJpYnV0b3I6OmVuc3VyZUluc2VydGlvblBvaW50TGkKICAgICBtX2luc2VydGlvblBvaW50TGlz
dElzVmFsaWQgPSB0cnVlOwogICAgIEFTU0VSVChtX2luc2VydGlvblBvaW50TGlzdC5pc0VtcHR5
KCkpOwogCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4oKnNoYWRvd1Jvb3QpKSB7Ci0gICAgICAgIGlmIChlbGVtZW50LmlzSW5zZXJ0aW9uUG9pbnQo
KSkKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uUG9pbnRMaXN0LmFwcGVuZCh0b0luc2VydGlvblBv
aW50KCZlbGVtZW50KSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEluc2VydGlvblBvaW50Pigqc2hhZG93Um9vdCkpCisgICAgICAgIG1faW5zZXJ0
aW9uUG9pbnRMaXN0LmFwcGVuZCgmZWxlbWVudCk7CiAKICAgICByZXR1cm4gbV9pbnNlcnRpb25Q
b2ludExpc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aAppbmRleCBhNGU2OTk0NWYyZGIzYzZhMTlmZWVkNWY1MDFmMzE3ZjI1YmU2MTg5Li42ZThiN2Nj
MWM1YWRlZjNkMmZkYzk4ODJiZmUyNDNlNjdjYTFhOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTc1LDEzICs3NSwxMyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNEaXN0cmlidXRpb247CiB9OwogCi1pbmxpbmUgYm9vbCBpc0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNJbnNlcnRpb25Qb2ludCgp
OyB9Ci0KLU5PREVfVFlQRV9DQVNUUyhJbnNlcnRpb25Qb2ludCk7CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKEluc2VydGlvblBvaW50KQorICAgIHN0YXRpYyBib29sIGlzSW5zZXJ0aW9u
UG9pbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0luc2VydGlvblBvaW50KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogaW5saW5lIGJvb2wgaXNBY3RpdmVJ
bnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlICYmIG5v
ZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2
ZSgpOworICAgIHJldHVybiBub2RlICYmIGlzPEluc2VydGlvblBvaW50Pihub2RlKSAmJiBkb3du
Y2FzdDxJbnNlcnRpb25Qb2ludD4oKm5vZGUpLmlzQWN0aXZlKCk7CiB9CiAKIGlubGluZSBOb2Rl
KiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCkBAIC04OSwxMiAr
ODksMTIgQEAgaW5saW5lIE5vZGUqIHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY29uc3QgTm9k
ZSogbm9kZSkKICAgICBBU1NFUlQobm9kZSk7CiAKICAgICBpZiAoTm9kZSogcGFyZW50ID0gbm9k
ZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChwYXJlbnQtPmlzSW5zZXJ0aW9uUG9pbnQo
KSAmJiB0b0luc2VydGlvblBvaW50KHBhcmVudCktPnNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMo
KSkKKyAgICAgICAgaWYgKGlzPEluc2VydGlvblBvaW50PihwYXJlbnQpICYmIGRvd25jYXN0PElu
c2VydGlvblBvaW50PigqcGFyZW50KS5zaG91bGRVc2VGYWxsYmFja0VsZW1lbnRzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcGFyZW50LT5wYXJlbnROb2RlKCk7CiAgICAgICAgIHJldHVybiBwYXJl
bnQ7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGlu
bGluZSBFbGVtZW50KiBwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5oCmluZGV4IGIyZThiMzljMTQyNDY5NmRlNTc3MDQ0YTZjNTRhNGIwMGIxM2M0
MGIuLmJiN2IwMzIwMWJiYzAyZTU5YjA1N2E2NTY3MDRlMzZjZTA3Y2M5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
CkBAIC03MCw5ICs3MCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07
CiAKLWlubGluZSBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGNvbnN0IEhUTUxF
bGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50KCk7IH0KLWlubGluZSBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGNv
bnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1RleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9Ci1O
T0RFX1RZUEVfQ0FTVFMoVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpCisgICAgc3RhdGlj
IGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKTsg
fQorICAgIHN0YXRpYyBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1RleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDgyNGM0NmU1N2Q3NDU0ZTdlYmM4ODNmODZiYjc3
OGM4MWMwODc3OWQuLmFiMTk4OGYxODgyODVjMDNiNWY3MjBhMGYxOTIzODc2ZThlYzhiOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTQ5Nyw4ICs0OTcsOCBAQCB2b2lk
IFZUVEN1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9k
ZSwgQ29udGFpbmVyTm9kZSogcAogewogICAgIGZvciAoTm9kZSogbm9kZSA9IHdlYlZUVE5vZGUt
PmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgUmVmUHRyPE5vZGU+IGNsb25lZE5vZGU7Ci0gICAgICAgIGlmIChub2RlLT5pc1dlYlZUVEVs
ZW1lbnQoKSkKLSAgICAgICAgICAgIGNsb25lZE5vZGUgPSB0b1dlYlZUVEVsZW1lbnQobm9kZSkt
PmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChvd25lckRvY3VtZW50KCkpOworICAgICAgICBp
ZiAoaXM8V2ViVlRURWxlbWVudD4obm9kZSkpCisgICAgICAgICAgICBjbG9uZWROb2RlID0gZG93
bmNhc3Q8V2ViVlRURWxlbWVudD4oKm5vZGUpLmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChv
d25lckRvY3VtZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjbG9uZWROb2RlID0g
bm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKICAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChjbG9u
ZWROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKQEAgLTc2Niw4ICs3NjYsOCBAQCB2b2lkIFZU
VEN1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBjb25zdCBN
ZWRpYVRpbWUmIHByZXZpbwogICAgICAgICAgICAgICAgIGlzUGFzdE5vZGUgPSBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGNoaWxkLT5pc1dlYlZUVEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgdG9XZWJWVFRFbGVtZW50KGNoaWxkKS0+c2V0SXNQYXN0Tm9kZShpc1Bh
c3ROb2RlKTsKKyAgICAgICAgaWYgKGlzPFdlYlZUVEVsZW1lbnQ+KGNoaWxkKSkgeworICAgICAg
ICAgICAgZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKmNoaWxkKS5zZXRJc1Bhc3ROb2RlKGlzUGFz
dE5vZGUpOwogICAgICAgICAgICAgLy8gTWFrZSBhbiBlbGVtZW5ldCBpZCBtYXRjaCBhIGN1ZSBp
ZCBmb3Igc3R5bGUgbWF0Y2hpbmcgcHVycG9zZXMuCiAgICAgICAgICAgICBpZiAoIWlkKCkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIHRvRWxlbWVudChjaGlsZCktPnNldElkQXR0cmlidXRl
KGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCAz
OTQwNmQ5YWY3ODRmNDcyYzQ2OTA2ODZlM2IyYzU1MzAxYjQ3YWYzLi4zYjNkOTExMGNiODBjNWUy
ZTZmMDI3ODcwNTRmNzgzYTk5YzE3YTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVEVsZW1lbnQuaApAQCAtODAsOSArODAsOSBAQCBwcml2YXRlOgogICAgIEF0b21pY1N0cmlu
ZyBtX2xhbmd1YWdlOwogfTsKIAotdm9pZCBpc1dlYlZUVEVsZW1lbnQoY29uc3QgV2ViVlRURWxl
bWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24g
YXQgY29tcGlsZSB0aW1lLgotaW5saW5lIGJvb2wgaXNXZWJWVFRFbGVtZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNXZWJWVFRFbGVtZW50KCk7IH0KLU5PREVfVFlQRV9DQVNU
UyhXZWJWVFRFbGVtZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJWVFRFbGVt
ZW50KQorICAgIHN0YXRpYyBib29sIGlzV2ViVlRURWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmlzV2ViVlRURWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDdkYmU4YzNjNTAzY2Y1YTE0NDg1Yzc1NjNmYjFi
OTRhYmQyMDc2NGQuLjdmZjc1NjVlMzFiYTI2YzMxNDAzOTM4YmExNGIzZDkwZDMxMDQwOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTU2MSw3ICs1
NjEsNyBAQCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgaWYgKG5vZGVUeXBlID09IFdlYlZUVE5vZGVUeXBl
Tm9uZSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFdlYlZUVE5vZGVUeXBlIGN1cnJl
bnRUeXBlID0gbV9jdXJyZW50Tm9kZS0+aXNXZWJWVFRFbGVtZW50KCkgPyB0b1dlYlZUVEVsZW1l
bnQobV9jdXJyZW50Tm9kZS5nZXQoKSktPndlYlZUVE5vZGVUeXBlKCkgOiBXZWJWVFROb2RlVHlw
ZU5vbmU7CisgICAgICAgIFdlYlZUVE5vZGVUeXBlIGN1cnJlbnRUeXBlID0gaXM8V2ViVlRURWxl
bWVudD4oKm1fY3VycmVudE5vZGUpID8gZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKm1fY3VycmVu
dE5vZGUpLndlYlZUVE5vZGVUeXBlKCkgOiBXZWJWVFROb2RlVHlwZU5vbmU7CiAgICAgICAgIC8v
IDxydD4gaXMgb25seSBhbGxvd2VkIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgPHJ1Ynk+LgogICAg
ICAgICBpZiAobm9kZVR5cGUgPT0gV2ViVlRUTm9kZVR5cGVSdWJ5VGV4dCAmJiBjdXJyZW50VHlw
ZSAhPSBXZWJWVFROb2RlVHlwZVJ1YnkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTU4OSwxMCAr
NTg5LDEwIEBAIHZvaWQgV2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4o
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICAKICAgICAgICAgLy8gVGhlIG9ubHkgbm9uLVZU
VEVsZW1lbnQgd291bGQgYmUgdGhlIERvY3VtZW50RnJhZ21lbnQgcm9vdC4gKFRleHQKICAgICAg
ICAgLy8gbm9kZXMgYW5kIFBJcyB3aWxsIG5ldmVyIGFwcGVhciBhcyBtX2N1cnJlbnROb2RlLikK
LSAgICAgICAgaWYgKCFtX2N1cnJlbnROb2RlLT5pc1dlYlZUVEVsZW1lbnQoKSkKKyAgICAgICAg
aWYgKCFpczxXZWJWVFRFbGVtZW50PigqbV9jdXJyZW50Tm9kZSkpCiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBXZWJWVFROb2RlVHlwZSBjdXJyZW50VHlwZSA9IHRvV2ViVlRURWxlbWVu
dChtX2N1cnJlbnROb2RlLmdldCgpKS0+d2ViVlRUTm9kZVR5cGUoKTsKKyAgICAgICAgV2ViVlRU
Tm9kZVR5cGUgY3VycmVudFR5cGUgPSBkb3duY2FzdDxXZWJWVFRFbGVtZW50PigqbV9jdXJyZW50
Tm9kZSkud2ViVlRUTm9kZVR5cGUoKTsKICAgICAgICAgYm9vbCBtYXRjaGVzQ3VycmVudCA9IG5v
ZGVUeXBlID09IGN1cnJlbnRUeXBlOwogICAgICAgICBpZiAoIW1hdGNoZXNDdXJyZW50KSB7CiAg
ICAgICAgICAgICAvLyA8L3J1Ynk+IGF1dG8tY2xvc2VzIDxydD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKaW5kZXggNDIzYjNjYzhjODY4ZmEwODFkYzYxMGE5Yzlh
OTI3MWM3YmVhMTA3Ny4uMDg4OWRmYzk3ZDdjNDVkNmJkMjkwODBhYWI1NzI1NGE2MGI4YTc2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKQEAgLTM1Miw3ICsz
NTIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdSZW5kZXJlcihjb25z
dCBUZXh0JiB0ZXh0Tm9kZSkKIAogc3RhdGljIHZvaWQgaW52YWxpZGF0ZVdoaXRlc3BhY2VPbmx5
VGV4dFNpYmxpbmdzQWZ0ZXJBdHRhY2hJZk5lZWRlZChOb2RlJiBjdXJyZW50KQogewotICAgIGlm
IChpc0luc2VydGlvblBvaW50KGN1cnJlbnQpKQorICAgIGlmIChpczxJbnNlcnRpb25Qb2ludD4o
Y3VycmVudCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZpbmRzIHNp
YmxpbmcgdGV4dCByZW5kZXJlcnMgd2hlcmUgdGhlIHJlc3VsdHMgb2YgdGV4dFJlbmRlcmVySXNO
ZWVkZWQgbWF5IGhhdmUgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZgogICAgIC8vIHRoZSBjdXJyZW50
IG5vZGUgZ2FpbmluZyBvciBsb3NpbmcgdGhlIHJlbmRlcmVyLiBUaGlzIGNhbiBvbmx5IGFmZmVj
dCB3aGl0ZSBzcGFjZSB0ZXh0IG5vZGVzLgpAQCAtNjA2LDggKzYwNiw4IEBAIHN0YXRpYyB2b2lk
IGF0dGFjaFJlbmRlclRyZWUoRWxlbWVudCYgY3VycmVudCwgUmVuZGVyU3R5bGUmIGluaGVyaXRl
ZFN0eWxlLCBSZW5kCiAgICAgUG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVyIGNhbGxiYWNr
RGlzYWJsZXIoY3VycmVudC5kb2N1bWVudCgpKTsKICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
U3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogCi0gICAgaWYg
KGlzSW5zZXJ0aW9uUG9pbnQoY3VycmVudCkpIHsKLSAgICAgICAgYXR0YWNoRGlzdHJpYnV0ZWRD
aGlsZHJlbih0b0luc2VydGlvblBvaW50KGN1cnJlbnQpLCBpbmhlcml0ZWRTdHlsZSwgcmVuZGVy
VHJlZVBvc2l0aW9uKTsKKyAgICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+KGN1cnJlbnQpKSB7Cisg
ICAgICAgIGF0dGFjaERpc3RyaWJ1dGVkQ2hpbGRyZW4oZG93bmNhc3Q8SW5zZXJ0aW9uUG9pbnQ+
KGN1cnJlbnQpLCBpbmhlcml0ZWRTdHlsZSwgcmVuZGVyVHJlZVBvc2l0aW9uKTsKICAgICAgICAg
Y3VycmVudC5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgY3VycmVudC5jbGVhckNo
aWxkTmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICByZXR1cm47CkBAIC02NjIsOCArNjYyLDgg
QEAgc3RhdGljIHZvaWQgZGV0YWNoRGlzdHJpYnV0ZWRDaGlsZHJlbihJbnNlcnRpb25Qb2ludCYg
aW5zZXJ0aW9uUG9pbnQpCiAKIHN0YXRpYyB2b2lkIGRldGFjaENoaWxkcmVuKENvbnRhaW5lck5v
ZGUmIGN1cnJlbnQsIERldGFjaFR5cGUgZGV0YWNoVHlwZSkKIHsKLSAgICBpZiAoaXNJbnNlcnRp
b25Qb2ludChjdXJyZW50KSkKLSAgICAgICAgZGV0YWNoRGlzdHJpYnV0ZWRDaGlsZHJlbih0b0lu
c2VydGlvblBvaW50KGN1cnJlbnQpKTsKKyAgICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+KGN1cnJl
bnQpKQorICAgICAgICBkZXRhY2hEaXN0cmlidXRlZENoaWxkcmVuKGRvd25jYXN0PEluc2VydGlv
blBvaW50PihjdXJyZW50KSk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gY3VycmVudC5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAg
IGlmIChjaGlsZC0+aXNUZXh0Tm9kZSgpKSB7CkBAIC04OTksNyArODk5LDcgQEAgdm9pZCByZXNv
bHZlVHJlZShFbGVtZW50JiBjdXJyZW50LCBSZW5kZXJTdHlsZSYgaW5oZXJpdGVkU3R5bGUsIFJl
bmRlclRyZWVQb3NpdGkKIHsKICAgICBBU1NFUlQoY2hhbmdlICE9IERldGFjaCk7CiAKLSAgICBp
ZiAoaXNJbnNlcnRpb25Qb2ludChjdXJyZW50KSkgeworICAgIGlmIChpczxJbnNlcnRpb25Qb2lu
dD4oY3VycmVudCkpIHsKICAgICAgICAgY3VycmVudC5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsK
ICAgICAgICAgY3VycmVudC5jbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBy
ZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238861</attachid>
            <date>2014-09-29 09:33:47 -0700</date>
            <delta_ts>2014-09-29 10:16:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137172-20140929093346.patch</filename>
            <type>text/plain</type>
            <size>19615</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJlOWViNzc4MmQ4OTUz
YTQ2NDk0OGUyM2U1YTJmYjdmNDI2M2ViYy4uNTM4YThkNTI5MDY4MjI0ODRlYjFiYjVkZWEwM2U2
YTJkMGVhZDY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE0LTA5LTI2ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgcmVtYWlu
aW5nIHVzZXMgb2YgTk9ERV9UWVBFX0NBU1RTKCkgZnJvbSBodG1sLworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVtb3ZlIHJlbWFpbmluZyB1c2VzIG9mIE5P
REVfVFlQRV9DQVNUUygpIGZyb20gaHRtbC8gYW5kIHVzZSB0aGUgbmV3CisgICAgICAgIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfKigpIG1hY3JvIGluc3RlYWQgc28gdGhhdCBpczw+KCkgLyBkb3du
Y2FzdDw+KCkKKyAgICAgICAgd29ya3MgZm9yIHRob3NlIHR5cGVzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlclRlc3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNMYW5nUHNldWRv
Q2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hlc0Z1dHVyZUN1ZVBzZXVkb0NsYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNQYXN0Q3VlUHNldWRvQ2xhc3MpOgorICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgIFRoZSBuZXcgY2FzdGluZyBmdW5j
dGlvbiBmb3VuZCBhIGJhZCBjYXN0IGZyb20gYSBTdHlsZWRFbGVtZW50IHRvIFZUVEVsZW1lbnQu
CisgICAgICAgIFRob3NlIHR3byB0eXBlcyBhcmUgdW5yZWxhdGVkIGFzIFZUVEVsZW1lbnQgaW5o
ZXJpdHMgZGlyZWN0bHkgZnJvbSBFbGVtZW50LgorICAgICAgICBLbm93aW5nIHRoYXQgfGVsZW1l
bnR8IGluIHRoaXMgbWV0aG9kIGNhbm5vdCBiZSBhIFZUVEVsZW1lbnQgc2ltcGxpZmllcyB0aGUK
KyAgICAgICAgbG9naWMgYSBiaXQuCisKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1RyYXZl
cnNhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpmaW5k
Rmlyc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpmaW5kTGFzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnRyYXZlcnNlUGFyZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9k
ZUFzU3VwcG9ydGVkTGFiZWxhYmxlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Omlu
bmVyVGV4dEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvTGFiZWxhYmxlRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6aXNMYWJlbGFibGVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3Ry
aWJ1dG9yOjplbnN1cmVJbnNlcnRpb25Qb2ludExpc3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0luc2VydGlvblBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbik6CisgICAgICAgICogaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjppc1RleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWVFRDdWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMpOgorICAgICAgICAq
IGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNXZWJWVFRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJWVFRUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbik6Cisg
ICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6YXR0YWNoUmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0YWNo
Q2hpbGRyZW4pOgorCiAyMDE0LTA5LTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBUd2VhayBhbmQgdGlnaHRlbiBTVkcgZm9udCBjb252ZXJ0ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCmluZGV4IDBj
ZTIxMTUxYzBjNzA3MGYwNjFmZmJlYTkzMmYwZjBlMDc5MWE4MjUuLjAwOTVlMWQ4MTg5ODJmMGJk
MDQ0OWNhNmIyMTM3YjhjODA3MzViYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaApAQCAtMTM0LDggKzEzNCw4IEBAIGlubGluZSBi
b29sIG1hdGNoZXNMYW5nUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCogZWxlbWVudCwgQXRvbWlj
U3RyaW5nSW1wbCogZmlsCiB7CiAgICAgQXRvbWljU3RyaW5nIHZhbHVlOwogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICBpZiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkpCi0gICAgICAg
IHZhbHVlID0gdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT5sYW5ndWFnZSgpOworICAgIGlmIChp
czxXZWJWVFRFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgdmFsdWUgPSBkb3duY2FzdDxXZWJW
VFRFbGVtZW50PigqZWxlbWVudCkubGFuZ3VhZ2UoKTsKICAgICBlbHNlCiAjZW5kaWYKICAgICAg
ICAgdmFsdWUgPSBlbGVtZW50LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKQEAgLTMxMSwx
MiArMzExLDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzRnVsbFNjcmVlbkRvY3VtZW50
UHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCogZWxlbWVudCkKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hlc0Z1dHVyZUN1ZVBzZXVkb0NsYXNzKGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1l
bnQoKSAmJiAhdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkpOworICAgIHJl
dHVybiBpczxXZWJWVFRFbGVtZW50PihlbGVtZW50KSAmJiAhZG93bmNhc3Q8V2ViVlRURWxlbWVu
dD4oKmVsZW1lbnQpLmlzUGFzdE5vZGUoKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIG1hdGNo
ZXNQYXN0Q3VlUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICByZXR1
cm4gKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICYmIHRvV2ViVlRURWxlbWVudChlbGVtZW50
KS0+aXNQYXN0Tm9kZSgpKTsKKyAgICByZXR1cm4gaXM8V2ViVlRURWxlbWVudD4oZWxlbWVudCkg
JiYgZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKmVsZW1lbnQpLmlzUGFzdE5vZGUoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggOGZjYjM3OTY1MmQ2
MzMyMDNmNzc1ZWU3NmQzMjc3NWYyZTFkMTE0YS4uMDBmZmYwYTliYzc1OWUxNmYxMzJlNjI2Mjg3
Y2I4NzIxNDQxMmMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjUw
LDEwICs2NTAsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVu
dChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgIC8vIERlbnkgc2hhcmluZyBzdHlsZXMgYmV0d2VlbiBXZWJWVFQgYW5kIG5vbi1XZWJW
VFQgbm9kZXMuCi0gICAgaWYgKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICE9IHN0YXRlLmVs
ZW1lbnQoKS0+aXNXZWJWVFRFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiBzdGF0ZS5lbGVtZW50KCktPmlzV2Vi
VlRURWxlbWVudCgpICYmIHRvV2ViVlRURWxlbWVudChlbGVtZW50KS0+aXNQYXN0Tm9kZSgpICE9
IHRvV2ViVlRURWxlbWVudChzdGF0ZS5lbGVtZW50KCkpLT5pc1Bhc3ROb2RlKCkpCisgICAgaWYg
KGlzPFdlYlZUVEVsZW1lbnQ+KHN0YXRlLmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bC5jcHAKaW5kZXggOGE1OTc4MmYwNjkyNjlmNmJkMGJiNzY2ZGI2MzU2NjczM2Y3ZTdlNC4uODZl
ZjI5OTlkYzE4NjVlNjBkODcxY2ZjN2RiNmVhNTMzYTViMTBlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApAQCAtNzIsOCArNzIsOCBAQCBzdGF0
aWMgTm9kZSogZmluZEZpcnN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9kZSogbm9k
ZSkKICAgICBBU1NFUlQobm9kZSk7CiAgICAgaWYgKCFpc0FjdGl2ZUluc2VydGlvblBvaW50KG5v
ZGUpKQogICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obm9kZSk7Ci0gICAgY29uc3Qg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsK
LSAgICBpZiAoTm9kZSogZm91bmQgPSBmaW5kRmlyc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGluc2Vy
dGlvblBvaW50LT5maXJzdERpc3RyaWJ1dGVkKCksIGluc2VydGlvblBvaW50KSkKKyAgICBjb25z
dCBJbnNlcnRpb25Qb2ludCYgaW5zZXJ0aW9uUG9pbnQgPSBkb3duY2FzdDxJbnNlcnRpb25Qb2lu
dD4oKm5vZGUpOworICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEZyb21EaXN0cmlidXRl
ZE5vZGUoaW5zZXJ0aW9uUG9pbnQuZmlyc3REaXN0cmlidXRlZCgpLCAmaW5zZXJ0aW9uUG9pbnQp
KQogICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgcmV0dXJuIGZpbmRGaXJzdFNpYmxpbmdFbnRl
cmluZ0luc2VydGlvblBvaW50cyhub2RlLT5maXJzdENoaWxkKCkpOwogfQpAQCAtMTAxLDggKzEw
MSw4IEBAIHN0YXRpYyBOb2RlKiBmaW5kTGFzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGNvbnN0
IE5vZGUqIG5vZGUpCiAgICAgQVNTRVJUKG5vZGUpOwogICAgIGlmICghaXNBY3RpdmVJbnNlcnRp
b25Qb2ludChub2RlKSkKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOwot
ICAgIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9p
bnQobm9kZSk7Ci0gICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZExhc3RGcm9tRGlzdHJpYnV0ZWRO
b2RlKGluc2VydGlvblBvaW50LT5sYXN0RGlzdHJpYnV0ZWQoKSwgaW5zZXJ0aW9uUG9pbnQpKQor
ICAgIGNvbnN0IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCA9IGRvd25jYXN0PEluc2Vy
dGlvblBvaW50Pigqbm9kZSk7CisgICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZExhc3RGcm9tRGlz
dHJpYnV0ZWROb2RlKGluc2VydGlvblBvaW50Lmxhc3REaXN0cmlidXRlZCgpLCAmaW5zZXJ0aW9u
UG9pbnQpKQogICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgcmV0dXJuIGZpbmRMYXN0U2libGlu
Z0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUtPmxhc3RDaGlsZCgpKTsKIH0KQEAgLTEzNSwx
MSArMTM1LDExIEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBO
b2RlKiBub2RlLCBTaGFkb3dSb290Q3Jvc3Npbmcgc2hhZG93CiAgICAgaWYgKHBhcmVudC0+aXNT
aGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBzaGFkb3dSb290Q3Jvc3NpbmcgPT0gQ3Jvc3NT
aGFkb3dSb290ID8gdG9TaGFkb3dSb290KHBhcmVudCktPmhvc3RFbGVtZW50KCkgOiBwYXJlbnQ7
CiAKLSAgICBpZiAocGFyZW50LT5pc0luc2VydGlvblBvaW50KCkpIHsKLSAgICAgICAgY29uc3Qg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChwYXJlbnQp
OwotICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKQorICAgIGlm
IChpczxJbnNlcnRpb25Qb2ludD4ocGFyZW50KSkgeworICAgICAgICBjb25zdCBJbnNlcnRpb25Q
b2ludCYgaW5zZXJ0aW9uUG9pbnQgPSBkb3duY2FzdDxJbnNlcnRpb25Qb2ludD4oKnBhcmVudCk7
CisgICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC5oYXNEaXN0cmlidXRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmlzQWN0aXZl
KCkpCisgICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0FjdGl2ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIHRyYXZlcnNlUGFyZW50KHBhcmVudCwgc2hhZG93Um9vdENyb3NzaW5nKTsKICAgICB9
CiAgICAgcmV0dXJuIHBhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExhYmVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQu
Y3BwCmluZGV4IDQxMTg5ODUwN2FkZWEyZGM5NTIzOGIyNmVjNDJkYmE3N2M4ZWIzMTEuLjEyNTI2
MGZjNjMyZjQyM2Y1ZjU2ZjI4MWM0MmM4YjBhMjdjYzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGFiZWxFbGVtZW50LmNwcApAQCAtMzgsOSArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCiBzdGF0aWMgTGFiZWxhYmxlRWxlbWVudCogbm9kZUFzU3VwcG9ydGVkTGFi
ZWxhYmxlRWxlbWVudChOb2RlKiBub2RlKQogewotICAgIGlmICghbm9kZSB8fCAhaXNMYWJlbGFi
bGVFbGVtZW50KCpub2RlKSkKKyAgICBpZiAoIW5vZGUgfHwgIWlzPExhYmVsYWJsZUVsZW1lbnQ+
KCpub2RlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgTGFiZWxhYmxlRWxlbWVudCYg
ZWxlbWVudCA9IHRvTGFiZWxhYmxlRWxlbWVudCgqbm9kZSk7CisgICAgTGFiZWxhYmxlRWxlbWVu
dCYgZWxlbWVudCA9IGRvd25jYXN0PExhYmVsYWJsZUVsZW1lbnQ+KCpub2RlKTsKICAgICByZXR1
cm4gZWxlbWVudC5zdXBwb3J0TGFiZWxzKCkgPyAmZWxlbWVudCA6IG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGNlM2Q4YTk1
M2RmMmQyMWJhOTE2Mzc4ZDBlZjZkM2M2YzAwY2JmZjEuLjJhNGM1YzVhY2YxYWIzYzk2ZDRkYzUz
NDljN2MyOTA1MjI3ZTZiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcApAQCAtMzI2LDggKzMyNiw3IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50
OjpzYW5pdGl6ZVVzZXJJbnB1dFZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSwKIAog
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRl
eHRFbGVtZW50KCkgY29uc3QKIHsKLSAgICBOb2RlKiBub2RlID0gdXNlckFnZW50U2hhZG93Um9v
dCgpLT5maXJzdENoaWxkKCk7Ci0gICAgcmV0dXJuIHRvVGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ+KHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsKIH0KIAogdm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50OjpyZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTGFiZWxhYmxlRWxlbWVudC5oCmluZGV4IDQwMDU1YzNjYjYzNGYxMDEwNTE2MzIzMDg0MTJi
OGE3ZjQ4MzFjNjEuLjI3NGMyYWI5OTA2MDA4OWFjNzkxOWZjMTdkYTZhYjRkNjhkYThhYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCkBAIC01MCwxNiArNTAsMTAgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbGFibGUoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCi12b2lkIGlzTGFiZWxhYmxlRWxlbWVudChjb25z
dCBMYWJlbGFibGVFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sg
b2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi1pbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVs
ZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNMYWJl
bGFibGUoKTsgfQotaW5saW5lIGJvb2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5v
ZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MRWxlbWVu
dD4obm9kZSkuaXNMYWJlbGFibGUoKTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4K
LXN0cnVjdCBOb2RlVHlwZUNhc3RUcmFpdHM8Y29uc3QgTGFiZWxhYmxlRWxlbWVudCwgQXJnVHlw
ZT4gewotICAgIHN0YXRpYyBib29sIGlzVHlwZShBcmdUeXBlJiBub2RlKSB7IHJldHVybiBpc0xh
YmVsYWJsZUVsZW1lbnQobm9kZSk7IH0KLX07Ci0KLU5PREVfVFlQRV9DQVNUUyhMYWJlbGFibGVF
bGVtZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihMYWJlbGFibGVFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzTGFiZWxhYmxlRWxlbWVudChjb25zdCBIVE1MRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0xhYmVsYWJsZSgpOyB9CisgICAgc3RhdGljIGJvb2wg
aXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVt
ZW50Pihub2RlKSAmJiBpc0xhYmVsYWJsZUVsZW1lbnQoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5v
ZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRE
aXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuY3BwCmluZGV4IGM0Yzc3YTc0N2JlN2M5NzFjNzAzYmMzMzI0NmUxNzRmMjhhYzg2ODMu
LjhlODY3ZTgxZjc4YTI2NTgzOTM5MWM5YjNiYmY3MWZhNWQ2MjQ5ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtNTYsMTAg
KzU2LDggQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4+JiBDb250ZW50RGlz
dHJpYnV0b3I6OmVuc3VyZUluc2VydGlvblBvaW50TGkKICAgICBtX2luc2VydGlvblBvaW50TGlz
dElzVmFsaWQgPSB0cnVlOwogICAgIEFTU0VSVChtX2luc2VydGlvblBvaW50TGlzdC5pc0VtcHR5
KCkpOwogCi0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVu
dD4oKnNoYWRvd1Jvb3QpKSB7Ci0gICAgICAgIGlmIChlbGVtZW50LmlzSW5zZXJ0aW9uUG9pbnQo
KSkKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uUG9pbnRMaXN0LmFwcGVuZCh0b0luc2VydGlvblBv
aW50KCZlbGVtZW50KSk7Ci0gICAgfQorICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEluc2VydGlvblBvaW50Pigqc2hhZG93Um9vdCkpCisgICAgICAgIG1faW5zZXJ0
aW9uUG9pbnRMaXN0LmFwcGVuZCgmZWxlbWVudCk7CiAKICAgICByZXR1cm4gbV9pbnNlcnRpb25Q
b2ludExpc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aAppbmRleCBhNGU2OTk0NWYyZGIzYzZhMTlmZWVkNWY1MDFmMzE3ZjI1YmU2MTg5Li42ZThiN2Nj
MWM1YWRlZjNkMmZkYzk4ODJiZmUyNDNlNjdjYTFhOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTc1LDEzICs3NSwxMyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNEaXN0cmlidXRpb247CiB9OwogCi1pbmxpbmUgYm9vbCBpc0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNJbnNlcnRpb25Qb2ludCgp
OyB9Ci0KLU5PREVfVFlQRV9DQVNUUyhJbnNlcnRpb25Qb2ludCk7CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKEluc2VydGlvblBvaW50KQorICAgIHN0YXRpYyBib29sIGlzSW5zZXJ0aW9u
UG9pbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0luc2VydGlvblBvaW50KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogaW5saW5lIGJvb2wgaXNBY3RpdmVJ
bnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlICYmIG5v
ZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2
ZSgpOworICAgIHJldHVybiBub2RlICYmIGlzPEluc2VydGlvblBvaW50Pihub2RlKSAmJiBkb3du
Y2FzdDxJbnNlcnRpb25Qb2ludD4oKm5vZGUpLmlzQWN0aXZlKCk7CiB9CiAKIGlubGluZSBOb2Rl
KiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCkBAIC04OSwxMiAr
ODksMTIgQEAgaW5saW5lIE5vZGUqIHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY29uc3QgTm9k
ZSogbm9kZSkKICAgICBBU1NFUlQobm9kZSk7CiAKICAgICBpZiAoTm9kZSogcGFyZW50ID0gbm9k
ZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChwYXJlbnQtPmlzSW5zZXJ0aW9uUG9pbnQo
KSAmJiB0b0luc2VydGlvblBvaW50KHBhcmVudCktPnNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMo
KSkKKyAgICAgICAgaWYgKGlzPEluc2VydGlvblBvaW50PihwYXJlbnQpICYmIGRvd25jYXN0PElu
c2VydGlvblBvaW50PigqcGFyZW50KS5zaG91bGRVc2VGYWxsYmFja0VsZW1lbnRzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcGFyZW50LT5wYXJlbnROb2RlKCk7CiAgICAgICAgIHJldHVybiBwYXJl
bnQ7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGlu
bGluZSBFbGVtZW50KiBwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5oCmluZGV4IGIyZThiMzljMTQyNDY5NmRlNTc3MDQ0YTZjNTRhNGIwMGIxM2M0
MGIuLmJiN2IwMzIwMWJiYzAyZTU5YjA1N2E2NTY3MDRlMzZjZTA3Y2M5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
CkBAIC03MCw5ICs3MCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250
cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07
CiAKLWlubGluZSBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGNvbnN0IEhUTUxF
bGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dENvbnRyb2xJbm5lclRleHRF
bGVtZW50KCk7IH0KLWlubGluZSBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGNv
bnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1RleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9Ci1O
T0RFX1RZUEVfQ0FTVFMoVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQpCisgICAgc3RhdGlj
IGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKTsg
fQorICAgIHN0YXRpYyBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihub2RlKSAmJiBpc1RleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudChkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRDdWUuY3BwCmluZGV4IDgyNGM0NmU1N2Q3NDU0ZTdlYmM4ODNmODZiYjc3
OGM4MWMwODc3OWQuLmFiMTk4OGYxODgyODVjMDNiNWY3MjBhMGYxOTIzODc2ZThlYzhiOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTQ5Nyw4ICs0OTcsOCBAQCB2b2lk
IFZUVEN1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9k
ZSwgQ29udGFpbmVyTm9kZSogcAogewogICAgIGZvciAoTm9kZSogbm9kZSA9IHdlYlZUVE5vZGUt
PmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgUmVmUHRyPE5vZGU+IGNsb25lZE5vZGU7Ci0gICAgICAgIGlmIChub2RlLT5pc1dlYlZUVEVs
ZW1lbnQoKSkKLSAgICAgICAgICAgIGNsb25lZE5vZGUgPSB0b1dlYlZUVEVsZW1lbnQobm9kZSkt
PmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChvd25lckRvY3VtZW50KCkpOworICAgICAgICBp
ZiAoaXM8V2ViVlRURWxlbWVudD4obm9kZSkpCisgICAgICAgICAgICBjbG9uZWROb2RlID0gZG93
bmNhc3Q8V2ViVlRURWxlbWVudD4oKm5vZGUpLmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChv
d25lckRvY3VtZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjbG9uZWROb2RlID0g
bm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKICAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChjbG9u
ZWROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKQEAgLTc2Niw4ICs3NjYsOCBAQCB2b2lkIFZU
VEN1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBjb25zdCBN
ZWRpYVRpbWUmIHByZXZpbwogICAgICAgICAgICAgICAgIGlzUGFzdE5vZGUgPSBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGNoaWxkLT5pc1dlYlZUVEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgdG9XZWJWVFRFbGVtZW50KGNoaWxkKS0+c2V0SXNQYXN0Tm9kZShpc1Bh
c3ROb2RlKTsKKyAgICAgICAgaWYgKGlzPFdlYlZUVEVsZW1lbnQ+KGNoaWxkKSkgeworICAgICAg
ICAgICAgZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKmNoaWxkKS5zZXRJc1Bhc3ROb2RlKGlzUGFz
dE5vZGUpOwogICAgICAgICAgICAgLy8gTWFrZSBhbiBlbGVtZW5ldCBpZCBtYXRjaCBhIGN1ZSBp
ZCBmb3Igc3R5bGUgbWF0Y2hpbmcgcHVycG9zZXMuCiAgICAgICAgICAgICBpZiAoIWlkKCkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIHRvRWxlbWVudChjaGlsZCktPnNldElkQXR0cmlidXRl
KGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCAz
OTQwNmQ5YWY3ODRmNDcyYzQ2OTA2ODZlM2IyYzU1MzAxYjQ3YWYzLi4zYjNkOTExMGNiODBjNWUy
ZTZmMDI3ODcwNTRmNzgzYTk5YzE3YTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVEVsZW1lbnQuaApAQCAtODAsOSArODAsOSBAQCBwcml2YXRlOgogICAgIEF0b21pY1N0cmlu
ZyBtX2xhbmd1YWdlOwogfTsKIAotdm9pZCBpc1dlYlZUVEVsZW1lbnQoY29uc3QgV2ViVlRURWxl
bWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24g
YXQgY29tcGlsZSB0aW1lLgotaW5saW5lIGJvb2wgaXNXZWJWVFRFbGVtZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNXZWJWVFRFbGVtZW50KCk7IH0KLU5PREVfVFlQRV9DQVNU
UyhXZWJWVFRFbGVtZW50KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJWVFRFbGVt
ZW50KQorICAgIHN0YXRpYyBib29sIGlzV2ViVlRURWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7
IHJldHVybiBub2RlLmlzV2ViVlRURWxlbWVudCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDdkYmU4YzNjNTAzY2Y1YTE0NDg1Yzc1NjNmYjFi
OTRhYmQyMDc2NGQuLjdmZjc1NjVlMzFiYTI2YzMxNDAzOTM4YmExNGIzZDkwZDMxMDQwOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTU2MSw3ICs1
NjEsNyBAQCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgaWYgKG5vZGVUeXBlID09IFdlYlZUVE5vZGVUeXBl
Tm9uZSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFdlYlZUVE5vZGVUeXBlIGN1cnJl
bnRUeXBlID0gbV9jdXJyZW50Tm9kZS0+aXNXZWJWVFRFbGVtZW50KCkgPyB0b1dlYlZUVEVsZW1l
bnQobV9jdXJyZW50Tm9kZS5nZXQoKSktPndlYlZUVE5vZGVUeXBlKCkgOiBXZWJWVFROb2RlVHlw
ZU5vbmU7CisgICAgICAgIFdlYlZUVE5vZGVUeXBlIGN1cnJlbnRUeXBlID0gaXM8V2ViVlRURWxl
bWVudD4oKm1fY3VycmVudE5vZGUpID8gZG93bmNhc3Q8V2ViVlRURWxlbWVudD4oKm1fY3VycmVu
dE5vZGUpLndlYlZUVE5vZGVUeXBlKCkgOiBXZWJWVFROb2RlVHlwZU5vbmU7CiAgICAgICAgIC8v
IDxydD4gaXMgb25seSBhbGxvd2VkIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgPHJ1Ynk+LgogICAg
ICAgICBpZiAobm9kZVR5cGUgPT0gV2ViVlRUTm9kZVR5cGVSdWJ5VGV4dCAmJiBjdXJyZW50VHlw
ZSAhPSBXZWJWVFROb2RlVHlwZVJ1YnkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTU4OSwxMCAr
NTg5LDEwIEBAIHZvaWQgV2ViVlRUVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4o
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICAKICAgICAgICAgLy8gVGhlIG9ubHkgbm9uLVZU
VEVsZW1lbnQgd291bGQgYmUgdGhlIERvY3VtZW50RnJhZ21lbnQgcm9vdC4gKFRleHQKICAgICAg
ICAgLy8gbm9kZXMgYW5kIFBJcyB3aWxsIG5ldmVyIGFwcGVhciBhcyBtX2N1cnJlbnROb2RlLikK
LSAgICAgICAgaWYgKCFtX2N1cnJlbnROb2RlLT5pc1dlYlZUVEVsZW1lbnQoKSkKKyAgICAgICAg
aWYgKCFpczxXZWJWVFRFbGVtZW50PigqbV9jdXJyZW50Tm9kZSkpCiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBXZWJWVFROb2RlVHlwZSBjdXJyZW50VHlwZSA9IHRvV2ViVlRURWxlbWVu
dChtX2N1cnJlbnROb2RlLmdldCgpKS0+d2ViVlRUTm9kZVR5cGUoKTsKKyAgICAgICAgV2ViVlRU
Tm9kZVR5cGUgY3VycmVudFR5cGUgPSBkb3duY2FzdDxXZWJWVFRFbGVtZW50PigqbV9jdXJyZW50
Tm9kZSkud2ViVlRUTm9kZVR5cGUoKTsKICAgICAgICAgYm9vbCBtYXRjaGVzQ3VycmVudCA9IG5v
ZGVUeXBlID09IGN1cnJlbnRUeXBlOwogICAgICAgICBpZiAoIW1hdGNoZXNDdXJyZW50KSB7CiAg
ICAgICAgICAgICAvLyA8L3J1Ynk+IGF1dG8tY2xvc2VzIDxydD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKaW5kZXggNDIzYjNjYzhjODY4ZmEwODFkYzYxMGE5Yzlh
OTI3MWM3YmVhMTA3Ny4uMDg4OWRmYzk3ZDdjNDVkNmJkMjkwODBhYWI1NzI1NGE2MGI4YTc2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKQEAgLTM1Miw3ICsz
NTIsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1NpYmxpbmdSZW5kZXJlcihjb25z
dCBUZXh0JiB0ZXh0Tm9kZSkKIAogc3RhdGljIHZvaWQgaW52YWxpZGF0ZVdoaXRlc3BhY2VPbmx5
VGV4dFNpYmxpbmdzQWZ0ZXJBdHRhY2hJZk5lZWRlZChOb2RlJiBjdXJyZW50KQogewotICAgIGlm
IChpc0luc2VydGlvblBvaW50KGN1cnJlbnQpKQorICAgIGlmIChpczxJbnNlcnRpb25Qb2ludD4o
Y3VycmVudCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZpbmRzIHNp
YmxpbmcgdGV4dCByZW5kZXJlcnMgd2hlcmUgdGhlIHJlc3VsdHMgb2YgdGV4dFJlbmRlcmVySXNO
ZWVkZWQgbWF5IGhhdmUgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZgogICAgIC8vIHRoZSBjdXJyZW50
IG5vZGUgZ2FpbmluZyBvciBsb3NpbmcgdGhlIHJlbmRlcmVyLiBUaGlzIGNhbiBvbmx5IGFmZmVj
dCB3aGl0ZSBzcGFjZSB0ZXh0IG5vZGVzLgpAQCAtNjA2LDggKzYwNiw4IEBAIHN0YXRpYyB2b2lk
IGF0dGFjaFJlbmRlclRyZWUoRWxlbWVudCYgY3VycmVudCwgUmVuZGVyU3R5bGUmIGluaGVyaXRl
ZFN0eWxlLCBSZW5kCiAgICAgUG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVyIGNhbGxiYWNr
RGlzYWJsZXIoY3VycmVudC5kb2N1bWVudCgpKTsKICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
U3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogCi0gICAgaWYg
KGlzSW5zZXJ0aW9uUG9pbnQoY3VycmVudCkpIHsKLSAgICAgICAgYXR0YWNoRGlzdHJpYnV0ZWRD
aGlsZHJlbih0b0luc2VydGlvblBvaW50KGN1cnJlbnQpLCBpbmhlcml0ZWRTdHlsZSwgcmVuZGVy
VHJlZVBvc2l0aW9uKTsKKyAgICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+KGN1cnJlbnQpKSB7Cisg
ICAgICAgIGF0dGFjaERpc3RyaWJ1dGVkQ2hpbGRyZW4oZG93bmNhc3Q8SW5zZXJ0aW9uUG9pbnQ+
KGN1cnJlbnQpLCBpbmhlcml0ZWRTdHlsZSwgcmVuZGVyVHJlZVBvc2l0aW9uKTsKICAgICAgICAg
Y3VycmVudC5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgY3VycmVudC5jbGVhckNo
aWxkTmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICByZXR1cm47CkBAIC02NjIsOCArNjYyLDgg
QEAgc3RhdGljIHZvaWQgZGV0YWNoRGlzdHJpYnV0ZWRDaGlsZHJlbihJbnNlcnRpb25Qb2ludCYg
aW5zZXJ0aW9uUG9pbnQpCiAKIHN0YXRpYyB2b2lkIGRldGFjaENoaWxkcmVuKENvbnRhaW5lck5v
ZGUmIGN1cnJlbnQsIERldGFjaFR5cGUgZGV0YWNoVHlwZSkKIHsKLSAgICBpZiAoaXNJbnNlcnRp
b25Qb2ludChjdXJyZW50KSkKLSAgICAgICAgZGV0YWNoRGlzdHJpYnV0ZWRDaGlsZHJlbih0b0lu
c2VydGlvblBvaW50KGN1cnJlbnQpKTsKKyAgICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+KGN1cnJl
bnQpKQorICAgICAgICBkZXRhY2hEaXN0cmlidXRlZENoaWxkcmVuKGRvd25jYXN0PEluc2VydGlv
blBvaW50PihjdXJyZW50KSk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gY3VycmVudC5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAg
IGlmIChjaGlsZC0+aXNUZXh0Tm9kZSgpKSB7CkBAIC04OTksNyArODk5LDcgQEAgdm9pZCByZXNv
bHZlVHJlZShFbGVtZW50JiBjdXJyZW50LCBSZW5kZXJTdHlsZSYgaW5oZXJpdGVkU3R5bGUsIFJl
bmRlclRyZWVQb3NpdGkKIHsKICAgICBBU1NFUlQoY2hhbmdlICE9IERldGFjaCk7CiAKLSAgICBp
ZiAoaXNJbnNlcnRpb25Qb2ludChjdXJyZW50KSkgeworICAgIGlmIChpczxJbnNlcnRpb25Qb2lu
dD4oY3VycmVudCkpIHsKICAgICAgICAgY3VycmVudC5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsK
ICAgICAgICAgY3VycmVudC5jbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBy
ZXR1cm47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>