<?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>156397</bug_id>
          
          <creation_ts>2016-04-08 02:23:52 -0700</creation_ts>
          <short_desc>Implement functional :host() pseudo class</short_desc>
          <delta_ts>2016-04-11 09:57:08 -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>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>156440</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eoconnor</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1182114</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-08 02:23:52 -0700</bug_when>
    <thetext>We already support :host. Add functional syntax too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182116</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-08 02:24:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/25621445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182127</commentid>
    <comment_count>2</comment_count>
      <attachid>275992</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-08 04:04:45 -0700</bug_when>
    <thetext>Created attachment 275992
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182138</commentid>
    <comment_count>3</comment_count>
      <attachid>275999</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-08 05:39:35 -0700</bug_when>
    <thetext>Created attachment 275999
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182139</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-08 05:41:14 -0700</bug_when>
    <thetext>Attachment 275999 did not pass style-queue:


ERROR: Source/WebCore/css/ElementRuleCollector.h:92:  The parameter name &quot;ruleRange&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/css/SelectorChecker.h:98:  The parameter name &quot;checkingContext&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182140</commentid>
    <comment_count>5</comment_count>
      <attachid>276000</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-08 05:42:39 -0700</bug_when>
    <thetext>Created attachment 276000
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182398</commentid>
    <comment_count>6</comment_count>
      <attachid>276000</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-08 17:57:31 -0700</bug_when>
    <thetext>Comment on attachment 276000
patch

The test change looks good. Maybe kling should review the style resolver change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182444</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-09 00:38:51 -0700</bug_when>
    <thetext>https://trac.webkit.org/r199268</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182452</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-09 09:09:04 -0700</bug_when>
    <thetext>It broke debug builds without ENABLE_SHADOW_DOM:

../../Source/WebCore/css/SelectorChecker.cpp: In member function ‘bool WebCore::SelectorChecker::matchHostPseudoClass(const WebCore::CSSSelector&amp;, const WebCore::Element&amp;, WebCore::SelectorChecker::CheckingContext&amp;, unsigned int&amp;) const’:
../../Source/WebCore/css/SelectorChecker.cpp:206:94: error: ‘PseudoClassHost’ is not a member of ‘WebCore::CSSSelector’
     ASSERT(selector.match() == CSSSelector::PseudoClass &amp;&amp; selector.pseudoClassType() == CSSSelector::PseudoClassHost);
                                                                                              ^

It&apos;s not immediately clear to me how to fix this. Disabling that assert doesn&apos;t seem right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182484</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-09 13:09:08 -0700</bug_when>
    <thetext>Ugh, broken build for 12 hours already. Rolling out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182486</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-09 13:10:14 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 156440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182507</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-09 14:47:10 -0700</bug_when>
    <thetext>Also, surprised that Windows apparently doesn&apos;t have shadow DOM enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182599</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-10 21:25:14 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Also, surprised that Windows apparently doesn&apos;t have shadow DOM enabled.

Oh oops, that was my oversight. Will enable it everywhere soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182617</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-11 00:43:12 -0700</bug_when>
    <thetext>Maybe we should also enable &lt;details&gt; globally and remove the #ifs? That would clean up lot of conditional build mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182620</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-11 00:53:22 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Maybe we should also enable &lt;details&gt; globally and remove the #ifs? That
&gt; would clean up lot of conditional build mess.

Yeah, we&apos;ve been shipping details element for a while although apparently only WebKit/Blink supports it.  This is somewhat orthogonal but I suspect no one is using it so we might be able to remove it entirely...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182648</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-11 02:01:54 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Maybe we should also enable &lt;details&gt; globally and remove the #ifs? That
&gt; &gt; would clean up lot of conditional build mess.
&gt; 
&gt; Yeah, we&apos;ve been shipping details element for a while although apparently
&gt; only WebKit/Blink supports it.  This is somewhat orthogonal but I suspect no
&gt; one is using it so we might be able to remove it entirely...

Oops, apparently Gecko is implementing them now: https://bugzilla.mozilla.org/show_bug.cgi?id=1226455</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182652</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-11 02:13:40 -0700</bug_when>
    <thetext>https://trac.webkit.org/r199291</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182677</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-11 05:45:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Oh oops, that was my oversight. Will enable it everywhere soon.

Hi, do you still consider shadow DOM experimental? If so, let&apos;s enable it only in FeatureList.pm. If you think it&apos;s ready for users, only then let&apos;s additionally enable it in WebKitFeatures.cmake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182718</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-11 09:57:08 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #12)
&gt; &gt; Oh oops, that was my oversight. Will enable it everywhere soon.
&gt; 
&gt; Hi, do you still consider shadow DOM experimental? If so, let&apos;s enable it
&gt; only in FeatureList.pm. If you think it&apos;s ready for users, only then let&apos;s
&gt; additionally enable it in WebKitFeatures.cmake.

It&apos;s getting ready to be shipped. There are still some renames to be done so I&apos;ll do that first.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275992</attachid>
            <date>2016-04-08 04:04:45 -0700</date>
            <delta_ts>2016-04-08 05:39:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>host-functional-2.patch</filename>
            <type>text/plain</type>
            <size>14912</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTIyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA0LTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25h
bCA6aG9zdCgpIHBzZXVkbyBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2Mzk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTYyMTQ0NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhbHJl
YWR5IHN1cHBvcnQgOmhvc3QuIEFkZCBmdW5jdGlvbmFsIHN5bnRheCB0b28uCisKKyAgICAgICAg
KiBjc3MvQ1NTR3JhbW1hci55LmluOgorCisgICAgICAgICAgICBQYXJzZSBmdW5jdGlvbmFsIGhv
c3QoKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpkZXRlY3RGdW5jdGlvblR5cGVUb2tlbik6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFy
c2VQc2V1ZG9DbGFzc0hvc3RGdW5jdGlvblNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyVmFsdWVzLmg6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tcHV0ZU1hdGNoQmFzZWRPblJ1bGVIYXNoKToKKworICAgICAgICAgICAgT25seSBzaW1w
bGUgOmhvc3QgbWF0Y2hlcyBiYXNlZCBvbiBydWxlIGhhc2guCisKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmUpOgorCisgICAgICAgICAgICBDaGVjayBmb3IgOmhvc3QoKSBhcmd1bWVudCBjb21wb3Vu
ZCBzZWxlY3RvciBpZiBwcm92aWRlZC4KKworICAgICAgICAqIGNzc2ppdC9TZWxlY3RvckNvbXBp
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmFkZFBzZXVkb0Ns
YXNzVHlwZSk6CisKKyAgICAgICAgICAgIERpc2FsbG93IDpob3N0IGluIGNvbXBpbGVyLiBTaW1w
bGUgbWF0Y2hlcyBhcmUgZG9uZSBieSBydWxlIGhhc2hlcyBhbnl3YXkuCisKIDIwMTYtMDQtMDgg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bm5lZWRl
ZCBVc2VQb2ludGVyc0V2ZW5Gb3JOb25OdWxsYWJsZU9iamVjdEFyZ3VtZW50cyBmcm9tIGV2ZW50
IGNsYXNzZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgkocmV2aXNpb24gMTk5
MDk3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgkod29ya2luZyBjb3B5
KQpAQCAtMzY4LDYgKzM2OCw3IEBAIHN0YXRpYyBib29sIHNlbGVjdG9yTGlzdERvZXNOb3RNYXRj
aEFueVAKICNpZiBFTkFCTEVfU0hBRE9XX0RPTQogCiAldG9rZW4gPHN0cmluZz4gU0xPVFRFREZV
TkNUSU9OCisldG9rZW4gPHN0cmluZz4gSE9TVEZVTkNUSU9OCiAKICNlbmRpZgogCkBAIC0xMzY3
LDYgKzEzNjgsOSBAQCBwc2V1ZG86CiAgICAgfCAnOicgJzonIFNMT1RURURGVU5DVElPTiBtYXli
ZV9zcGFjZSBjb21wb3VuZF9zZWxlY3RvciBtYXliZV9zcGFjZSAnKScgewogICAgICAgICAkJCA9
IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxl
Y3RvcigkMywgJDUpOwogICAgIH0KKyAgICB8ICc6JyBIT1NURlVOQ1RJT04gbWF5YmVfc3BhY2Ug
Y29tcG91bmRfc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQgPSBDU1NQYXJz
ZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc0hvc3RGdW5jdGlvblNlbGVjdG9yKCQyLCAkNCk7
CisgICAgfQogI2VuZGlmCiAgICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KICAgICAvLyBGSVhN
RTogc2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBs
ZV9zZWxlY3RvcnM/CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTk5
MTU0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExODk3LDYgKzExODk3LDEyIEBAIGlubGluZSBib29sIENTU1BhcnNlcjo6ZGV0ZWN0RnVu
Y3Rpb25UeXAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKGlzRXF1YWxUb0NTU0lkZW50aWZpZXIo
bmFtZSwgImhvc3QiKSkgeworICAgICAgICAgICAgbV90b2tlbiA9IEhPU1RGVU5DVElPTjsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgY2FzZSA3OgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
clZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5jcHAJKHJldmlzaW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXJWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDMwIEBAIENTU1BhcnNl
clNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGEKICAgICBzZWxlY3Rvci0+YWRvcHRTZWxl
Y3RvclZlY3Rvcigqc2VsZWN0b3JWZWN0b3IpOwogICAgIHJldHVybiBzZWxlY3Rvci5yZWxlYXNl
KCk7CiB9CisKK0NTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1
ZG9DbGFzc0hvc3RGdW5jdGlvblNlbGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rp
b25JZGVudGlmaWVyLCBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VkU2VsZWN0b3IpCit7CisgICAg
QVNTRVJUX1VOVVNFRChmdW5jdGlvbklkZW50aWZpZXIsIFN0cmluZyhmdW5jdGlvbklkZW50aWZp
ZXIpID09ICJob3N0KCIpOworCisgICAgaWYgKCFwYXJzZWRTZWxlY3RvcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IG93
bmVkUGFyc2VkU2VsZWN0b3IocGFyc2VkU2VsZWN0b3IpOworCisgICAgZm9yIChhdXRvKiBjb21w
b25lbnQgPSBwYXJzZWRTZWxlY3RvcjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25lbnQt
PnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAoY29tcG9uZW50LT5tYXRjaGVzUHNldWRvRWxl
bWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBz
ZWxlY3RvclZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4+PigpOworICAgIHNlbGVjdG9yVmVjdG9yLT5hcHBlbmQoV1RGTW92
ZShvd25lZFBhcnNlZFNlbGVjdG9yKSk7CisKKyAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICBzZWxlY3Rvci0+bV9zZWxl
Y3Rvci0+c2V0UHNldWRvQ2xhc3NUeXBlKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvc3QpOwor
ICAgIHNlbGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvclZlY3Rvcik7CisgICAg
cmV0dXJuIHNlbGVjdG9yLnJlbGVhc2UoKTsKK30KICNlbmRpZgogCiBDU1NQYXJzZXJTZWxlY3Rv
ciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxl
bWVudFNlbGVjdG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0cmluZykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgJKHJldmlzaW9uIDE5OTA5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYg
KzIwNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNl
dWRvRWxlbWVudEN1ZUZ1bmN0aW9uU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5j
dGlvbklkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
PiopOwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3Rv
ciogcGFyc2VQc2V1ZG9FbGVtZW50U2xvdHRlZEZ1bmN0aW9uU2VsZWN0b3IoY29uc3QgQ1NTUGFy
c2VyU3RyaW5nJiBmdW5jdGlvbklkZW50aWZpZXIsIENTU1BhcnNlclNlbGVjdG9yKik7CisgICAg
c3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0NsYXNzSG9zdEZ1bmN0aW9uU2Vs
ZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50aWZpZXIsIENTU1BhcnNl
clNlbGVjdG9yKik7CiAjZW5kaWYKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNl
UHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFNlbGVjdG9yKENTU1BhcnNlclN0cmlu
ZyYgcHNldWRvVHlwZVN0cmluZyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1l
bnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMTk5MDk3KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDkgKzIz
MiwxMyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQc2V1CiAgICAgY2xl
YXJNYXRjaGVkUnVsZXMoKTsKICAgICBtX3Jlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUgPSBt
X3Jlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDE7CiAKLSAgICBhdXRvIHJ1bGVS
YW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5hdXRob3JSdWxlUmFuZ2UoKTsKLSAgICBNYXRjaFJlcXVl
c3QgbWF0Y2hSZXF1ZXN0KCZzaGFkb3dBdXRob3JTdHlsZSwgaW5jbHVkZUVtcHR5UnVsZXMpOwot
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCgmc2hhZG93SG9zdFJ1bGVzLCBtYXRjaFJl
cXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgeworICAgICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4g
Y2hhbmdlKG1faXNNYXRjaGluZ0hvc3RQc2V1ZG9DbGFzc2VzLCB0cnVlKTsKKworICAgICAgICBh
dXRvIHJ1bGVSYW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5hdXRob3JSdWxlUmFuZ2UoKTsKKyAgICAg
ICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdCgmc2hhZG93QXV0aG9yU3R5bGUsIGluY2x1ZGVF
bXB0eVJ1bGVzKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KCZzaGFkb3dI
b3N0UnVsZXMsIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKKyAgICB9CiAKICAgICAvLyBXZSBq
dXN0IHNvcnQgdGhlIGhvc3QgcnVsZXMgYmVmb3JlIG90aGVyIGF1dGhvciBydWxlcy4gVGhpcyBt
YXRjaGVzIHRoZSBjdXJyZW50IHZhZ3VlIHNwZWMgbGFuZ3VhZ2UKICAgICAvLyBidXQgaXMgbm90
IG5lY2Vzc2FyaWx5IGV4YWN0bHkgd2hhdCBpcyBuZWVkZWQuCkBAIC00MjIsNiArNDI2LDcgQEAg
aW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYQogICAgIGNvbnRleHQucHNl
dWRvSWQgPSBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZDsKICAgICBjb250ZXh0LnNjcm9s
bGJhciA9IG1fcHNldWRvU3R5bGVSZXF1ZXN0LnNjcm9sbGJhcjsKICAgICBjb250ZXh0LnNjcm9s
bGJhclBhcnQgPSBtX3BzZXVkb1N0eWxlUmVxdWVzdC5zY3JvbGxiYXJQYXJ0OworICAgIGNvbnRl
eHQuYWxsb3dIb3N0UHNldWRvQ2xhc3MgPSBtX2lzTWF0Y2hpbmdIb3N0UHNldWRvQ2xhc3NlczsK
IAogICAgIGJvb2wgc2VsZWN0b3JNYXRjaGVzOwogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklU
KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHJldmlz
aW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBTZWxlY3Rv
ckNoZWNrZXI6Ok1vZGUgbV9tb2RlIHsgU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdT
dHlsZSB9OwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGJvb2wgbV9pc01hdGNoaW5nU2xv
dHRlZFBzZXVkb0VsZW1lbnRzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNNYXRjaGluZ0hvc3RQ
c2V1ZG9DbGFzc2VzIHsgZmFsc2UgfTsKICNlbmRpZgogCiAgICAgVmVjdG9yPE1hdGNoZWRSdWxl
LCA2ND4gbV9tYXRjaGVkUnVsZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCShyZXZpc2lv
biAxOTkwOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGlubGluZSBNYXRjaEJhc2VkT25SdWxlSGFzaCBj
b21wdQogICAgIGlmIChTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rv
cigmc2VsZWN0b3IpKQogICAgICAgICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNz
QjsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAoc2VsZWN0b3IubWF0Y2goKSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgJiYgc2VsZWN0b3IucHNldWRvQ2xhc3NUeXBlKCkgPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9zdCkKKyAgICBpZiAoc2VsZWN0b3IubWF0Y2goKSA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgJiYgc2VsZWN0b3IucHNldWRvQ2xhc3NUeXBlKCkg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9zdCAmJiAhc2VsZWN0b3Iuc2VsZWN0b3JMaXN0
KCkpCiAgICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xhc3NCOwogI2VuZGlm
CiAgICAgaWYgKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OklkKQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHJldmlzaW9uIDE5OTA5NykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
ODcsOSArOTg3LDIwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0MK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKLSAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0OgotICAgICAg
ICAgICAgLy8gOmhvc3QgbWF0Y2hlcyBiYXNlZCBvbiBjb250ZXh0LiBDYXNlcyB0aGF0IHJlYWNo
IHNlbGVjdG9yIGNoZWNrZXIgZG9uJ3QgbWF0Y2guCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9zdDogeworICAgICAgICAg
ICAgaWYgKCFjaGVja2luZ0NvbnRleHQuYWxsb3dIb3N0UHNldWRvQ2xhc3MpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgLy8gOmhvc3QgY2FuJ3QgYmUgY29tYmlu
ZWQgd2l0aCBhbnl0aGluZy4KKyAgICAgICAgICAgIGlmIChzZWxlY3Rvci50YWdIaXN0b3J5KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQVNTRVJUKGVsZW1l
bnQuc2hhZG93Um9vdCgpKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzZWxlY3Rvckxpc3QgPSBz
ZWxlY3Rvci5zZWxlY3Rvckxpc3QoKSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlnbm9y
ZWRTcGVjaWZpY2l0eTsKKyAgICAgICAgICAgICAgICBpZiAoIW1hdGNoU2VsZWN0b3JMaXN0KGNo
ZWNraW5nQ29udGV4dCwgY29udGV4dCwgZWxlbWVudCwgKnNlbGVjdG9yTGlzdCwgaWdub3JlZFNw
ZWNpZmljaXR5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVO
QUJMRShDVVNUT01fRUxFTUVOVFMpCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzRGVmaW5lZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgJKHJldmlz
aW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlbmRlclNjcm9s
bGJhciogc2Nyb2xsYmFyIHsgbnVsbHB0ciB9OwogICAgICAgICBTY3JvbGxiYXJQYXJ0IHNjcm9s
bGJhclBhcnQgeyBOb1BhcnQgfTsKICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUg
eyBudWxscHRyIH07CisgICAgICAgIGJvb2wgYWxsb3dIb3N0UHNldWRvQ2xhc3MgeyBmYWxzZSB9
OwogCiAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlciB0byBoYXZlIGEgc2VwYXJh
dGUgb2JqZWN0IGZvciByZXR1cm4gdmFsdWVzLiBUaGlzIHJlcXVpcmVzIHNvbWUgbW9yZSB3b3Jr
IGluIHRoZSBzZWxlY3RvciBjb21waWxlci4KICAgICAgICAgU3R5bGU6OlJlbGF0aW9ucyBzdHls
ZVJlbGF0aW9uczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHAJKHJldmlzaW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3Rv
ckNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI3LDggKzgyNyw3IEBAIHN0YXRpYyBp
bmxpbmUgRnVuY3Rpb25UeXBlIGFkZFBzZXVkb0NsYXMKICAgICAgICAgfQogI2lmIEVOQUJMRShT
SEFET1dfRE9NKQogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9zdDoKLSAgICAg
ICAgLy8gOmhvc3QgbWF0Y2hlcyBiYXNlZCBvbiBjb250ZXh0LiBDYXNlcyB0aGF0IHJlYWNoIHNl
bGVjdG9yIGNoZWNrZXIgZG9uJ3QgbWF0Y2guCi0gICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6
OkNhbm5vdE1hdGNoQW55dGhpbmc7CisgICAgICAgIHJldHVybiBGdW5jdGlvblR5cGU6OkNhbm5v
dENvbXBpbGU7CiAjZW5kaWYKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vua25v
d246CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5
MTU0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTYtMDQtMDggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBmdW5jdGlvbmFsIDpob3N0KCkgcHNldWRvIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYzOTcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI1NjIxNDQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEVuYWJsZSBhbmQgZml4IHRoZSB0ZXN0LgorCisgICAgICAgICog
ZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1ob3N0LWZ1bmN0aW9uYWwtcnVsZS5o
dG1sOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE2LTA0
LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFkb3cg
RE9NOiBJbXBsZW1lbnQgZGlzcGxheTogY29udGVudHMgZm9yIHNsb3RzCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3QtZnVuY3Rpb25hbC1y
dWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1z
Y29waW5nLXNoYWRvdy1ob3N0LWZ1bmN0aW9uYWwtcnVsZS5odG1sCShyZXZpc2lvbiAxOTkwOTcp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3Qt
ZnVuY3Rpb25hbC1ydWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNDEgKzgsNTYgQEAKIDwv
aGVhZD4KIDxib2R5PgogICAgIDxzdHlsZT4KLSAgICAgICAgbXktaG9zdCwgZ29vZC1ob3N0LCBv
dGhlci1ob3N0LCBvdGhlci1nb29kLWhvc3QgeworICAgICAgICBob3N0MSwgaG9zdDIsIGhvc3Qz
LCBob3N0NCwgaG9zdDUgewogICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAg
ICB3aWR0aDogMTAwcHg7Ci0gICAgICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICAgICAgICBo
ZWlnaHQ6IDIwcHg7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7CiAgICAgICAgIH0KLSAg
ICAgICAgZ29vZC1ob3N0LCBvdGhlci1nb29kLWhvc3QgeworICAgICAgICBob3N0MywgaG9zdDQs
IGhvc3Q1ICB7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKICAgICAgICAgfQogICAg
IDwvc3R5bGU+Ci0gICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBweCBi
eSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPiAKLSAgICA8bXktaG9zdD4KKyAgICA8cD5UZXN0
IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxv
dy48L3A+CisgICAgPGhvc3QxPgogICAgICAgICA8ZGl2PkZBSUw8L2Rpdj4KLSAgICA8L215LWhv
c3Q+Ci0gICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KLSAgICAgICAgPGdvb2QtaG9zdD4KLSAg
ICAgICAgICAgIDxkaXY+RkFJTDwvZGl2PgotICAgICAgICA8L2dvb2QtaG9zdD4KLSAgICA8L2Rp
dj4KLSAgICA8b3RoZXItaG9zdCBpZD0iYmFyIiBjbGFzcz0iZm9vIiBuYW1lPSJiYXoiPgorICAg
IDwvaG9zdDE+CisgICAgPGhvc3QyIGlkPSJiYXIiIGNsYXNzPSJmb28iIG5hbWU9ImJheiI+CiAg
ICAgICAgIDxkaXY+RkFJTDwvZGl2PgotICAgIDwvb3RoZXItaG9zdD4KLSAgICA8b3RoZXItZ29v
ZC1ob3N0PgorICAgIDwvaG9zdDI+CisgICAgPGRpdj4KKyAgICAgICAgPGhvc3QzPgorICAgICAg
ICAgICAgRkFJTAorICAgICAgICA8L2hvc3QzPgorICAgIDwvZGl2PgorICAgIDxob3N0ND4KICAg
ICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPkZBSUw8L2Rpdj4KLSAgICA8L290aGVyLWdvb2QtaG9z
dD4KKyAgICA8L2hvc3Q0PgorICAgIDxob3N0NT4KKyAgICAgICAgPGRpdj5GQUlMPC9kaXY+Cisg
ICAgPC9ob3N0NT4KICAgICA8c2NyaXB0PgogCiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB2
YXIgc2hhZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ290aGVyLWhvc3QnKTsKKyAg
ICAgICAgICAgIHZhciBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaG9zdDEn
KTsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9k
ZTogJ29wZW4nfSk7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+
IDpob3N0KGhvc3QxKSB7IGJhY2tncm91bmQ6IGdyZWVuICFpbXBvcnRhbnQ7IH0gPC9zdHlsZT4n
OworCisgICAgICAgICAgICBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaG9z
dDInKTsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7
bW9kZTogJ29wZW4nfSk7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5
bGU+IDpob3N0KGhvc3QyLmZvbyNiYXJbbmFtZT1iYXpdKSB7IGJhY2tncm91bmQ6IGdyZWVuICFp
bXBvcnRhbnQ7IH0gPC9zdHlsZT4nOworCisgICAgICAgICAgICBzaGFkb3dIb3N0ID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignaG9zdDMnKTsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFk
b3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgICAgICAgICBzaGFkb3dS
b290LmlubmVySFRNTCA9ICc8c3R5bGU+IDpob3N0KGRpdiBob3N0MykgeyBiYWNrZ3JvdW5kOiBy
ZWQgIWltcG9ydGFudDsgfSA8L3N0eWxlPic7CisKKyAgICAgICAgICAgIHNoYWRvd0hvc3QgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdob3N0NCcpOwogICAgICAgICAgICAgc2hhZG93Um9vdCA9
IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKLSAgICAgICAgICAgIHNo
YWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzdHlsZT4gOmhvc3Qob3RoZXItaG9zdC5mb28jYmFyW25h
bWU9YmF6XSkgeyBiYWNrZ3JvdW5kOiBncmVlbjsgfSA8L3N0eWxlPic7CisgICAgICAgICAgICBz
aGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IDpob3N0KC5jaGlsZCkgeyBiYWNrZ3JvdW5k
OiByZWQgIWltcG9ydGFudDsgfSA8L3N0eWxlPic7CiAKLSAgICAgICAgICAgIHNoYWRvd0hvc3Qg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdvdGhlci1nb29kLWhvc3QnKTsKKyAgICAgICAgICAg
IHNoYWRvd0hvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdob3N0NScpOwogICAgICAgICAg
ICAgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsK
LSAgICAgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzdHlsZT4gOmhvc3QoLmNoaWxk
KSB7IGJhY2tncm91bmQ6IHJlZDsgfSA8L3N0eWxlPic7CisgICAgICAgICAgICBzaGFkb3dSb290
LmlubmVySFRNTCA9ICc8c3R5bGU+IDpob3N0KGhvc3QxKSB7IGJhY2tncm91bmQ6IHJlZCAhaW1w
b3J0YW50OyB9IDwvc3R5bGU+JzsKICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CiAgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KGV4Y2VwdGlvbikpOwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTk5MTU0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyMjgsNyArMTIyOCw2
IEBAIHdlYmtpdC5vcmcvYi8xNTMxMDggWyBEZWJ1ZyBdIGluc3BlY3Rvci8KIHdlYmtpdC5vcmcv
Yi8xNDkxMjggZmFzdC90ZXh0L2NvbnRyb2wtY2hhcmFjdGVycyBbIEltYWdlT25seUZhaWx1cmUg
XQogCiB3ZWJraXQub3JnL2IvMTQ4Njk1IGZhc3Qvc2hhZG93LWRvbSBbIFBhc3MgXQotd2Via2l0
Lm9yZy9iLzE0OTQ0MCBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3QtZnVu
Y3Rpb25hbC1ydWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUb3VjaCBldmVudHMg
aXMgbm90IGVuYWJsZWQgb24gTWFjCiB3ZWJraXQub3JnL2IvMTQ5NTkyIGZhc3Qvc2hhZG93LWRv
bS90b3VjaC1ldmVudC1pb3MuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275999</attachid>
            <date>2016-04-08 05:39:35 -0700</date>
            <delta_ts>2016-04-08 05:42:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>host-functional-3.patch</filename>
            <type>text/plain</type>
            <size>16411</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTIyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE2LTA0LTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25h
bCA6aG9zdCgpIHBzZXVkbyBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2Mzk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTYyMTQ0NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhbHJl
YWR5IHN1cHBvcnQgOmhvc3QuIEFkZCBmdW5jdGlvbmFsIHN5bnRheCB0b28uCisKKyAgICAgICAg
KiBjc3MvQ1NTR3JhbW1hci55LmluOgorCisgICAgICAgICAgICBQYXJzZSBmdW5jdGlvbmFsIGhv
c3QoKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpkZXRlY3RGdW5jdGlvblR5cGVUb2tlbik6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFy
c2VQc2V1ZG9DbGFzc0hvc3RGdW5jdGlvblNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyVmFsdWVzLmg6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaGVkUnVsZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKToK
KworICAgICAgICAgICAgRmFjdG9yIHNvbWUgc2hhcmVkIGNvZGUgaGVyZS4KKworICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoSG9zdFBzZXVkb0NsYXNzUnVsZXMp
OgorCisgICAgICAgICAgICBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBnZW5lcmljIHBhdGhzIHVzZSBh
IDpob3N0IHNwZWNpZmljIGNvZGUgcGF0aCBmb3IgbWF0Y2hpbmcuCisgICAgICAgICAgICBUaGlz
IG1ha2VzIGl0IGVhc2llciB0byBhdm9pZCA6aG9zdCBtYXRjaGluZyB3aGVuIGl0IHNob3VsZG4n
dC4KKworICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6
CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU1h
dGNoQmFzZWRPblJ1bGVIYXNoKToKKworICAgICAgICAgICAgOmhvc3QgaXMgYWx3YXlzIGhhbmRs
ZWQgYnkgdGhlIHNwZWNpYWwgbWF0Y2hpbmcgcGF0aC4KKworICAgICAgICAqIGNzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoSG9zdFBzZXVkb0NsYXNz
KToKKworICAgICAgICAgICAgQWRkIGEgZnVuY3Rpb24gc3BlY2lmaWNhbGx5IGZvciBjaGVja2lu
ZyA6aG9zdC4gSW4gYWx3YXlzIGZhaWxzIG9uIHRoZSBub3JtYWwgY29kZSBwYXRocy4KKyAgICAg
ICAgICAgIENoZWNrIHRoZSBhcmd1bWVudCBzZWxlY3RvciBpZiBwcm92aWRlZC4KKworICAgICAg
ICAoV2ViQ29yZTo6aGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudCk6CisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOgorCiAyMDE2LTA0LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdW5uZWVkZWQgVXNlUG9pbnRlcnNFdmVuRm9yTm9uTnVs
bGFibGVPYmplY3RBcmd1bWVudHMgZnJvbSBldmVudCBjbGFzc2VzCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW4JKHJldmlzaW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM2OCw2ICszNjgsNyBAQCBzdGF0
aWMgYm9vbCBzZWxlY3Rvckxpc3REb2VzTm90TWF0Y2hBbnlQCiAjaWYgRU5BQkxFX1NIQURPV19E
T00KIAogJXRva2VuIDxzdHJpbmc+IFNMT1RURURGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IEhP
U1RGVU5DVElPTgogCiAjZW5kaWYKIApAQCAtMTM2Nyw2ICsxMzY4LDkgQEAgcHNldWRvOgogICAg
IHwgJzonICc6JyBTTE9UVEVERlVOQ1RJT04gbWF5YmVfc3BhY2UgY29tcG91bmRfc2VsZWN0b3Ig
bWF5YmVfc3BhY2UgJyknIHsKICAgICAgICAgJCQgPSBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQ
c2V1ZG9FbGVtZW50U2xvdHRlZEZ1bmN0aW9uU2VsZWN0b3IoJDMsICQ1KTsKICAgICB9CisgICAg
fCAnOicgSE9TVEZVTkNUSU9OIG1heWJlX3NwYWNlIGNvbXBvdW5kX3NlbGVjdG9yIG1heWJlX3Nw
YWNlICcpJyB7CisgICAgICAgICQkID0gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xh
c3NIb3N0RnVuY3Rpb25TZWxlY3RvcigkMiwgJDQpOworICAgIH0KICNlbmRpZgogICAgIC8vIHVz
ZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVy
aWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5OTE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5Nyw2ICsxMTg5NywxMiBAQCBp
bmxpbmUgYm9vbCBDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
ICAgIGlmIChpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUsICJob3N0IikpIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4gPSBIT1NURlVOQ1RJT047CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgNzoKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCShyZXZpc2lvbiAxOTkwOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU1LDYgKzI1NSwzMCBAQCBDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyU2VsZWN0
b3I6OnBhCiAgICAgc2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9yVmVjdG9y
KTsKICAgICByZXR1cm4gc2VsZWN0b3IucmVsZWFzZSgpOwogfQorCitDU1NQYXJzZXJTZWxlY3Rv
ciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NIb3N0RnVuY3Rpb25TZWxlY3Rv
cihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIHBhcnNlZFNlbGVjdG9yKQoreworICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25JZGVu
dGlmaWVyLCBTdHJpbmcoZnVuY3Rpb25JZGVudGlmaWVyKSA9PSAiaG9zdCgiKTsKKworICAgIGlm
ICghcGFyc2VkU2VsZWN0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBvd25lZFBhcnNlZFNlbGVjdG9yKHBhcnNlZFNl
bGVjdG9yKTsKKworICAgIGZvciAoYXV0byogY29tcG9uZW50ID0gcGFyc2VkU2VsZWN0b3I7IGNv
bXBvbmVudDsgY29tcG9uZW50ID0gY29tcG9uZW50LT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAg
aWYgKGNvbXBvbmVudC0+bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gc2VsZWN0b3JWZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4oKTsKKyAg
ICBzZWxlY3RvclZlY3Rvci0+YXBwZW5kKFdURk1vdmUob3duZWRQYXJzZWRTZWxlY3RvcikpOwor
CisgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+
KCk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcyk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0NsYXNzVHlwZShD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0KTsKKyAgICBzZWxlY3Rvci0+YWRvcHRTZWxlY3Rv
clZlY3Rvcigqc2VsZWN0b3JWZWN0b3IpOworICAgIHJldHVybiBzZWxlY3Rvci5yZWxlYXNlKCk7
Cit9CiAjZW5kaWYKIAogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVjdG9yOjpwYXJz
ZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTdHJp
bmcmIHBzZXVkb1R5cGVTdHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVl
cy5oCShyZXZpc2lvbiAxOTkwOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVj
dG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qKTsKICNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudFNsb3R0
ZWRGdW5jdGlvblNlbGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlm
aWVyLCBDU1NQYXJzZXJTZWxlY3RvciopOworICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3Rvciog
cGFyc2VQc2V1ZG9DbGFzc0hvc3RGdW5jdGlvblNlbGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmlu
ZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBDU1NQYXJzZXJTZWxlY3RvciopOwogI2VuZGlmCiAgICAg
c3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0
eUVsZW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlz
aW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw5ICsxMDcsMTQgQEAgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGU+PiYgRWxlbWVudAogICAgIHJldHVybiBtX21hdGNoZWRSdWxlTGlzdDsKIH0K
IAotaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKGNvbnN0
IE1hdGNoZWRSdWxlJiBtYXRjaGVkUnVsZSkKK2lubGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVj
dG9yOjphZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkIHNw
ZWNpZmljaXR5LCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKIHsKLSAgICBt
X21hdGNoZWRSdWxlcy5hcHBlbmQobWF0Y2hlZFJ1bGUpOworICAgIC8vIFVwZGF0ZSBvdXIgZmly
c3QvbGFzdCBydWxlIGluZGljZXMgaW4gdGhlIG1hdGNoZWQgcnVsZXMgYXJyYXkuCisgICAgKyty
dWxlUmFuZ2UubGFzdFJ1bGVJbmRleDsKKyAgICBpZiAocnVsZVJhbmdlLmZpcnN0UnVsZUluZGV4
ID09IC0xKQorICAgICAgICBydWxlUmFuZ2UuZmlyc3RSdWxlSW5kZXggPSBydWxlUmFuZ2UubGFz
dFJ1bGVJbmRleDsKKworICAgIG1fbWF0Y2hlZFJ1bGVzLmFwcGVuZCh7ICZydWxlRGF0YSwgc3Bl
Y2lmaWNpdHkgfSk7CiB9CiAKIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNsZWFyTWF0Y2hl
ZFJ1bGVzKCkKQEAgLTIzMiw5ICsyMzcsMTkgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
bWF0Y2hIb3N0UHNldQogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAgICAgbV9yZXN1bHQucmFu
Z2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkg
LSAxOwogCisgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQgY29udGV4dChtX21v
ZGUpOworICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIobV9lbGVtZW50LmRvY3Vt
ZW50KCkpOworCiAgICAgYXV0byBydWxlUmFuZ2UgPSBtX3Jlc3VsdC5yYW5nZXMuYXV0aG9yUnVs
ZVJhbmdlKCk7Ci0gICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdCgmc2hhZG93QXV0aG9yU3R5
bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
JnNoYWRvd0hvc3RSdWxlcywgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgIGZvciAoYXV0
byYgcnVsZURhdGEgOiBzaGFkb3dIb3N0UnVsZXMpIHsKKyAgICAgICAgaWYgKHJ1bGVEYXRhLnJ1
bGUoKS0+cHJvcGVydGllcygpLmlzRW1wdHkoKSAmJiAhaW5jbHVkZUVtcHR5UnVsZXMpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byYgc2VsZWN0b3IgPSAqcnVsZURhdGEuc2Vs
ZWN0b3IoKTsKKyAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHkgPSAwOworICAgICAgICBpZiAo
IXNlbGVjdG9yQ2hlY2tlci5tYXRjaEhvc3RQc2V1ZG9DbGFzcyhzZWxlY3RvciwgbV9lbGVtZW50
LCBjb250ZXh0LCBzcGVjaWZpY2l0eSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
YWRkTWF0Y2hlZFJ1bGUocnVsZURhdGEsIHNwZWNpZmljaXR5LCBydWxlUmFuZ2UpOworICAgIH0K
IAogICAgIC8vIFdlIGp1c3Qgc29ydCB0aGUgaG9zdCBydWxlcyBiZWZvcmUgb3RoZXIgYXV0aG9y
IHJ1bGVzLiBUaGlzIG1hdGNoZXMgdGhlIGN1cnJlbnQgdmFndWUgc3BlYyBsYW5ndWFnZQogICAg
IC8vIGJ1dCBpcyBub3QgbmVjZXNzYXJpbHkgZXhhY3RseSB3aGF0IGlzIG5lZWRlZC4KQEAgLTQ4
NiwxNSArNTAxLDggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHk7Ci0g
ICAgICAgIGlmIChydWxlTWF0Y2hlcyhydWxlRGF0YSwgc3BlY2lmaWNpdHkpKSB7Ci0gICAgICAg
ICAgICAvLyBVcGRhdGUgb3VyIGZpcnN0L2xhc3QgcnVsZSBpbmRpY2VzIGluIHRoZSBtYXRjaGVk
IHJ1bGVzIGFycmF5LgotICAgICAgICAgICAgKytydWxlUmFuZ2UubGFzdFJ1bGVJbmRleDsKLSAg
ICAgICAgICAgIGlmIChydWxlUmFuZ2UuZmlyc3RSdWxlSW5kZXggPT0gLTEpCi0gICAgICAgICAg
ICAgICAgcnVsZVJhbmdlLmZpcnN0UnVsZUluZGV4ID0gcnVsZVJhbmdlLmxhc3RSdWxlSW5kZXg7
Ci0KLSAgICAgICAgICAgIC8vIEFkZCB0aGlzIHJ1bGUgdG8gb3VyIGxpc3Qgb2YgbWF0Y2hlZCBy
dWxlcy4KLSAgICAgICAgICAgIGFkZE1hdGNoZWRSdWxlKHsmcnVsZURhdGEsIHNwZWNpZmljaXR5
fSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJ1bGVNYXRjaGVzKHJ1bGVEYXRhLCBzcGVjaWZp
Y2l0eSkpCisgICAgICAgICAgICBhZGRNYXRjaGVkUnVsZShydWxlRGF0YSwgc3BlY2lmaWNpdHks
IHJ1bGVSYW5nZSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMTk5MDk3KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKICAgICB2b2lkIHNvcnRBbmRU
cmFuc2Zlck1hdGNoZWRSdWxlcygpOwogCi0gICAgdm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBN
YXRjaGVkUnVsZSYpOworICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEmLCB1
bnNpZ25lZCBzcGVjaWZpY2l0eSwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBydWxlUmFuZ2Up
OwogCiAgICAgY29uc3QgRWxlbWVudCYgbV9lbGVtZW50OwogICAgIGNvbnN0IFJ1bGVTZXQmIG1f
YXV0aG9yU3R5bGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCShyZXZpc2lvbiAxOTkwOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDEwICs3MCw2IEBAIHN0YXRpYyBpbmxpbmUgTWF0Y2hCYXNlZE9uUnVsZUhhc2ggY29tcHUKICAg
ICB9CiAgICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9y
KCZzZWxlY3RvcikpCiAgICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xhc3NC
OwotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIGlmIChzZWxlY3Rvci5tYXRjaCgpID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJiBzZWxlY3Rvci5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0KQotICAgICAgICByZXR1cm4gTWF0Y2hCYXNlZE9u
UnVsZUhhc2g6OkNsYXNzQjsKLSNlbmRpZgogICAgIGlmIChzZWxlY3Rvci5tYXRjaCgpID09IENT
U1NlbGVjdG9yOjpJZCkKICAgICAgICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpDbGFz
c0E7CiAgICAgaWYgKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHJldmlzaW9uIDE5OTA5NykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTksNiArMTk5LDI1IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaChjb25zdCBD
U1NTZWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorCitib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0
Y2hIb3N0UHNldWRvQ2xhc3MoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yLCBjb25zdCBFbGVt
ZW50JiBlbGVtZW50LCBDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgdW5zaWduZWQm
IHNwZWNpZmljaXR5KSBjb25zdAoreworICAgIEFTU0VSVChlbGVtZW50LnNoYWRvd1Jvb3QoKSk7
CisgICAgQVNTRVJUKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
ICYmIHNlbGVjdG9yLnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0hvc3QpOworICAgIEFTU0VSVChjaGVja2luZ0NvbnRleHQucmVzb2x2aW5nTW9kZSAhPSBTZWxl
Y3RvckNoZWNrZXI6Ok1vZGU6OlF1ZXJ5aW5nUnVsZXMpOworICAgIC8vIDpob3N0IGRvZXNuJ3Qg
Y29tYmluZSB3aXRoIGFueSBvdGhlciBzZWxlY3RvcnMuCisgICAgaWYgKHNlbGVjdG9yLnRhZ0hp
c3RvcnkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHNwZWNpZmljaXR5ID0gc2VsZWN0
b3Iuc2ltcGxlU2VsZWN0b3JTcGVjaWZpY2l0eSgpOworICAgIGlmIChhdXRvKiBzZWxlY3Rvckxp
c3QgPSBzZWxlY3Rvci5zZWxlY3Rvckxpc3QoKSkgeworICAgICAgICBMb2NhbENvbnRleHQgY29u
dGV4dChzZWxlY3RvciwgZWxlbWVudCwgVmlzaXRlZE1hdGNoVHlwZTo6RW5hYmxlZCwgTk9QU0VV
RE8pOworICAgICAgICB1bnNpZ25lZCBpZ25vcmVkU3BlY2lmaWNpdHk7CisgICAgICAgIGlmICgh
bWF0Y2hTZWxlY3Rvckxpc3QoY2hlY2tpbmdDb250ZXh0LCBjb250ZXh0LCBlbGVtZW50LCAqc2Vs
ZWN0b3JMaXN0LCBpZ25vcmVkU3BlY2lmaWNpdHkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW5saW5lIHN0YXRpYyBib29sIGhhc1Nj
cm9sbGJhclBzZXVkb0VsZW1lbnQoY29uc3QgUHNldWRvSWRTZXQmIGR5bmFtaWNQc2V1ZG9JZFNl
dCkKIHsKICAgICBQc2V1ZG9JZFNldCBzY3JvbGxiYXJJZFNldCA9IHsgU0NST0xMQkFSLCBTQ1JP
TExCQVJfVEhVTUIsIFNDUk9MTEJBUl9CVVRUT04sIFNDUk9MTEJBUl9UUkFDSywgU0NST0xMQkFS
X1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJfQ09STkVSIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oCShyZXZpc2lvbiAxOTkwOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDggQEAgcHVibGlj
OgogCiAgICAgYm9vbCBtYXRjaChjb25zdCBDU1NTZWxlY3RvciYsIGNvbnN0IEVsZW1lbnQmLCBD
aGVja2luZ0NvbnRleHQmLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpIGNvbnN0OwogCisgICAgYm9v
bCBtYXRjaEhvc3RQc2V1ZG9DbGFzcyhjb25zdCBDU1NTZWxlY3RvciYsIGNvbnN0IEVsZW1lbnQm
LCBDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgdW5zaWduZWQmIHNwZWNpZmljaXR5
KSBjb25zdDsKKwogICAgIHN0YXRpYyBib29sIGlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihj
b25zdCBDU1NTZWxlY3RvciopOwogICAgIHN0YXRpYyBib29sIG1hdGNoZXNGb2N1c1BzZXVkb0Ns
YXNzKGNvbnN0IEVsZW1lbnQmKTsKICAgICBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVTZWxlY3Rvck1h
dGNoZXMoY29uc3QgRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmIGF0dHJpYnV0ZVZhbHVlLCBjb25zdCBDU1NTZWxlY3RvciYpOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTk5MTU0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTYtMDQtMDggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBmdW5jdGlvbmFsIDpob3N0KCkgcHNldWRvIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYzOTcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NjIxNDQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSwgZml4IGFuZCBleHBhbmQgdGhlIHRl
c3QuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3Qt
ZnVuY3Rpb25hbC1ydWxlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTYtMDQtMDcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFNoYWRvdyBET006IEltcGxlbWVudCBkaXNwbGF5OiBjb250ZW50cyBmb3Igc2xv
dHMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ct
aG9zdC1mdW5jdGlvbmFsLXJ1bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3QtZnVuY3Rpb25hbC1ydWxlLmh0bWwJ
KHJldmlzaW9uIDE5OTA5NykKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2Nv
cGluZy1zaGFkb3ctaG9zdC1mdW5jdGlvbmFsLXJ1bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCw0MSArOCw1NiBAQAogPC9oZWFkPgogPGJvZHk+CiAgICAgPHN0eWxlPgotICAgICAgICBteS1o
b3N0LCBnb29kLWhvc3QsIG90aGVyLWhvc3QsIG90aGVyLWdvb2QtaG9zdCB7CisgICAgICAgIGhv
c3QxLCBob3N0MiwgaG9zdDMsIGhvc3Q0LCBob3N0NSB7CiAgICAgICAgICAgICBkaXNwbGF5OiBi
bG9jazsKICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgICAgIGhlaWdodDogNTBw
eDsKKyAgICAgICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJl
ZDsKICAgICAgICAgfQotICAgICAgICBnb29kLWhvc3QsIG90aGVyLWdvb2QtaG9zdCB7CisgICAg
ICAgIGhvc3QzLCBob3N0NCwgaG9zdDUgIHsKICAgICAgICAgICAgIGJhY2tncm91bmQ6IGdyZWVu
OwogICAgICAgICB9CiAgICAgPC9zdHlsZT4KLSAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2Vl
IGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+IAotICAgIDxteS1o
b3N0PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAw
cHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKyAgICA8aG9zdDE+CiAgICAgICAgIDxkaXY+RkFJTDwv
ZGl2PgotICAgIDwvbXktaG9zdD4KLSAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgotICAgICAg
ICA8Z29vZC1ob3N0PgotICAgICAgICAgICAgPGRpdj5GQUlMPC9kaXY+Ci0gICAgICAgIDwvZ29v
ZC1ob3N0PgotICAgIDwvZGl2PgotICAgIDxvdGhlci1ob3N0IGlkPSJiYXIiIGNsYXNzPSJmb28i
IG5hbWU9ImJheiI+CisgICAgPC9ob3N0MT4KKyAgICA8aG9zdDIgaWQ9ImJhciIgY2xhc3M9ImZv
byIgbmFtZT0iYmF6Ij4KICAgICAgICAgPGRpdj5GQUlMPC9kaXY+Ci0gICAgPC9vdGhlci1ob3N0
PgotICAgIDxvdGhlci1nb29kLWhvc3Q+CisgICAgPC9ob3N0Mj4KKyAgICA8ZGl2PgorICAgICAg
ICA8aG9zdDM+CisgICAgICAgICAgICBGQUlMCisgICAgICAgIDwvaG9zdDM+CisgICAgPC9kaXY+
CisgICAgPGhvc3Q0PgogICAgICAgICA8ZGl2IGNsYXNzPSJjaGlsZCI+RkFJTDwvZGl2PgotICAg
IDwvb3RoZXItZ29vZC1ob3N0PgorICAgIDwvaG9zdDQ+CisgICAgPGhvc3Q1PgorICAgICAgICA8
ZGl2PkZBSUw8L2Rpdj4KKyAgICA8L2hvc3Q1PgogICAgIDxzY3JpcHQ+CiAKICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIHZhciBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
b3RoZXItaG9zdCcpOworICAgICAgICAgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdob3N0MScpOworICAgICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3Qu
YXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QuaW5u
ZXJIVE1MID0gJzxzdHlsZT4gOmhvc3QoaG9zdDEpIHsgYmFja2dyb3VuZDogZ3JlZW4gIWltcG9y
dGFudDsgfSA8L3N0eWxlPic7CisKKyAgICAgICAgICAgIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdob3N0MicpOworICAgICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd0hv
c3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3Qu
aW5uZXJIVE1MID0gJzxzdHlsZT4gOmhvc3QoaG9zdDIuZm9vI2JhcltuYW1lPWJhel0pIHsgYmFj
a2dyb3VuZDogZ3JlZW4gIWltcG9ydGFudDsgfSA8L3N0eWxlPic7CisKKyAgICAgICAgICAgIHNo
YWRvd0hvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdob3N0MycpOworICAgICAgICAgICAg
c2hhZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAg
ICAgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzdHlsZT4gOmhvc3QoZGl2IGhvc3Qz
KSB7IGJhY2tncm91bmQ6IHJlZCAhaW1wb3J0YW50OyB9IDwvc3R5bGU+JzsKKworICAgICAgICAg
ICAgc2hhZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hvc3Q0Jyk7CiAgICAgICAg
ICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30p
OwotICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHN0eWxlPiA6aG9zdChvdGhl
ci1ob3N0LmZvbyNiYXJbbmFtZT1iYXpdKSB7IGJhY2tncm91bmQ6IGdyZWVuOyB9IDwvc3R5bGU+
JzsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzdHlsZT4gOmhvc3QoLmNo
aWxkKSB7IGJhY2tncm91bmQ6IHJlZCAhaW1wb3J0YW50OyB9IDwvc3R5bGU+JzsKIAotICAgICAg
ICAgICAgc2hhZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ290aGVyLWdvb2QtaG9z
dCcpOworICAgICAgICAgICAgc2hhZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hv
c3Q1Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3co
e21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHN0
eWxlPiA6aG9zdCguY2hpbGQpIHsgYmFja2dyb3VuZDogcmVkOyB9IDwvc3R5bGU+JzsKKyAgICAg
ICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzdHlsZT4gOmhvc3QoaG9zdDEpIHsgYmFj
a2dyb3VuZDogcmVkICFpbXBvcnRhbnQ7IH0gPC9zdHlsZT4nOwogICAgICAgICB9IGNhdGNoIChl
eGNlcHRpb24pIHsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoZXhjZXB0aW9uKSk7CiAgICAgICAgIH0KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxOTkxNTQpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpA
QCAtMTIyOCw3ICsxMjI4LDYgQEAgd2Via2l0Lm9yZy9iLzE1MzEwOCBbIERlYnVnIF0gaW5zcGVj
dG9yLwogd2Via2l0Lm9yZy9iLzE0OTEyOCBmYXN0L3RleHQvY29udHJvbC1jaGFyYWN0ZXJzIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNDg2OTUgZmFzdC9zaGFkb3ctZG9t
IFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTQ5NDQwIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGlu
Zy1zaGFkb3ctaG9zdC1mdW5jdGlvbmFsLXJ1bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
CiAjIFRvdWNoIGV2ZW50cyBpcyBub3QgZW5hYmxlZCBvbiBNYWMKIHdlYmtpdC5vcmcvYi8xNDk1
OTIgZmFzdC9zaGFkb3ctZG9tL3RvdWNoLWV2ZW50LWlvcy5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276000</attachid>
            <date>2016-04-08 05:42:39 -0700</date>
            <delta_ts>2016-04-08 22:51:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>host-functional-4.patch</filename>
            <type>text/plain</type>
            <size>16385</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTIyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE2LTA0LTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZnVuY3Rpb25h
bCA6aG9zdCgpIHBzZXVkbyBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2Mzk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTYyMTQ0NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhbHJl
YWR5IHN1cHBvcnQgOmhvc3QuIEFkZCBmdW5jdGlvbmFsIHN5bnRheCB0b28uCisKKyAgICAgICAg
KiBjc3MvQ1NTR3JhbW1hci55LmluOgorCisgICAgICAgICAgICBQYXJzZSBmdW5jdGlvbmFsIGhv
c3QoKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpkZXRlY3RGdW5jdGlvblR5cGVUb2tlbik6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFy
c2VQc2V1ZG9DbGFzc0hvc3RGdW5jdGlvblNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyVmFsdWVzLmg6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaGVkUnVsZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKToK
KworICAgICAgICAgICAgRmFjdG9yIHNvbWUgc2hhcmVkIGNvZGUgaGVyZS4KKworICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoSG9zdFBzZXVkb0NsYXNzUnVsZXMp
OgorCisgICAgICAgICAgICBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBnZW5lcmljIHBhdGhzIHVzZSBh
IDpob3N0IHNwZWNpZmljIGNvZGUgcGF0aCBmb3IgbWF0Y2hpbmcuCisgICAgICAgICAgICBUaGlz
IG1ha2VzIGl0IGVhc2llciB0byBhdm9pZCA6aG9zdCBtYXRjaGluZyB3aGVuIGl0IHNob3VsZG4n
dC4KKworICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6
CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU1h
dGNoQmFzZWRPblJ1bGVIYXNoKToKKworICAgICAgICAgICAgOmhvc3QgaXMgYWx3YXlzIGhhbmRs
ZWQgYnkgdGhlIHNwZWNpYWwgbWF0Y2hpbmcgcGF0aC4KKworICAgICAgICAqIGNzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoSG9zdFBzZXVkb0NsYXNz
KToKKworICAgICAgICAgICAgQWRkIGEgZnVuY3Rpb24gc3BlY2lmaWNhbGx5IGZvciBjaGVja2lu
ZyA6aG9zdC4gSW4gYWx3YXlzIGZhaWxzIG9uIHRoZSBub3JtYWwgY29kZSBwYXRocy4KKyAgICAg
ICAgICAgIENoZWNrIHRoZSBhcmd1bWVudCBzZWxlY3RvciBpZiBwcm92aWRlZC4KKworICAgICAg
ICAoV2ViQ29yZTo6aGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudCk6CisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oOgorCiAyMDE2LTA0LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdW5uZWVkZWQgVXNlUG9pbnRlcnNFdmVuRm9yTm9uTnVs
bGFibGVPYmplY3RBcmd1bWVudHMgZnJvbSBldmVudCBjbGFzc2VzCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW4JKHJldmlzaW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM2OCw2ICszNjgsNyBAQCBzdGF0
aWMgYm9vbCBzZWxlY3Rvckxpc3REb2VzTm90TWF0Y2hBbnlQCiAjaWYgRU5BQkxFX1NIQURPV19E
T00KIAogJXRva2VuIDxzdHJpbmc+IFNMT1RURURGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IEhP
U1RGVU5DVElPTgogCiAjZW5kaWYKIApAQCAtMTM2Nyw2ICsxMzY4LDkgQEAgcHNldWRvOgogICAg
IHwgJzonICc6JyBTTE9UVEVERlVOQ1RJT04gbWF5YmVfc3BhY2UgY29tcG91bmRfc2VsZWN0b3Ig
bWF5YmVfc3BhY2UgJyknIHsKICAgICAgICAgJCQgPSBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQ
c2V1ZG9FbGVtZW50U2xvdHRlZEZ1bmN0aW9uU2VsZWN0b3IoJDMsICQ1KTsKICAgICB9CisgICAg
fCAnOicgSE9TVEZVTkNUSU9OIG1heWJlX3NwYWNlIGNvbXBvdW5kX3NlbGVjdG9yIG1heWJlX3Nw
YWNlICcpJyB7CisgICAgICAgICQkID0gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xh
c3NIb3N0RnVuY3Rpb25TZWxlY3RvcigkMiwgJDQpOworICAgIH0KICNlbmRpZgogICAgIC8vIHVz
ZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVy
aWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5OTE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5Nyw2ICsxMTg5NywxMiBAQCBp
bmxpbmUgYm9vbCBDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
ICAgIGlmIChpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUsICJob3N0IikpIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4gPSBIT1NURlVOQ1RJT047CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorI2VuZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgNzoKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCShyZXZpc2lvbiAxOTkwOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU1LDYgKzI1NSwzMCBAQCBDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyU2VsZWN0
b3I6OnBhCiAgICAgc2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9yVmVjdG9y
KTsKICAgICByZXR1cm4gc2VsZWN0b3IucmVsZWFzZSgpOwogfQorCitDU1NQYXJzZXJTZWxlY3Rv
ciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NIb3N0RnVuY3Rpb25TZWxlY3Rv
cihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIHBhcnNlZFNlbGVjdG9yKQoreworICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25JZGVu
dGlmaWVyLCBTdHJpbmcoZnVuY3Rpb25JZGVudGlmaWVyKSA9PSAiaG9zdCgiKTsKKworICAgIGlm
ICghcGFyc2VkU2VsZWN0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBvd25lZFBhcnNlZFNlbGVjdG9yKHBhcnNlZFNl
bGVjdG9yKTsKKworICAgIGZvciAoYXV0byogY29tcG9uZW50ID0gcGFyc2VkU2VsZWN0b3I7IGNv
bXBvbmVudDsgY29tcG9uZW50ID0gY29tcG9uZW50LT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAg
aWYgKGNvbXBvbmVudC0+bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gc2VsZWN0b3JWZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4oKTsKKyAg
ICBzZWxlY3RvclZlY3Rvci0+YXBwZW5kKFdURk1vdmUob3duZWRQYXJzZWRTZWxlY3RvcikpOwor
CisgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+
KCk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcyk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0NsYXNzVHlwZShD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0KTsKKyAgICBzZWxlY3Rvci0+YWRvcHRTZWxlY3Rv
clZlY3Rvcigqc2VsZWN0b3JWZWN0b3IpOworICAgIHJldHVybiBzZWxlY3Rvci5yZWxlYXNlKCk7
Cit9CiAjZW5kaWYKIAogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVjdG9yOjpwYXJz
ZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTdHJp
bmcmIHBzZXVkb1R5cGVTdHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVl
cy5oCShyZXZpc2lvbiAxOTkwOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVj
dG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qKTsKICNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudFNsb3R0
ZWRGdW5jdGlvblNlbGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlm
aWVyLCBDU1NQYXJzZXJTZWxlY3RvciopOworICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3Rvciog
cGFyc2VQc2V1ZG9DbGFzc0hvc3RGdW5jdGlvblNlbGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmlu
ZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBDU1NQYXJzZXJTZWxlY3RvciopOwogI2VuZGlmCiAgICAg
c3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0
eUVsZW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlz
aW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw5ICsxMDcsMTQgQEAgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGU+PiYgRWxlbWVudAogICAgIHJldHVybiBtX21hdGNoZWRSdWxlTGlzdDsKIH0K
IAotaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKGNvbnN0
IE1hdGNoZWRSdWxlJiBtYXRjaGVkUnVsZSkKK2lubGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVj
dG9yOjphZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkIHNw
ZWNpZmljaXR5LCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmIHJ1bGVSYW5nZSkKIHsKLSAgICBt
X21hdGNoZWRSdWxlcy5hcHBlbmQobWF0Y2hlZFJ1bGUpOworICAgIC8vIFVwZGF0ZSBvdXIgZmly
c3QvbGFzdCBydWxlIGluZGljZXMgaW4gdGhlIG1hdGNoZWQgcnVsZXMgYXJyYXkuCisgICAgKyty
dWxlUmFuZ2UubGFzdFJ1bGVJbmRleDsKKyAgICBpZiAocnVsZVJhbmdlLmZpcnN0UnVsZUluZGV4
ID09IC0xKQorICAgICAgICBydWxlUmFuZ2UuZmlyc3RSdWxlSW5kZXggPSBydWxlUmFuZ2UubGFz
dFJ1bGVJbmRleDsKKworICAgIG1fbWF0Y2hlZFJ1bGVzLmFwcGVuZCh7ICZydWxlRGF0YSwgc3Bl
Y2lmaWNpdHkgfSk7CiB9CiAKIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNsZWFyTWF0Y2hl
ZFJ1bGVzKCkKQEAgLTIzMiw5ICsyMzcsMTkgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
bWF0Y2hIb3N0UHNldQogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAgICAgbV9yZXN1bHQucmFu
Z2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkg
LSAxOwogCisgICAgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQgY29udGV4dChtX21v
ZGUpOworICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIobV9lbGVtZW50LmRvY3Vt
ZW50KCkpOworCiAgICAgYXV0byBydWxlUmFuZ2UgPSBtX3Jlc3VsdC5yYW5nZXMuYXV0aG9yUnVs
ZVJhbmdlKCk7Ci0gICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdCgmc2hhZG93QXV0aG9yU3R5
bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
JnNoYWRvd0hvc3RSdWxlcywgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgIGZvciAoYXV0
byYgcnVsZURhdGEgOiBzaGFkb3dIb3N0UnVsZXMpIHsKKyAgICAgICAgaWYgKHJ1bGVEYXRhLnJ1
bGUoKS0+cHJvcGVydGllcygpLmlzRW1wdHkoKSAmJiAhaW5jbHVkZUVtcHR5UnVsZXMpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byYgc2VsZWN0b3IgPSAqcnVsZURhdGEuc2Vs
ZWN0b3IoKTsKKyAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHkgPSAwOworICAgICAgICBpZiAo
IXNlbGVjdG9yQ2hlY2tlci5tYXRjaEhvc3RQc2V1ZG9DbGFzcyhzZWxlY3RvciwgbV9lbGVtZW50
LCBjb250ZXh0LCBzcGVjaWZpY2l0eSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
YWRkTWF0Y2hlZFJ1bGUocnVsZURhdGEsIHNwZWNpZmljaXR5LCBydWxlUmFuZ2UpOworICAgIH0K
IAogICAgIC8vIFdlIGp1c3Qgc29ydCB0aGUgaG9zdCBydWxlcyBiZWZvcmUgb3RoZXIgYXV0aG9y
IHJ1bGVzLiBUaGlzIG1hdGNoZXMgdGhlIGN1cnJlbnQgdmFndWUgc3BlYyBsYW5ndWFnZQogICAg
IC8vIGJ1dCBpcyBub3QgbmVjZXNzYXJpbHkgZXhhY3RseSB3aGF0IGlzIG5lZWRlZC4KQEAgLTQ4
NiwxNSArNTAxLDggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHk7Ci0g
ICAgICAgIGlmIChydWxlTWF0Y2hlcyhydWxlRGF0YSwgc3BlY2lmaWNpdHkpKSB7Ci0gICAgICAg
ICAgICAvLyBVcGRhdGUgb3VyIGZpcnN0L2xhc3QgcnVsZSBpbmRpY2VzIGluIHRoZSBtYXRjaGVk
IHJ1bGVzIGFycmF5LgotICAgICAgICAgICAgKytydWxlUmFuZ2UubGFzdFJ1bGVJbmRleDsKLSAg
ICAgICAgICAgIGlmIChydWxlUmFuZ2UuZmlyc3RSdWxlSW5kZXggPT0gLTEpCi0gICAgICAgICAg
ICAgICAgcnVsZVJhbmdlLmZpcnN0UnVsZUluZGV4ID0gcnVsZVJhbmdlLmxhc3RSdWxlSW5kZXg7
Ci0KLSAgICAgICAgICAgIC8vIEFkZCB0aGlzIHJ1bGUgdG8gb3VyIGxpc3Qgb2YgbWF0Y2hlZCBy
dWxlcy4KLSAgICAgICAgICAgIGFkZE1hdGNoZWRSdWxlKHsmcnVsZURhdGEsIHNwZWNpZmljaXR5
fSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJ1bGVNYXRjaGVzKHJ1bGVEYXRhLCBzcGVjaWZp
Y2l0eSkpCisgICAgICAgICAgICBhZGRNYXRjaGVkUnVsZShydWxlRGF0YSwgc3BlY2lmaWNpdHks
IHJ1bGVSYW5nZSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMTk5MDk3KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNvcnRNYXRjaGVkUnVsZXMoKTsKICAgICB2b2lkIHNvcnRBbmRU
cmFuc2Zlck1hdGNoZWRSdWxlcygpOwogCi0gICAgdm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBN
YXRjaGVkUnVsZSYpOworICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEmLCB1
bnNpZ25lZCBzcGVjaWZpY2l0eSwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CiAKICAgICBj
b25zdCBFbGVtZW50JiBtX2VsZW1lbnQ7CiAgICAgY29uc3QgUnVsZVNldCYgbV9hdXRob3JTdHls
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAJKHJldmlzaW9uIDE5OTA5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDYg
QEAgc3RhdGljIGlubGluZSBNYXRjaEJhc2VkT25SdWxlSGFzaCBjb21wdQogICAgIH0KICAgICBp
ZiAoU2VsZWN0b3JDaGVja2VyOjppc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoJnNlbGVjdG9y
KSkKICAgICAgICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpDbGFzc0I7Ci0jaWYgRU5B
QkxFKFNIQURPV19ET00pCi0gICAgaWYgKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzICYmIHNlbGVjdG9yLnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc0hvc3QpCi0gICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6
Q2xhc3NCOwotI2VuZGlmCiAgICAgaWYgKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6
OklkKQogICAgICAgICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQTsKICAgICBp
ZiAoc2VsZWN0b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMTk5MDk3KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw2
ICsxOTksMjUgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoKGNvbnN0IENTU1NlbAogICAg
IHJldHVybiB0cnVlOwogfQogCisKK2Jvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhvc3RQc2V1
ZG9DbGFzcyhjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIENoZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCB1bnNpZ25lZCYgc3BlY2lmaWNp
dHkpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1lbnQuc2hhZG93Um9vdCgpKTsKKyAgICBBU1NF
UlQoc2VsZWN0b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgJiYgc2VsZWN0
b3IucHNldWRvQ2xhc3NUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG9zdCk7Cisg
ICAgQVNTRVJUKGNoZWNraW5nQ29udGV4dC5yZXNvbHZpbmdNb2RlICE9IFNlbGVjdG9yQ2hlY2tl
cjo6TW9kZTo6UXVlcnlpbmdSdWxlcyk7CisgICAgLy8gOmhvc3QgZG9lc24ndCBjb21iaW5lIHdp
dGggYW55IG90aGVyIHNlbGVjdG9ycy4KKyAgICBpZiAoc2VsZWN0b3IudGFnSGlzdG9yeSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3BlY2lmaWNpdHkgPSBzZWxlY3Rvci5zaW1wbGVT
ZWxlY3RvclNwZWNpZmljaXR5KCk7CisgICAgaWYgKGF1dG8qIHNlbGVjdG9yTGlzdCA9IHNlbGVj
dG9yLnNlbGVjdG9yTGlzdCgpKSB7CisgICAgICAgIExvY2FsQ29udGV4dCBjb250ZXh0KHNlbGVj
dG9yLCBlbGVtZW50LCBWaXNpdGVkTWF0Y2hUeXBlOjpFbmFibGVkLCBOT1BTRVVETyk7CisgICAg
ICAgIHVuc2lnbmVkIGlnbm9yZWRTcGVjaWZpY2l0eTsKKyAgICAgICAgaWYgKCFtYXRjaFNlbGVj
dG9yTGlzdChjaGVja2luZ0NvbnRleHQsIGNvbnRleHQsIGVsZW1lbnQsICpzZWxlY3Rvckxpc3Qs
IGlnbm9yZWRTcGVjaWZpY2l0eSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUgc3RhdGljIGJvb2wgaGFzU2Nyb2xsYmFyUHNl
dWRvRWxlbWVudChjb25zdCBQc2V1ZG9JZFNldCYgZHluYW1pY1BzZXVkb0lkU2V0KQogewogICAg
IFBzZXVkb0lkU2V0IHNjcm9sbGJhcklkU2V0ID0geyBTQ1JPTExCQVIsIFNDUk9MTEJBUl9USFVN
QiwgU0NST0xMQkFSX0JVVFRPTiwgU0NST0xMQkFSX1RSQUNLLCBTQ1JPTExCQVJfVFJBQ0tfUElF
Q0UsIFNDUk9MTEJBUl9DT1JORVIgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmgJKHJldmlzaW9uIDE5OTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsOCBAQCBwdWJsaWM6CiAKICAgICBi
b29sIG1hdGNoKGNvbnN0IENTU1NlbGVjdG9yJiwgY29uc3QgRWxlbWVudCYsIENoZWNraW5nQ29u
dGV4dCYsIHVuc2lnbmVkJiBzcGVjaWZpY2l0eSkgY29uc3Q7CiAKKyAgICBib29sIG1hdGNoSG9z
dFBzZXVkb0NsYXNzKGNvbnN0IENTU1NlbGVjdG9yJiwgY29uc3QgRWxlbWVudCYsIENoZWNraW5n
Q29udGV4dCYsIHVuc2lnbmVkJiBzcGVjaWZpY2l0eSkgY29uc3Q7CisKICAgICBzdGF0aWMgYm9v
bCBpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsKICAgICBz
dGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50Jik7CiAgICAg
c3RhdGljIGJvb2wgYXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQmLCBjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSwgY29u
c3QgQ1NTU2VsZWN0b3ImKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTE1NCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA0LTA4
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
ZnVuY3Rpb25hbCA6aG9zdCgpIHBzZXVkbyBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2Mzk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
NTYyMTQ0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFbmFibGUsIGZpeCBhbmQgZXhwYW5kIHRoZSB0ZXN0LgorCisgICAgICAgICogZmFzdC9zaGFk
b3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1ob3N0LWZ1bmN0aW9uYWwtcnVsZS5odG1sOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE2LTA0LTA3ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFkb3cgRE9NOiBJbXBs
ZW1lbnQgZGlzcGxheTogY29udGVudHMgZm9yIHNsb3RzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3QtZnVuY3Rpb25hbC1ydWxlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNo
YWRvdy1ob3N0LWZ1bmN0aW9uYWwtcnVsZS5odG1sCShyZXZpc2lvbiAxOTkwOTcpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3QtZnVuY3Rpb25h
bC1ydWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNDEgKzgsNTYgQEAKIDwvaGVhZD4KIDxi
b2R5PgogICAgIDxzdHlsZT4KLSAgICAgICAgbXktaG9zdCwgZ29vZC1ob3N0LCBvdGhlci1ob3N0
LCBvdGhlci1nb29kLWhvc3QgeworICAgICAgICBob3N0MSwgaG9zdDIsIGhvc3QzLCBob3N0NCwg
aG9zdDUgewogICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgICB3aWR0aDog
MTAwcHg7Ci0gICAgICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDIw
cHg7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7CiAgICAgICAgIH0KLSAgICAgICAgZ29v
ZC1ob3N0LCBvdGhlci1nb29kLWhvc3QgeworICAgICAgICBob3N0MywgaG9zdDQsIGhvc3Q1ICB7
CiAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKICAgICAgICAgfQogICAgIDwvc3R5bGU+
Ci0gICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBn
cmVlbiBib3ggYmVsb3cuPC9wPiAKLSAgICA8bXktaG9zdD4KKyAgICA8cD5UZXN0IHBhc3NlcyBp
ZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+Cisg
ICAgPGhvc3QxPgogICAgICAgICA8ZGl2PkZBSUw8L2Rpdj4KLSAgICA8L215LWhvc3Q+Ci0gICAg
PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KLSAgICAgICAgPGdvb2QtaG9zdD4KLSAgICAgICAgICAg
IDxkaXY+RkFJTDwvZGl2PgotICAgICAgICA8L2dvb2QtaG9zdD4KLSAgICA8L2Rpdj4KLSAgICA8
b3RoZXItaG9zdCBpZD0iYmFyIiBjbGFzcz0iZm9vIiBuYW1lPSJiYXoiPgorICAgIDwvaG9zdDE+
CisgICAgPGhvc3QyIGlkPSJiYXIiIGNsYXNzPSJmb28iIG5hbWU9ImJheiI+CiAgICAgICAgIDxk
aXY+RkFJTDwvZGl2PgotICAgIDwvb3RoZXItaG9zdD4KLSAgICA8b3RoZXItZ29vZC1ob3N0Pgor
ICAgIDwvaG9zdDI+CisgICAgPGRpdj4KKyAgICAgICAgPGhvc3QzPgorICAgICAgICAgICAgRkFJ
TAorICAgICAgICA8L2hvc3QzPgorICAgIDwvZGl2PgorICAgIDxob3N0ND4KICAgICAgICAgPGRp
diBjbGFzcz0iY2hpbGQiPkZBSUw8L2Rpdj4KLSAgICA8L290aGVyLWdvb2QtaG9zdD4KKyAgICA8
L2hvc3Q0PgorICAgIDxob3N0NT4KKyAgICAgICAgPGRpdj5GQUlMPC9kaXY+CisgICAgPC9ob3N0
NT4KICAgICA8c2NyaXB0PgogCiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB2YXIgc2hhZG93
SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ290aGVyLWhvc3QnKTsKKyAgICAgICAgICAg
IHZhciBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaG9zdDEnKTsKKyAgICAg
ICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4n
fSk7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IDpob3N0KGhv
c3QxKSB7IGJhY2tncm91bmQ6IGdyZWVuICFpbXBvcnRhbnQ7IH0gPC9zdHlsZT4nOworCisgICAg
ICAgICAgICBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaG9zdDInKTsKKyAg
ICAgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29w
ZW4nfSk7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IDpob3N0
KGhvc3QyLmZvbyNiYXJbbmFtZT1iYXpdKSB7IGJhY2tncm91bmQ6IGdyZWVuICFpbXBvcnRhbnQ7
IH0gPC9zdHlsZT4nOworCisgICAgICAgICAgICBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignaG9zdDMnKTsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0
dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVy
SFRNTCA9ICc8c3R5bGU+IDpob3N0KGRpdiBob3N0MykgeyBiYWNrZ3JvdW5kOiByZWQgIWltcG9y
dGFudDsgfSA8L3N0eWxlPic7CisKKyAgICAgICAgICAgIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdob3N0NCcpOwogICAgICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd0hv
c3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKLSAgICAgICAgICAgIHNoYWRvd1Jvb3Qu
aW5uZXJIVE1MID0gJzxzdHlsZT4gOmhvc3Qob3RoZXItaG9zdC5mb28jYmFyW25hbWU9YmF6XSkg
eyBiYWNrZ3JvdW5kOiBncmVlbjsgfSA8L3N0eWxlPic7CisgICAgICAgICAgICBzaGFkb3dSb290
LmlubmVySFRNTCA9ICc8c3R5bGU+IDpob3N0KC5jaGlsZCkgeyBiYWNrZ3JvdW5kOiByZWQgIWlt
cG9ydGFudDsgfSA8L3N0eWxlPic7CiAKLSAgICAgICAgICAgIHNoYWRvd0hvc3QgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdvdGhlci1nb29kLWhvc3QnKTsKKyAgICAgICAgICAgIHNoYWRvd0hv
c3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdob3N0NScpOwogICAgICAgICAgICAgc2hhZG93
Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKLSAgICAgICAg
ICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzdHlsZT4gOmhvc3QoLmNoaWxkKSB7IGJhY2tn
cm91bmQ6IHJlZDsgfSA8L3N0eWxlPic7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRN
TCA9ICc8c3R5bGU+IDpob3N0KGhvc3QxKSB7IGJhY2tncm91bmQ6IHJlZCAhaW1wb3J0YW50OyB9
IDwvc3R5bGU+JzsKICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGV4Y2VwdGlv
bikpOwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwkocmV2aXNpb24gMTk5MTU0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyMjgsNyArMTIyOCw2IEBAIHdlYmtp
dC5vcmcvYi8xNTMxMDggWyBEZWJ1ZyBdIGluc3BlY3Rvci8KIHdlYmtpdC5vcmcvYi8xNDkxMjgg
ZmFzdC90ZXh0L2NvbnRyb2wtY2hhcmFjdGVycyBbIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTQ4Njk1IGZhc3Qvc2hhZG93LWRvbSBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE0
OTQ0MCBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWhvc3QtZnVuY3Rpb25hbC1y
dWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUb3VjaCBldmVudHMgaXMgbm90IGVu
YWJsZWQgb24gTWFjCiB3ZWJraXQub3JnL2IvMTQ5NTkyIGZhc3Qvc2hhZG93LWRvbS90b3VjaC1l
dmVudC1pb3MuaHRtbCBbIEZhaWx1cmUgXQo=
</data>
<flag name="review"
          id="300314"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>