<?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>169245</bug_id>
          
          <creation_ts>2017-03-06 18:50:59 -0800</creation_ts>
          <short_desc>@media rules ignored in user agent style sheet html.css</short_desc>
          <delta_ts>2017-11-06 09:45:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>169987</dependson>
          <blocked>168447</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1284110</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2017-03-06 18:50:59 -0800</bug_when>
    <thetext>Media query rule blocks are ignored in the WebKit user agent style sheet. Or more accurately, they are treated as if they always match. For example, the @media (inverted-colors) block in bug 168447 is always applied, regardless of whether colors are inverted.

Blocking bug 168447 (&lt;rdar://30559874&gt;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284112</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-06 18:51:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/30885951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290250</commentid>
    <comment_count>2</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-22 16:16:04 -0700</bug_when>
    <thetext>Interestingly, @media (foo) is evaluated to false, but a valid falsy media query like (inverted-colors) evaluates to true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290290</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-22 18:08:32 -0700</bug_when>
    <thetext>It&apos;s because MediaQueryEvaluator::evaluate doesn&apos;t have a document or frame in the context of the default style sheet, so uses its fallback value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290291</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-22 18:11:54 -0700</bug_when>
    <thetext>But this doesn&apos;t explain why the rules are applied, since the fallback value is false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290298</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-22 18:18:52 -0700</bug_when>
    <thetext>Oops. The fallback is true.

But amazingly, because it is created with:

static NeverDestroyed&lt;const MediaQueryEvaluator&gt; staticScreenEval(&quot;screen&quot;);

which is cast to the MediaQueryEvaluator(bool fallback), and the &quot;s&quot; evaluates to true.  The fun of template programming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290306</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-22 18:39:21 -0700</bug_when>
    <thetext>I have a fix for the invalid creation of the MediaQueryEvaluator, but that doesn&apos;t address this bug.

I&apos;m going to have to ask Antti what he thinks is the best solution for associating a defaultStyleSheet or its rules with the current frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290307</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-22 18:43:21 -0700</bug_when>
    <thetext>There isn&apos;t a StyleResolver to use when we call
RuleSet::addRulesFromSheet inside CSSDefaultStyleSheets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322861</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-06-26 09:33:02 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #6)
&gt; I have a fix for the invalid creation of the MediaQueryEvaluator, but that
&gt; doesn&apos;t address this bug.
&gt; 
&gt; I&apos;m going to have to ask Antti what he thinks is the best solution for
&gt; associating a defaultStyleSheet or its rules with the current frame.

Did you hear back from Antti?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322898</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-06-26 10:55:09 -0700</bug_when>
    <thetext>RuleSets for user agent stylesheets are shared between all documents. This is a major optimization that we don&apos;t want to lose. To allow media queries on UA sheets we would need to add a new type of UA sheet that is resolved per-document. Simplest approach would probably be have a different file (that is, not html4.css) for rules like this. Implementation for this should not be difficult at all.

Alternatively we could move media queries later in the style pipeline. For example we could generate RuleSets for all media queries and then pick between them at style resolution time. This is a bigger refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368515</commentid>
    <comment_count>10</comment_count>
      <attachid>326094</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-11-05 18:02:28 -0800</bug_when>
    <thetext>Created attachment 326094
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368597</commentid>
    <comment_count>11</comment_count>
      <attachid>326117</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-11-06 06:18:06 -0800</bug_when>
    <thetext>Created attachment 326117
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368640</commentid>
    <comment_count>12</comment_count>
      <attachid>326117</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-06 08:50:54 -0800</bug_when>
    <thetext>Comment on attachment 326117
patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        To support accessibility features allow non-trivial @media rules in user agent stylesheet.

need a comma after &quot;features&quot;

&gt; Source/WebCore/ChangeLog:48
&gt; +            Also march rules in userAgentMediaQueryStyle.

march -&gt; match

&gt; Source/WebCore/css/CSSDefaultStyleSheets.cpp:125
&gt; +    // Rulesets for these can&apos;t be global and need to be build in document context.

build -&gt; built

&gt; Source/WebCore/css/CSSDefaultStyleSheets.cpp:127
&gt; +        if (is&lt;StyleRuleMedia&gt;(*rule)) {

I suggest using &quot;continue&quot; for this, just like the other if statements below.

&gt; Source/WebCore/css/CSSDefaultStyleSheets.h:50
&gt; +    static void initDefaultStyle(const Element*);

I don’t understand what changed that makes this need to be public instead of private now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368648</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-11-06 09:19:45 -0800</bug_when>
    <thetext>&gt; I don’t understand what changed that makes this need to be public instead of
&gt; private now.

Everything was public before this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368651</commentid>
    <comment_count>14</comment_count>
      <attachid>326126</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-11-06 09:26:10 -0800</bug_when>
    <thetext>Created attachment 326126
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368660</commentid>
    <comment_count>15</comment_count>
      <attachid>326126</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-06 09:45:54 -0800</bug_when>
    <thetext>Comment on attachment 326126
patch

Clearing flags on attachment: 326126

Committed r224495: &lt;https://trac.webkit.org/changeset/224495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368661</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-06 09:45:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326094</attachid>
            <date>2017-11-05 18:02:28 -0800</date>
            <delta_ts>2017-11-06 06:18:06 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ua-media-query-5.patch</filename>
            <type>text/plain</type>
            <size>18344</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE3LTExLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBAbWVkaWEgcnVsZXMgaWdub3Jl
ZCBpbiB1c2VyIGFnZW50IHN0eWxlIHNoZWV0IGh0bWwuY3NzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMwODg1OTUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmFkZFRvRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVT
aGVldHNGb3JFbGVtZW50KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmg6
CisgICAgICAgICogY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6dXNlckFnZW50TWVkaWFRdWVyeVN0eWxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1lZGlhUXVlcnlT
dHlsZUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6
OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6
Y29sbGVjdEZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6c2V0SXNGb3JTaGFkb3dTY29w
ZSk6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpFbGVtZW50UnVsZUNvbGxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKToKKyAgICAg
ICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvSW5zcGVjdG9y
Q1NTT01XcmFwcGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOjpjb2xsZWN0RG9jdW1lbnRXcmFwcGVycyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKwogMjAx
Ny0xMS0wNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWIgQW5pbWF0aW9uc10gU2NoZWR1bGUgYW5pbWF0aW9ucyByZWdpc3RlcmVkIG9uIHRoZSBkb2N1
bWVudCB0aW1lbGluZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNo
ZWV0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHls
ZVNoZWV0cy5jcHAJKHJldmlzaW9uIDIyNDM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NE
ZWZhdWx0U3R5bGVTaGVldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIFN0
eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXQKIFN0eWxlU2hlZXRDb250ZW50
cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpmdWxsc2NyZWVuU3R5bGVTaGVldDsKIFN0eWxlU2hl
ZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpwbHVnSW5zU3R5bGVTaGVldDsKIFN0
eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjppbWFnZUNvbnRyb2xzU3R5
bGVTaGVldDsKK1N0eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRp
YVF1ZXJ5U3R5bGVTaGVldDsKIAogLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNv
bWUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVh
bCBVQSBzdHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxl
U2hlZXQgPSAiaHRtbCxib2R5LGRpdntkaXNwbGF5OmJsb2NrfWhlYWR7ZGlzcGxheTpub25lfWJv
ZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpmb2N1cyxhOmZvY3Vze291dGxpbmU6YXV0byA1
cHggLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yfWE6YW55LWxpbmt7Y29sb3I6LXdlYmtpdC1saW5r
O3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTphbnktbGluazphY3RpdmV7Y29sb3I6LXdlYmtp
dC1hY3RpdmVsaW5rfSI7CkBAIC0xMTUsNiArMTE2LDIzIEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxl
U2hlZXRzOjppbml0RGVmYXVsdFMKICAgICB9CiB9CiAKK3ZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzOjphZGRUb0RlZmF1bHRTdHlsZShTdHlsZVNoZWV0Q29udGVudHMmIHNoZWV0KQoreworICAg
IGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsIHNjcmVlbkV2YWwoKSk7Cisg
ICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCBwcmludEV2YWwo
KSk7CisKKyAgICAvLyBCdWlsZCBhIHN0eWxlc2hlZXQgY29uc2lzdGluZyBvZiBtZWRpYSBxdWVy
aWVzIHNlZW4gaW4gZGVmYXVsdCBzdHlsZS4KKyAgICAvLyBSdWxlc2V0cyBmb3IgdGhlc2UgY2Fu
J3QgYmUgZ2xvYmFsIGFuZCBuZWVkIHRvIGJlIGJ1aWxkIGluIGRvY3VtZW50IGNvbnRleHQuCisg
ICAgZm9yIChhdXRvJiBydWxlIDogc2hlZXQuY2hpbGRSdWxlcygpKSB7CisgICAgICAgIGlmIChp
czxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpKSB7CisgICAgICAgICAgICBhdXRvJiBtZWRpYVJ1bGUg
PSBkb3duY2FzdDxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpOworICAgICAgICAgICAgbWVkaWFRdWVy
eVN0eWxlU2hlZXQtPnBhcnNlckFwcGVuZFJ1bGUobWVkaWFSdWxlLmNvcHkoKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247Cit9CisKIHZvaWQgQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiB7CiAgICAgaWYgKHNpbXBs
ZURlZmF1bHRTdHlsZVNoZWV0KSB7CkBAIC0xMjIsMjEgKzE0MCwyMCBAQCB2b2lkIENTU0RlZmF1
bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxEZWZhCiAgICAgICAgIEFTU0VSVChkZWZhdWx0UHJpbnRT
dHlsZSA9PSBkZWZhdWx0U3R5bGUpOwogICAgICAgICBkZWxldGUgZGVmYXVsdFN0eWxlOwogICAg
ICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldC0+ZGVyZWYoKTsKLSAgICAgICAgZGVmYXVsdFN0
eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKLSAgICAgICAgZGVm
YXVsdFByaW50U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwot
ICAgICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IDA7CisgICAgICAgIHNpbXBsZURlZmF1
bHRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIWRl
ZmF1bHRTdHlsZSk7Ci0gICAgICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVs
ZVNldD4oKS5yZWxlYXNlKCk7Ci0gICAgICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxl
ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICB9CiAKKyAgICBk
ZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAg
IGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2Uo
KTsKKyAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0
ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSkubGVha1JlZigpOworCiAgICAgLy8gU3Ry
aWN0LW1vZGUgcnVsZXMuCiAgICAgU3RyaW5nIGRlZmF1bHRSdWxlcyA9IFN0cmluZyhodG1sVXNl
ckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWxVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5k
ZXJUaGVtZTo6c2luZ2xldG9uKCkuZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgIGRlZmF1
bHRTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KGRlZmF1bHRSdWxlcyk7Ci0gICAgZGVmYXVsdFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqZGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7
Ci0gICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpkZWZhdWx0U3R5bGVT
aGVldCwgcHJpbnRFdmFsKCkpOworICAgIGFkZFRvRGVmYXVsdFN0eWxlKCpkZWZhdWx0U3R5bGVT
aGVldCk7CiAKICAgICAvLyBRdWlya3MtbW9kZSBydWxlcy4KICAgICBTdHJpbmcgcXVpcmtzUnVs
ZXMgPSBTdHJpbmcocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJB
Z2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5leHRyYVF1aXJrc1N0
eWxlU2hlZXQoKTsKQEAgLTE3NCw4ICsxOTEsNyBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0
czo6ZW5zdXJlRGVmYXVsCiAgICAgICAgICAgICAgICAgaWYgKHBsdWdJbnNSdWxlcy5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgICAgIHBsdWdJbnNSdWxlcyA9IFN0cmluZyhwbHVnSW5zVXNl
ckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHBsdWdJbnNVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiAg
ICAgICAgICAgICAgICAgcGx1Z0luc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQocGx1Z0luc1J1
bGVzKTsKLSAgICAgICAgICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpw
bHVnSW5zU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKLSAgICAgICAgICAgICAgICArK2RlZmF1
bHRTdHlsZVZlcnNpb247CisgICAgICAgICAgICAgICAgYWRkVG9EZWZhdWx0U3R5bGUoKnBsdWdJ
bnNTdHlsZVNoZWV0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURF
TykKQEAgLTE4NSw5ICsyMDEsOCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJl
RGVmYXVsCiAgICAgICAgICAgICAgICAgaWYgKG1lZGlhUnVsZXMuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgICAgICBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJl
bmRlclRoZW1lOjpzaW5nbGV0b24oKS5leHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7CiAg
ICAgICAgICAgICAgICAgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQobWVk
aWFSdWxlcyk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dCgqbWVkaWFDb250cm9sc1N0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAgICAgICAgICAg
ICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCptZWRpYUNvbnRyb2xzU3R5
bGVTaGVldCwgcHJpbnRFdmFsKCkpOwotICAgICAgICAgICAgICAgICsrZGVmYXVsdFN0eWxlVmVy
c2lvbjsKKyAgICAgICAgICAgICAgICBhZGRUb0RlZmF1bHRTdHlsZSgqbWVkaWFDb250cm9sc1N0
eWxlU2hlZXQpOworCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUo
VklERU8pCkBAIC0xOTYsOSArMjExLDcgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVu
c3VyZURlZmF1bAogICAgICAgICAgICAgaWYgKCFpbWFnZUNvbnRyb2xzU3R5bGVTaGVldCkgewog
ICAgICAgICAgICAgICAgIFN0cmluZyBpbWFnZUNvbnRyb2xzUnVsZXMgPSBSZW5kZXJUaGVtZTo6
c2luZ2xldG9uKCkuaW1hZ2VDb250cm9sc1N0eWxlU2hlZXQoKTsKICAgICAgICAgICAgICAgICBp
bWFnZUNvbnRyb2xzU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChpbWFnZUNvbnRyb2xzUnVsZXMp
OwotICAgICAgICAgICAgICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKmltYWdl
Q29udHJvbHNTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwotICAgICAgICAgICAgICAgIGRlZmF1
bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqaW1hZ2VDb250cm9sc1N0eWxlU2hlZXQs
IHByaW50RXZhbCgpKTsKLSAgICAgICAgICAgICAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247Cisg
ICAgICAgICAgICAgICAgYWRkVG9EZWZhdWx0U3R5bGUoKmltYWdlQ29udHJvbHNTdHlsZVNoZWV0
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKQpAQCAtMjA2LDkgKzIxOSw3IEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpl
bnN1cmVEZWZhdWwKICAgICAgICAgaWYgKCFzdmdTdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICAv
LyBTVkcgcnVsZXMuCiAgICAgICAgICAgICBzdmdTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHN2
Z1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Ci0g
ICAgICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzdmdTdHlsZVNoZWV0
LCBzY3JlZW5FdmFsKCkpOwotICAgICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KCpzdmdTdHlsZVNoZWV0LCBwcmludEV2YWwoKSk7Ci0gICAgICAgICAgICArK2Rl
ZmF1bHRTdHlsZVZlcnNpb247CisgICAgICAgICAgICBhZGRUb0RlZmF1bHRTdHlsZSgqc3ZnU3R5
bGVTaGVldCk7CiAgICAgICAgIH0KICAgICB9CiAjaWYgRU5BQkxFKE1BVEhNTCkKQEAgLTIxNiw5
ICsyMjcsNyBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsCiAgICAg
ICAgIGlmICghbWF0aE1MU3R5bGVTaGVldCkgewogICAgICAgICAgICAgLy8gTWF0aE1MIHJ1bGVz
LgogICAgICAgICAgICAgbWF0aE1MU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChtYXRobWxVc2Vy
QWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWF0aG1sVXNlckFnZW50U3R5bGVTaGVldCkpOwotICAg
ICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqbWF0aE1MU3R5bGVTaGVl
dCwgc2NyZWVuRXZhbCgpKTsKLSAgICAgICAgICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldCgqbWF0aE1MU3R5bGVTaGVldCwgcHJpbnRFdmFsKCkpOwotICAgICAgICAgICAg
KytkZWZhdWx0U3R5bGVWZXJzaW9uOworICAgICAgICAgICAgYWRkVG9EZWZhdWx0U3R5bGUoKm1h
dGhNTFN0eWxlU2hlZXQpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShNQVRI
TUwpCkBAIC0yMjcsOSArMjM2LDcgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3Vy
ZURlZmF1bAogICAgIGlmICghZnVsbHNjcmVlblN0eWxlU2hlZXQgJiYgZWxlbWVudC5kb2N1bWVu
dCgpLndlYmtpdElzRnVsbFNjcmVlbigpKSB7CiAgICAgICAgIFN0cmluZyBmdWxsc2NyZWVuUnVs
ZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2Ny
ZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLmV4dHJh
RnVsbFNjcmVlblN0eWxlU2hlZXQoKTsKICAgICAgICAgZnVsbHNjcmVlblN0eWxlU2hlZXQgPSBw
YXJzZVVBU2hlZXQoZnVsbHNjcmVlblJ1bGVzKTsKLSAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldCgqZnVsbHNjcmVlblN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAg
ICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKmZ1bGxzY3JlZW5TdHls
ZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwotICAgICAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247Cisg
ICAgICAgIGFkZFRvRGVmYXVsdFN0eWxlKCpmdWxsc2NyZWVuU3R5bGVTaGVldCk7CiAgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaAkocmV2aXNpb24gMjI0MzkzKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSwxMCArNDUsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIHBs
dWdJbnNTdHlsZVNoZWV0OwogICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIGltYWdlQ29u
dHJvbHNTdHlsZVNoZWV0OwogCisgICAgc3RhdGljIFN0eWxlU2hlZXRDb250ZW50cyogbWVkaWFR
dWVyeVN0eWxlU2hlZXQ7CisKKyAgICBzdGF0aWMgdm9pZCBpbml0RGVmYXVsdFN0eWxlKGNvbnN0
IEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JF
bGVtZW50KGNvbnN0IEVsZW1lbnQmKTsKKworcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBsb2Fk
RnVsbERlZmF1bHRTdHlsZSgpOwogICAgIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5
bGUoKTsKLSAgICBzdGF0aWMgdm9pZCBpbml0RGVmYXVsdFN0eWxlKGNvbnN0IEVsZW1lbnQqKTsK
KyAgICBzdGF0aWMgdm9pZCBhZGRUb0RlZmF1bHRTdHlsZShTdHlsZVNoZWV0Q29udGVudHMmKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9E
b2N1bWVudFJ1bGVTZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRG9j
dW1lbnRSdWxlU2V0cy5jcHAJKHJldmlzaW9uIDIyNDM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMzkgQEAg
RG9jdW1lbnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyhTdHlsZQogCiBEb2N1bWVudFJ1bGVT
ZXRzOjp+RG9jdW1lbnRSdWxlU2V0cygpID0gZGVmYXVsdDsKIAorUnVsZVNldCogRG9jdW1lbnRS
dWxlU2V0czo6dXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYSBzZXBhcmF0ZSB0eXBlcyBmb3IgZG9jdW1lbnQgcnVsZSBzZXRz
IGFuZCBzaGFkb3cgdHJlZSBydWxlIHNldHMuCisgICAgaWYgKG1faXNGb3JTaGFkb3dTY29wZSkK
KyAgICAgICAgcmV0dXJuIG1fc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5y
ZXNvbHZlcigpLnJ1bGVTZXRzKCkudXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCk7CisKKyAgICB1
cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpOworICAgIHJldHVybiBtX3Vz
ZXJBZ2VudE1lZGlhUXVlcnlTdHlsZS5nZXQoKTsKK30KKwordm9pZCBEb2N1bWVudFJ1bGVTZXRz
Ojp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0Cit7CisgICAg
aWYgKCFDU1NEZWZhdWx0U3R5bGVTaGVldHM6Om1lZGlhUXVlcnlTdHlsZVNoZWV0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHJ1bGVDb3VudCA9IENTU0RlZmF1bHRTdHlsZVNoZWV0czo6
bWVkaWFRdWVyeVN0eWxlU2hlZXQtPnJ1bGVDb3VudCgpOworICAgIGlmIChtX3VzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZSAmJiBydWxlQ291bnQgPT0gbV91c2VyQWdlbnRNZWRpYVF1ZXJ5UnVsZUNv
dW50T25VcGRhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlS
dWxlQ291bnRPblVwZGF0ZSA9IHJ1bGVDb3VudDsKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICBib29sIGhhZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzID0gbV9zdHlsZVJlc29sdmVy
Lmhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzKCk7CisjZW5kaWYKKworICAgIC8vIE1l
ZGlhIHF1ZXJpZXMgb24gdXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBkb2N1
bWVudCBjb250ZXh0LiBUaGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyByZXNw
ZWN0LgorICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVk
aWFRdWVyeUV2YWx1YXRvcigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gc3Rk
OjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5
bGVTaGVldCwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CisKKyAgICAv
LyBWaWV3cG9ydCBkZXBlbmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmljaWVu
dCB0byBhbGxvdyBvbiBVQSBzaGVldC4KKyAgICBBU1NFUlQoIW1fc3R5bGVSZXNvbHZlci5oYXNW
aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpIHx8IGhhZFZpZXdwb3J0RGVwZW5kZW50TWVk
aWFRdWVyaWVzKTsKK30KKwogUnVsZVNldCogRG9jdW1lbnRSdWxlU2V0czo6dXNlclN0eWxlKCkg
Y29uc3QKIHsKICAgICBpZiAobV91c2VzU2hhcmVkVXNlclN0eWxlKQpAQCAtOTEsNiArMTI0LDkg
QEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKAogICAgIG1faXNBdXRo
b3JTdHlsZURlZmluZWQgPSB0cnVlOwogICAgIG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0Zp
dCgpOworCisgICAgLy8gTm90IGF1dGhvciBzdHlsZSBidXQgbWVkaWEgcXVlcmllcyBvbiB1c2Vy
IGFnZW50IHNoZWV0cyBuZWVkIHRvIGJlIHJlLWV2YWx1YXRlZCB0b28uCisgICAgbV91c2VyQWdl
bnRNZWRpYVF1ZXJ5U3R5bGUgPSBudWxscHRyOwogfQogCiB2b2lkIERvY3VtZW50UnVsZVNldHM6
OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4+JiBzdHlsZVNoZWV0cywgTWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtLCBJbnNwZWN0b3JD
U1NPTVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLCBTdHlsZVJlc29sdmVyKiByZXNv
bHZlcikKQEAgLTExOCw2ICsxNTQsOSBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OmNvbGxlY3RG
ZWF0dXJlcygpCiAgICAgICAgIG1fZmVhdHVyZXMuYWRkKENTU0RlZmF1bHRTdHlsZVNoZWV0czo6
ZGVmYXVsdFN0eWxlLT5mZWF0dXJlcygpKTsKICAgICBtX2RlZmF1bHRTdHlsZVZlcnNpb25PbkZl
YXR1cmVDb2xsZWN0aW9uID0gQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0U3R5bGVWZXJz
aW9uOwogCisgICAgaWYgKGF1dG8qIHVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSA9IHRoaXMtPnVz
ZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSgpKQorICAgICAgICBtX2ZlYXR1cmVzLmFkZCh1c2VyQWdl
bnRNZWRpYVF1ZXJ5U3R5bGUtPmZlYXR1cmVzKCkpOworCiAgICAgaWYgKG1fYXV0aG9yU3R5bGUp
CiAgICAgICAgIG1fZmVhdHVyZXMuYWRkKG1fYXV0aG9yU3R5bGUtPmZlYXR1cmVzKCkpOwogICAg
IGlmIChhdXRvKiB1c2VyU3R5bGUgPSB0aGlzLT51c2VyU3R5bGUoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAkocmV2aXNpb24gMjI0MzkzKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
NyBAQCBwdWJsaWM6CiAgICAgfkRvY3VtZW50UnVsZVNldHMoKTsKIAogICAgIGJvb2wgaXNBdXRo
b3JTdHlsZURlZmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXV0aG9yU3R5bGVEZWZpbmVkOyB9
CisgICAgUnVsZVNldCogdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCkgY29uc3Q7CiAgICAgUnVs
ZVNldCYgYXV0aG9yU3R5bGUoKSBjb25zdCB7IHJldHVybiAqbV9hdXRob3JTdHlsZS5nZXQoKTsg
fQogICAgIFJ1bGVTZXQqIHVzZXJTdHlsZSgpIGNvbnN0OwogICAgIGNvbnN0IFJ1bGVGZWF0dXJl
U2V0JiBmZWF0dXJlcygpIGNvbnN0OwpAQCAtNTksNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgfTsK
ICAgICBjb25zdCBBdHRyaWJ1dGVSdWxlcyogYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwo
Y29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKKyAgICB2b2lkIHNldElzRm9yU2hhZG93U2Nv
cGUoKSB7IG1faXNGb3JTaGFkb3dTY29wZSA9IHRydWU7IH0KKwogICAgIHZvaWQgc2V0VXNlc1No
YXJlZFVzZXJTdHlsZShib29sIGIpIHsgbV91c2VzU2hhcmVkVXNlclN0eWxlID0gYjsgfQogICAg
IHZvaWQgaW5pdGlhbGl6ZVVzZXJTdHlsZSgpOwogCkBAIC03MCwxNSArNzMsMTkgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RGZWF0dXJlcygpIGNvbnN0OwogICAgIHZvaWQg
Y29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYsIFJ1bGVTZXQmIHVzZXJTdHlsZSwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciYsIFN0eWxlUmVzb2x2ZXImKTsKKyAgICB2b2lkIHVwZGF0ZVVzZXJBZ2VudE1lZGlhUXVlcnlT
dHlsZUlmTmVlZGVkKCkgY29uc3Q7CiAKKyAgICBib29sIG1faXNGb3JTaGFkb3dTY29wZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzQXV0aG9yU3R5bGVEZWZpbmVkIHsgZmFsc2UgfTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbV9hdXRob3JTdHlsZTsKKyAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxSdWxlU2V0PiBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UnVsZVNldD4gbV91c2VyU3R5bGU7CiAgICAgYm9vbCBtX3VzZXNTaGFyZWRV
c2VyU3R5bGUgeyBmYWxzZSB9OwogCiAgICAgU3R5bGVSZXNvbHZlciYgbV9zdHlsZVJlc29sdmVy
OwogICAgIG11dGFibGUgUnVsZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsKICAgICBtdXRhYmxlIHVu
c2lnbmVkIG1fZGVmYXVsdFN0eWxlVmVyc2lvbk9uRmVhdHVyZUNvbGxlY3Rpb24geyAwIH07Cisg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX3VzZXJBZ2VudE1lZGlhUXVlcnlSdWxlQ291bnRPblVwZGF0
ZSB7IDAgfTsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtX3NpYmxpbmdS
dWxlU2V0OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25B
dHRyaWJ1dGVSdWxlU2V0OwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9taWNTdHJpbmcsIHN0ZDo6
dW5pcXVlX3B0cjxSdWxlU2V0Pj4gbV9hbmNlc3RvckNsYXNzUnVsZVNldHM7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIyNDM5
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OkVsZW1lbnRS
dWxlQ29sbGVjdAogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX2F1dGhvclN0eWxl
KHJ1bGVTZXRzLmF1dGhvclN0eWxlKCkpCiAgICAgLCBtX3VzZXJTdHlsZShydWxlU2V0cy51c2Vy
U3R5bGUoKSkKKyAgICAsIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKHJ1bGVTZXRzLnVzZXJB
Z2VudE1lZGlhUXVlcnlTdHlsZSgpKQogICAgICwgbV9zZWxlY3RvckZpbHRlcihzZWxlY3RvckZp
bHRlcikKIHsKICAgICBBU1NFUlQoIW1fc2VsZWN0b3JGaWx0ZXIgfHwgbV9zZWxlY3RvckZpbHRl
ci0+cGFyZW50U3RhY2tJc0NvbnNpc3RlbnQoZWxlbWVudC5wYXJlbnROb2RlKCkpKTsKQEAgLTMy
MCwyMCArMzIxLDIzIEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxlcygK
ICAgICAgICAgbV9yZXN1bHQuaXNDYWNoZWFibGUgPSBmYWxzZTsKICAgICBSdWxlU2V0KiB1c2Vy
QWdlbnRTdHlsZVNoZWV0ID0gbV9pc1ByaW50U3R5bGUKICAgICAgICAgPyBDU1NEZWZhdWx0U3R5
bGVTaGVldHM6OmRlZmF1bHRQcmludFN0eWxlIDogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZh
dWx0U3R5bGU7Ci0gICAgbWF0Y2hVQVJ1bGVzKHVzZXJBZ2VudFN0eWxlU2hlZXQpOworICAgIG1h
dGNoVUFSdWxlcygqdXNlckFnZW50U3R5bGVTaGVldCk7CiAKICAgICAvLyBJbiBxdWlya3MgbW9k
ZSwgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcXVpcmtzIHVzZXIgYWdlbnQgc2hlZXQuCiAgICAg
aWYgKG1fZWxlbWVudC5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKQotICAgICAgICBtYXRjaFVB
UnVsZXMoQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0UXVpcmtzU3R5bGUpOworICAgICAg
ICBtYXRjaFVBUnVsZXMoKkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFF1aXJrc1N0eWxl
KTsKKworICAgIGlmIChtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSkKKyAgICAgICAgbWF0Y2hV
QVJ1bGVzKCptX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSk7CiB9CiAKLXZvaWQgRWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxlcyhSdWxlU2V0KiBydWxlcykKK3ZvaWQgRWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxlcyhjb25zdCBSdWxlU2V0JiBydWxlcykKIHsKICAgICBj
bGVhck1hdGNoZWRSdWxlcygpOwogICAgIAogICAgIG1fcmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxl
ID0gbV9yZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxOwogICAgIFN0eWxlUmVz
b2x2ZXI6OlJ1bGVSYW5nZSBydWxlUmFuZ2UgPSBtX3Jlc3VsdC5yYW5nZXMuVUFSdWxlUmFuZ2Uo
KTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZXMpLCBydWxlUmFu
Z2UpOworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdCgmcnVsZXMpLCBydWxl
UmFuZ2UpOwogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMjI0Mzkz
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGFkZEVs
ZW1lbnRTdHlsZVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiwgYm9vbCBpc0NhY2hl
YWJsZSA9IHRydWUpOwogCi0gICAgdm9pZCBtYXRjaFVBUnVsZXMoUnVsZVNldCopOworICAgIHZv
aWQgbWF0Y2hVQVJ1bGVzKGNvbnN0IFJ1bGVTZXQmKTsKICAgICB2b2lkIG1hdGNoQXV0aG9yU2hh
ZG93UHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2
ZXI6OlJ1bGVSYW5nZSYpOwogICAgIHZvaWQgbWF0Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhib29s
IGluY2x1ZGVFbXB0eVJ1bGVzLCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmKTsKICAgICB2b2lk
IG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBT
dHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmKTsKQEAgLTkyLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBFbGVtZW50JiBtX2VsZW1lbnQ7CiAgICAgY29uc3QgUnVsZVNldCYgbV9hdXRob3JT
dHlsZTsKICAgICBjb25zdCBSdWxlU2V0KiBtX3VzZXJTdHlsZSB7IG51bGxwdHIgfTsKKyAgICBj
b25zdCBSdWxlU2V0KiBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSB7IG51bGxwdHIgfTsKICAg
ICBjb25zdCBTZWxlY3RvckZpbHRlciogbV9zZWxlY3RvckZpbHRlciB7IG51bGxwdHIgfTsKIAog
ICAgIGJvb2wgbV9pc1ByaW50U3R5bGUgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcAkocmV2aXNpb24gMjI0MzkzKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsNiArMTExLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xs
ZWN0RG9jdQogICAgICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhDU1NEZWZhdWx0
U3R5bGVTaGVldHM6Om1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTsKICAgICAgICAgY29sbGVjdEZy
b21TdHlsZVNoZWV0Q29udGVudHMoQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpmdWxsc2NyZWVuU3R5
bGVTaGVldCk7CiAgICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKENTU0RlZmF1
bHRTdHlsZVNoZWV0czo6cGx1Z0luc1N0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0RnJvbVN0
eWxlU2hlZXRDb250ZW50cyhDU1NEZWZhdWx0U3R5bGVTaGVldHM6Om1lZGlhUXVlcnlTdHlsZVNo
ZWV0KTsKIAogICAgICAgICBjb2xsZWN0KGV4dGVuc2lvblN0eWxlU2hlZXRzLnBhZ2VVc2VyU2hl
ZXQoKSk7CiAgICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVl
dHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlLmNwcAkocmV2aXNpb24gMjI0MzkzKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw4ICsxMDIsMTAgQEAgU3R5bGVSZXNv
bHZlciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKICAg
ICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7CiAgICAg
ICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLmluaXRpYWxpemVVc2VyU3R5bGUoKTsKLSAg
ICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Jlc29sdmVyLT5y
dWxlU2V0cygpLnNldElzRm9yU2hhZG93U2NvcGUoKTsKICAgICAgICAgICAgIG1fcmVzb2x2ZXIt
PnJ1bGVTZXRzKCkuc2V0VXNlc1NoYXJlZFVzZXJTdHlsZShtX3NoYWRvd1Jvb3QtPm1vZGUoKSAh
PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KTsKKyAgICAgICAgfQogCiAgICAgICAgIG1fcmVz
b2x2ZXItPmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCk7CiAgICAgICAgIG1fcmVzb2x2ZXIt
PmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlU3R5bGVTaGVldHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326117</attachid>
            <date>2017-11-06 06:18:06 -0800</date>
            <delta_ts>2017-11-06 09:26:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ua-media-query-7.patch</filename>
            <type>text/plain</type>
            <size>20516</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDQ4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTExLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBAbWVkaWEgcnVsZXMgaWdub3Jl
ZCBpbiB1c2VyIGFnZW50IHN0eWxlIHNoZWV0IGh0bWwuY3NzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMwODg1OTUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eSBmZWF0dXJlcyBhbGxvdyBub24tdHJpdmlh
bCBAbWVkaWEgcnVsZXMgaW4gdXNlciBhZ2VudCBzdHlsZXNoZWV0LgorCisgICAgICAgIFRoaXMg
cGF0Y2ggY3JlYXRlcyBhIHNwZWNpYWwgc3R5bGVzaGVldCBjb25zaXN0aW5nIG9mIHJ1bGVzIHdp
dGggbWVkaWEgcXVlcmllcyBzZWVuIG9uIHVzZXIgYWdlbnQgc3R5bGVzaGVldHMuCisgICAgICAg
IFRoZSBxdWVyaWVzIG9uIHRoaXMgc2hlZXQgYXJlIGV2YWx1YXRlZCB3aXRoIHRoZSBkb2N1bWVu
dCdzIG1lZGlhIHF1ZXJ5IGV2YWx1YXRvci4KKworICAgICAgICBObyB0ZXN0cyBhcyBJIGRvbid0
IHdhbnQgdG8gYWRkIHRoaW5ncyB0byBVQSBzdHlsZSBqdXN0IGZvciB0ZXN0aW5nIHB1cnBvc2Vz
LiBUaGlzIHdpbGwKKyAgICAgICAgZ2FpbiBjb3ZlcmFnZSB3aGVuIHRoZSBmZWF0dXJlIGlzIHVz
ZWQuCisKKyAgICAgICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmFkZFRvRGVmYXVsdFN0eWxlKToKKwor
ICAgICAgICAgICAgQWRkIGEgaGVscGVyLgorICAgICAgICAgICAgQnVpbGQgYSBuZXcgc3R5bGVz
aGVldCB0aGF0IGNvbnNpc3RzIG9mIGNvbXBsZXggbWVkaWEgcnVsZXMgc2VlbiBpbiB1c2VyIGFn
ZW50IHNoZWV0cy4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjps
b2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NEZWZhdWx0U3R5bGVT
aGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQpOgorICAgICAgICAqIGNz
cy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaDoKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjp1c2VyQWdlbnRNZWRp
YVF1ZXJ5U3R5bGUgY29uc3QpOgorCisgICAgICAgICAgICBSdWxlIHNldCBjb25zdHJ1Y3RlZCBm
cm9tIG1lZGlhIHF1ZXJpZXMgc2VlbiBvbiBVQSBzaGVldC4KKworICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNlckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQg
Y29uc3QpOgorCisgICAgICAgICAgICBFdmFsdXRlIHRoZSBtZWRpYSBxdWVyaWVzIGlmIG5lZWRl
ZC4KKyAgICAgICAgICAgIFJlLWV2YWx1YXRlIGlmIHRoZSBydWxlIGNvdW50IG9mIHRoZSBtZWRp
YSBxdWVyeSBzdHlsZXNoZWV0IGluY3JlYXNlcworICAgICAgICAgICAgKHRoaXMgY291bGQgaGFw
cGVuIHdoZW4gYWRkaXRpb25hbCBVQSBzdHlsZSBpcyBhZGRlZCkuCisKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50UnVsZVNldHM6OnJlc2V0VXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmNvbGxlY3RGZWF0dXJlcyBjb25zdCk6
CisKKyAgICAgICAgICAgIENvbGxlY3QgdGhlIGZlYXR1cmVzIGZyb20gdXNlckFnZW50TWVkaWFR
dWVyeVN0eWxlLgorCisgICAgICAgICogY3NzL0RvY3VtZW50UnVsZVNldHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OnNldElzRm9yU2hhZG93U2NvcGUpOgorICAgICAg
ICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6RWxlbWVudFJ1bGVDb2xsZWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxlcyk6CisKKyAgICAgICAgICAgIEFs
c28gbWFyY2ggcnVsZXMgaW4gdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLgorCisgICAgICAgICog
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6CisgICAgICAgICogY3NzL0luc3BlY3RvckNTU09N
V3JhcHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6
Y29sbGVjdERvY3VtZW50V3JhcHBlcnMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNj
b3BlOjpyZXNvbHZlcik6CisKIDIwMTctMTEtMDYgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFw
cGxlLmNvbT4KIAogICAgICAgICBDYW5vbmljYWwgbmFtZSBvZiBFVUMtS1IgZW5jb2Rpbmcgc2hv
dWxkIGJlIEVVQy1LUiwgbm90IHdpbmRvd3MtOTQ5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAkocmV2aXNpb24gMjI0MzkzKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDYgKzY5LDcgQEAgU3R5bGVTaGVldENvbnRlbnRzKiBDU1NEZWZhdWx0U3R5bGVTaGVldAog
U3R5bGVTaGVldENvbnRlbnRzKiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmZ1bGxzY3JlZW5TdHls
ZVNoZWV0OwogU3R5bGVTaGVldENvbnRlbnRzKiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OnBsdWdJ
bnNTdHlsZVNoZWV0OwogU3R5bGVTaGVldENvbnRlbnRzKiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6
OmltYWdlQ29udHJvbHNTdHlsZVNoZWV0OworU3R5bGVTaGVldENvbnRlbnRzKiBDU1NEZWZhdWx0
U3R5bGVTaGVldHM6Om1lZGlhUXVlcnlTdHlsZVNoZWV0OwogCiAvLyBGSVhNRTogSXQgd291bGQg
YmUgbmljZSB0byB1c2Ugc29tZSBtZWNoYW5pc20gdGhhdCBndWFyYW50ZWVzIHRoaXMgaXMgaW4g
c3luYyB3aXRoIHRoZSByZWFsIFVBIHN0eWxlc2hlZXQuCiBzdGF0aWMgY29uc3QgY2hhciogc2lt
cGxlVXNlckFnZW50U3R5bGVTaGVldCA9ICJodG1sLGJvZHksZGl2e2Rpc3BsYXk6YmxvY2t9aGVh
ZHtkaXNwbGF5Om5vbmV9Ym9keXttYXJnaW46OHB4fWRpdjpmb2N1cyxzcGFuOmZvY3VzLGE6Zm9j
dXN7b3V0bGluZTphdXRvIDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3J9YTphbnktbGlua3tj
b2xvcjotd2Via2l0LWxpbms7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hOmFueS1saW5rOmFj
dGl2ZXtjb2xvcjotd2Via2l0LWFjdGl2ZWxpbmt9IjsKQEAgLTExNSw2ICsxMTYsMzAgQEAgdm9p
ZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmluaXREZWZhdWx0UwogICAgIH0KIH0KIAordm9pZCBD
U1NEZWZhdWx0U3R5bGVTaGVldHM6OmFkZFRvRGVmYXVsdFN0eWxlKFN0eWxlU2hlZXRDb250ZW50
cyYgc2hlZXQpCit7CisgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwg
c2NyZWVuRXZhbCgpKTsKKyAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
c2hlZXQsIHByaW50RXZhbCgpKTsKKworICAgIC8vIEJ1aWxkIGEgc3R5bGVzaGVldCBjb25zaXN0
aW5nIG9mIG5vbi10cml2aWFsIG1lZGlhIHF1ZXJpZXMgc2VlbiBpbiBkZWZhdWx0IHN0eWxlLgor
ICAgIC8vIFJ1bGVzZXRzIGZvciB0aGVzZSBjYW4ndCBiZSBnbG9iYWwgYW5kIG5lZWQgdG8gYmUg
YnVpbGQgaW4gZG9jdW1lbnQgY29udGV4dC4KKyAgICBmb3IgKGF1dG8mIHJ1bGUgOiBzaGVldC5j
aGlsZFJ1bGVzKCkpIHsKKyAgICAgICAgaWYgKGlzPFN0eWxlUnVsZU1lZGlhPigqcnVsZSkpIHsK
KyAgICAgICAgICAgIGF1dG8mIG1lZGlhUnVsZSA9IGRvd25jYXN0PFN0eWxlUnVsZU1lZGlhPigq
cnVsZSk7CisgICAgICAgICAgICBhdXRvKiBtZWRpYVF1ZXJ5ID0gbWVkaWFSdWxlLm1lZGlhUXVl
cmllcygpOworICAgICAgICAgICAgaWYgKCFtZWRpYVF1ZXJ5KQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKHNjcmVlbkV2YWwoKS5ldmFsdWF0ZSgqbWVkaWFRdWVy
eSwgbnVsbHB0cikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAo
cHJpbnRFdmFsKCkuZXZhbHVhdGUoKm1lZGlhUXVlcnksIG51bGxwdHIpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbWVkaWFRdWVyeVN0eWxlU2hlZXQtPnBhcnNlckFw
cGVuZFJ1bGUobWVkaWFSdWxlLmNvcHkoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICArK2Rl
ZmF1bHRTdHlsZVZlcnNpb247Cit9CisKIHZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2Fk
RnVsbERlZmF1bHRTdHlsZSgpCiB7CiAgICAgaWYgKHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KSB7
CkBAIC0xMjIsMjEgKzE0NywyMCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhCiAgICAgICAgIEFTU0VSVChkZWZhdWx0UHJpbnRTdHlsZSA9PSBkZWZhdWx0U3R5bGUp
OwogICAgICAgICBkZWxldGUgZGVmYXVsdFN0eWxlOwogICAgICAgICBzaW1wbGVEZWZhdWx0U3R5
bGVTaGVldC0+ZGVyZWYoKTsKLSAgICAgICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1
ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKLSAgICAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgICAgICBzaW1wbGVEZWZhdWx0
U3R5bGVTaGVldCA9IDA7CisgICAgICAgIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gbnVsbHB0
cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIWRlZmF1bHRTdHlsZSk7Ci0gICAgICAg
IGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7Ci0g
ICAgICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJl
bGVhc2UoKTsKICAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICB9CiAKKyAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmludFN0eWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBtZWRpYVF1ZXJ5U3R5
bGVTaGVldCA9ICZTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVB
U2hlZXRNb2RlKSkubGVha1JlZigpOworCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCiAgICAg
U3RyaW5nIGRlZmF1bHRSdWxlcyA9IFN0cmluZyhodG1sVXNlckFnZW50U3R5bGVTaGVldCwgc2l6
ZW9mKGh0bWxVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCku
ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgIGRlZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VV
QVNoZWV0KGRlZmF1bHRSdWxlcyk7Ci0gICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dCgqZGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAgZGVmYXVsdFByaW50U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpkZWZhdWx0U3R5bGVTaGVldCwgcHJpbnRFdmFsKCkpOwor
ICAgIGFkZFRvRGVmYXVsdFN0eWxlKCpkZWZhdWx0U3R5bGVTaGVldCk7CiAKICAgICAvLyBRdWly
a3MtbW9kZSBydWxlcy4KICAgICBTdHJpbmcgcXVpcmtzUnVsZXMgPSBTdHJpbmcocXVpcmtzVXNl
ckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJl
bmRlclRoZW1lOjpzaW5nbGV0b24oKS5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKQEAgLTE3NCw4
ICsxOTgsNyBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsCiAgICAg
ICAgICAgICAgICAgaWYgKHBsdWdJbnNSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
ICAgIHBsdWdJbnNSdWxlcyA9IFN0cmluZyhwbHVnSW5zVXNlckFnZW50U3R5bGVTaGVldCwgc2l6
ZW9mKHBsdWdJbnNVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiAgICAgICAgICAgICAgICAgcGx1Z0lu
c1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQocGx1Z0luc1J1bGVzKTsKLSAgICAgICAgICAgICAg
ICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpwbHVnSW5zU3R5bGVTaGVldCwgc2Ny
ZWVuRXZhbCgpKTsKLSAgICAgICAgICAgICAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247CisgICAg
ICAgICAgICAgICAgYWRkVG9EZWZhdWx0U3R5bGUoKnBsdWdJbnNTdHlsZVNoZWV0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogI2lmIEVOQUJMRShWSURFTykKQEAgLTE4NSw5ICsyMDgsOCBA
QCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsCiAgICAgICAgICAgICAg
ICAgaWYgKG1lZGlhUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBtZWRpYVJ1
bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVk
aWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpzaW5nbGV0b24o
KS5leHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7CiAgICAgICAgICAgICAgICAgbWVkaWFD
b250cm9sc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQobWVkaWFSdWxlcyk7Ci0gICAgICAgICAg
ICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqbWVkaWFDb250cm9sc1N0eWxl
U2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KCptZWRpYUNvbnRyb2xzU3R5bGVTaGVldCwgcHJpbnRFdmFsKCkp
OwotICAgICAgICAgICAgICAgICsrZGVmYXVsdFN0eWxlVmVyc2lvbjsKKyAgICAgICAgICAgICAg
ICBhZGRUb0RlZmF1bHRTdHlsZSgqbWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOworCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCkBAIC0xOTYsOSArMjE4
LDcgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bAogICAgICAgICAg
ICAgaWYgKCFpbWFnZUNvbnRyb2xzU3R5bGVTaGVldCkgewogICAgICAgICAgICAgICAgIFN0cmlu
ZyBpbWFnZUNvbnRyb2xzUnVsZXMgPSBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuaW1hZ2VDb250
cm9sc1N0eWxlU2hlZXQoKTsKICAgICAgICAgICAgICAgICBpbWFnZUNvbnRyb2xzU3R5bGVTaGVl
dCA9IHBhcnNlVUFTaGVldChpbWFnZUNvbnRyb2xzUnVsZXMpOwotICAgICAgICAgICAgICAgIGRl
ZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKmltYWdlQ29udHJvbHNTdHlsZVNoZWV0LCBz
Y3JlZW5FdmFsKCkpOwotICAgICAgICAgICAgICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldCgqaW1hZ2VDb250cm9sc1N0eWxlU2hlZXQsIHByaW50RXZhbCgpKTsKLSAgICAg
ICAgICAgICAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247CisgICAgICAgICAgICAgICAgYWRkVG9E
ZWZhdWx0U3R5bGUoKmltYWdlQ29udHJvbHNTdHlsZVNoZWV0KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpAQCAtMjA2LDkgKzIy
Niw3IEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWwKICAgICAgICAg
aWYgKCFzdmdTdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICAvLyBTVkcgcnVsZXMuCiAgICAgICAg
ICAgICBzdmdTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHN2Z1VzZXJBZ2VudFN0eWxlU2hlZXQs
IHNpemVvZihzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KSk7Ci0gICAgICAgICAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzdmdTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwotICAg
ICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzdmdTdHlsZVNo
ZWV0LCBwcmludEV2YWwoKSk7Ci0gICAgICAgICAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247Cisg
ICAgICAgICAgICBhZGRUb0RlZmF1bHRTdHlsZSgqc3ZnU3R5bGVTaGVldCk7CiAgICAgICAgIH0K
ICAgICB9CiAjaWYgRU5BQkxFKE1BVEhNTCkKQEAgLTIxNiw5ICsyMzQsNyBAQCB2b2lkIENTU0Rl
ZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsCiAgICAgICAgIGlmICghbWF0aE1MU3R5bGVT
aGVldCkgewogICAgICAgICAgICAgLy8gTWF0aE1MIHJ1bGVzLgogICAgICAgICAgICAgbWF0aE1M
U3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChtYXRobWxVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXpl
b2YobWF0aG1sVXNlckFnZW50U3R5bGVTaGVldCkpOwotICAgICAgICAgICAgZGVmYXVsdFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldCgqbWF0aE1MU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKLSAg
ICAgICAgICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqbWF0aE1MU3R5
bGVTaGVldCwgcHJpbnRFdmFsKCkpOwotICAgICAgICAgICAgKytkZWZhdWx0U3R5bGVWZXJzaW9u
OworICAgICAgICAgICAgYWRkVG9EZWZhdWx0U3R5bGUoKm1hdGhNTFN0eWxlU2hlZXQpOwogICAg
ICAgICB9CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCkBAIC0yMjcsOSArMjQzLDcg
QEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bAogICAgIGlmICghZnVs
bHNjcmVlblN0eWxlU2hlZXQgJiYgZWxlbWVudC5kb2N1bWVudCgpLndlYmtpdElzRnVsbFNjcmVl
bigpKSB7CiAgICAgICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNjcmVl
blVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVl
dCkpICsgUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQo
KTsKICAgICAgICAgZnVsbHNjcmVlblN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVsbHNjcmVl
blJ1bGVzKTsKLSAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqZnVsbHNj
cmVlblN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoKmZ1bGxzY3JlZW5TdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkp
OwotICAgICAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247CisgICAgICAgIGFkZFRvRGVmYXVsdFN0
eWxlKCpmdWxsc2NyZWVuU3R5bGVTaGVldCk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNo
ZWV0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVT
aGVldHMuaAkocmV2aXNpb24gMjI0MzkzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1
bHRTdHlsZVNoZWV0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTUgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIHBsdWdJbnNTdHlsZVNoZWV0OwogICAg
IHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIGltYWdlQ29udHJvbHNTdHlsZVNoZWV0OwogCisg
ICAgc3RhdGljIFN0eWxlU2hlZXRDb250ZW50cyogbWVkaWFRdWVyeVN0eWxlU2hlZXQ7CisKKyAg
ICBzdGF0aWMgdm9pZCBpbml0RGVmYXVsdFN0eWxlKGNvbnN0IEVsZW1lbnQqKTsKICAgICBzdGF0
aWMgdm9pZCBlbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQm
KTsKKworcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpOwog
ICAgIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKTsKLSAgICBzdGF0aWMgdm9p
ZCBpbml0RGVmYXVsdFN0eWxlKGNvbnN0IEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRU
b0RlZmF1bHRTdHlsZShTdHlsZVNoZWV0Q29udGVudHMmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAJKHJl
dmlzaW9uIDIyNDM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMzkgQEAgRG9jdW1lbnRSdWxlU2V0czo6RG9j
dW1lbnRSdWxlU2V0cyhTdHlsZQogCiBEb2N1bWVudFJ1bGVTZXRzOjp+RG9jdW1lbnRSdWxlU2V0
cygpID0gZGVmYXVsdDsKIAorUnVsZVNldCogRG9jdW1lbnRSdWxlU2V0czo6dXNlckFnZW50TWVk
aWFRdWVyeVN0eWxlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBz
ZXBhcmF0ZSB0eXBlcyBmb3IgZG9jdW1lbnQgcnVsZSBzZXRzIGFuZCBzaGFkb3cgdHJlZSBydWxl
IHNldHMuCisgICAgaWYgKG1faXNGb3JTaGFkb3dTY29wZSkKKyAgICAgICAgcmV0dXJuIG1fc3R5
bGVSZXNvbHZlci5kb2N1bWVudCgpLnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCku
dXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCk7CisKKyAgICB1cGRhdGVVc2VyQWdlbnRNZWRpYVF1
ZXJ5U3R5bGVJZk5lZWRlZCgpOworICAgIHJldHVybiBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHls
ZS5nZXQoKTsKK30KKwordm9pZCBEb2N1bWVudFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRp
YVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFDU1NEZWZhdWx0U3R5bGVT
aGVldHM6Om1lZGlhUXVlcnlTdHlsZVNoZWV0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHJ1bGVDb3VudCA9IENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bWVkaWFRdWVyeVN0eWxlU2hlZXQt
PnJ1bGVDb3VudCgpOworICAgIGlmIChtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSAmJiBydWxl
Q291bnQgPT0gbV91c2VyQWdlbnRNZWRpYVF1ZXJ5UnVsZUNvdW50T25VcGRhdGUpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlSdWxlQ291bnRPblVwZGF0ZSA9IHJ1
bGVDb3VudDsKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGhhZFZpZXdwb3J0RGVw
ZW5kZW50TWVkaWFRdWVyaWVzID0gbV9zdHlsZVJlc29sdmVyLmhhc1ZpZXdwb3J0RGVwZW5kZW50
TWVkaWFRdWVyaWVzKCk7CisjZW5kaWYKKworICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24gdXNlciBh
Z2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBkb2N1bWVudCBjb250ZXh0LiBUaGV5IGJl
aGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyByZXNwZWN0LgorICAgIGF1dG8mIG1lZGlh
UXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpOwor
ICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgq
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFRdWVyeUV2
YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CisKKyAgICAvLyBWaWV3cG9ydCBkZXBlbmRlbnQg
cXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmljaWVudCB0byBhbGxvdyBvbiBVQSBzaGVl
dC4KKyAgICBBU1NFUlQoIW1fc3R5bGVSZXNvbHZlci5oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlh
UXVlcmllcygpIHx8IGhhZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzKTsKK30KKwogUnVs
ZVNldCogRG9jdW1lbnRSdWxlU2V0czo6dXNlclN0eWxlKCkgY29uc3QKIHsKICAgICBpZiAobV91
c2VzU2hhcmVkVXNlclN0eWxlKQpAQCAtOTMsNiArMTI2LDExIEBAIHZvaWQgRG9jdW1lbnRSdWxl
U2V0czo6cmVzZXRBdXRob3JTdHlsZSgKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1No
cmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnRSdWxlU2V0czo6cmVzZXRVc2VyQWdlbnRN
ZWRpYVF1ZXJ5U3R5bGUoKQoreworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gbnVs
bHB0cjsKK30KKwogdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0
cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYgc3R5bGVTaGVldHMsIE1lZGlh
UXVlcnlFdmFsdWF0b3IqIG1lZGl1bSwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9y
Q1NTT01XcmFwcGVycywgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIpCiB7CiAgICAgLy8gVGhpcyBo
YW5kbGVzIHNoZWV0cyBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBzdHlsZXNoZWV0IGxpc3Qgb25s
eS4gSW4gb3RoZXIgY2FzZXMgdGhlIHN0eWxlIHJlc29sdmVyCkBAIC0xMTgsNiArMTU2LDkgQEAg
dm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKQogICAgICAgICBtX2ZlYXR1
cmVzLmFkZChDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRTdHlsZS0+ZmVhdHVyZXMoKSk7
CiAgICAgbV9kZWZhdWx0U3R5bGVWZXJzaW9uT25GZWF0dXJlQ29sbGVjdGlvbiA9IENTU0RlZmF1
bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFN0eWxlVmVyc2lvbjsKIAorICAgIGlmIChhdXRvKiB1c2Vy
QWdlbnRNZWRpYVF1ZXJ5U3R5bGUgPSB0aGlzLT51c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUoKSkK
KyAgICAgICAgbV9mZWF0dXJlcy5hZGQodXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLT5mZWF0dXJl
cygpKTsKKwogICAgIGlmIChtX2F1dGhvclN0eWxlKQogICAgICAgICBtX2ZlYXR1cmVzLmFkZCht
X2F1dGhvclN0eWxlLT5mZWF0dXJlcygpKTsKICAgICBpZiAoYXV0byogdXNlclN0eWxlID0gdGhp
cy0+dXNlclN0eWxlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgJ
KHJldmlzaW9uIDIyNDM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIH5Eb2N1bWVu
dFJ1bGVTZXRzKCk7CiAKICAgICBib29sIGlzQXV0aG9yU3R5bGVEZWZpbmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0F1dGhvclN0eWxlRGVmaW5lZDsgfQorICAgIFJ1bGVTZXQqIHVzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZSgpIGNvbnN0OwogICAgIFJ1bGVTZXQmIGF1dGhvclN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gKm1fYXV0aG9yU3R5bGUuZ2V0KCk7IH0KICAgICBSdWxlU2V0KiB1c2VyU3R5bGUo
KSBjb25zdDsKICAgICBjb25zdCBSdWxlRmVhdHVyZVNldCYgZmVhdHVyZXMoKSBjb25zdDsKQEAg
LTU5LDI2ICs2MCwzNCBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBjb25zdCBBdHRyaWJ1dGVSdWxl
cyogYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwoY29uc3QgQXRvbWljU3RyaW5nJikgY29u
c3Q7CiAKKyAgICB2b2lkIHNldElzRm9yU2hhZG93U2NvcGUoKSB7IG1faXNGb3JTaGFkb3dTY29w
ZSA9IHRydWU7IH0KKwogICAgIHZvaWQgc2V0VXNlc1NoYXJlZFVzZXJTdHlsZShib29sIGIpIHsg
bV91c2VzU2hhcmVkVXNlclN0eWxlID0gYjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVVzZXJTdHls
ZSgpOwogCiAgICAgdm9pZCByZXNldEF1dGhvclN0eWxlKCk7CiAgICAgdm9pZCBhcHBlbmRBdXRo
b3JTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIE1lZGlh
UXVlcnlFdmFsdWF0b3IqLCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiwgU3R5bGVSZXNvbHZlciop
OwogCisgICAgdm9pZCByZXNldFVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSgpOworCiAgICAgUnVs
ZUZlYXR1cmVTZXQmIG11dGFibGVGZWF0dXJlcygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgY29s
bGVjdEZlYXR1cmVzKCkgY29uc3Q7CiAgICAgdm9pZCBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxl
U2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiwgUnVsZVNldCYgdXNl
clN0eWxlLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciYpOworICAg
IHZvaWQgdXBkYXRlVXNlckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQoKSBjb25zdDsKIAor
ICAgIGJvb2wgbV9pc0ZvclNoYWRvd1Njb3BlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNBdXRo
b3JTdHlsZURlZmluZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBt
X2F1dGhvclN0eWxlOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fdXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtX3Vz
ZXJTdHlsZTsKICAgICBib29sIG1fdXNlc1NoYXJlZFVzZXJTdHlsZSB7IGZhbHNlIH07CiAKICAg
ICBTdHlsZVJlc29sdmVyJiBtX3N0eWxlUmVzb2x2ZXI7CiAgICAgbXV0YWJsZSBSdWxlRmVhdHVy
ZVNldCBtX2ZlYXR1cmVzOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWZhdWx0U3R5bGVWZXJz
aW9uT25GZWF0dXJlQ29sbGVjdGlvbiB7IDAgfTsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1fdXNl
ckFnZW50TWVkaWFRdWVyeVJ1bGVDb3VudE9uVXBkYXRlIHsgMCB9OwogICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7CiAgICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CiAgICAgbXV0
YWJsZSBIYXNoTWFwPEF0b21pY1N0cmluZywgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+PiBtX2Fu
Y2VzdG9yQ2xhc3NSdWxlU2V0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMjI0MzkzKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBA
QCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6RWxlbWVudFJ1bGVDb2xsZWN0CiAgICAgOiBtX2VsZW1l
bnQoZWxlbWVudCkKICAgICAsIG1fYXV0aG9yU3R5bGUocnVsZVNldHMuYXV0aG9yU3R5bGUoKSkK
ICAgICAsIG1fdXNlclN0eWxlKHJ1bGVTZXRzLnVzZXJTdHlsZSgpKQorICAgICwgbV91c2VyQWdl
bnRNZWRpYVF1ZXJ5U3R5bGUocnVsZVNldHMudXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCkpCiAg
ICAgLCBtX3NlbGVjdG9yRmlsdGVyKHNlbGVjdG9yRmlsdGVyKQogewogICAgIEFTU0VSVCghbV9z
ZWxlY3RvckZpbHRlciB8fCBtX3NlbGVjdG9yRmlsdGVyLT5wYXJlbnRTdGFja0lzQ29uc2lzdGVu
dChlbGVtZW50LnBhcmVudE5vZGUoKSkpOwpAQCAtMzIwLDIwICszMjEsMjMgQEAgdm9pZCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKAogICAgICAgICBtX3Jlc3VsdC5pc0NhY2hl
YWJsZSA9IGZhbHNlOwogICAgIFJ1bGVTZXQqIHVzZXJBZ2VudFN0eWxlU2hlZXQgPSBtX2lzUHJp
bnRTdHlsZQogICAgICAgICA/IENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFByaW50U3R5
bGUgOiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRTdHlsZTsKLSAgICBtYXRjaFVBUnVs
ZXModXNlckFnZW50U3R5bGVTaGVldCk7CisgICAgbWF0Y2hVQVJ1bGVzKCp1c2VyQWdlbnRTdHls
ZVNoZWV0KTsKIAogICAgIC8vIEluIHF1aXJrcyBtb2RlLCB3ZSBtYXRjaCBydWxlcyBmcm9tIHRo
ZSBxdWlya3MgdXNlciBhZ2VudCBzaGVldC4KICAgICBpZiAobV9lbGVtZW50LmRvY3VtZW50KCku
aW5RdWlya3NNb2RlKCkpCi0gICAgICAgIG1hdGNoVUFSdWxlcyhDU1NEZWZhdWx0U3R5bGVTaGVl
dHM6OmRlZmF1bHRRdWlya3NTdHlsZSk7CisgICAgICAgIG1hdGNoVUFSdWxlcygqQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzOjpkZWZhdWx0UXVpcmtzU3R5bGUpOworCisgICAgaWYgKG1fdXNlckFnZW50
TWVkaWFRdWVyeVN0eWxlKQorICAgICAgICBtYXRjaFVBUnVsZXMoKm1fdXNlckFnZW50TWVkaWFR
dWVyeVN0eWxlKTsKIH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVz
KFJ1bGVTZXQqIHJ1bGVzKQordm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVz
KGNvbnN0IFJ1bGVTZXQmIHJ1bGVzKQogewogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAgICAg
CiAgICAgbV9yZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUgPSBtX3Jlc3VsdC5tYXRjaGVkUHJvcGVy
dGllcygpLnNpemUoKSAtIDE7CiAgICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5n
ZSA9IG1fcmVzdWx0LnJhbmdlcy5VQVJ1bGVSYW5nZSgpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzKE1hdGNoUmVxdWVzdChydWxlcyksIHJ1bGVSYW5nZSk7CisgICAgY29sbGVjdE1hdGNoaW5n
UnVsZXMoTWF0Y2hSZXF1ZXN0KCZydWxlcyksIHJ1bGVSYW5nZSk7CiAKICAgICBzb3J0QW5kVHJh
bnNmZXJNYXRjaGVkUnVsZXMoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5oCShyZXZpc2lvbiAyMjQzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgYWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhjb25z
dCBTdHlsZVByb3BlcnRpZXMqLCBib29sIGlzQ2FjaGVhYmxlID0gdHJ1ZSk7CiAKLSAgICB2b2lk
IG1hdGNoVUFSdWxlcyhSdWxlU2V0Kik7CisgICAgdm9pZCBtYXRjaFVBUnVsZXMoY29uc3QgUnVs
ZVNldCYpOwogICAgIHZvaWQgbWF0Y2hBdXRob3JTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoYm9v
bCBpbmNsdWRlRW1wdHlSdWxlcywgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAgICAgdm9p
ZCBtYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxl
UmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwogICAgIHZvaWQgbWF0Y2hTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYp
OwpAQCAtOTIsNiArOTIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IEVsZW1lbnQmIG1fZWxlbWVu
dDsKICAgICBjb25zdCBSdWxlU2V0JiBtX2F1dGhvclN0eWxlOwogICAgIGNvbnN0IFJ1bGVTZXQq
IG1fdXNlclN0eWxlIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNlckFnZW50
TWVkaWFRdWVyeVN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBt
X3NlbGVjdG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCiAgICAgYm9vbCBtX2lzUHJpbnRTdHlsZSB7
IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3Jh
cHBlcnMuY3BwCShyZXZpc2lvbiAyMjQzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVj
dG9yQ1NTT01XcmFwcGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsNyBAQCB2
b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3REb2N1CiAgICAgICAgIGNvbGxlY3RG
cm9tU3R5bGVTaGVldENvbnRlbnRzKENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bWVkaWFDb250cm9s
c1N0eWxlU2hlZXQpOwogICAgICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhDU1NE
ZWZhdWx0U3R5bGVTaGVldHM6OmZ1bGxzY3JlZW5TdHlsZVNoZWV0KTsKICAgICAgICAgY29sbGVj
dEZyb21TdHlsZVNoZWV0Q29udGVudHMoQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpwbHVnSW5zU3R5
bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKENTU0RlZmF1
bHRTdHlsZVNoZWV0czo6bWVkaWFRdWVyeVN0eWxlU2hlZXQpOwogCiAgICAgICAgIGNvbGxlY3Qo
ZXh0ZW5zaW9uU3R5bGVTaGVldHMucGFnZVVzZXJTaGVldCgpKTsKICAgICAgICAgY29sbGVjdEZy
b21TdHlsZVNoZWV0cyhleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0
cygpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIy
NDM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjMxLDYgKzIzMSw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9j
dW1lbnQmIGQKICAgICAgICAgbV9tZWRpYVF1ZXJ5RXZhbHVhdG9yID0gTWVkaWFRdWVyeUV2YWx1
YXRvciB7IHZpZXctPm1lZGlhVHlwZSgpLCBtX2RvY3VtZW50LCBtX3Jvb3REZWZhdWx0U3R5bGUu
Z2V0KCkgfTsKIAogICAgIG1fcnVsZVNldHMucmVzZXRBdXRob3JTdHlsZSgpOworICAgIG1fcnVs
ZVNldHMucmVzZXRVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUoKTsKIH0KIAogdm9pZCBTdHlsZVJl
c29sdmVyOjphZGRDdXJyZW50U1ZHRm9udEZhY2VSdWxlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVNjb3BlLmNwcAkocmV2aXNpb24gMjI0MzkzKQorKysgU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw4ICsxMDIsMTAgQEAgU3R5
bGVSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3Qp
IHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7
CiAgICAgICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLmluaXRpYWxpemVVc2VyU3R5bGUo
KTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Jlc29s
dmVyLT5ydWxlU2V0cygpLnNldElzRm9yU2hhZG93U2NvcGUoKTsKICAgICAgICAgICAgIG1fcmVz
b2x2ZXItPnJ1bGVTZXRzKCkuc2V0VXNlc1NoYXJlZFVzZXJTdHlsZShtX3NoYWRvd1Jvb3QtPm1v
ZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KTsKKyAgICAgICAgfQogCiAgICAgICAg
IG1fcmVzb2x2ZXItPmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCk7CiAgICAgICAgIG1fcmVz
b2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlU3R5bGVTaGVldHMpOwo=
</data>
<flag name="review"
          id="345472"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326126</attachid>
            <date>2017-11-06 09:26:10 -0800</date>
            <delta_ts>2017-11-06 09:45:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ua-media-query-7.patch</filename>
            <type>text/plain</type>
            <size>20489</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDQ4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE3LTExLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBAbWVkaWEgcnVsZXMgaWdub3Jl
ZCBpbiB1c2VyIGFnZW50IHN0eWxlIHNoZWV0IGh0bWwuY3NzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkyNDUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMwODg1OTUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIFRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eSBmZWF0dXJlcywgYWxsb3cgbm9uLXRyaXZpYWwg
QG1lZGlhIHJ1bGVzIGluIHVzZXIgYWdlbnQgc3R5bGVzaGVldC4KKworICAgICAgICBUaGlzIHBh
dGNoIGNyZWF0ZXMgYSBzcGVjaWFsIHN0eWxlc2hlZXQgY29uc2lzdGluZyBvZiBydWxlcyB3aXRo
IG1lZGlhIHF1ZXJpZXMgc2VlbiBvbiB1c2VyIGFnZW50IHN0eWxlc2hlZXRzLgorICAgICAgICBU
aGUgcXVlcmllcyBvbiB0aGlzIHNoZWV0IGFyZSBldmFsdWF0ZWQgd2l0aCB0aGUgZG9jdW1lbnQn
cyBtZWRpYSBxdWVyeSBldmFsdWF0b3IuCisKKyAgICAgICAgTm8gdGVzdHMgYXMgSSBkb24ndCB3
YW50IHRvIGFkZCB0aGluZ3MgdG8gVUEgc3R5bGUganVzdCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4g
VGhpcyB3aWxsCisgICAgICAgIGdhaW4gY292ZXJhZ2Ugd2hlbiB0aGUgZmVhdHVyZSBpcyB1c2Vk
LgorCisgICAgICAgICAqIGNzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjphZGRUb0RlZmF1bHRTdHlsZSk6CisKKyAg
ICAgICAgICAgIEFkZCBhIGhlbHBlci4KKyAgICAgICAgICAgIEJ1aWxkIGEgbmV3IHN0eWxlc2hl
ZXQgdGhhdCBjb25zaXN0cyBvZiBjb21wbGV4IG1lZGlhIHJ1bGVzIHNlZW4gaW4gdXNlciBhZ2Vu
dCBzaGVldHMuCisKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9h
ZEZ1bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hl
ZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KToKKyAgICAgICAgKiBjc3Mv
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmg6CisgICAgICAgICogY3NzL0RvY3VtZW50UnVsZVNldHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXNlckFnZW50TWVkaWFR
dWVyeVN0eWxlIGNvbnN0KToKKworICAgICAgICAgICAgUnVsZSBzZXQgY29uc3RydWN0ZWQgZnJv
bSBtZWRpYSBxdWVyaWVzIHNlZW4gb24gVUEgc2hlZXQuCisKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkIGNv
bnN0KToKKworICAgICAgICAgICAgRXZhbHV0ZSB0aGUgbWVkaWEgcXVlcmllcyBpZiBuZWVkZWQu
CisgICAgICAgICAgICBSZS1ldmFsdWF0ZSBpZiB0aGUgcnVsZSBjb3VudCBvZiB0aGUgbWVkaWEg
cXVlcnkgc3R5bGVzaGVldCBpbmNyZWFzZXMKKyAgICAgICAgICAgICh0aGlzIGNvdWxkIGhhcHBl
biB3aGVuIGFkZGl0aW9uYWwgVUEgc3R5bGUgaXMgYWRkZWQpLgorCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNldFVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMgY29uc3QpOgor
CisgICAgICAgICAgICBDb2xsZWN0IHRoZSBmZWF0dXJlcyBmcm9tIHVzZXJBZ2VudE1lZGlhUXVl
cnlTdHlsZS4KKworICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpzZXRJc0ZvclNoYWRvd1Njb3BlKToKKyAgICAgICAg
KiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OkVsZW1lbnRSdWxlQ29sbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMpOgorCisgICAgICAgICAgICBBbHNv
IG1hdGNoIHJ1bGVzIGluIHVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZS4KKworICAgICAgICAqIGNz
cy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oOgorICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdy
YXBwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNv
bGxlY3REb2N1bWVudFdyYXBwZXJzKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29w
ZTo6cmVzb2x2ZXIpOgorCiAyMDE3LTExLTA2ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2Fub25pY2FsIG5hbWUgb2YgRVVDLUtSIGVuY29kaW5nIHNob3Vs
ZCBiZSBFVUMtS1IsIG5vdCB3aW5kb3dzLTk0OQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAJKHJldmlzaW9uIDIyNDM5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw2ICs2OSw3IEBAIFN0eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXQKIFN0
eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpmdWxsc2NyZWVuU3R5bGVT
aGVldDsKIFN0eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpwbHVnSW5z
U3R5bGVTaGVldDsKIFN0eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpp
bWFnZUNvbnRyb2xzU3R5bGVTaGVldDsKK1N0eWxlU2hlZXRDb250ZW50cyogQ1NTRGVmYXVsdFN0
eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5bGVTaGVldDsKIAogLy8gRklYTUU6IEl0IHdvdWxkIGJl
IG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0aGlzIGlzIGluIHN5
bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0IGNoYXIqIHNpbXBs
ZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxib2R5LGRpdntkaXNwbGF5OmJsb2NrfWhlYWR7
ZGlzcGxheTpub25lfWJvZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpmb2N1cyxhOmZvY3Vz
e291dGxpbmU6YXV0byA1cHggLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yfWE6YW55LWxpbmt7Y29s
b3I6LXdlYmtpdC1saW5rO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTphbnktbGluazphY3Rp
dmV7Y29sb3I6LXdlYmtpdC1hY3RpdmVsaW5rfSI7CkBAIC0xMTUsNiArMTE2LDMwIEBAIHZvaWQg
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjppbml0RGVmYXVsdFMKICAgICB9CiB9CiAKK3ZvaWQgQ1NT
RGVmYXVsdFN0eWxlU2hlZXRzOjphZGRUb0RlZmF1bHRTdHlsZShTdHlsZVNoZWV0Q29udGVudHMm
IHNoZWV0KQoreworICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsIHNj
cmVlbkV2YWwoKSk7CisgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHNo
ZWV0LCBwcmludEV2YWwoKSk7CisKKyAgICAvLyBCdWlsZCBhIHN0eWxlc2hlZXQgY29uc2lzdGlu
ZyBvZiBub24tdHJpdmlhbCBtZWRpYSBxdWVyaWVzIHNlZW4gaW4gZGVmYXVsdCBzdHlsZS4KKyAg
ICAvLyBSdWxlc2V0cyBmb3IgdGhlc2UgY2FuJ3QgYmUgZ2xvYmFsIGFuZCBuZWVkIHRvIGJlIGJ1
aWx0IGluIGRvY3VtZW50IGNvbnRleHQuCisgICAgZm9yIChhdXRvJiBydWxlIDogc2hlZXQuY2hp
bGRSdWxlcygpKSB7CisgICAgICAgIGlmICghaXM8U3R5bGVSdWxlTWVkaWE+KCpydWxlKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvJiBtZWRpYVJ1bGUgPSBkb3duY2FzdDxT
dHlsZVJ1bGVNZWRpYT4oKnJ1bGUpOworICAgICAgICBhdXRvKiBtZWRpYVF1ZXJ5ID0gbWVkaWFS
dWxlLm1lZGlhUXVlcmllcygpOworICAgICAgICBpZiAoIW1lZGlhUXVlcnkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgaWYgKHNjcmVlbkV2YWwoKS5ldmFsdWF0ZSgqbWVkaWFRdWVy
eSwgbnVsbHB0cikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHByaW50RXZh
bCgpLmV2YWx1YXRlKCptZWRpYVF1ZXJ5LCBudWxscHRyKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldC0+cGFyc2VyQXBwZW5kUnVsZShtZWRpYVJ1
bGUuY29weSgpKTsKKyAgICB9CisKKyAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247Cit9CisKIHZv
aWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiB7CiAgICAg
aWYgKHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KSB7CkBAIC0xMjIsMjEgKzE0NywyMCBAQCB2b2lk
IENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxEZWZhCiAgICAgICAgIEFTU0VSVChkZWZh
dWx0UHJpbnRTdHlsZSA9PSBkZWZhdWx0U3R5bGUpOwogICAgICAgICBkZWxldGUgZGVmYXVsdFN0
eWxlOwogICAgICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldC0+ZGVyZWYoKTsKLSAgICAgICAg
ZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKLSAg
ICAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVs
ZWFzZSgpOwotICAgICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IDA7CisgICAgICAgIHNp
bXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBB
U1NFUlQoIWRlZmF1bHRTdHlsZSk7Ci0gICAgICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7Ci0gICAgICAgIGRlZmF1bHRQcmludFN0eWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICAgICAgZGVmYXVsdFF1
aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICB9
CiAKKyAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFz
ZSgpOworICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0Pigp
LnJlbGVhc2UoKTsKKyAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZTdHlsZVNoZWV0Q29udGVu
dHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSkubGVha1JlZigpOworCiAg
ICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCiAgICAgU3RyaW5nIGRlZmF1bHRSdWxlcyA9IFN0cmlu
ZyhodG1sVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWxVc2VyQWdlbnRTdHlsZVNoZWV0
KSkgKyBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwog
ICAgIGRlZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KGRlZmF1bHRSdWxlcyk7Ci0gICAg
ZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqZGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVl
bkV2YWwoKSk7Ci0gICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpkZWZh
dWx0U3R5bGVTaGVldCwgcHJpbnRFdmFsKCkpOworICAgIGFkZFRvRGVmYXVsdFN0eWxlKCpkZWZh
dWx0U3R5bGVTaGVldCk7CiAKICAgICAvLyBRdWlya3MtbW9kZSBydWxlcy4KICAgICBTdHJpbmcg
cXVpcmtzUnVsZXMgPSBTdHJpbmcocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1
aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5leHRy
YVF1aXJrc1N0eWxlU2hlZXQoKTsKQEAgLTE3NCw4ICsxOTgsNyBAQCB2b2lkIENTU0RlZmF1bHRT
dHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsCiAgICAgICAgICAgICAgICAgaWYgKHBsdWdJbnNSdWxl
cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIHBsdWdJbnNSdWxlcyA9IFN0cmluZyhw
bHVnSW5zVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHBsdWdJbnNVc2VyQWdlbnRTdHlsZVNo
ZWV0KSk7CiAgICAgICAgICAgICAgICAgcGx1Z0luc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQo
cGx1Z0luc1J1bGVzKTsKLSAgICAgICAgICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KCpwbHVnSW5zU3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKLSAgICAgICAgICAgICAg
ICArK2RlZmF1bHRTdHlsZVZlcnNpb247CisgICAgICAgICAgICAgICAgYWRkVG9EZWZhdWx0U3R5
bGUoKnBsdWdJbnNTdHlsZVNoZWV0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmIEVO
QUJMRShWSURFTykKQEAgLTE4NSw5ICsyMDgsOCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0
czo6ZW5zdXJlRGVmYXVsCiAgICAgICAgICAgICAgICAgaWYgKG1lZGlhUnVsZXMuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgICAgICBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNV
c2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hl
ZXQpKSArIFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5leHRyYU1lZGlhQ29udHJvbHNTdHlsZVNo
ZWV0KCk7CiAgICAgICAgICAgICAgICAgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQgPSBwYXJzZVVB
U2hlZXQobWVkaWFSdWxlcyk7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldCgqbWVkaWFDb250cm9sc1N0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7Ci0gICAg
ICAgICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCptZWRpYUNv
bnRyb2xzU3R5bGVTaGVldCwgcHJpbnRFdmFsKCkpOwotICAgICAgICAgICAgICAgICsrZGVmYXVs
dFN0eWxlVmVyc2lvbjsKKyAgICAgICAgICAgICAgICBhZGRUb0RlZmF1bHRTdHlsZSgqbWVkaWFD
b250cm9sc1N0eWxlU2hlZXQpOworCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAv
LyBFTkFCTEUoVklERU8pCkBAIC0xOTYsOSArMjE4LDcgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVT
aGVldHM6OmVuc3VyZURlZmF1bAogICAgICAgICAgICAgaWYgKCFpbWFnZUNvbnRyb2xzU3R5bGVT
aGVldCkgewogICAgICAgICAgICAgICAgIFN0cmluZyBpbWFnZUNvbnRyb2xzUnVsZXMgPSBSZW5k
ZXJUaGVtZTo6c2luZ2xldG9uKCkuaW1hZ2VDb250cm9sc1N0eWxlU2hlZXQoKTsKICAgICAgICAg
ICAgICAgICBpbWFnZUNvbnRyb2xzU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChpbWFnZUNvbnRy
b2xzUnVsZXMpOwotICAgICAgICAgICAgICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoKmltYWdlQ29udHJvbHNTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwotICAgICAgICAgICAg
ICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqaW1hZ2VDb250cm9sc1N0
eWxlU2hlZXQsIHByaW50RXZhbCgpKTsKLSAgICAgICAgICAgICAgICArK2RlZmF1bHRTdHlsZVZl
cnNpb247CisgICAgICAgICAgICAgICAgYWRkVG9EZWZhdWx0U3R5bGUoKmltYWdlQ29udHJvbHNT
dHlsZVNoZWV0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX0NPTlRST0xTKQpAQCAtMjA2LDkgKzIyNiw3IEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxl
U2hlZXRzOjplbnN1cmVEZWZhdWwKICAgICAgICAgaWYgKCFzdmdTdHlsZVNoZWV0KSB7CiAgICAg
ICAgICAgICAvLyBTVkcgcnVsZXMuCiAgICAgICAgICAgICBzdmdTdHlsZVNoZWV0ID0gcGFyc2VV
QVNoZWV0KHN2Z1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihzdmdVc2VyQWdlbnRTdHlsZVNo
ZWV0KSk7Ci0gICAgICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzdmdT
dHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwotICAgICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KCpzdmdTdHlsZVNoZWV0LCBwcmludEV2YWwoKSk7Ci0gICAgICAg
ICAgICArK2RlZmF1bHRTdHlsZVZlcnNpb247CisgICAgICAgICAgICBhZGRUb0RlZmF1bHRTdHls
ZSgqc3ZnU3R5bGVTaGVldCk7CiAgICAgICAgIH0KICAgICB9CiAjaWYgRU5BQkxFKE1BVEhNTCkK
QEAgLTIxNiw5ICsyMzQsNyBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVm
YXVsCiAgICAgICAgIGlmICghbWF0aE1MU3R5bGVTaGVldCkgewogICAgICAgICAgICAgLy8gTWF0
aE1MIHJ1bGVzLgogICAgICAgICAgICAgbWF0aE1MU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldCht
YXRobWxVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWF0aG1sVXNlckFnZW50U3R5bGVTaGVl
dCkpOwotICAgICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqbWF0aE1M
U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKLSAgICAgICAgICAgIGRlZmF1bHRQcmludFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldCgqbWF0aE1MU3R5bGVTaGVldCwgcHJpbnRFdmFsKCkpOwotICAg
ICAgICAgICAgKytkZWZhdWx0U3R5bGVWZXJzaW9uOworICAgICAgICAgICAgYWRkVG9EZWZhdWx0
U3R5bGUoKm1hdGhNTFN0eWxlU2hlZXQpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmIC8vIEVO
QUJMRShNQVRITUwpCkBAIC0yMjcsOSArMjQzLDcgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVl
dHM6OmVuc3VyZURlZmF1bAogICAgIGlmICghZnVsbHNjcmVlblN0eWxlU2hlZXQgJiYgZWxlbWVu
dC5kb2N1bWVudCgpLndlYmtpdElzRnVsbFNjcmVlbigpKSB7CiAgICAgICAgIFN0cmluZyBmdWxs
c2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVv
ZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OnNpbmdsZXRv
bigpLmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKTsKICAgICAgICAgZnVsbHNjcmVlblN0eWxl
U2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVsbHNjcmVlblJ1bGVzKTsKLSAgICAgICAgZGVmYXVsdFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqZnVsbHNjcmVlblN0eWxlU2hlZXQsIHNjcmVlbkV2YWwo
KSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKmZ1bGxz
Y3JlZW5TdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwotICAgICAgICArK2RlZmF1bHRTdHlsZVZl
cnNpb247CisgICAgICAgIGFkZFRvRGVmYXVsdFN0eWxlKCpmdWxsc2NyZWVuU3R5bGVTaGVldCk7
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIApJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuaAkocmV2aXNpb24gMjI0MzkzKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxMCArNDUsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29u
dGVudHMqIHBsdWdJbnNTdHlsZVNoZWV0OwogICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMq
IGltYWdlQ29udHJvbHNTdHlsZVNoZWV0OwogCisgICAgc3RhdGljIFN0eWxlU2hlZXRDb250ZW50
cyogbWVkaWFRdWVyeVN0eWxlU2hlZXQ7CisKKyAgICBzdGF0aWMgdm9pZCBpbml0RGVmYXVsdFN0
eWxlKGNvbnN0IEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVEZWZhdWx0U3R5bGVT
aGVldHNGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmKTsKKworcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpOwogICAgIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVE
ZWZhdWx0U3R5bGUoKTsKLSAgICBzdGF0aWMgdm9pZCBpbml0RGVmYXVsdFN0eWxlKGNvbnN0IEVs
ZW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRUb0RlZmF1bHRTdHlsZShTdHlsZVNoZWV0Q29u
dGVudHMmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAJKHJldmlzaW9uIDIyNDM5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsMzkgQEAgRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyhTdHlsZQogCiBEb2N1
bWVudFJ1bGVTZXRzOjp+RG9jdW1lbnRSdWxlU2V0cygpID0gZGVmYXVsdDsKIAorUnVsZVNldCog
RG9jdW1lbnRSdWxlU2V0czo6dXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBzZXBhcmF0ZSB0eXBlcyBmb3IgZG9jdW1lbnQg
cnVsZSBzZXRzIGFuZCBzaGFkb3cgdHJlZSBydWxlIHNldHMuCisgICAgaWYgKG1faXNGb3JTaGFk
b3dTY29wZSkKKyAgICAgICAgcmV0dXJuIG1fc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLnN0eWxl
U2NvcGUoKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCkudXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCk7
CisKKyAgICB1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpOworICAgIHJl
dHVybiBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZS5nZXQoKTsKK30KKwordm9pZCBEb2N1bWVu
dFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0
Cit7CisgICAgaWYgKCFDU1NEZWZhdWx0U3R5bGVTaGVldHM6Om1lZGlhUXVlcnlTdHlsZVNoZWV0
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJ1bGVDb3VudCA9IENTU0RlZmF1bHRTdHls
ZVNoZWV0czo6bWVkaWFRdWVyeVN0eWxlU2hlZXQtPnJ1bGVDb3VudCgpOworICAgIGlmIChtX3Vz
ZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSAmJiBydWxlQ291bnQgPT0gbV91c2VyQWdlbnRNZWRpYVF1
ZXJ5UnVsZUNvdW50T25VcGRhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3VzZXJBZ2VudE1l
ZGlhUXVlcnlSdWxlQ291bnRPblVwZGF0ZSA9IHJ1bGVDb3VudDsKKworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICBib29sIGhhZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzID0gbV9zdHls
ZVJlc29sdmVyLmhhc1ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyaWVzKCk7CisjZW5kaWYKKwor
ICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24gdXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRl
ZCBpbiBkb2N1bWVudCBjb250ZXh0LiBUaGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4g
dGhpcyByZXNwZWN0LgorICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVz
b2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0
eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFR
dWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRp
YVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7
CisKKyAgICAvLyBWaWV3cG9ydCBkZXBlbmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBp
bmVmZmljaWVudCB0byBhbGxvdyBvbiBVQSBzaGVldC4KKyAgICBBU1NFUlQoIW1fc3R5bGVSZXNv
bHZlci5oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcygpIHx8IGhhZFZpZXdwb3J0RGVw
ZW5kZW50TWVkaWFRdWVyaWVzKTsKK30KKwogUnVsZVNldCogRG9jdW1lbnRSdWxlU2V0czo6dXNl
clN0eWxlKCkgY29uc3QKIHsKICAgICBpZiAobV91c2VzU2hhcmVkVXNlclN0eWxlKQpAQCAtOTMs
NiArMTI2LDExIEBAIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSgKICAg
ICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgRG9j
dW1lbnRSdWxlU2V0czo6cmVzZXRVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUoKQoreworICAgIG1f
dXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gbnVsbHB0cjsKK30KKwogdm9pZCBEb2N1bWVudFJ1
bGVTZXRzOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+PiYgc3R5bGVTaGVldHMsIE1lZGlhUXVlcnlFdmFsdWF0b3IqIG1lZGl1bSwgSW5z
cGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9yQ1NTT01XcmFwcGVycywgU3R5bGVSZXNvbHZl
ciogcmVzb2x2ZXIpCiB7CiAgICAgLy8gVGhpcyBoYW5kbGVzIHNoZWV0cyBhZGRlZCB0byB0aGUg
ZW5kIG9mIHRoZSBzdHlsZXNoZWV0IGxpc3Qgb25seS4gSW4gb3RoZXIgY2FzZXMgdGhlIHN0eWxl
IHJlc29sdmVyCkBAIC0xMTgsNiArMTU2LDkgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpjb2xs
ZWN0RmVhdHVyZXMoKQogICAgICAgICBtX2ZlYXR1cmVzLmFkZChDU1NEZWZhdWx0U3R5bGVTaGVl
dHM6OmRlZmF1bHRTdHlsZS0+ZmVhdHVyZXMoKSk7CiAgICAgbV9kZWZhdWx0U3R5bGVWZXJzaW9u
T25GZWF0dXJlQ29sbGVjdGlvbiA9IENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFN0eWxl
VmVyc2lvbjsKIAorICAgIGlmIChhdXRvKiB1c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUgPSB0aGlz
LT51c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUoKSkKKyAgICAgICAgbV9mZWF0dXJlcy5hZGQodXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlLT5mZWF0dXJlcygpKTsKKwogICAgIGlmIChtX2F1dGhvclN0
eWxlKQogICAgICAgICBtX2ZlYXR1cmVzLmFkZChtX2F1dGhvclN0eWxlLT5mZWF0dXJlcygpKTsK
ICAgICBpZiAoYXV0byogdXNlclN0eWxlID0gdGhpcy0+dXNlclN0eWxlKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgJKHJldmlzaW9uIDIyNDM5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAgcHVibGljOgogICAgIH5Eb2N1bWVudFJ1bGVTZXRzKCk7CiAKICAgICBib29sIGlz
QXV0aG9yU3R5bGVEZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhvclN0eWxlRGVmaW5l
ZDsgfQorICAgIFJ1bGVTZXQqIHVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSgpIGNvbnN0OwogICAg
IFJ1bGVTZXQmIGF1dGhvclN0eWxlKCkgY29uc3QgeyByZXR1cm4gKm1fYXV0aG9yU3R5bGUuZ2V0
KCk7IH0KICAgICBSdWxlU2V0KiB1c2VyU3R5bGUoKSBjb25zdDsKICAgICBjb25zdCBSdWxlRmVh
dHVyZVNldCYgZmVhdHVyZXMoKSBjb25zdDsKQEAgLTU5LDI2ICs2MCwzNCBAQCBwdWJsaWM6CiAg
ICAgfTsKICAgICBjb25zdCBBdHRyaWJ1dGVSdWxlcyogYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0Zv
ckhUTUwoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKKyAgICB2b2lkIHNldElzRm9yU2hh
ZG93U2NvcGUoKSB7IG1faXNGb3JTaGFkb3dTY29wZSA9IHRydWU7IH0KKwogICAgIHZvaWQgc2V0
VXNlc1NoYXJlZFVzZXJTdHlsZShib29sIGIpIHsgbV91c2VzU2hhcmVkVXNlclN0eWxlID0gYjsg
fQogICAgIHZvaWQgaW5pdGlhbGl6ZVVzZXJTdHlsZSgpOwogCiAgICAgdm9pZCByZXNldEF1dGhv
clN0eWxlKCk7CiAgICAgdm9pZCBhcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIE1lZGlhUXVlcnlFdmFsdWF0b3IqLCBJbnNwZWN0b3JD
U1NPTVdyYXBwZXJzJiwgU3R5bGVSZXNvbHZlciopOwogCisgICAgdm9pZCByZXNldFVzZXJBZ2Vu
dE1lZGlhUXVlcnlTdHlsZSgpOworCiAgICAgUnVsZUZlYXR1cmVTZXQmIG11dGFibGVGZWF0dXJl
cygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzKCkgY29uc3Q7CiAgICAg
dm9pZCBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4+JiwgUnVsZVNldCYgdXNlclN0eWxlLCBjb25zdCBNZWRpYVF1ZXJ5RXZh
bHVhdG9yJiwgU3R5bGVSZXNvbHZlciYpOworICAgIHZvaWQgdXBkYXRlVXNlckFnZW50TWVkaWFR
dWVyeVN0eWxlSWZOZWVkZWQoKSBjb25zdDsKIAorICAgIGJvb2wgbV9pc0ZvclNoYWRvd1Njb3Bl
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNBdXRob3JTdHlsZURlZmluZWQgeyBmYWxzZSB9Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtX2F1dGhvclN0eWxlOworICAgIG11dGFibGUg
c3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtX3VzZXJTdHlsZTsKICAgICBib29sIG1fdXNlc1No
YXJlZFVzZXJTdHlsZSB7IGZhbHNlIH07CiAKICAgICBTdHlsZVJlc29sdmVyJiBtX3N0eWxlUmVz
b2x2ZXI7CiAgICAgbXV0YWJsZSBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIG11dGFi
bGUgdW5zaWduZWQgbV9kZWZhdWx0U3R5bGVWZXJzaW9uT25GZWF0dXJlQ29sbGVjdGlvbiB7IDAg
fTsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1fdXNlckFnZW50TWVkaWFRdWVyeVJ1bGVDb3VudE9u
VXBkYXRlIHsgMCB9OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1fc2li
bGluZ1J1bGVTZXQ7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbV91bmNv
bW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CiAgICAgbXV0YWJsZSBIYXNoTWFwPEF0b21pY1N0cmluZywg
c3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+PiBtX2FuY2VzdG9yQ2xhc3NSdWxlU2V0czsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24g
MjI0MzkzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6RWxl
bWVudFJ1bGVDb2xsZWN0CiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fYXV0aG9y
U3R5bGUocnVsZVNldHMuYXV0aG9yU3R5bGUoKSkKICAgICAsIG1fdXNlclN0eWxlKHJ1bGVTZXRz
LnVzZXJTdHlsZSgpKQorICAgICwgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUocnVsZVNldHMu
dXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKCkpCiAgICAgLCBtX3NlbGVjdG9yRmlsdGVyKHNlbGVj
dG9yRmlsdGVyKQogewogICAgIEFTU0VSVCghbV9zZWxlY3RvckZpbHRlciB8fCBtX3NlbGVjdG9y
RmlsdGVyLT5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChlbGVtZW50LnBhcmVudE5vZGUoKSkpOwpA
QCAtMzIwLDIwICszMjEsMjMgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1
bGVzKAogICAgICAgICBtX3Jlc3VsdC5pc0NhY2hlYWJsZSA9IGZhbHNlOwogICAgIFJ1bGVTZXQq
IHVzZXJBZ2VudFN0eWxlU2hlZXQgPSBtX2lzUHJpbnRTdHlsZQogICAgICAgICA/IENTU0RlZmF1
bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFByaW50U3R5bGUgOiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6
OmRlZmF1bHRTdHlsZTsKLSAgICBtYXRjaFVBUnVsZXModXNlckFnZW50U3R5bGVTaGVldCk7Cisg
ICAgbWF0Y2hVQVJ1bGVzKCp1c2VyQWdlbnRTdHlsZVNoZWV0KTsKIAogICAgIC8vIEluIHF1aXJr
cyBtb2RlLCB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSBxdWlya3MgdXNlciBhZ2VudCBzaGVldC4K
ICAgICBpZiAobV9lbGVtZW50LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkpCi0gICAgICAgIG1h
dGNoVUFSdWxlcyhDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRRdWlya3NTdHlsZSk7Cisg
ICAgICAgIG1hdGNoVUFSdWxlcygqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0UXVpcmtz
U3R5bGUpOworCisgICAgaWYgKG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKQorICAgICAgICBt
YXRjaFVBUnVsZXMoKm1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlKTsKIH0KIAotdm9pZCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKFJ1bGVTZXQqIHJ1bGVzKQordm9pZCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKGNvbnN0IFJ1bGVTZXQmIHJ1bGVzKQogewog
ICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAgICAgCiAgICAgbV9yZXN1bHQucmFuZ2VzLmxhc3RV
QVJ1bGUgPSBtX3Jlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDE7CiAgICAgU3R5
bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5VQVJ1bGVS
YW5nZSgpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChydWxlcyksIHJ1
bGVSYW5nZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KCZydWxlcyks
IHJ1bGVSYW5nZSk7CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCShyZXZpc2lvbiAy
MjQzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
YWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnRpZXMqLCBib29sIGlz
Q2FjaGVhYmxlID0gdHJ1ZSk7CiAKLSAgICB2b2lkIG1hdGNoVUFSdWxlcyhSdWxlU2V0Kik7Cisg
ICAgdm9pZCBtYXRjaFVBUnVsZXMoY29uc3QgUnVsZVNldCYpOwogICAgIHZvaWQgbWF0Y2hBdXRo
b3JTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgU3R5bGVS
ZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAgICAgdm9pZCBtYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVz
KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwogICAg
IHZvaWQgbWF0Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwpAQCAtOTIsNiArOTIsNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IEVsZW1lbnQmIG1fZWxlbWVudDsKICAgICBjb25zdCBSdWxlU2V0JiBtX2F1
dGhvclN0eWxlOwogICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNlclN0eWxlIHsgbnVsbHB0ciB9Owor
ICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlIHsgbnVsbHB0ciB9
OwogICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyKiBtX3NlbGVjdG9yRmlsdGVyIHsgbnVsbHB0ciB9
OwogCiAgICAgYm9vbCBtX2lzUHJpbnRTdHlsZSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCShyZXZpc2lvbiAyMjQzOTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMSw2ICsxMTEsNyBAQCB2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6
OmNvbGxlY3REb2N1CiAgICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKENTU0Rl
ZmF1bHRTdHlsZVNoZWV0czo6bWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOwogICAgICAgICBjb2xs
ZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmZ1bGxzY3Jl
ZW5TdHlsZVNoZWV0KTsKICAgICAgICAgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMoQ1NT
RGVmYXVsdFN0eWxlU2hlZXRzOjpwbHVnSW5zU3R5bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RG
cm9tU3R5bGVTaGVldENvbnRlbnRzKENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bWVkaWFRdWVyeVN0
eWxlU2hlZXQpOwogCiAgICAgICAgIGNvbGxlY3QoZXh0ZW5zaW9uU3R5bGVTaGVldHMucGFnZVVz
ZXJTaGVldCgpKTsKICAgICAgICAgY29sbGVjdEZyb21TdHlsZVNoZWV0cyhleHRlbnNpb25TdHls
ZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAJKHJldmlzaW9uIDIyNDM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDYgKzIzMSw3IEBAIFN0
eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQmIGQKICAgICAgICAgbV9tZWRpYVF1
ZXJ5RXZhbHVhdG9yID0gTWVkaWFRdWVyeUV2YWx1YXRvciB7IHZpZXctPm1lZGlhVHlwZSgpLCBt
X2RvY3VtZW50LCBtX3Jvb3REZWZhdWx0U3R5bGUuZ2V0KCkgfTsKIAogICAgIG1fcnVsZVNldHMu
cmVzZXRBdXRob3JTdHlsZSgpOworICAgIG1fcnVsZVNldHMucmVzZXRVc2VyQWdlbnRNZWRpYVF1
ZXJ5U3R5bGUoKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphZGRDdXJyZW50U1ZHRm9udEZh
Y2VSdWxlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAkocmV2aXNpb24g
MjI0MzkzKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw4ICsxMDIsMTAgQEAgU3R5bGVSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVy
KCkKICAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQu
Zm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7CiAgICAgICAgICAgICBtX3Jlc29sdmVyLT5y
dWxlU2V0cygpLmluaXRpYWxpemVVc2VyU3R5bGUoKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLnNldElzRm9yU2hh
ZG93U2NvcGUoKTsKICAgICAgICAgICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCkuc2V0VXNlc1No
YXJlZFVzZXJTdHlsZShtX3NoYWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNl
ckFnZW50KTsKKyAgICAgICAgfQogCiAgICAgICAgIG1fcmVzb2x2ZXItPmFkZEN1cnJlbnRTVkdG
b250RmFjZVJ1bGVzKCk7CiAgICAgICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hl
ZXRzKG1fYWN0aXZlU3R5bGVTaGVldHMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>